a25a1a61d0
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.
182 lines
9.0 KiB
Systemverilog
182 lines
9.0 KiB
Systemverilog
// Generated by CIRCT firtool-1.151.0
|
|
module TLWidthWidget8_2(
|
|
input clock,
|
|
reset,
|
|
output auto_anon_in_a_ready,
|
|
input auto_anon_in_a_valid,
|
|
input [2:0] auto_anon_in_a_bits_opcode,
|
|
auto_anon_in_a_bits_param,
|
|
auto_anon_in_a_bits_size,
|
|
input [1:0] auto_anon_in_a_bits_source,
|
|
input [28:0] auto_anon_in_a_bits_address,
|
|
input auto_anon_in_a_bits_user_amba_prot_bufferable,
|
|
auto_anon_in_a_bits_user_amba_prot_modifiable,
|
|
auto_anon_in_a_bits_user_amba_prot_readalloc,
|
|
auto_anon_in_a_bits_user_amba_prot_writealloc,
|
|
auto_anon_in_a_bits_user_amba_prot_privileged,
|
|
auto_anon_in_a_bits_user_amba_prot_secure,
|
|
auto_anon_in_a_bits_user_amba_prot_fetch,
|
|
input [7:0] auto_anon_in_a_bits_mask,
|
|
input [63:0] auto_anon_in_a_bits_data,
|
|
input auto_anon_in_a_bits_corrupt,
|
|
auto_anon_in_d_ready,
|
|
output auto_anon_in_d_valid,
|
|
output [2:0] auto_anon_in_d_bits_opcode,
|
|
output [1:0] auto_anon_in_d_bits_param,
|
|
output [2:0] auto_anon_in_d_bits_size,
|
|
output [1:0] auto_anon_in_d_bits_source,
|
|
output auto_anon_in_d_bits_sink,
|
|
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_a_ready,
|
|
output auto_anon_out_a_valid,
|
|
output [2:0] auto_anon_out_a_bits_opcode,
|
|
auto_anon_out_a_bits_param,
|
|
auto_anon_out_a_bits_size,
|
|
output [1:0] auto_anon_out_a_bits_source,
|
|
output [28:0] auto_anon_out_a_bits_address,
|
|
output auto_anon_out_a_bits_user_amba_prot_bufferable,
|
|
auto_anon_out_a_bits_user_amba_prot_modifiable,
|
|
auto_anon_out_a_bits_user_amba_prot_readalloc,
|
|
auto_anon_out_a_bits_user_amba_prot_writealloc,
|
|
auto_anon_out_a_bits_user_amba_prot_privileged,
|
|
auto_anon_out_a_bits_user_amba_prot_secure,
|
|
auto_anon_out_a_bits_user_amba_prot_fetch,
|
|
output [3:0] auto_anon_out_a_bits_mask,
|
|
output [31:0] auto_anon_out_a_bits_data,
|
|
output auto_anon_out_a_bits_corrupt,
|
|
auto_anon_out_d_ready,
|
|
input auto_anon_out_d_valid,
|
|
input [2:0] auto_anon_out_d_bits_opcode,
|
|
input [1:0] auto_anon_out_d_bits_param,
|
|
input [2:0] auto_anon_out_d_bits_size,
|
|
input [1:0] auto_anon_out_d_bits_source,
|
|
input auto_anon_out_d_bits_sink,
|
|
auto_anon_out_d_bits_denied,
|
|
input [31:0] auto_anon_out_d_bits_data,
|
|
input auto_anon_out_d_bits_corrupt
|
|
);
|
|
|
|
wire _repeated_repeater_io_deq_valid;
|
|
wire [2:0] _repeated_repeater_io_deq_bits_opcode;
|
|
wire [2:0] _repeated_repeater_io_deq_bits_size;
|
|
wire [28:0] _repeated_repeater_io_deq_bits_address;
|
|
wire [7:0] _repeated_repeater_io_deq_bits_mask;
|
|
wire [63:0] _repeated_repeater_io_deq_bits_data;
|
|
wire [9:0] _repeat_limit_T = 10'h7 << _repeated_repeater_io_deq_bits_size;
|
|
reg repeat_count;
|
|
wire repeat_last =
|
|
repeat_count == ~(_repeat_limit_T[2]) | _repeated_repeater_io_deq_bits_opcode[2];
|
|
wire repeat_index = _repeated_repeater_io_deq_bits_address[2] | repeat_count;
|
|
wire [9:0] _limit_T = 10'h7 << auto_anon_out_d_bits_size;
|
|
reg count;
|
|
wire last = count == ~(_limit_T[2]) | ~(auto_anon_out_d_bits_opcode[0]);
|
|
reg corrupt_reg;
|
|
wire corrupt_out = auto_anon_out_d_bits_corrupt | corrupt_reg;
|
|
wire anonOut_d_ready = auto_anon_in_d_ready | ~last;
|
|
reg anonIn_d_bits_data_rdata_written_once;
|
|
wire anonIn_d_bits_data_masked_enable_0 =
|
|
~(count & ~(_limit_T[2])) | ~anonIn_d_bits_data_rdata_written_once;
|
|
reg [31:0] anonIn_d_bits_data_rdata_0;
|
|
always @(posedge clock) begin
|
|
automatic logic _anonIn_d_bits_data_T;
|
|
automatic logic _anonIn_d_bits_data_T_2;
|
|
_anonIn_d_bits_data_T = anonOut_d_ready & auto_anon_out_d_valid;
|
|
_anonIn_d_bits_data_T_2 = _anonIn_d_bits_data_T & ~last;
|
|
if (reset) begin
|
|
repeat_count <= 1'h0;
|
|
count <= 1'h0;
|
|
corrupt_reg <= 1'h0;
|
|
anonIn_d_bits_data_rdata_written_once <= 1'h0;
|
|
end
|
|
else begin
|
|
if (auto_anon_out_a_ready & _repeated_repeater_io_deq_valid)
|
|
repeat_count <= ~repeat_last & repeat_count - 1'h1;
|
|
if (_anonIn_d_bits_data_T) begin
|
|
count <= ~last & count - 1'h1;
|
|
corrupt_reg <= ~last & corrupt_out;
|
|
end
|
|
anonIn_d_bits_data_rdata_written_once <=
|
|
_anonIn_d_bits_data_T_2 | anonIn_d_bits_data_rdata_written_once;
|
|
end
|
|
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_4 repeated_repeater (
|
|
.clock (clock),
|
|
.reset (reset),
|
|
.io_repeat (~repeat_last),
|
|
.io_enq_ready (auto_anon_in_a_ready),
|
|
.io_enq_valid (auto_anon_in_a_valid),
|
|
.io_enq_bits_opcode (auto_anon_in_a_bits_opcode),
|
|
.io_enq_bits_param (auto_anon_in_a_bits_param),
|
|
.io_enq_bits_size (auto_anon_in_a_bits_size),
|
|
.io_enq_bits_source (auto_anon_in_a_bits_source),
|
|
.io_enq_bits_address (auto_anon_in_a_bits_address),
|
|
.io_enq_bits_user_amba_prot_bufferable
|
|
(auto_anon_in_a_bits_user_amba_prot_bufferable),
|
|
.io_enq_bits_user_amba_prot_modifiable
|
|
(auto_anon_in_a_bits_user_amba_prot_modifiable),
|
|
.io_enq_bits_user_amba_prot_readalloc (auto_anon_in_a_bits_user_amba_prot_readalloc),
|
|
.io_enq_bits_user_amba_prot_writealloc
|
|
(auto_anon_in_a_bits_user_amba_prot_writealloc),
|
|
.io_enq_bits_user_amba_prot_privileged
|
|
(auto_anon_in_a_bits_user_amba_prot_privileged),
|
|
.io_enq_bits_user_amba_prot_secure (auto_anon_in_a_bits_user_amba_prot_secure),
|
|
.io_enq_bits_user_amba_prot_fetch (auto_anon_in_a_bits_user_amba_prot_fetch),
|
|
.io_enq_bits_mask (auto_anon_in_a_bits_mask),
|
|
.io_enq_bits_data (auto_anon_in_a_bits_data),
|
|
.io_enq_bits_corrupt (auto_anon_in_a_bits_corrupt),
|
|
.io_deq_ready (auto_anon_out_a_ready),
|
|
.io_deq_valid (_repeated_repeater_io_deq_valid),
|
|
.io_deq_bits_opcode (_repeated_repeater_io_deq_bits_opcode),
|
|
.io_deq_bits_param (auto_anon_out_a_bits_param),
|
|
.io_deq_bits_size (_repeated_repeater_io_deq_bits_size),
|
|
.io_deq_bits_source (auto_anon_out_a_bits_source),
|
|
.io_deq_bits_address (_repeated_repeater_io_deq_bits_address),
|
|
.io_deq_bits_user_amba_prot_bufferable
|
|
(auto_anon_out_a_bits_user_amba_prot_bufferable),
|
|
.io_deq_bits_user_amba_prot_modifiable
|
|
(auto_anon_out_a_bits_user_amba_prot_modifiable),
|
|
.io_deq_bits_user_amba_prot_readalloc
|
|
(auto_anon_out_a_bits_user_amba_prot_readalloc),
|
|
.io_deq_bits_user_amba_prot_writealloc
|
|
(auto_anon_out_a_bits_user_amba_prot_writealloc),
|
|
.io_deq_bits_user_amba_prot_privileged
|
|
(auto_anon_out_a_bits_user_amba_prot_privileged),
|
|
.io_deq_bits_user_amba_prot_secure (auto_anon_out_a_bits_user_amba_prot_secure),
|
|
.io_deq_bits_user_amba_prot_fetch (auto_anon_out_a_bits_user_amba_prot_fetch),
|
|
.io_deq_bits_mask (_repeated_repeater_io_deq_bits_mask),
|
|
.io_deq_bits_data (_repeated_repeater_io_deq_bits_data),
|
|
.io_deq_bits_corrupt (auto_anon_out_a_bits_corrupt)
|
|
);
|
|
assign auto_anon_in_d_valid = auto_anon_out_d_valid & last;
|
|
assign auto_anon_in_d_bits_opcode = auto_anon_out_d_bits_opcode;
|
|
assign auto_anon_in_d_bits_param = auto_anon_out_d_bits_param;
|
|
assign auto_anon_in_d_bits_size = auto_anon_out_d_bits_size;
|
|
assign auto_anon_in_d_bits_source = auto_anon_out_d_bits_source;
|
|
assign auto_anon_in_d_bits_sink = auto_anon_out_d_bits_sink;
|
|
assign auto_anon_in_d_bits_denied = auto_anon_out_d_bits_denied;
|
|
assign auto_anon_in_d_bits_data =
|
|
{auto_anon_out_d_bits_data,
|
|
anonIn_d_bits_data_masked_enable_0
|
|
? auto_anon_out_d_bits_data
|
|
: anonIn_d_bits_data_rdata_0};
|
|
assign auto_anon_in_d_bits_corrupt = corrupt_out;
|
|
assign auto_anon_out_a_valid = _repeated_repeater_io_deq_valid;
|
|
assign auto_anon_out_a_bits_opcode = _repeated_repeater_io_deq_bits_opcode;
|
|
assign auto_anon_out_a_bits_size = _repeated_repeater_io_deq_bits_size;
|
|
assign auto_anon_out_a_bits_address = _repeated_repeater_io_deq_bits_address;
|
|
assign auto_anon_out_a_bits_mask =
|
|
repeat_index
|
|
? _repeated_repeater_io_deq_bits_mask[7:4]
|
|
: _repeated_repeater_io_deq_bits_mask[3:0];
|
|
assign auto_anon_out_a_bits_data =
|
|
repeat_index
|
|
? _repeated_repeater_io_deq_bits_data[63:32]
|
|
: auto_anon_in_a_bits_data[31:0];
|
|
assign auto_anon_out_d_ready = anonOut_d_ready;
|
|
endmodule
|
|
|