fix(gps): make ephemeris flash persistence hardware-safe

Add freestanding S25FL256S read/program/erase/verify support and seed a newly formatted ephemeris store with stale records. Age-gate navigation readiness, persist the continuous Toe week, and regenerate the Genesys2 MAX2771 integration and flash image.
This commit is contained in:
onur
2026-08-13 00:50:57 +03:00
parent 97e3a71ab9
commit a25a1a61d0
43 changed files with 722126 additions and 713769 deletions
@@ -2,9 +2,7 @@
module FixedClockBroadcast_5(
input auto_anon_in_clock,
auto_anon_in_reset,
output auto_anon_out_4_clock,
auto_anon_out_4_reset,
auto_anon_out_3_clock,
output auto_anon_out_3_clock,
auto_anon_out_3_reset,
auto_anon_out_2_clock,
auto_anon_out_2_reset,
@@ -14,8 +12,6 @@ module FixedClockBroadcast_5(
auto_anon_out_0_reset
);
assign auto_anon_out_4_clock = auto_anon_in_clock;
assign auto_anon_out_4_reset = auto_anon_in_reset;
assign auto_anon_out_3_clock = auto_anon_in_clock;
assign auto_anon_out_3_reset = auto_anon_in_reset;
assign auto_anon_out_2_clock = auto_anon_in_clock;
@@ -0,0 +1,31 @@
// Generated by CIRCT firtool-1.151.0
module FixedClockBroadcast_6(
input auto_anon_in_clock,
auto_anon_in_reset,
output auto_anon_out_5_clock,
auto_anon_out_5_reset,
auto_anon_out_4_clock,
auto_anon_out_4_reset,
auto_anon_out_3_clock,
auto_anon_out_3_reset,
auto_anon_out_2_clock,
auto_anon_out_2_reset,
auto_anon_out_1_clock,
auto_anon_out_1_reset,
auto_anon_out_0_clock,
auto_anon_out_0_reset
);
assign auto_anon_out_5_clock = auto_anon_in_clock;
assign auto_anon_out_5_reset = auto_anon_in_reset;
assign auto_anon_out_4_clock = auto_anon_in_clock;
assign auto_anon_out_4_reset = auto_anon_in_reset;
assign auto_anon_out_3_clock = auto_anon_in_clock;
assign auto_anon_out_3_reset = auto_anon_in_reset;
assign auto_anon_out_2_clock = auto_anon_in_clock;
assign auto_anon_out_2_reset = auto_anon_in_reset;
assign auto_anon_out_1_clock = auto_anon_in_clock;
assign auto_anon_out_1_reset = auto_anon_in_reset;
assign auto_anon_out_0_clock = auto_anon_in_clock;
assign auto_anon_out_0_reset = auto_anon_in_reset;
endmodule
@@ -0,0 +1,49 @@
// Generated by CIRCT firtool-1.151.0
module MAX2771SPIClockSinkDomain(
output auto_dev_in_a_ready,
input auto_dev_in_a_valid,
input [2:0] auto_dev_in_a_bits_opcode,
input [1:0] auto_dev_in_a_bits_size,
input [5:0] auto_dev_in_a_bits_source,
input [28:0] auto_dev_in_a_bits_address,
input [7:0] auto_dev_in_a_bits_mask,
input [63:0] auto_dev_in_a_bits_data,
input auto_dev_in_d_ready,
output auto_dev_in_d_valid,
output [2:0] auto_dev_in_d_bits_opcode,
output [1:0] auto_dev_in_d_bits_size,
output [5:0] auto_dev_in_d_bits_source,
output [63:0] auto_dev_in_d_bits_data,
output auto_dev_sdata_oe_out,
auto_dev_sdata_out_out,
input auto_dev_sdata_in_in,
output auto_dev_csn_out,
auto_dev_sclk_out,
input auto_clock_in_clock,
auto_clock_in_reset
);
TLMAX2771SPI dev (
.clock (auto_clock_in_clock),
.reset (auto_clock_in_reset),
.auto_in_a_ready (auto_dev_in_a_ready),
.auto_in_a_valid (auto_dev_in_a_valid),
.auto_in_a_bits_opcode (auto_dev_in_a_bits_opcode),
.auto_in_a_bits_size (auto_dev_in_a_bits_size),
.auto_in_a_bits_source (auto_dev_in_a_bits_source),
.auto_in_a_bits_address (auto_dev_in_a_bits_address),
.auto_in_a_bits_mask (auto_dev_in_a_bits_mask),
.auto_in_a_bits_data (auto_dev_in_a_bits_data),
.auto_in_d_ready (auto_dev_in_d_ready),
.auto_in_d_valid (auto_dev_in_d_valid),
.auto_in_d_bits_opcode (auto_dev_in_d_bits_opcode),
.auto_in_d_bits_size (auto_dev_in_d_bits_size),
.auto_in_d_bits_source (auto_dev_in_d_bits_source),
.auto_in_d_bits_data (auto_dev_in_d_bits_data),
.auto_sdata_oe_out (auto_dev_sdata_oe_out),
.auto_sdata_out_out (auto_dev_sdata_out_out),
.auto_sdata_in_in (auto_dev_sdata_in_in),
.auto_csn_out (auto_dev_csn_out),
.auto_sclk_out (auto_dev_sclk_out)
);
endmodule
@@ -11,16 +11,18 @@ module PMAChecker(
);
wire [9:0] _GEN = io_paddr[25:16] ^ 10'h200;
wire [16:0] _GEN_0 = io_paddr[28:12] ^ 17'h10014;
wire [11:0] _GEN_1 = io_paddr[31:20] ^ 12'h800;
wire [16:0] _GEN_0 = io_paddr[28:12] ^ 17'h10013;
wire [16:0] _GEN_1 = io_paddr[28:12] ^ 17'h10014;
wire [16:0] _GEN_2 = io_paddr[28:12] ^ 17'h10016;
wire [16:0] _GEN_3 = io_paddr[28:12] ^ 17'h10020;
wire [11:0] _GEN_4 = io_paddr[31:20] ^ 12'h800;
wire legal_address =
io_paddr[33:12] == 22'h0 | {io_paddr[33:14], ~(io_paddr[13:12])} == 22'h0
| {io_paddr[33:17], ~(io_paddr[16])} == 18'h0 | {io_paddr[33:26], _GEN} == 18'h0
| {io_paddr[33:28], ~(io_paddr[27:26])} == 8'h0
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10013} == 22'h0
| {io_paddr[33:29], _GEN_0} == 22'h0
| {io_paddr[33:28], ~(io_paddr[27:26])} == 8'h0 | {io_paddr[33:29], _GEN_0} == 22'h0
| {io_paddr[33:29], _GEN_1} == 22'h0
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10015} == 22'h0
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10020} == 22'h0
| {io_paddr[33:29], _GEN_2} == 22'h0 | {io_paddr[33:29], _GEN_3} == 22'h0
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10021} == 22'h0
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10022} == 22'h0
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10023} == 22'h0
@@ -31,36 +33,34 @@ module PMAChecker(
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10028} == 22'h0
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10029} == 22'h0
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h1002A} == 22'h0
| {io_paddr[33:32], _GEN_1} == 14'h0;
wire _GEN_2 = |{io_paddr[31:29], io_paddr[27], io_paddr[16]};
wire _GEN_3 = |{io_paddr[31:27], io_paddr[16], io_paddr[14]};
wire _GEN_4 = |{io_paddr[31:28], ~(io_paddr[27])};
wire [16:0] _GEN_5 = io_paddr[28:12] ^ 17'h10011;
wire _GEN_6 =
|{io_paddr[31:29], _GEN_5[16:15], _GEN_5[4], io_paddr[14], _GEN_5[0]};
wire _GEN_7 = |{io_paddr[31:29], _GEN_0[16:15], _GEN_0[4], _GEN_0[2]};
wire _GEN_8 = |(_GEN_1[11:7]);
wire [14:0] _GEN_9 = io_paddr[28:14] ^ 15'h4002;
| {io_paddr[33:32], _GEN_4} == 14'h0;
wire _GEN_5 = |{io_paddr[31:27], io_paddr[19:16]};
wire _GEN_6 = |{io_paddr[31:27], io_paddr[19:15]};
wire _GEN_7 = |{io_paddr[31:28], ~(io_paddr[27])};
wire [13:0] _GEN_8 = io_paddr[28:15] ^ 14'h2002;
wire _GEN_9 = |{io_paddr[31:29], _GEN_8[13:12], _GEN_8[4:0]};
wire _GEN_10 = |{io_paddr[31:29], _GEN_3[16:15], _GEN_3[7:4]};
wire _GEN_11 = |(_GEN_4[11:7]);
assign io_resp_r = legal_address;
assign io_resp_w =
legal_address & (~_GEN_2 | ~_GEN_3 | ~_GEN_4 | ~_GEN_6 | ~_GEN_7 | ~_GEN_8);
legal_address & (~_GEN_5 | ~_GEN_6 | ~_GEN_7 | ~_GEN_9 | ~_GEN_10 | ~_GEN_11);
assign io_resp_pp =
legal_address & (~_GEN_2 | ~_GEN_3 | ~_GEN_4 | ~_GEN_6 | ~_GEN_7 | ~_GEN_8);
legal_address & (~_GEN_5 | ~_GEN_6 | ~_GEN_7 | ~_GEN_9 | ~_GEN_10 | ~_GEN_11);
assign io_resp_al =
legal_address & (~_GEN_2 | ~_GEN_3 | ~_GEN_4 | ~_GEN_6 | ~_GEN_7 | ~_GEN_8);
legal_address & (~_GEN_5 | ~_GEN_6 | ~_GEN_7 | ~_GEN_9 | ~_GEN_10 | ~_GEN_11);
assign io_resp_aa =
legal_address & (~_GEN_2 | ~_GEN_3 | ~_GEN_4 | ~_GEN_6 | ~_GEN_7 | ~_GEN_8);
legal_address & (~_GEN_5 | ~_GEN_6 | ~_GEN_7 | ~_GEN_9 | ~_GEN_10 | ~_GEN_11);
assign io_resp_x =
legal_address
& ({io_paddr[30:27], io_paddr[25]} == 5'h0
| {io_paddr[31:27], io_paddr[25], io_paddr[14]} == 7'h0);
assign io_resp_eff =
legal_address
& ({io_paddr[31:27], io_paddr[25], io_paddr[16:14], io_paddr[12]} == 10'h0
| {io_paddr[31:27], _GEN[9], io_paddr[16]} == 7'h0 | ~_GEN_4
| {io_paddr[31:29], io_paddr[28:27] ^ 2'h2, io_paddr[25], io_paddr[16:15]} == 8'h0
| {io_paddr[31:29], _GEN_9[14:13], io_paddr[25], _GEN_9[2:0]} == 9'h0
| {io_paddr[31:29], _GEN_5[16:15], io_paddr[25], _GEN_5[4:2], _GEN_5[0]} == 10'h0
| {io_paddr[31:29], _GEN_0[16:15], io_paddr[25], _GEN_0[4:2]} == 9'h0);
& ({io_paddr[31:27], io_paddr[25], io_paddr[16], io_paddr[14:12]} == 10'h0
| {io_paddr[31:27], _GEN[9], io_paddr[16]} == 7'h0 | ~_GEN_7
| {io_paddr[31:29], io_paddr[28:27] ^ 2'h2, io_paddr[25], io_paddr[16]} == 7'h0
| {io_paddr[31:29], _GEN_0[16:15], io_paddr[25], _GEN_0[4], _GEN_0[2:0]} == 10'h0
| {io_paddr[31:29], _GEN_1[16:15], io_paddr[25], _GEN_1[4], _GEN_1[2:1]} == 9'h0
| {io_paddr[31:29], _GEN_2[16:15], io_paddr[25], _GEN_2[4], _GEN_2[2:0]} == 10'h0);
endmodule
@@ -420,8 +420,6 @@ module PeripheryBus_cbus(
FixedClockBroadcast_5 fixedClockNode (
.auto_anon_in_clock (_clockGroup_auto_out_clock),
.auto_anon_in_reset (_clockGroup_auto_out_reset),
.auto_anon_out_4_clock (/* unused */),
.auto_anon_out_4_reset (/* unused */),
.auto_anon_out_3_clock (auto_fixedClockNode_anon_out_2_clock),
.auto_anon_out_3_reset (auto_fixedClockNode_anon_out_2_reset),
.auto_anon_out_2_clock (auto_fixedClockNode_anon_out_1_clock),
@@ -27,7 +27,21 @@ module PeripheryBus_pbus(
auto_coupler_to_gps_fragmenter_anon_out_d_bits_denied,
input [31:0] auto_coupler_to_gps_fragmenter_anon_out_d_bits_data,
input auto_coupler_to_gps_fragmenter_anon_out_d_bits_corrupt,
auto_coupler_to_fpga_pmod_spi_fragmenter_anon_out_a_ready,
auto_coupler_to_max2771_spi_fragmenter_anon_out_a_ready,
output auto_coupler_to_max2771_spi_fragmenter_anon_out_a_valid,
output [2:0] auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_opcode,
output [1:0] auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_size,
output [5:0] auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_source,
output [28:0] auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_address,
output [7:0] auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_mask,
output [63:0] auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_data,
output auto_coupler_to_max2771_spi_fragmenter_anon_out_d_ready,
input auto_coupler_to_max2771_spi_fragmenter_anon_out_d_valid,
input [2:0] auto_coupler_to_max2771_spi_fragmenter_anon_out_d_bits_opcode,
input [1:0] auto_coupler_to_max2771_spi_fragmenter_anon_out_d_bits_size,
input [5:0] auto_coupler_to_max2771_spi_fragmenter_anon_out_d_bits_source,
input [63:0] auto_coupler_to_max2771_spi_fragmenter_anon_out_d_bits_data,
input auto_coupler_to_fpga_pmod_spi_fragmenter_anon_out_a_ready,
output auto_coupler_to_fpga_pmod_spi_fragmenter_anon_out_a_valid,
output [2:0] auto_coupler_to_fpga_pmod_spi_fragmenter_anon_out_a_bits_opcode,
output [1:0] auto_coupler_to_fpga_pmod_spi_fragmenter_anon_out_a_bits_size,
@@ -69,7 +83,9 @@ module PeripheryBus_pbus(
input [1:0] auto_coupler_to_fpga_uart_fragmenter_anon_out_d_bits_size,
input [5:0] auto_coupler_to_fpga_uart_fragmenter_anon_out_d_bits_source,
input [63:0] auto_coupler_to_fpga_uart_fragmenter_anon_out_d_bits_data,
output auto_fixedClockNode_anon_out_3_clock,
output auto_fixedClockNode_anon_out_4_clock,
auto_fixedClockNode_anon_out_4_reset,
auto_fixedClockNode_anon_out_3_clock,
auto_fixedClockNode_anon_out_3_reset,
auto_fixedClockNode_anon_out_2_clock,
auto_fixedClockNode_anon_out_2_reset,
@@ -118,6 +134,12 @@ module PeripheryBus_pbus(
wire _coupler_to_gps_auto_tl_in_d_bits_denied;
wire [63:0] _coupler_to_gps_auto_tl_in_d_bits_data;
wire _coupler_to_gps_auto_tl_in_d_bits_corrupt;
wire _coupler_to_max2771_spi_auto_tl_in_a_ready;
wire _coupler_to_max2771_spi_auto_tl_in_d_valid;
wire [2:0] _coupler_to_max2771_spi_auto_tl_in_d_bits_opcode;
wire [2:0] _coupler_to_max2771_spi_auto_tl_in_d_bits_size;
wire [1:0] _coupler_to_max2771_spi_auto_tl_in_d_bits_source;
wire [63:0] _coupler_to_max2771_spi_auto_tl_in_d_bits_data;
wire _coupler_to_fpga_pmod_spi_auto_tl_in_a_ready;
wire _coupler_to_fpga_pmod_spi_auto_tl_in_d_valid;
wire [2:0] _coupler_to_fpga_pmod_spi_auto_tl_in_d_bits_opcode;
@@ -217,22 +239,30 @@ module PeripheryBus_pbus(
wire _out_xbar_auto_anon_in_d_bits_denied;
wire [63:0] _out_xbar_auto_anon_in_d_bits_data;
wire _out_xbar_auto_anon_in_d_bits_corrupt;
wire _out_xbar_auto_anon_out_4_a_valid;
wire [2:0] _out_xbar_auto_anon_out_4_a_bits_opcode;
wire [2:0] _out_xbar_auto_anon_out_4_a_bits_param;
wire [2:0] _out_xbar_auto_anon_out_4_a_bits_size;
wire [1:0] _out_xbar_auto_anon_out_4_a_bits_source;
wire [28:0] _out_xbar_auto_anon_out_4_a_bits_address;
wire _out_xbar_auto_anon_out_4_a_bits_user_amba_prot_bufferable;
wire _out_xbar_auto_anon_out_4_a_bits_user_amba_prot_modifiable;
wire _out_xbar_auto_anon_out_4_a_bits_user_amba_prot_readalloc;
wire _out_xbar_auto_anon_out_4_a_bits_user_amba_prot_writealloc;
wire _out_xbar_auto_anon_out_4_a_bits_user_amba_prot_privileged;
wire _out_xbar_auto_anon_out_4_a_bits_user_amba_prot_secure;
wire _out_xbar_auto_anon_out_4_a_bits_user_amba_prot_fetch;
wire [7:0] _out_xbar_auto_anon_out_4_a_bits_mask;
wire [63:0] _out_xbar_auto_anon_out_4_a_bits_data;
wire _out_xbar_auto_anon_out_4_a_bits_corrupt;
wire _out_xbar_auto_anon_out_4_d_ready;
wire _out_xbar_auto_anon_out_3_a_valid;
wire [2:0] _out_xbar_auto_anon_out_3_a_bits_opcode;
wire [2:0] _out_xbar_auto_anon_out_3_a_bits_param;
wire [2:0] _out_xbar_auto_anon_out_3_a_bits_size;
wire [1:0] _out_xbar_auto_anon_out_3_a_bits_source;
wire [28:0] _out_xbar_auto_anon_out_3_a_bits_address;
wire _out_xbar_auto_anon_out_3_a_bits_user_amba_prot_bufferable;
wire _out_xbar_auto_anon_out_3_a_bits_user_amba_prot_modifiable;
wire _out_xbar_auto_anon_out_3_a_bits_user_amba_prot_readalloc;
wire _out_xbar_auto_anon_out_3_a_bits_user_amba_prot_writealloc;
wire _out_xbar_auto_anon_out_3_a_bits_user_amba_prot_privileged;
wire _out_xbar_auto_anon_out_3_a_bits_user_amba_prot_secure;
wire _out_xbar_auto_anon_out_3_a_bits_user_amba_prot_fetch;
wire [7:0] _out_xbar_auto_anon_out_3_a_bits_mask;
wire [63:0] _out_xbar_auto_anon_out_3_a_bits_data;
wire _out_xbar_auto_anon_out_3_a_bits_corrupt;
wire _out_xbar_auto_anon_out_3_d_ready;
wire _out_xbar_auto_anon_out_2_a_valid;
wire [2:0] _out_xbar_auto_anon_out_2_a_bits_opcode;
@@ -330,9 +360,11 @@ module PeripheryBus_pbus(
.auto_out_clock (_clockGroup_auto_out_clock),
.auto_out_reset (_clockGroup_auto_out_reset)
);
FixedClockBroadcast_5 fixedClockNode (
FixedClockBroadcast_6 fixedClockNode (
.auto_anon_in_clock (_clockGroup_auto_out_clock),
.auto_anon_in_reset (_clockGroup_auto_out_reset),
.auto_anon_out_5_clock (auto_fixedClockNode_anon_out_4_clock),
.auto_anon_out_5_reset (auto_fixedClockNode_anon_out_4_reset),
.auto_anon_out_4_clock (auto_fixedClockNode_anon_out_3_clock),
.auto_anon_out_4_reset (auto_fixedClockNode_anon_out_3_reset),
.auto_anon_out_3_clock (auto_fixedClockNode_anon_out_2_clock),
@@ -493,7 +525,7 @@ module PeripheryBus_pbus(
.auto_anon_out_d_bits_data (_atomics_auto_in_d_bits_data),
.auto_anon_out_d_bits_corrupt (_atomics_auto_in_d_bits_corrupt)
);
TLXbar_pbus_out_i1_o4_a29d64s2k1z3u out_xbar (
TLXbar_pbus_out_i1_o5_a29d64s2k1z3u out_xbar (
.clock
(_fixedClockNode_auto_anon_out_0_clock),
.reset
@@ -544,58 +576,84 @@ module PeripheryBus_pbus(
(_out_xbar_auto_anon_in_d_bits_data),
.auto_anon_in_d_bits_corrupt
(_out_xbar_auto_anon_in_d_bits_corrupt),
.auto_anon_out_3_a_ready
.auto_anon_out_4_a_ready
(_coupler_to_gps_auto_tl_in_a_ready),
.auto_anon_out_4_a_valid (_out_xbar_auto_anon_out_4_a_valid),
.auto_anon_out_4_a_bits_opcode
(_out_xbar_auto_anon_out_4_a_bits_opcode),
.auto_anon_out_4_a_bits_param
(_out_xbar_auto_anon_out_4_a_bits_param),
.auto_anon_out_4_a_bits_size
(_out_xbar_auto_anon_out_4_a_bits_size),
.auto_anon_out_4_a_bits_source
(_out_xbar_auto_anon_out_4_a_bits_source),
.auto_anon_out_4_a_bits_address
(_out_xbar_auto_anon_out_4_a_bits_address),
.auto_anon_out_4_a_bits_user_amba_prot_bufferable
(_out_xbar_auto_anon_out_4_a_bits_user_amba_prot_bufferable),
.auto_anon_out_4_a_bits_user_amba_prot_modifiable
(_out_xbar_auto_anon_out_4_a_bits_user_amba_prot_modifiable),
.auto_anon_out_4_a_bits_user_amba_prot_readalloc
(_out_xbar_auto_anon_out_4_a_bits_user_amba_prot_readalloc),
.auto_anon_out_4_a_bits_user_amba_prot_writealloc
(_out_xbar_auto_anon_out_4_a_bits_user_amba_prot_writealloc),
.auto_anon_out_4_a_bits_user_amba_prot_privileged
(_out_xbar_auto_anon_out_4_a_bits_user_amba_prot_privileged),
.auto_anon_out_4_a_bits_user_amba_prot_secure
(_out_xbar_auto_anon_out_4_a_bits_user_amba_prot_secure),
.auto_anon_out_4_a_bits_user_amba_prot_fetch
(_out_xbar_auto_anon_out_4_a_bits_user_amba_prot_fetch),
.auto_anon_out_4_a_bits_mask
(_out_xbar_auto_anon_out_4_a_bits_mask),
.auto_anon_out_4_a_bits_data
(_out_xbar_auto_anon_out_4_a_bits_data),
.auto_anon_out_4_a_bits_corrupt
(_out_xbar_auto_anon_out_4_a_bits_corrupt),
.auto_anon_out_4_d_ready (_out_xbar_auto_anon_out_4_d_ready),
.auto_anon_out_4_d_valid
(_coupler_to_gps_auto_tl_in_d_valid),
.auto_anon_out_4_d_bits_opcode
(_coupler_to_gps_auto_tl_in_d_bits_opcode),
.auto_anon_out_4_d_bits_param
(_coupler_to_gps_auto_tl_in_d_bits_param),
.auto_anon_out_4_d_bits_size
(_coupler_to_gps_auto_tl_in_d_bits_size),
.auto_anon_out_4_d_bits_source
(_coupler_to_gps_auto_tl_in_d_bits_source),
.auto_anon_out_4_d_bits_sink
(_coupler_to_gps_auto_tl_in_d_bits_sink),
.auto_anon_out_4_d_bits_denied
(_coupler_to_gps_auto_tl_in_d_bits_denied),
.auto_anon_out_4_d_bits_data
(_coupler_to_gps_auto_tl_in_d_bits_data),
.auto_anon_out_4_d_bits_corrupt
(_coupler_to_gps_auto_tl_in_d_bits_corrupt),
.auto_anon_out_3_a_ready
(_coupler_to_max2771_spi_auto_tl_in_a_ready),
.auto_anon_out_3_a_valid (_out_xbar_auto_anon_out_3_a_valid),
.auto_anon_out_3_a_bits_opcode
(_out_xbar_auto_anon_out_3_a_bits_opcode),
.auto_anon_out_3_a_bits_param
(_out_xbar_auto_anon_out_3_a_bits_param),
.auto_anon_out_3_a_bits_size
(_out_xbar_auto_anon_out_3_a_bits_size),
.auto_anon_out_3_a_bits_source
(_out_xbar_auto_anon_out_3_a_bits_source),
.auto_anon_out_3_a_bits_address
(_out_xbar_auto_anon_out_3_a_bits_address),
.auto_anon_out_3_a_bits_user_amba_prot_bufferable
(_out_xbar_auto_anon_out_3_a_bits_user_amba_prot_bufferable),
.auto_anon_out_3_a_bits_user_amba_prot_modifiable
(_out_xbar_auto_anon_out_3_a_bits_user_amba_prot_modifiable),
.auto_anon_out_3_a_bits_user_amba_prot_readalloc
(_out_xbar_auto_anon_out_3_a_bits_user_amba_prot_readalloc),
.auto_anon_out_3_a_bits_user_amba_prot_writealloc
(_out_xbar_auto_anon_out_3_a_bits_user_amba_prot_writealloc),
.auto_anon_out_3_a_bits_user_amba_prot_privileged
(_out_xbar_auto_anon_out_3_a_bits_user_amba_prot_privileged),
.auto_anon_out_3_a_bits_user_amba_prot_secure
(_out_xbar_auto_anon_out_3_a_bits_user_amba_prot_secure),
.auto_anon_out_3_a_bits_user_amba_prot_fetch
(_out_xbar_auto_anon_out_3_a_bits_user_amba_prot_fetch),
.auto_anon_out_3_a_bits_mask
(_out_xbar_auto_anon_out_3_a_bits_mask),
.auto_anon_out_3_a_bits_data
(_out_xbar_auto_anon_out_3_a_bits_data),
.auto_anon_out_3_a_bits_corrupt
(_out_xbar_auto_anon_out_3_a_bits_corrupt),
.auto_anon_out_3_d_ready (_out_xbar_auto_anon_out_3_d_ready),
.auto_anon_out_3_d_valid
(_coupler_to_gps_auto_tl_in_d_valid),
(_coupler_to_max2771_spi_auto_tl_in_d_valid),
.auto_anon_out_3_d_bits_opcode
(_coupler_to_gps_auto_tl_in_d_bits_opcode),
.auto_anon_out_3_d_bits_param
(_coupler_to_gps_auto_tl_in_d_bits_param),
(_coupler_to_max2771_spi_auto_tl_in_d_bits_opcode),
.auto_anon_out_3_d_bits_size
(_coupler_to_gps_auto_tl_in_d_bits_size),
(_coupler_to_max2771_spi_auto_tl_in_d_bits_size),
.auto_anon_out_3_d_bits_source
(_coupler_to_gps_auto_tl_in_d_bits_source),
.auto_anon_out_3_d_bits_sink
(_coupler_to_gps_auto_tl_in_d_bits_sink),
.auto_anon_out_3_d_bits_denied
(_coupler_to_gps_auto_tl_in_d_bits_denied),
(_coupler_to_max2771_spi_auto_tl_in_d_bits_source),
.auto_anon_out_3_d_bits_data
(_coupler_to_gps_auto_tl_in_d_bits_data),
.auto_anon_out_3_d_bits_corrupt
(_coupler_to_gps_auto_tl_in_d_bits_corrupt),
(_coupler_to_max2771_spi_auto_tl_in_d_bits_data),
.auto_anon_out_2_a_ready
(_coupler_to_fpga_pmod_spi_auto_tl_in_a_ready),
.auto_anon_out_2_a_valid (_out_xbar_auto_anon_out_2_a_valid),
@@ -1042,6 +1100,56 @@ module PeripheryBus_pbus(
.auto_tl_in_d_bits_data
(_coupler_to_fpga_pmod_spi_auto_tl_in_d_bits_data)
);
TLInterconnectCoupler_pbus_to_fpga_uart coupler_to_max2771_spi (
.clock (_fixedClockNode_auto_anon_out_0_clock),
.reset (_fixedClockNode_auto_anon_out_0_reset),
.auto_fragmenter_anon_out_a_ready
(auto_coupler_to_max2771_spi_fragmenter_anon_out_a_ready),
.auto_fragmenter_anon_out_a_valid
(auto_coupler_to_max2771_spi_fragmenter_anon_out_a_valid),
.auto_fragmenter_anon_out_a_bits_opcode
(auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_opcode),
.auto_fragmenter_anon_out_a_bits_size
(auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_size),
.auto_fragmenter_anon_out_a_bits_source
(auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_source),
.auto_fragmenter_anon_out_a_bits_address
(auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_address),
.auto_fragmenter_anon_out_a_bits_mask
(auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_mask),
.auto_fragmenter_anon_out_a_bits_data
(auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_data),
.auto_fragmenter_anon_out_d_ready
(auto_coupler_to_max2771_spi_fragmenter_anon_out_d_ready),
.auto_fragmenter_anon_out_d_valid
(auto_coupler_to_max2771_spi_fragmenter_anon_out_d_valid),
.auto_fragmenter_anon_out_d_bits_opcode
(auto_coupler_to_max2771_spi_fragmenter_anon_out_d_bits_opcode),
.auto_fragmenter_anon_out_d_bits_size
(auto_coupler_to_max2771_spi_fragmenter_anon_out_d_bits_size),
.auto_fragmenter_anon_out_d_bits_source
(auto_coupler_to_max2771_spi_fragmenter_anon_out_d_bits_source),
.auto_fragmenter_anon_out_d_bits_data
(auto_coupler_to_max2771_spi_fragmenter_anon_out_d_bits_data),
.auto_tl_in_a_ready (_coupler_to_max2771_spi_auto_tl_in_a_ready),
.auto_tl_in_a_valid (_out_xbar_auto_anon_out_3_a_valid),
.auto_tl_in_a_bits_opcode (_out_xbar_auto_anon_out_3_a_bits_opcode),
.auto_tl_in_a_bits_size (_out_xbar_auto_anon_out_3_a_bits_size),
.auto_tl_in_a_bits_source (_out_xbar_auto_anon_out_3_a_bits_source),
.auto_tl_in_a_bits_address (_out_xbar_auto_anon_out_3_a_bits_address),
.auto_tl_in_a_bits_mask (_out_xbar_auto_anon_out_3_a_bits_mask),
.auto_tl_in_a_bits_data (_out_xbar_auto_anon_out_3_a_bits_data),
.auto_tl_in_d_ready (_out_xbar_auto_anon_out_3_d_ready),
.auto_tl_in_d_valid (_coupler_to_max2771_spi_auto_tl_in_d_valid),
.auto_tl_in_d_bits_opcode
(_coupler_to_max2771_spi_auto_tl_in_d_bits_opcode),
.auto_tl_in_d_bits_size
(_coupler_to_max2771_spi_auto_tl_in_d_bits_size),
.auto_tl_in_d_bits_source
(_coupler_to_max2771_spi_auto_tl_in_d_bits_source),
.auto_tl_in_d_bits_data
(_coupler_to_max2771_spi_auto_tl_in_d_bits_data)
);
TLInterconnectCoupler_pbus_to_gps coupler_to_gps (
.clock
(_fixedClockNode_auto_anon_out_0_clock),
@@ -1104,39 +1212,39 @@ module PeripheryBus_pbus(
.auto_tl_in_a_ready
(_coupler_to_gps_auto_tl_in_a_ready),
.auto_tl_in_a_valid
(_out_xbar_auto_anon_out_3_a_valid),
(_out_xbar_auto_anon_out_4_a_valid),
.auto_tl_in_a_bits_opcode
(_out_xbar_auto_anon_out_3_a_bits_opcode),
(_out_xbar_auto_anon_out_4_a_bits_opcode),
.auto_tl_in_a_bits_param
(_out_xbar_auto_anon_out_3_a_bits_param),
(_out_xbar_auto_anon_out_4_a_bits_param),
.auto_tl_in_a_bits_size
(_out_xbar_auto_anon_out_3_a_bits_size),
(_out_xbar_auto_anon_out_4_a_bits_size),
.auto_tl_in_a_bits_source
(_out_xbar_auto_anon_out_3_a_bits_source),
(_out_xbar_auto_anon_out_4_a_bits_source),
.auto_tl_in_a_bits_address
(_out_xbar_auto_anon_out_3_a_bits_address),
(_out_xbar_auto_anon_out_4_a_bits_address),
.auto_tl_in_a_bits_user_amba_prot_bufferable
(_out_xbar_auto_anon_out_3_a_bits_user_amba_prot_bufferable),
(_out_xbar_auto_anon_out_4_a_bits_user_amba_prot_bufferable),
.auto_tl_in_a_bits_user_amba_prot_modifiable
(_out_xbar_auto_anon_out_3_a_bits_user_amba_prot_modifiable),
(_out_xbar_auto_anon_out_4_a_bits_user_amba_prot_modifiable),
.auto_tl_in_a_bits_user_amba_prot_readalloc
(_out_xbar_auto_anon_out_3_a_bits_user_amba_prot_readalloc),
(_out_xbar_auto_anon_out_4_a_bits_user_amba_prot_readalloc),
.auto_tl_in_a_bits_user_amba_prot_writealloc
(_out_xbar_auto_anon_out_3_a_bits_user_amba_prot_writealloc),
(_out_xbar_auto_anon_out_4_a_bits_user_amba_prot_writealloc),
.auto_tl_in_a_bits_user_amba_prot_privileged
(_out_xbar_auto_anon_out_3_a_bits_user_amba_prot_privileged),
(_out_xbar_auto_anon_out_4_a_bits_user_amba_prot_privileged),
.auto_tl_in_a_bits_user_amba_prot_secure
(_out_xbar_auto_anon_out_3_a_bits_user_amba_prot_secure),
(_out_xbar_auto_anon_out_4_a_bits_user_amba_prot_secure),
.auto_tl_in_a_bits_user_amba_prot_fetch
(_out_xbar_auto_anon_out_3_a_bits_user_amba_prot_fetch),
(_out_xbar_auto_anon_out_4_a_bits_user_amba_prot_fetch),
.auto_tl_in_a_bits_mask
(_out_xbar_auto_anon_out_3_a_bits_mask),
(_out_xbar_auto_anon_out_4_a_bits_mask),
.auto_tl_in_a_bits_data
(_out_xbar_auto_anon_out_3_a_bits_data),
(_out_xbar_auto_anon_out_4_a_bits_data),
.auto_tl_in_a_bits_corrupt
(_out_xbar_auto_anon_out_3_a_bits_corrupt),
(_out_xbar_auto_anon_out_4_a_bits_corrupt),
.auto_tl_in_d_ready
(_out_xbar_auto_anon_out_3_d_ready),
(_out_xbar_auto_anon_out_4_d_ready),
.auto_tl_in_d_valid
(_coupler_to_gps_auto_tl_in_d_valid),
.auto_tl_in_d_bits_opcode
@@ -1,5 +1,5 @@
// Generated by CIRCT firtool-1.151.0
module Repeater_TLBundleA_a29d64s2k1z3u_3(
module Repeater_TLBundleA_a29d64s2k1z3u_4(
input clock,
reset,
io_repeat,
@@ -71,27 +71,28 @@ module SBToTL(
wire _GEN_3 = |{io_addrIn[127:28], ~(io_addrIn[27:26])};
wire _GEN_4 = |{io_addrIn[127:29], io_addrIn[28:12] ^ 17'h10013};
wire _GEN_5 = |{io_addrIn[127:29], io_addrIn[28:13] ^ 16'h800A};
wire _GEN_6 = |{io_addrIn[127:29], io_addrIn[28:15] ^ 14'h2004};
wire _GEN_7 = |{io_addrIn[127:29], io_addrIn[28:13] ^ 16'h8014};
wire _GEN_8 = |{io_addrIn[127:29], io_addrIn[28:12] ^ 17'h1002A};
wire _GEN_9 = |{io_addrIn[127:32], io_addrIn[31:20] ^ 12'h800};
wire _GEN_6 = |{io_addrIn[127:29], io_addrIn[28:12] ^ 17'h10016};
wire _GEN_7 = |{io_addrIn[127:29], io_addrIn[28:15] ^ 14'h2004};
wire _GEN_8 = |{io_addrIn[127:29], io_addrIn[28:13] ^ 16'h8014};
wire _GEN_9 = |{io_addrIn[127:29], io_addrIn[28:12] ^ 17'h1002A};
wire _GEN_10 = |{io_addrIn[127:32], io_addrIn[31:20] ^ 12'h800};
wire io_rdLegal_0 =
~_GEN_0 | ~_GEN_1 | {io_addrIn[127:17], ~(io_addrIn[16])} == 112'h0 | ~_GEN_2
| ~_GEN_3 | ~_GEN_4 | ~_GEN_5 | ~_GEN_6 | ~_GEN_7 | ~_GEN_8 | ~_GEN_9;
| ~_GEN_3 | ~_GEN_4 | ~_GEN_5 | ~_GEN_6 | ~_GEN_7 | ~_GEN_8 | ~_GEN_9 | ~_GEN_10;
wire io_wrLegal_0 =
~_GEN_0 | ~_GEN_1 | ~_GEN_2 | ~_GEN_3 | ~_GEN_4 | ~_GEN_5 | ~_GEN_6 | ~_GEN_7
| ~_GEN_8 | ~_GEN_9;
| ~_GEN_8 | ~_GEN_9 | ~_GEN_10;
wire _nodeOut_a_valid_T = sbState == 3'h1;
wire _nodeOut_a_valid_T_1 = sbState == 3'h2;
wire rdTxValid = _rdTxValid_T & _d_q_io_deq_valid & d_q_io_deq_ready;
wire txLast = {4'h0, counter} == (8'h1 << io_sizeIn) - 8'h1;
wire _GEN_10 = sbState == 3'h0;
wire _GEN_11 = sbState == 3'h0;
wire nodeOut_a_valid = _nodeOut_a_valid_T | _nodeOut_a_valid_T_1;
wire _GEN_11 =
_GEN_10 | _nodeOut_a_valid_T | _nodeOut_a_valid_T_1 | _rdTxValid_T | _io_wrDone_T;
wire _GEN_12 =
_GEN_11 | _nodeOut_a_valid_T | _nodeOut_a_valid_T_1 | _rdTxValid_T | _io_wrDone_T;
`ifndef SYNTHESIS
always @(posedge clock) begin
if ((`PRINTF_COND_) & ~reset & ~_GEN_11)
if ((`PRINTF_COND_) & ~reset & ~_GEN_12)
$fwrite(32'h80000002,
"Assertion failed: SBA state machine in undefined state\n at SBA.scala:373 assert (sbState === Idle.id.U ||\n");
end // always @(posedge)
@@ -106,7 +107,7 @@ module SBToTL(
automatic logic _counter_T_2;
wrTxValid = _nodeOut_a_valid_T_1 & nodeOut_a_valid & auto_out_a_ready;
_counter_T_2 = wrTxValid | rdTxValid;
if (_GEN_10) begin
if (_GEN_11) begin
if (io_rdEn & io_rdLegal_0)
sbState <= 3'h1;
else if (io_wrEn & io_wrLegal_0)
@@ -94,42 +94,42 @@ module TLAtomicAutomata_cbus(
wire _GEN =
|{auto_in_a_bits_address[31:27],
auto_in_a_bits_address[25],
auto_in_a_bits_address[16:14],
~(auto_in_a_bits_address[12])};
wire _GEN_0 =
auto_in_a_bits_address[17:14],
~(auto_in_a_bits_address[13])};
wire [15:0] _GEN_0 = auto_in_a_bits_address[28:13] ^ 16'h8009;
wire _GEN_1 =
|{auto_in_a_bits_address[31:29],
auto_in_a_bits_address[28:27] ^ 2'h2,
_GEN_0[15:14],
auto_in_a_bits_address[25],
auto_in_a_bits_address[16:15]};
wire [14:0] _GEN_1 = auto_in_a_bits_address[28:14] ^ 15'h4002;
wire _GEN_2 =
_GEN_0[4:0]};
wire [14:0] _GEN_2 = auto_in_a_bits_address[28:14] ^ 15'h4005;
wire _GEN_3 =
|{auto_in_a_bits_address[31:29],
_GEN_1[14:13],
_GEN_2[14:13],
auto_in_a_bits_address[25],
_GEN_1[2:0]};
wire [16:0] _GEN_3 = auto_in_a_bits_address[28:12] ^ 17'h10011;
wire _GEN_4 =
_GEN_2[3:0]};
wire [13:0] _GEN_4 = auto_in_a_bits_address[28:15] ^ 14'h2004;
wire _GEN_5 =
|{auto_in_a_bits_address[31:29],
_GEN_3[16:15],
_GEN_4[13:12],
auto_in_a_bits_address[25],
_GEN_3[4:2],
_GEN_3[0]};
wire [14:0] _GEN_5 = auto_in_a_bits_address[28:14] ^ 15'h4005;
wire _GEN_6 =
|{auto_in_a_bits_address[31:29],
_GEN_5[14:13],
auto_in_a_bits_address[25],
_GEN_5[2:0]};
wire _a_canArithmetic_T_59 = |(auto_in_a_bits_size[3:1]);
_GEN_4[2:0]};
wire [14:0] _GEN_6 = auto_in_a_bits_address[28:14] ^ 15'h400A;
wire _GEN_7 =
|{auto_in_a_bits_address[31:29],
_GEN_6[14:13],
auto_in_a_bits_address[25],
_GEN_6[3:0]};
wire _a_canArithmetic_T_59 = |(auto_in_a_bits_size[3:1]);
wire _GEN_8 =
|{auto_in_a_bits_address[31:27] ^ 5'h10, auto_in_a_bits_address[25]};
wire a_isSupported =
auto_in_a_bits_opcode == 3'h3
? _a_canArithmetic_T_60 & (~_GEN | ~_GEN_0 | ~_GEN_2 | ~_GEN_4 | ~_GEN_6)
| _a_canArithmetic_T_59 & _a_canArithmetic_T_60 & ~_GEN_7
? _a_canArithmetic_T_60 & (~_GEN | ~_GEN_1 | ~_GEN_3 | ~_GEN_5 | ~_GEN_7)
| _a_canArithmetic_T_59 & _a_canArithmetic_T_60 & ~_GEN_8
: auto_in_a_bits_opcode != 3'h2 | _a_canArithmetic_T_60
& (~_GEN | ~_GEN_0 | ~_GEN_2 | ~_GEN_4 | ~_GEN_6) | _a_canArithmetic_T_59
& _a_canArithmetic_T_60 & ~_GEN_7;
& (~_GEN | ~_GEN_1 | ~_GEN_3 | ~_GEN_5 | ~_GEN_7) | _a_canArithmetic_T_59
& _a_canArithmetic_T_60 & ~_GEN_8;
wire [3:0] _logic_out_T = cam_a_0_lut >> {2'h0, cam_a_0_bits_data[0], cam_d_0_data[0]};
wire [3:0] _logic_out_T_2 =
cam_a_0_lut >> {2'h0, cam_a_0_bits_data[1], cam_d_0_data[1]};
@@ -257,7 +257,7 @@ module TLAtomicAutomata_cbus(
cam_a_0_lut >> {2'h0, cam_a_0_bits_data[62], cam_d_0_data[62]};
wire [3:0] _logic_out_T_126 =
cam_a_0_lut >> {2'h0, cam_a_0_bits_data[63], cam_d_0_data[63]};
wire [6:0] _GEN_8 = ~(cam_a_0_bits_mask[6:0]) | cam_a_0_bits_mask[7:1];
wire [6:0] _GEN_9 = ~(cam_a_0_bits_mask[6:0]) | cam_a_0_bits_mask[7:1];
wire [6:0] _signbit_a_T =
{cam_a_0_bits_data[55],
cam_a_0_bits_data[47],
@@ -265,7 +265,7 @@ module TLAtomicAutomata_cbus(
cam_a_0_bits_data[31],
cam_a_0_bits_data[23],
cam_a_0_bits_data[15],
cam_a_0_bits_data[7]} & ~_GEN_8;
cam_a_0_bits_data[7]} & ~_GEN_9;
wire [6:0] _signbit_d_T =
{cam_d_0_data[55],
cam_d_0_data[47],
@@ -273,7 +273,7 @@ module TLAtomicAutomata_cbus(
cam_d_0_data[31],
cam_d_0_data[23],
cam_d_0_data[15],
cam_d_0_data[7]} & ~_GEN_8;
cam_d_0_data[7]} & ~_GEN_9;
wire [7:0] _signext_a_T_2 = {_signbit_a_T, 1'h0} | {_signbit_a_T[5:0], 2'h0};
wire [7:0] _signext_a_T_5 = _signext_a_T_2 | {_signext_a_T_2[5:0], 2'h0};
wire [7:0] _signext_a_T_9 = _signext_a_T_5 | {_signext_a_T_5[3:0], 4'h0};
@@ -343,15 +343,15 @@ module TLAtomicAutomata_cbus(
reg [8:0] beatsLeft;
wire idle = beatsLeft == 9'h0;
wire winner_1 = ~cam_amo_0 & source_i_valid;
wire _GEN_9 = ~cam_amo_0 | ~winner_1;
wire _GEN_10 = ~cam_amo_0 | ~winner_1;
wire _nodeOut_a_valid_T = cam_amo_0 | source_i_valid;
wire _GEN_10 = ~_nodeOut_a_valid_T | cam_amo_0 | winner_1;
wire _GEN_11 = ~_nodeOut_a_valid_T | cam_amo_0 | winner_1;
`ifndef SYNTHESIS
always @(posedge clock) begin
if ((`PRINTF_COND_) & ~reset & ~_GEN_9)
if ((`PRINTF_COND_) & ~reset & ~_GEN_10)
$fwrite(32'h80000002,
"Assertion failed\n at Arbiter.scala:77 assert((prefixOR zip winner) map { case (p,w) => !p || !w } reduce {_ && _})\n");
if ((`PRINTF_COND_) & ~reset & ~_GEN_10)
if ((`PRINTF_COND_) & ~reset & ~_GEN_11)
$fwrite(32'h80000002,
"Assertion failed\n at Arbiter.scala:79 assert (!valids.reduce(_||_) || winner.reduce(_||_))\n");
end // always @(posedge)
@@ -372,12 +372,12 @@ module TLAtomicAutomata_cbus(
wire d_replace = d_first & auto_out_d_bits_opcode == 3'h0 & d_cam_sel_0;
wire nodeOut_d_ready = auto_in_d_ready | d_drop;
always @(posedge clock) begin
automatic logic _GEN_11;
automatic logic _d_first_T;
automatic logic _GEN_12;
_GEN_11 = source_i_ready & source_i_valid & ~a_isSupported & cam_free_0;
automatic logic _d_first_T;
automatic logic _GEN_13;
_GEN_12 = source_i_ready & source_i_valid & ~a_isSupported & cam_free_0;
_d_first_T = nodeOut_d_ready & auto_out_d_valid;
_GEN_12 = _d_first_T & d_first;
_GEN_13 = _d_first_T & d_first;
if (~reset) begin
end
if (reset) begin
@@ -389,11 +389,11 @@ module TLAtomicAutomata_cbus(
end
else begin
automatic logic [26:0] _decode_T = 27'hFFF << auto_in_a_bits_size;
if (_GEN_12 & d_cam_sel_0)
if (_GEN_13 & d_cam_sel_0)
cam_s_0_state <= {d_ackd, 1'h0};
else if (auto_out_a_ready & (idle | state_0) & cam_amo_0)
cam_s_0_state <= 2'h1;
else if (_GEN_11)
else if (_GEN_12)
cam_s_0_state <= 2'h3;
beatsLeft <=
idle & auto_out_a_ready
@@ -411,8 +411,8 @@ module TLAtomicAutomata_cbus(
: d_first_counter - 9'h1;
end
end
if (_GEN_11) begin
automatic logic [3:0][3:0] _GEN_13 = '{4'hC, 4'h8, 4'hE, 4'h6};
if (_GEN_12) begin
automatic logic [3:0][3:0] _GEN_14 = '{4'hC, 4'h8, 4'hE, 4'h6};
cam_a_0_bits_opcode <= auto_in_a_bits_opcode;
cam_a_0_bits_param <= auto_in_a_bits_param;
cam_a_0_bits_size <= auto_in_a_bits_size;
@@ -428,9 +428,9 @@ module TLAtomicAutomata_cbus(
cam_a_0_bits_mask <= auto_in_a_bits_mask;
cam_a_0_bits_data <= auto_in_a_bits_data;
cam_a_0_bits_corrupt <= auto_in_a_bits_corrupt;
cam_a_0_lut <= _GEN_13[auto_in_a_bits_param[1:0]];
cam_a_0_lut <= _GEN_14[auto_in_a_bits_param[1:0]];
end
if (_GEN_12 & d_cam_sel_0 & d_ackd) begin
if (_GEN_13 & d_cam_sel_0 & d_ackd) begin
cam_d_0_data <= auto_out_d_bits_data;
cam_d_0_denied <= auto_out_d_bits_denied;
cam_d_0_corrupt <= auto_out_d_bits_corrupt;
@@ -0,0 +1,115 @@
// Generated by CIRCT firtool-1.151.0
module TLMAX2771SPI(
input clock,
reset,
output auto_in_a_ready,
input auto_in_a_valid,
input [2:0] auto_in_a_bits_opcode,
input [1:0] auto_in_a_bits_size,
input [5:0] auto_in_a_bits_source,
input [28:0] auto_in_a_bits_address,
input [7:0] auto_in_a_bits_mask,
input [63:0] auto_in_a_bits_data,
input auto_in_d_ready,
output auto_in_d_valid,
output [2:0] auto_in_d_bits_opcode,
output [1:0] auto_in_d_bits_size,
output [5:0] auto_in_d_bits_source,
output [63:0] auto_in_d_bits_data,
output auto_sdata_oe_out,
auto_sdata_out_out,
input auto_sdata_in_in,
output auto_csn_out,
auto_sclk_out
);
wire _out_wofireMux_T_4;
wire _out_T_26;
wire _out_back_front_q_io_deq_valid;
wire _out_back_front_q_io_deq_bits_read;
wire [8:0] _out_back_front_q_io_deq_bits_index;
wire [63:0] _out_back_front_q_io_deq_bits_data;
wire [7:0] _out_back_front_q_io_deq_bits_mask;
wire [31:0] _engine_read_data;
wire _engine_busy;
wire _engine_ready;
reg [31:0] writeData;
wire _out_out_bits_data_T_1 =
_out_back_front_q_io_deq_bits_index[8:2] == 7'h0;
wire out_womask =
&{{8{_out_back_front_q_io_deq_bits_mask[3]}},
{8{_out_back_front_q_io_deq_bits_mask[2]}},
{8{_out_back_front_q_io_deq_bits_mask[1]}},
{8{_out_back_front_q_io_deq_bits_mask[0]}}};
wire _out_T_15 = _engine_ready | ~out_womask;
wire out_womask_1 =
&{{8{_out_back_front_q_io_deq_bits_mask[7]}},
{8{_out_back_front_q_io_deq_bits_mask[6]}},
{8{_out_back_front_q_io_deq_bits_mask[5]}},
{8{_out_back_front_q_io_deq_bits_mask[4]}}};
assign _out_T_26 = _engine_ready | ~out_womask_1;
assign _out_wofireMux_T_4 =
_out_back_front_q_io_deq_valid & auto_in_d_ready & ~_out_back_front_q_io_deq_bits_read
& _out_back_front_q_io_deq_bits_index[1:0] == 2'h0 & _out_out_bits_data_T_1;
wire [3:0] _GEN =
{{1'h1},
{1'h1},
{1'h1},
{|{_out_T_26 & _out_T_15, _out_back_front_q_io_deq_bits_index[8:2]}}};
wire out_oready =
_out_back_front_q_io_deq_bits_read | _GEN[_out_back_front_q_io_deq_bits_index[1:0]];
wire [3:0][63:0] _GEN_0 =
{{64'h4D41583100000007},
{64'h367EE402FAF080},
{{30'h0, _engine_busy, _engine_ready, _engine_read_data}},
{64'h0}};
always @(posedge clock) begin
if (reset)
writeData <= 32'h0;
else if (_out_wofireMux_T_4 & _out_T_15 & out_womask_1 & _engine_ready)
writeData <= _out_back_front_q_io_deq_bits_data[63:32];
end // always @(posedge)
max2771_spi_engine #(
.CLOCK_HZ(50000000),
.MAX_SCLK_HZ(4000000)
) engine (
.clk (clock),
.rst_n (~reset),
.start (_out_wofireMux_T_4 & _out_T_26 & out_womask & _engine_ready),
.read_not_write (_out_back_front_q_io_deq_bits_data[8]),
.address (_out_back_front_q_io_deq_bits_data[3:0]),
.write_data (writeData),
.read_data (_engine_read_data),
.busy (_engine_busy),
.ready (_engine_ready),
.sclk (auto_sclk_out),
.csn (auto_csn_out),
.sdata_i (auto_sdata_in_in),
.sdata_o (auto_sdata_out_out),
.sdata_oe (auto_sdata_oe_out)
);
Queue1_RegMapperInput_i9_m8 out_back_front_q (
.clock (clock),
.reset (reset),
.io_enq_ready (auto_in_a_ready),
.io_enq_valid (auto_in_a_valid),
.io_enq_bits_read (auto_in_a_bits_opcode == 3'h4),
.io_enq_bits_index (auto_in_a_bits_address[11:3]),
.io_enq_bits_data (auto_in_a_bits_data),
.io_enq_bits_mask (auto_in_a_bits_mask),
.io_enq_bits_extra_tlrr_extra_source (auto_in_a_bits_source),
.io_enq_bits_extra_tlrr_extra_size (auto_in_a_bits_size),
.io_deq_ready (auto_in_d_ready & out_oready),
.io_deq_valid (_out_back_front_q_io_deq_valid),
.io_deq_bits_read (_out_back_front_q_io_deq_bits_read),
.io_deq_bits_index (_out_back_front_q_io_deq_bits_index),
.io_deq_bits_data (_out_back_front_q_io_deq_bits_data),
.io_deq_bits_mask (_out_back_front_q_io_deq_bits_mask),
.io_deq_bits_extra_tlrr_extra_source (auto_in_d_bits_source),
.io_deq_bits_extra_tlrr_extra_size (auto_in_d_bits_size)
);
assign auto_in_d_valid = _out_back_front_q_io_deq_valid & out_oready;
assign auto_in_d_bits_opcode = {2'h0, _out_back_front_q_io_deq_bits_read};
assign auto_in_d_bits_data =
_out_out_bits_data_T_1 ? _GEN_0[_out_back_front_q_io_deq_bits_index[1:0]] : 64'h0;
endmodule
+335 -79
View File
@@ -12,8 +12,168 @@ module TLROM(
output [63:0] auto_in_d_bits_data
);
wire [255:0][63:0] _GEN =
wire [511:0][63:0] _GEN =
'{64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
64'h0,
@@ -112,58 +272,154 @@ module TLROM(
64'h52524520544F4F42,
64'h80000000,
64'h80000000,
64'hBFC1,
64'h40500A780230084,
64'h87B3EABFF0EF4501,
64'h80826105690264A2,
64'hC3984709100147B7,
64'h644260E2EADFF0EF,
64'h127EE630004079B,
64'h4401ED3FF0EF0FF4,
64'h7513EDBFF0EF0FF5,
64'h75130084551BEE7F,
64'hF0EF0FF575130104,
64'h551BEF3FF0EF0184,
64'h551BEFBFF0EF454D,
64'h8082,
64'h4505BFC9F03D99CA,
64'h9904BB4124043B,
64'hDD61E07FF0EF8526,
64'h85CE864A80826161,
64'h6BA26B426AE27A02,
64'h79A2794274E26406,
64'h60A64501BE9FF0EF,
64'h4511E105D3FFF0EF,
64'h6A050513017AA023,
64'h6561BBDFF0EFFF27,
64'hE7E3000A079BBE1F,
64'hF0EF0A050007C503,
64'h14987B34A01C45F,
64'hF0EF8526BF7FF0EF,
64'hAA0234549BE9F,
64'hF0EF0004091B00F4,
64'h74630007891B40FB,
64'h7BB0FF4F793CD39,
64'hD6DFF0EFC135D99F,
64'hF0EF6A0505136561,
64'h4B8910014AB71000,
64'hB1306E7ED638432,
64'h8F85930102061713,
64'hC54189AE8D79E45E,
64'hE85AEC56F052F84A,
64'hE0A2E486F44E00B0,
64'h3733001535130095,
64'h3533FFF7851384AA,
64'hFC26020007B7715D,
64'hE060563B7BDCA3F,
64'hF0EF4511BF9D842A,
64'hEEDFF0EF9D25F005,
64'h51B6541D159080C,
64'h842A6622F01FF0EF,
64'hE4328526FEF61BE3,
64'h60500D7002300C5,
64'h87331000079356FD,
64'h80CCD054601842A,
64'hE33FF0EF6C050513,
64'hC01C002DC5374789,
64'hCB3FF0EFD23FF0EF,
64'h8526CD5FF0EF0DC0,
64'h513000420231001,
64'h4437CCDFF0EFD165,
64'h842AE3FFF0EFD565,
64'h842AE6DFF0EF6A05,
64'h513656180826155,
64'h64F27412852270B2,
64'h4401C9018911EC7F,
64'hF0EF00F56D6384AA,
64'h1FE07B7EB918FE9,
64'hEE26F222F60617FD,
64'h7169FE0107B7BFCD,
64'h4501808261556952,
64'h64F2741270B24505,
64'hFC5D94B29D319C11,
64'hFEC763E30007871B,
64'h78502E692630007,
64'h47030006C68300F4,
64'h873300F586B3080C,
64'h478165026622F5BF,
64'hF0EFE02AE4320007,
64'h861B100007930089,
64'h746387A2080C1000,
64'h9138432F60684AE,
64'hEA4AEE26F2227169,
64'h8082808261056902,
64'h64A2C39847091001,
64'h47B7644260E2D99F,
64'hF0EFFE87E6E30004,
64'h879B00A780230485,
64'h9907B3DC7FF0EF,
64'h45014481E23FF0EF,
64'h8526DD5FF0EF454D,
64'h7A023100147B7,
64'hEF1FF0EF8932E04A,
64'h84AE842AE426E822,
64'hEC06110180826145,
64'h694264E265227402,
64'hC01C70A24789F17F,
64'hF0EFE42A25018D5D,
64'h8FD90104979B0089,
64'h171BF43FF0EF4501,
64'h892AF4BFF0EF4501,
64'h84AAF53FF0EF4501,
64'hF59FF0EF00042023,
64'h9F00513F4DFF0EF,
64'h10014437E84AEC26,
64'hF022F4067179B799,
64'h6105D40505130003,
64'h153764A260E26442,
64'hC004F73FF0EFF8FF,
64'hF0EF000420230990,
64'h513F83FF0EFF71F,
64'hF0EFC0043E800513,
64'hF91FF0EFFADFF0EF,
64'h4202306600513,
64'hFA1FF0EFC004FA7F,
64'hF0EFEC0644891001,
64'h4437E426E8221101,
64'hDCBFF0EF892EE04A,
64'h84AA8432E426E822,
64'hEC06110104E7EF63,
64'h8F89930102061713,
64'h6A76563FFF78713,
64'h20007B7EBB58FD9,
64'h15B71300163793,
64'h8082610565226442,
64'hC01C60E24789E11F,
64'hF0EFE42AE2FFF0EF,
64'h4501E35FF0EF0350,
64'h513000420231001,
64'h4437E2DFF0EFE822,
64'hEC061101B7ED4501,
64'hFD27EFE38F85601C,
64'h80826105690264A2,
64'h644260E200153513,
64'h6057513EB990015,
64'h7793F95FF0EF892A,
64'hEC06E04A6004E426,
64'h14610200C437E822,
64'h1101808201410015,
64'h3513157906357513,
64'h60A2FBDFF0EFECBF,
64'hF0EF4519ED1FF0EF,
64'hE406030005131141,
64'h8082610565226442,
64'hC01C60E24789EA9F,
64'hF0EFE42AEC7FF0EF,
64'h4501ECDFF0EF4515,
64'h4202310014437,
64'hEC3FF0EFE822EC06,
64'h1101808261456942,
64'h64E265227402C01C,
64'h70A24789EDFFF0EF,
64'hE42A25018D5D8FD9,
64'h104979B0089171B,
64'hF0BFF0EF4501892A,
64'hF13FF0EF450184AA,
64'hF1BFF0EF4501F21F,
64'hF0EF0004202309F0,
64'h513F15FF0EF1001,
64'h4437E84AEC26F022,
64'hF406717980820141,
64'h60A2FEE6FEE38F11,
64'h639812B0069317E1,
64'hFF87B6030200C7B7,
64'hF85FF0EF0F000513,
64'hC3984709100147B7,
64'hF53FF0EFE4061141,
64'h8082C39847091001,
64'h47B7808261050FF5,
64'h751360E247881001,
64'h47B7FD3FF0EFC3C8,
64'h185151B100147B7,
64'h6522FE3FF0EFE42A,
64'hEC0611018082FFF5,
64'h8B85431C10014737,
64'hDFF58B85431C0731,
64'h10014737BFC5C63E,
64'h278547B280820141,
64'hA7E46347B2C602,
64'h114180824F881001,
64'h47B7BFAD014160A2,
64'h64020FF47513F89F,
64'hF0EF0FF575130084,
64'h551BF95FF0EF0FF5,
64'h75130104551BFA1F,
64'hF0EFE4060185551B,
64'h842AE02211418082,
64'h61056442C01C60E2,
64'h4789FA5FF0EFFC1F,
64'hF0EF000420231001,
64'h44376522FB7FF0EF,
64'hE42AE822EC061101,
64'h808261050FF57513,
64'h60E24788100147B7,
64'hFD3FF0EFC3C80185,
64'h151B100147B76522,
64'hFE3FF0EFE42AEC06,
64'h11018082FFF58B85,
64'h431C10014737DFF5,
64'h8B85431C07311001,
64'h473780824F881001,
64'h37B780824BC81001,
64'h37B780824B881001,
64'h37B7808280826105,
@@ -194,58 +450,58 @@ module TLROM(
64'h8082616145016406,
64'h60A6978201816783,
64'h100FE39FF0EF,
64'h2E05051300000517,
64'h5E05051300000517,
64'hE07FF0EF4562E4BF,
64'hF0EF3C2505130000,
64'h517F4B798E33BE5,
64'hF0EF6C2505130000,
64'h517F4B798E36BE5,
64'h51300000517FFF5,
64'hC593578204A6E463,
64'h40C786BB32070713,
64'h55FD938102061793,
64'hEDB8873745724652,
64'h258000EF45420141,
64'h344000EF45420141,
64'h65834672E91FF0EF,
64'h3385051300000517,
64'h6385051300000517,
64'hE5FFF0EF4572EA3F,
64'hF0EF3FA505130000,
64'hF0EF6FA505130000,
64'h517E71FF0EF4552,
64'hEB5FF0EF3FC50513,
64'hEB5FF0EF6FC50513,
64'h517E83FF0EF,
64'h4542EC7FF0EF3FE5,
64'h4542EC7FF0EF6FE5,
64'h51300000517B7E9,
64'h3F05051300000517,
64'h6F05051300000517,
64'hF7776380100737,
64'h9FAD0005D76345D2,
64'hB7D53FA505130000,
64'hB7D56FA505130000,
64'h51785BE00E6E863,
64'hFFF7869B000F0737,
64'h47F2F25FF0EF3F65,
64'h47F2F25FF0EF6F65,
64'h5130000051700F7,
64'h863040007934722,
64'hF5976347854592,
64'hF59F6340450513,
64'hF59F6370450513,
64'h51765278793,
64'h544257B7458230E0,
64'h544257B745823FA0,
64'hEF040006130180,
64'h537858AF49FF0EF,
64'h3F05051300000517,
64'h6F05051300000517,
64'hF17FF0EF8522F5BF,
64'hF0EF422505130000,
64'h517842A2E2000EF,
64'h28C000EF286000EF,
64'hF75FF0EF41C50513,
64'hF0EF722505130000,
64'h517842A304000EF,
64'h2D4000EF2CE000EF,
64'hF75FF0EF71C50513,
64'h517F43FF0EF,
64'h1800537F89FF0EF,
64'h4385051300000517,
64'h7385051300000517,
64'hF95FF0EFE0A2E486,
64'h4285051300000517,
64'h7285051300000517,
64'h715DBFF510500073,
64'hFADFF0EF45450513,
64'hFADFF0EF75450513,
64'h517F7BFF0EF,
64'h6522FBFFF0EF4465,
64'h6522FBFFF0EF7465,
64'h51300000517FCBF,
64'hF0EF8522FD1FF0EF,
64'hE42EEC0644450513,
64'hE42EEC0674450513,
64'h517842AE822,
64'h1101B7F51FC000EF,
64'h405808201416402,
@@ -255,8 +511,8 @@ module TLROM(
64'h64E2740270A2FE94,
64'h17E322A000EF3471,
64'h7C50397CA8BBD,
64'h89D7BB54F15B69,
64'h913000009174471,
64'h89D7BB54F18B69,
64'h913000019174471,
64'h89AAF406E44EE84A,
64'hEC26F0227179BFF5,
64'h105000730FF0000F,
@@ -265,15 +521,15 @@ module TLROM(
64'h25E000EFBFDD02A1,
64'h2B0230062F663,
64'h83B3030003B283,
64'h4D03839300000397,
64'h7D03839300000397,
64'h1528011011B0000,
64'h11373002A0736299,
64'hE301819300001197};
64'h1301819300001197};
assign auto_in_a_ready = auto_in_d_ready;
assign auto_in_d_valid = auto_in_a_valid;
assign auto_in_d_bits_size = auto_in_a_bits_size;
assign auto_in_d_bits_source = auto_in_a_bits_source;
assign auto_in_d_bits_data =
(|(auto_in_a_bits_address[15:11])) ? 64'h0 : _GEN[auto_in_a_bits_address[10:3]];
(|(auto_in_a_bits_address[15:12])) ? 64'h0 : _GEN[auto_in_a_bits_address[11:3]];
endmodule
@@ -103,7 +103,7 @@ module TLWidthWidget8_2(
if (_anonIn_d_bits_data_T_2 & anonIn_d_bits_data_masked_enable_0)
anonIn_d_bits_data_rdata_0 <= auto_anon_out_d_bits_data;
end // always @(posedge)
Repeater_TLBundleA_a29d64s2k1z3u_3 repeated_repeater (
Repeater_TLBundleA_a29d64s2k1z3u_4 repeated_repeater (
.clock (clock),
.reset (reset),
.io_repeat (~repeat_last),
@@ -165,7 +165,7 @@ module TLXbar_cbus_out_i1_o7_a32d64s2k1z4u(
auto_anon_in_a_bits_address[28:27],
auto_anon_in_a_bits_address[25],
auto_anon_in_a_bits_address[16],
~(auto_anon_in_a_bits_address[12])} == 6'h0;
~(auto_anon_in_a_bits_address[13])} == 6'h0;
wire requestAIO_0_1 =
{auto_anon_in_a_bits_address[31],
auto_anon_in_a_bits_address[28:27] ^ 2'h2,
@@ -184,7 +184,7 @@ module TLXbar_cbus_out_i1_o7_a32d64s2k1z4u(
auto_anon_in_a_bits_address[28:27],
auto_anon_in_a_bits_address[25],
auto_anon_in_a_bits_address[16],
auto_anon_in_a_bits_address[12]} == 6'h0;
auto_anon_in_a_bits_address[13]} == 6'h0;
wire requestAIO_0_5 =
{~(auto_anon_in_a_bits_address[31]),
auto_anon_in_a_bits_address[28:27],
@@ -8,7 +8,7 @@
`define PRINTF_COND_ 1
`endif // PRINTF_COND
`endif // not def PRINTF_COND_
module TLXbar_pbus_out_i1_o4_a29d64s2k1z3u(
module TLXbar_pbus_out_i1_o5_a29d64s2k1z3u(
input clock,
reset,
output auto_anon_in_a_ready,
@@ -38,34 +38,48 @@ module TLXbar_pbus_out_i1_o4_a29d64s2k1z3u(
auto_anon_in_d_bits_denied,
output [63:0] auto_anon_in_d_bits_data,
output auto_anon_in_d_bits_corrupt,
input auto_anon_out_3_a_ready,
input auto_anon_out_4_a_ready,
output auto_anon_out_4_a_valid,
output [2:0] auto_anon_out_4_a_bits_opcode,
auto_anon_out_4_a_bits_param,
auto_anon_out_4_a_bits_size,
output [1:0] auto_anon_out_4_a_bits_source,
output [28:0] auto_anon_out_4_a_bits_address,
output auto_anon_out_4_a_bits_user_amba_prot_bufferable,
auto_anon_out_4_a_bits_user_amba_prot_modifiable,
auto_anon_out_4_a_bits_user_amba_prot_readalloc,
auto_anon_out_4_a_bits_user_amba_prot_writealloc,
auto_anon_out_4_a_bits_user_amba_prot_privileged,
auto_anon_out_4_a_bits_user_amba_prot_secure,
auto_anon_out_4_a_bits_user_amba_prot_fetch,
output [7:0] auto_anon_out_4_a_bits_mask,
output [63:0] auto_anon_out_4_a_bits_data,
output auto_anon_out_4_a_bits_corrupt,
auto_anon_out_4_d_ready,
input auto_anon_out_4_d_valid,
input [2:0] auto_anon_out_4_d_bits_opcode,
input [1:0] auto_anon_out_4_d_bits_param,
input [2:0] auto_anon_out_4_d_bits_size,
input [1:0] auto_anon_out_4_d_bits_source,
input auto_anon_out_4_d_bits_sink,
auto_anon_out_4_d_bits_denied,
input [63:0] auto_anon_out_4_d_bits_data,
input auto_anon_out_4_d_bits_corrupt,
auto_anon_out_3_a_ready,
output auto_anon_out_3_a_valid,
output [2:0] auto_anon_out_3_a_bits_opcode,
auto_anon_out_3_a_bits_param,
auto_anon_out_3_a_bits_size,
output [1:0] auto_anon_out_3_a_bits_source,
output [28:0] auto_anon_out_3_a_bits_address,
output auto_anon_out_3_a_bits_user_amba_prot_bufferable,
auto_anon_out_3_a_bits_user_amba_prot_modifiable,
auto_anon_out_3_a_bits_user_amba_prot_readalloc,
auto_anon_out_3_a_bits_user_amba_prot_writealloc,
auto_anon_out_3_a_bits_user_amba_prot_privileged,
auto_anon_out_3_a_bits_user_amba_prot_secure,
auto_anon_out_3_a_bits_user_amba_prot_fetch,
output [7:0] auto_anon_out_3_a_bits_mask,
output [63:0] auto_anon_out_3_a_bits_data,
output auto_anon_out_3_a_bits_corrupt,
auto_anon_out_3_d_ready,
output auto_anon_out_3_d_ready,
input auto_anon_out_3_d_valid,
input [2:0] auto_anon_out_3_d_bits_opcode,
input [1:0] auto_anon_out_3_d_bits_param,
input [2:0] auto_anon_out_3_d_bits_size,
auto_anon_out_3_d_bits_size,
input [1:0] auto_anon_out_3_d_bits_source,
input auto_anon_out_3_d_bits_sink,
auto_anon_out_3_d_bits_denied,
input [63:0] auto_anon_out_3_d_bits_data,
input auto_anon_out_3_d_bits_corrupt,
auto_anon_out_2_a_ready,
input auto_anon_out_2_a_ready,
output auto_anon_out_2_a_valid,
output [2:0] auto_anon_out_2_a_bits_opcode,
auto_anon_out_2_a_bits_size,
@@ -117,44 +131,55 @@ module TLXbar_pbus_out_i1_o4_a29d64s2k1z3u(
{auto_anon_in_a_bits_address[17],
auto_anon_in_a_bits_address[13],
~(auto_anon_in_a_bits_address[12])} == 3'h0;
wire requestAIO_0_3 =
{auto_anon_in_a_bits_address[17], auto_anon_in_a_bits_address[13:12] ^ 2'h2} == 3'h0;
reg [2:0] beatsLeft;
wire idle = beatsLeft == 3'h0;
wire [3:0] readys_valid =
{auto_anon_out_3_d_valid,
wire [4:0] readys_valid =
{auto_anon_out_4_d_valid,
auto_anon_out_3_d_valid,
auto_anon_out_2_d_valid,
auto_anon_out_1_d_valid,
auto_anon_out_0_d_valid};
reg [3:0] readys_mask;
wire [3:0] _readys_filter_T = ~readys_mask;
wire [3:0] _readys_filter_T_1 = readys_valid & _readys_filter_T;
wire _GEN = auto_anon_out_3_d_valid & _readys_filter_T[3];
wire [5:0] _GEN_0 =
{_readys_filter_T_1[2:0],
reg [4:0] readys_mask;
wire [4:0] _readys_filter_T = ~readys_mask;
wire [4:0] _readys_filter_T_1 = readys_valid & _readys_filter_T;
wire _GEN = auto_anon_out_4_d_valid & _readys_filter_T[4];
wire [7:0] _GEN_0 =
{_readys_filter_T_1[3:0],
auto_anon_out_4_d_valid,
auto_anon_out_3_d_valid,
auto_anon_out_2_d_valid,
auto_anon_out_1_d_valid}
| {_readys_filter_T_1, auto_anon_out_3_d_valid, auto_anon_out_2_d_valid};
wire [7:0] readys_unready =
{1'h0, _GEN, _GEN_0[5], _GEN_0[4:0] | {_GEN, _GEN_0[5:2]}} | {readys_mask, 4'h0};
wire [3:0] readys_readys = ~(readys_unready[7:4] & readys_unready[3:0]);
| {_readys_filter_T_1,
auto_anon_out_4_d_valid,
auto_anon_out_3_d_valid,
auto_anon_out_2_d_valid};
wire [6:0] _GEN_1 = _GEN_0[6:0] | {_GEN, _GEN_0[7:2]};
wire [9:0] readys_unready =
{1'h0, _GEN, _GEN_0[7], _GEN_1[6:5], _GEN_1[4:0] | {_GEN, _GEN_0[7], _GEN_1[6:4]}}
| {readys_mask, 5'h0};
wire [4:0] readys_readys = ~(readys_unready[9:5] & readys_unready[4:0]);
wire winner_0 = readys_readys[0] & auto_anon_out_0_d_valid;
wire winner_1 = readys_readys[1] & auto_anon_out_1_d_valid;
wire winner_2 = readys_readys[2] & auto_anon_out_2_d_valid;
wire winner_3 = readys_readys[3] & auto_anon_out_3_d_valid;
wire winner_4 = readys_readys[4] & auto_anon_out_4_d_valid;
wire prefixOR_2 = winner_0 | winner_1;
wire _GEN_1 =
(~winner_0 | ~winner_1) & (~prefixOR_2 | ~winner_2)
& (~(prefixOR_2 | winner_2) | ~winner_3);
wire _in_0_d_valid_T = auto_anon_out_0_d_valid | auto_anon_out_1_d_valid;
wire prefixOR_3 = prefixOR_2 | winner_2;
wire _GEN_2 =
~(_in_0_d_valid_T | auto_anon_out_2_d_valid | auto_anon_out_3_d_valid) | winner_0
| winner_1 | winner_2 | winner_3;
(~winner_0 | ~winner_1) & (~prefixOR_2 | ~winner_2) & (~prefixOR_3 | ~winner_3)
& (~(prefixOR_3 | winner_3) | ~winner_4);
wire _in_0_d_valid_T = auto_anon_out_0_d_valid | auto_anon_out_1_d_valid;
wire _GEN_3 =
~(_in_0_d_valid_T | auto_anon_out_2_d_valid | auto_anon_out_3_d_valid
| auto_anon_out_4_d_valid) | winner_0 | winner_1 | winner_2 | winner_3 | winner_4;
`ifndef SYNTHESIS
always @(posedge clock) begin
if ((`PRINTF_COND_) & ~reset & ~_GEN_1)
if ((`PRINTF_COND_) & ~reset & ~_GEN_2)
$fwrite(32'h80000002,
"Assertion failed\n at Arbiter.scala:77 assert((prefixOR zip winner) map { case (p,w) => !p || !w } reduce {_ && _})\n");
if ((`PRINTF_COND_) & ~reset & ~_GEN_2)
if ((`PRINTF_COND_) & ~reset & ~_GEN_3)
$fwrite(32'h80000002,
"Assertion failed\n at Arbiter.scala:79 assert (!valids.reduce(_||_) || winner.reduce(_||_))\n");
end // always @(posedge)
@@ -163,28 +188,34 @@ module TLXbar_pbus_out_i1_o4_a29d64s2k1z3u(
reg state_1;
reg state_2;
reg state_3;
reg state_4;
wire muxState_0 = idle ? winner_0 : state_0;
wire muxState_1 = idle ? winner_1 : state_1;
wire muxState_2 = idle ? winner_2 : state_2;
wire muxState_3 = idle ? winner_3 : state_3;
wire muxState_4 = idle ? winner_4 : state_4;
wire in_0_d_valid =
idle
? _in_0_d_valid_T | auto_anon_out_2_d_valid | auto_anon_out_3_d_valid
| auto_anon_out_4_d_valid
: state_0 & auto_anon_out_0_d_valid | state_1 & auto_anon_out_1_d_valid | state_2
& auto_anon_out_2_d_valid | state_3 & auto_anon_out_3_d_valid;
& auto_anon_out_2_d_valid | state_3 & auto_anon_out_3_d_valid | state_4
& auto_anon_out_4_d_valid;
always @(posedge clock) begin
if (~reset) begin
end
if (reset) begin
beatsLeft <= 3'h0;
readys_mask <= 4'hF;
readys_mask <= 5'h1F;
state_0 <= 1'h0;
state_1 <= 1'h0;
state_2 <= 1'h0;
state_3 <= 1'h0;
state_4 <= 1'h0;
end
else begin
automatic logic latch = idle & auto_anon_in_d_ready;
automatic logic [12:0] _beatsDO_decode_T_12 = 13'h3F << auto_anon_out_4_d_bits_size;
automatic logic [12:0] _beatsDO_decode_T_9 = 13'h3F << auto_anon_out_3_d_bits_size;
automatic logic [12:0] _beatsDO_decode_T_6 = 13'h3F << auto_anon_out_2_d_bits_size;
automatic logic [12:0] _beatsDO_decode_T_3 = 13'h3F << auto_anon_out_1_d_bits_size;
@@ -203,73 +234,92 @@ module TLXbar_pbus_out_i1_o4_a29d64s2k1z3u(
| (winner_3 & auto_anon_out_3_d_bits_opcode[0]
? ~(_beatsDO_decode_T_9[5:3])
: 3'h0)
| (winner_4 & auto_anon_out_4_d_bits_opcode[0]
? ~(_beatsDO_decode_T_12[5:3])
: 3'h0)
: beatsLeft - {2'h0, auto_anon_in_d_ready & in_0_d_valid};
if (latch & (|readys_valid)) begin
automatic logic [3:0] _readys_mask_T = readys_readys & readys_valid;
automatic logic [3:0] _readys_mask_T_3 =
_readys_mask_T | {_readys_mask_T[2:0], 1'h0};
readys_mask <= _readys_mask_T_3 | {_readys_mask_T_3[1:0], 2'h0};
automatic logic [4:0] _readys_mask_T = readys_readys & readys_valid;
automatic logic [4:0] _readys_mask_T_3 =
_readys_mask_T | {_readys_mask_T[3:0], 1'h0};
automatic logic [4:0] _readys_mask_T_6 =
_readys_mask_T_3 | {_readys_mask_T_3[2:0], 2'h0};
readys_mask <= _readys_mask_T_6 | {_readys_mask_T_6[0], 4'h0};
end
if (idle) begin
state_0 <= winner_0;
state_1 <= winner_1;
state_2 <= winner_2;
state_3 <= winner_3;
state_4 <= winner_4;
end
end
end // always @(posedge)
assign auto_anon_in_a_ready =
requestAIO_0_0 & auto_anon_out_0_a_ready | requestAIO_0_1 & auto_anon_out_1_a_ready
| requestAIO_0_2 & auto_anon_out_2_a_ready | auto_anon_in_a_bits_address[17]
& auto_anon_out_3_a_ready;
| requestAIO_0_2 & auto_anon_out_2_a_ready | requestAIO_0_3 & auto_anon_out_3_a_ready
| auto_anon_in_a_bits_address[17] & auto_anon_out_4_a_ready;
assign auto_anon_in_d_valid = in_0_d_valid;
assign auto_anon_in_d_bits_opcode =
(muxState_0 ? auto_anon_out_0_d_bits_opcode : 3'h0)
| (muxState_1 ? auto_anon_out_1_d_bits_opcode : 3'h0)
| (muxState_2 ? auto_anon_out_2_d_bits_opcode : 3'h0)
| (muxState_3 ? auto_anon_out_3_d_bits_opcode : 3'h0);
assign auto_anon_in_d_bits_param = muxState_3 ? auto_anon_out_3_d_bits_param : 2'h0;
| (muxState_3 ? auto_anon_out_3_d_bits_opcode : 3'h0)
| (muxState_4 ? auto_anon_out_4_d_bits_opcode : 3'h0);
assign auto_anon_in_d_bits_param = muxState_4 ? auto_anon_out_4_d_bits_param : 2'h0;
assign auto_anon_in_d_bits_size =
(muxState_0 ? auto_anon_out_0_d_bits_size : 3'h0)
| (muxState_1 ? auto_anon_out_1_d_bits_size : 3'h0)
| (muxState_2 ? auto_anon_out_2_d_bits_size : 3'h0)
| (muxState_3 ? auto_anon_out_3_d_bits_size : 3'h0);
| (muxState_3 ? auto_anon_out_3_d_bits_size : 3'h0)
| (muxState_4 ? auto_anon_out_4_d_bits_size : 3'h0);
assign auto_anon_in_d_bits_source =
(muxState_0 ? auto_anon_out_0_d_bits_source : 2'h0)
| (muxState_1 ? auto_anon_out_1_d_bits_source : 2'h0)
| (muxState_2 ? auto_anon_out_2_d_bits_source : 2'h0)
| (muxState_3 ? auto_anon_out_3_d_bits_source : 2'h0);
assign auto_anon_in_d_bits_sink = muxState_3 & auto_anon_out_3_d_bits_sink;
assign auto_anon_in_d_bits_denied = muxState_3 & auto_anon_out_3_d_bits_denied;
| (muxState_3 ? auto_anon_out_3_d_bits_source : 2'h0)
| (muxState_4 ? auto_anon_out_4_d_bits_source : 2'h0);
assign auto_anon_in_d_bits_sink = muxState_4 & auto_anon_out_4_d_bits_sink;
assign auto_anon_in_d_bits_denied = muxState_4 & auto_anon_out_4_d_bits_denied;
assign auto_anon_in_d_bits_data =
(muxState_0 ? auto_anon_out_0_d_bits_data : 64'h0)
| (muxState_1 ? auto_anon_out_1_d_bits_data : 64'h0)
| (muxState_2 ? auto_anon_out_2_d_bits_data : 64'h0)
| (muxState_3 ? auto_anon_out_3_d_bits_data : 64'h0);
assign auto_anon_in_d_bits_corrupt = muxState_3 & auto_anon_out_3_d_bits_corrupt;
assign auto_anon_out_3_a_valid = auto_anon_in_a_valid & auto_anon_in_a_bits_address[17];
| (muxState_3 ? auto_anon_out_3_d_bits_data : 64'h0)
| (muxState_4 ? auto_anon_out_4_d_bits_data : 64'h0);
assign auto_anon_in_d_bits_corrupt = muxState_4 & auto_anon_out_4_d_bits_corrupt;
assign auto_anon_out_4_a_valid = auto_anon_in_a_valid & auto_anon_in_a_bits_address[17];
assign auto_anon_out_4_a_bits_opcode = auto_anon_in_a_bits_opcode;
assign auto_anon_out_4_a_bits_param = auto_anon_in_a_bits_param;
assign auto_anon_out_4_a_bits_size = auto_anon_in_a_bits_size;
assign auto_anon_out_4_a_bits_source = auto_anon_in_a_bits_source;
assign auto_anon_out_4_a_bits_address = auto_anon_in_a_bits_address;
assign auto_anon_out_4_a_bits_user_amba_prot_bufferable =
auto_anon_in_a_bits_user_amba_prot_bufferable;
assign auto_anon_out_4_a_bits_user_amba_prot_modifiable =
auto_anon_in_a_bits_user_amba_prot_modifiable;
assign auto_anon_out_4_a_bits_user_amba_prot_readalloc =
auto_anon_in_a_bits_user_amba_prot_readalloc;
assign auto_anon_out_4_a_bits_user_amba_prot_writealloc =
auto_anon_in_a_bits_user_amba_prot_writealloc;
assign auto_anon_out_4_a_bits_user_amba_prot_privileged =
auto_anon_in_a_bits_user_amba_prot_privileged;
assign auto_anon_out_4_a_bits_user_amba_prot_secure =
auto_anon_in_a_bits_user_amba_prot_secure;
assign auto_anon_out_4_a_bits_user_amba_prot_fetch =
auto_anon_in_a_bits_user_amba_prot_fetch;
assign auto_anon_out_4_a_bits_mask = auto_anon_in_a_bits_mask;
assign auto_anon_out_4_a_bits_data = auto_anon_in_a_bits_data;
assign auto_anon_out_4_a_bits_corrupt = auto_anon_in_a_bits_corrupt;
assign auto_anon_out_4_d_ready =
auto_anon_in_d_ready & (idle ? readys_readys[4] : state_4);
assign auto_anon_out_3_a_valid = auto_anon_in_a_valid & requestAIO_0_3;
assign auto_anon_out_3_a_bits_opcode = auto_anon_in_a_bits_opcode;
assign auto_anon_out_3_a_bits_param = auto_anon_in_a_bits_param;
assign auto_anon_out_3_a_bits_size = auto_anon_in_a_bits_size;
assign auto_anon_out_3_a_bits_source = auto_anon_in_a_bits_source;
assign auto_anon_out_3_a_bits_address = auto_anon_in_a_bits_address;
assign auto_anon_out_3_a_bits_user_amba_prot_bufferable =
auto_anon_in_a_bits_user_amba_prot_bufferable;
assign auto_anon_out_3_a_bits_user_amba_prot_modifiable =
auto_anon_in_a_bits_user_amba_prot_modifiable;
assign auto_anon_out_3_a_bits_user_amba_prot_readalloc =
auto_anon_in_a_bits_user_amba_prot_readalloc;
assign auto_anon_out_3_a_bits_user_amba_prot_writealloc =
auto_anon_in_a_bits_user_amba_prot_writealloc;
assign auto_anon_out_3_a_bits_user_amba_prot_privileged =
auto_anon_in_a_bits_user_amba_prot_privileged;
assign auto_anon_out_3_a_bits_user_amba_prot_secure =
auto_anon_in_a_bits_user_amba_prot_secure;
assign auto_anon_out_3_a_bits_user_amba_prot_fetch =
auto_anon_in_a_bits_user_amba_prot_fetch;
assign auto_anon_out_3_a_bits_mask = auto_anon_in_a_bits_mask;
assign auto_anon_out_3_a_bits_data = auto_anon_in_a_bits_data;
assign auto_anon_out_3_a_bits_corrupt = auto_anon_in_a_bits_corrupt;
assign auto_anon_out_3_d_ready =
auto_anon_in_d_ready & (idle ? readys_readys[3] : state_3);
assign auto_anon_out_2_a_valid = auto_anon_in_a_valid & requestAIO_0_2;
@@ -37,6 +37,11 @@ module VCU118RocketSystem(
input [3:0] pmod_spi_dq_i,
output [3:0] pmod_spi_dq_o,
pmod_spi_dq_oe,
output max2771_spi_sclk,
max2771_spi_csn,
input max2771_spi_sdata_i,
output max2771_spi_sdata_o,
max2771_spi_sdata_oe,
input pmod_irq,
gps_acq_clk,
gps_trck_clk,
@@ -65,6 +70,12 @@ module VCU118RocketSystem(
wire _fpga_gps_domain_auto_dev_int_out_7;
wire _fpga_gps_domain_auto_dev_int_out_8;
wire _fpga_gps_domain_auto_dev_int_out_9;
wire _max2771_spi_domain_auto_dev_in_a_ready;
wire _max2771_spi_domain_auto_dev_in_d_valid;
wire [2:0] _max2771_spi_domain_auto_dev_in_d_bits_opcode;
wire [1:0] _max2771_spi_domain_auto_dev_in_d_bits_size;
wire [5:0] _max2771_spi_domain_auto_dev_in_d_bits_source;
wire [63:0] _max2771_spi_domain_auto_dev_in_d_bits_data;
wire _fpga_pmod_spi_domain_auto_dev_in_a_ready;
wire _fpga_pmod_spi_domain_auto_dev_in_d_valid;
wire [2:0] _fpga_pmod_spi_domain_auto_dev_in_d_bits_opcode;
@@ -280,6 +291,14 @@ module VCU118RocketSystem(
wire [31:0] _pbus_auto_coupler_to_gps_fragmenter_anon_out_a_bits_data;
wire _pbus_auto_coupler_to_gps_fragmenter_anon_out_a_bits_corrupt;
wire _pbus_auto_coupler_to_gps_fragmenter_anon_out_d_ready;
wire _pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_valid;
wire [2:0] _pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_opcode;
wire [1:0] _pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_size;
wire [5:0] _pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_source;
wire [28:0] _pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_address;
wire [7:0] _pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_mask;
wire [63:0] _pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_data;
wire _pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_d_ready;
wire _pbus_auto_coupler_to_fpga_pmod_spi_fragmenter_anon_out_a_valid;
wire [2:0] _pbus_auto_coupler_to_fpga_pmod_spi_fragmenter_anon_out_a_bits_opcode;
wire [1:0] _pbus_auto_coupler_to_fpga_pmod_spi_fragmenter_anon_out_a_bits_size;
@@ -304,6 +323,8 @@ module VCU118RocketSystem(
wire [7:0] _pbus_auto_coupler_to_fpga_uart_fragmenter_anon_out_a_bits_mask;
wire [63:0] _pbus_auto_coupler_to_fpga_uart_fragmenter_anon_out_a_bits_data;
wire _pbus_auto_coupler_to_fpga_uart_fragmenter_anon_out_d_ready;
wire _pbus_auto_fixedClockNode_anon_out_4_clock;
wire _pbus_auto_fixedClockNode_anon_out_4_reset;
wire _pbus_auto_fixedClockNode_anon_out_3_clock;
wire _pbus_auto_fixedClockNode_anon_out_3_reset;
wire _pbus_auto_fixedClockNode_anon_out_2_clock;
@@ -699,6 +720,34 @@ module VCU118RocketSystem(
(_fpga_gps_domain_auto_tl2apb_in_d_bits_data),
.auto_coupler_to_gps_fragmenter_anon_out_d_bits_corrupt
(_fpga_gps_domain_auto_tl2apb_in_d_bits_corrupt),
.auto_coupler_to_max2771_spi_fragmenter_anon_out_a_ready
(_max2771_spi_domain_auto_dev_in_a_ready),
.auto_coupler_to_max2771_spi_fragmenter_anon_out_a_valid
(_pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_valid),
.auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_opcode
(_pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_opcode),
.auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_size
(_pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_size),
.auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_source
(_pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_source),
.auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_address
(_pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_address),
.auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_mask
(_pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_mask),
.auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_data
(_pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_data),
.auto_coupler_to_max2771_spi_fragmenter_anon_out_d_ready
(_pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_d_ready),
.auto_coupler_to_max2771_spi_fragmenter_anon_out_d_valid
(_max2771_spi_domain_auto_dev_in_d_valid),
.auto_coupler_to_max2771_spi_fragmenter_anon_out_d_bits_opcode
(_max2771_spi_domain_auto_dev_in_d_bits_opcode),
.auto_coupler_to_max2771_spi_fragmenter_anon_out_d_bits_size
(_max2771_spi_domain_auto_dev_in_d_bits_size),
.auto_coupler_to_max2771_spi_fragmenter_anon_out_d_bits_source
(_max2771_spi_domain_auto_dev_in_d_bits_source),
.auto_coupler_to_max2771_spi_fragmenter_anon_out_d_bits_data
(_max2771_spi_domain_auto_dev_in_d_bits_data),
.auto_coupler_to_fpga_pmod_spi_fragmenter_anon_out_a_ready
(_fpga_pmod_spi_domain_auto_dev_in_a_ready),
.auto_coupler_to_fpga_pmod_spi_fragmenter_anon_out_a_valid
@@ -783,6 +832,10 @@ module VCU118RocketSystem(
(_fpga_uart_domain_auto_dev_in_d_bits_source),
.auto_coupler_to_fpga_uart_fragmenter_anon_out_d_bits_data
(_fpga_uart_domain_auto_dev_in_d_bits_data),
.auto_fixedClockNode_anon_out_4_clock
(_pbus_auto_fixedClockNode_anon_out_4_clock),
.auto_fixedClockNode_anon_out_4_reset
(_pbus_auto_fixedClockNode_anon_out_4_reset),
.auto_fixedClockNode_anon_out_3_clock
(_pbus_auto_fixedClockNode_anon_out_3_clock),
.auto_fixedClockNode_anon_out_3_reset
@@ -1594,6 +1647,37 @@ module VCU118RocketSystem(
.auto_clock_in_clock (_pbus_auto_fixedClockNode_anon_out_2_clock),
.auto_clock_in_reset (_pbus_auto_fixedClockNode_anon_out_2_reset)
);
MAX2771SPIClockSinkDomain max2771_spi_domain (
.auto_dev_in_a_ready (_max2771_spi_domain_auto_dev_in_a_ready),
.auto_dev_in_a_valid
(_pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_valid),
.auto_dev_in_a_bits_opcode
(_pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_opcode),
.auto_dev_in_a_bits_size
(_pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_size),
.auto_dev_in_a_bits_source
(_pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_source),
.auto_dev_in_a_bits_address
(_pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_address),
.auto_dev_in_a_bits_mask
(_pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_mask),
.auto_dev_in_a_bits_data
(_pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_a_bits_data),
.auto_dev_in_d_ready
(_pbus_auto_coupler_to_max2771_spi_fragmenter_anon_out_d_ready),
.auto_dev_in_d_valid (_max2771_spi_domain_auto_dev_in_d_valid),
.auto_dev_in_d_bits_opcode (_max2771_spi_domain_auto_dev_in_d_bits_opcode),
.auto_dev_in_d_bits_size (_max2771_spi_domain_auto_dev_in_d_bits_size),
.auto_dev_in_d_bits_source (_max2771_spi_domain_auto_dev_in_d_bits_source),
.auto_dev_in_d_bits_data (_max2771_spi_domain_auto_dev_in_d_bits_data),
.auto_dev_sdata_oe_out (max2771_spi_sdata_oe),
.auto_dev_sdata_out_out (max2771_spi_sdata_o),
.auto_dev_sdata_in_in (max2771_spi_sdata_i),
.auto_dev_csn_out (max2771_spi_csn),
.auto_dev_sclk_out (max2771_spi_sclk),
.auto_clock_in_clock (_pbus_auto_fixedClockNode_anon_out_3_clock),
.auto_clock_in_reset (_pbus_auto_fixedClockNode_anon_out_3_reset)
);
FPGAGPSClockSinkDomain fpga_gps_domain (
.auto_tl2apb_in_a_ready
(_fpga_gps_domain_auto_tl2apb_in_a_ready),
@@ -1675,9 +1759,9 @@ module VCU118RocketSystem(
.auto_dev_int_out_9
(_fpga_gps_domain_auto_dev_int_out_9),
.auto_clock_in_clock
(_pbus_auto_fixedClockNode_anon_out_3_clock),
(_pbus_auto_fixedClockNode_anon_out_4_clock),
.auto_clock_in_reset
(_pbus_auto_fixedClockNode_anon_out_3_reset)
(_pbus_auto_fixedClockNode_anon_out_4_reset)
);
endmodule
@@ -44,6 +44,7 @@
./FixedClockBroadcast_1.sv
./FixedClockBroadcast_3.sv
./FixedClockBroadcast_5.sv
./FixedClockBroadcast_6.sv
./FPGAGPSClockSinkDomain.sv
./FPGASPIClockSinkDomain.sv
./FPGAUARTClockSinkDomain.sv
@@ -72,6 +73,7 @@
./IntXbar_i3_o1.sv
./ITLB.sv
./LevelGateway.sv
./MAX2771SPIClockSinkDomain.sv
./MulAddRecFNPipe_l2_e11_s53.sv
./MulAddRecFNPipe_l2_e8_s24.sv
./MulAddRecFNToRaw_postMul_1.sv
@@ -121,7 +123,7 @@
./Repeater_TLBundleA_a26d64s2k1z3u.sv
./Repeater_TLBundleA_a28d64s2k1z3u.sv
./Repeater_TLBundleA_a29d32s2k1z3u.sv
./Repeater_TLBundleA_a29d64s2k1z3u_3.sv
./Repeater_TLBundleA_a29d64s2k1z3u_4.sv
./Repeater_TLBundleA_a29d64s2k1z3u.sv
./Repeater_TLBundleA_a32d64s2k1z3u.sv
./Repeater_TLBundleD_a32d64s1k1z4u.sv
@@ -192,6 +194,7 @@
./TLInterconnectCoupler_sbus_from_bus_named_fbus.sv
./TLInterconnectCoupler_sbus_from_rockettile.sv
./TLInterconnectCoupler_sbus_to_bus_named_cbus.sv
./TLMAX2771SPI.sv
./TLPLIC.sv
./TLROM.sv
./TLToAPB.sv
@@ -207,7 +210,7 @@
./TLXbar_fbus_i1_o1_a32d64s1k1z4u.sv
./TLXbar_MasterXbar_RocketTile_i2_o1_a32d64s1k1z4u.sv
./TLXbar_pbus_in_i1_o1_a29d64s2k1z3u.sv
./TLXbar_pbus_out_i1_o4_a29d64s2k1z3u.sv
./TLXbar_pbus_out_i1_o5_a29d64s2k1z3u.sv
./TLXbar_sbus_i2_o1_a32d64s2k1z4u.sv
./TLXbar_SlaveXbar_RocketTile_i1_o1_a32d64s2k1z3u.sv
./VCU118RocketSystem.sv
@@ -1,7 +1,7 @@
[
{
"class":"firrtl.options.TargetDirAnnotation",
"directory":"/home/ankaoc/Desktop/tmp/gps/hardware/generated/genesys2-soc"
"directory":"/home/ankaoc/Desktop/gps_tdk_new/gps/hardware/generated/genesys2-soc"
},
{
"class":"chisel3.experimental.EnumAnnotations$EnumVecAnnotation",
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,79 @@
{
"peripheral" : {
"displayName" : "max2771-spi.At0x10016000",
"baseAddress" : "0x10016000",
"regfields" : [ {
"command" : {
"byteOffset" : "0x0",
"bitOffset" : 0,
"bitWidth" : 32,
"name" : "command",
"description" : "bits[3:0] register address, bit8 read; write starts one 48-clock frame",
"accessType" : "W"
}
}, {
"write_data" : {
"byteOffset" : "0x4",
"bitOffset" : 0,
"bitWidth" : 32,
"name" : "write_data",
"description" : "32-bit MAX2771 register write data",
"accessType" : "W"
}
}, {
"read_data" : {
"byteOffset" : "0x8",
"bitOffset" : 0,
"bitWidth" : 32,
"name" : "read_data",
"description" : "last 32-bit MAX2771 register read data",
"accessType" : "R"
}
}, {
"status" : {
"byteOffset" : "0xc",
"bitOffset" : 0,
"bitWidth" : 32,
"name" : "status",
"description" : "bit0 ready, bit1 busy",
"accessType" : "R"
}
}, {
"input_clock_hz" : {
"byteOffset" : "0x10",
"bitOffset" : 0,
"bitWidth" : 32,
"name" : "input_clock_hz",
"description" : "peripheral input clock frequency",
"accessType" : "R"
}
}, {
"sclk_hz" : {
"byteOffset" : "0x14",
"bitOffset" : 0,
"bitWidth" : 32,
"name" : "sclk_hz",
"description" : "actual integer MAX2771 serial clock frequency",
"accessType" : "R"
}
}, {
"half_period_cycles" : {
"byteOffset" : "0x18",
"bitOffset" : 0,
"bitWidth" : 32,
"name" : "half_period_cycles",
"description" : "input-clock cycles per SCLK half-period",
"accessType" : "R"
}
}, {
"identification" : {
"byteOffset" : "0x1c",
"bitOffset" : 0,
"bitWidth" : 32,
"name" : "identification",
"description" : "ASCII MAX1 peripheral identification",
"accessType" : "R"
}
} ]
}
}
@@ -5,7 +5,7 @@
#size-cells = <1>;
compatible = "freechips,rocketchip-unknown-dev";
model = "freechips,rocketchip-unknown";
L30: cpus {
L31: cpus {
#address-cells = <1>;
#size-cells = <0>;
timebase-frequency = <1000000>;
@@ -31,7 +31,7 @@
};
};
};
L29: soc {
L30: soc {
#address-cells = <1>;
#size-cells = <1>;
compatible = "freechips,rocketchip-unknown-soc", "simple-bus";
@@ -64,65 +64,65 @@
compatible = "sifive,error0";
reg = <0x3000 0x1000>;
};
L17: gps-acq@10020000 {
L18: gps-acq@10020000 {
compatible = "anka,gps-acq-apb";
interrupt-parent = <&L8>;
interrupts = <1>;
reg = <0x10020000 0x1000>;
};
L27: gps-pps@1002a000 {
L28: gps-pps@1002a000 {
compatible = "anka,gps-pps-apb";
reg = <0x1002a000 0x1000>;
};
L18: gps-tracking0@10021000 {
L19: gps-tracking0@10021000 {
compatible = "anka,gps-tracking-apb";
interrupt-parent = <&L8>;
interrupts = <2>;
reg = <0x10021000 0x1000>;
};
L19: gps-tracking1@10022000 {
L20: gps-tracking1@10022000 {
compatible = "anka,gps-tracking-apb";
interrupt-parent = <&L8>;
interrupts = <3>;
reg = <0x10022000 0x1000>;
};
L20: gps-tracking2@10023000 {
L21: gps-tracking2@10023000 {
compatible = "anka,gps-tracking-apb";
interrupt-parent = <&L8>;
interrupts = <4>;
reg = <0x10023000 0x1000>;
};
L21: gps-tracking3@10024000 {
L22: gps-tracking3@10024000 {
compatible = "anka,gps-tracking-apb";
interrupt-parent = <&L8>;
interrupts = <5>;
reg = <0x10024000 0x1000>;
};
L22: gps-tracking4@10025000 {
L23: gps-tracking4@10025000 {
compatible = "anka,gps-tracking-apb";
interrupt-parent = <&L8>;
interrupts = <6>;
reg = <0x10025000 0x1000>;
};
L23: gps-tracking5@10026000 {
L24: gps-tracking5@10026000 {
compatible = "anka,gps-tracking-apb";
interrupt-parent = <&L8>;
interrupts = <7>;
reg = <0x10026000 0x1000>;
};
L24: gps-tracking6@10027000 {
L25: gps-tracking6@10027000 {
compatible = "anka,gps-tracking-apb";
interrupt-parent = <&L8>;
interrupts = <8>;
reg = <0x10027000 0x1000>;
};
L25: gps-tracking7@10028000 {
L26: gps-tracking7@10028000 {
compatible = "anka,gps-tracking-apb";
interrupt-parent = <&L8>;
interrupts = <9>;
reg = <0x10028000 0x1000>;
};
L26: gps-tracking8@10029000 {
L27: gps-tracking8@10029000 {
compatible = "anka,gps-tracking-apb";
interrupt-parent = <&L8>;
interrupts = <10>;
@@ -138,6 +138,11 @@
riscv,max-priority = <7>;
riscv,ndev = <11>;
};
L17: max2771-spi@10016000 {
compatible = "analog-devices,max2771-spi";
reg = <0x10016000 0x1000>;
reg-names = "control";
};
L0: pbus_clock {
#clock-cells = <0>;
clock-frequency = <100000000>;
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
{"mapping":[{"base":[0],"size":[4096],"r":[true],"w":[true],"x":[true],"c":[false],"a":[true],"names":["debug-controller@0"]},{"base":[12288],"size":[4096],"r":[true],"w":[true],"x":[true],"c":[false],"a":[true],"names":["error-device@3000"]},{"base":[65536],"size":[65536],"r":[true],"w":[false],"x":[true],"c":[false],"a":[false],"names":["rom@10000"]},{"base":[33554432],"size":[65536],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["clint@2000000"]},{"base":[201326592],"size":[67108864],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["interrupt-controller@c000000"]},{"base":[268513280],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["uart@10013000"]},{"base":[268517376],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["spi@10014000"]},{"base":[268521472],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["pmod-spi@10015000"]},{"base":[268566528],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-acq@10020000"]},{"base":[268570624],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-tracking0@10021000"]},{"base":[268574720],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-tracking1@10022000"]},{"base":[268578816],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-tracking2@10023000"]},{"base":[268582912],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-tracking3@10024000"]},{"base":[268587008],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-tracking4@10025000"]},{"base":[268591104],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-tracking5@10026000"]},{"base":[268595200],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-tracking6@10027000"]},{"base":[268599296],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-tracking7@10028000"]},{"base":[268603392],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-tracking8@10029000"]},{"base":[268607488],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-pps@1002a000"]},{"base":[2147483648],"size":[1048576],"r":[true],"w":[true],"x":[true],"c":[false],"a":[true],"names":["dtim@80000000"]}]}
{"mapping":[{"base":[0],"size":[4096],"r":[true],"w":[true],"x":[true],"c":[false],"a":[true],"names":["debug-controller@0"]},{"base":[12288],"size":[4096],"r":[true],"w":[true],"x":[true],"c":[false],"a":[true],"names":["error-device@3000"]},{"base":[65536],"size":[65536],"r":[true],"w":[false],"x":[true],"c":[false],"a":[false],"names":["rom@10000"]},{"base":[33554432],"size":[65536],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["clint@2000000"]},{"base":[201326592],"size":[67108864],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["interrupt-controller@c000000"]},{"base":[268513280],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["uart@10013000"]},{"base":[268517376],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["spi@10014000"]},{"base":[268521472],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["pmod-spi@10015000"]},{"base":[268525568],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["max2771-spi@10016000"]},{"base":[268566528],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-acq@10020000"]},{"base":[268570624],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-tracking0@10021000"]},{"base":[268574720],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-tracking1@10022000"]},{"base":[268578816],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-tracking2@10023000"]},{"base":[268582912],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-tracking3@10024000"]},{"base":[268587008],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-tracking4@10025000"]},{"base":[268591104],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-tracking5@10026000"]},{"base":[268595200],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-tracking6@10027000"]},{"base":[268599296],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-tracking7@10028000"]},{"base":[268603392],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-tracking8@10029000"]},{"base":[268607488],"size":[4096],"r":[true],"w":[true],"x":[false],"c":[false],"a":[true],"names":["gps-pps@1002a000"]},{"base":[2147483648],"size":[1048576],"r":[true],"w":[true],"x":[true],"c":[false],"a":[true],"names":["dtim@80000000"]}]}