Files
gps/hardware/generated/genesys2-soc-verilog/TLWidthWidget8_2.sv
T
2026-08-06 22:14:52 +03:00

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_3 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