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

228 lines
11 KiB
Systemverilog

// Generated by CIRCT firtool-1.151.0
module TLWidthWidget1(
input clock,
reset,
output auto_anon_in_a_ready,
input auto_anon_in_a_valid,
input [2:0] auto_anon_in_a_bits_opcode,
input [3:0] auto_anon_in_a_bits_size,
input [31:0] auto_anon_in_a_bits_address,
input [7:0] auto_anon_in_a_bits_data,
input 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 [3:0] auto_anon_in_d_bits_size,
output auto_anon_in_d_bits_sink,
auto_anon_in_d_bits_denied,
output [7: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,
output [3:0] auto_anon_out_a_bits_size,
output [31:0] auto_anon_out_a_bits_address,
output [7:0] auto_anon_out_a_bits_mask,
output [63:0] auto_anon_out_a_bits_data,
output 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 [3:0] auto_anon_out_d_bits_size,
input auto_anon_out_d_bits_sink,
auto_anon_out_d_bits_denied,
input [63: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 [3:0] _repeated_repeater_io_deq_bits_size;
wire [63:0] _repeated_repeater_io_deq_bits_data;
wire [17:0] _limit_T = 18'h7 << auto_anon_in_a_bits_size;
reg [2:0] count;
wire last = count == ~(_limit_T[2:0]) | auto_anon_in_a_bits_opcode[2];
wire anonIn_a_ready = auto_anon_out_a_ready | ~last;
reg anonOut_a_bits_data_rdata_written_once;
wire anonOut_a_bits_data_masked_enable_0 =
(count & ~(_limit_T[2:0])) == 3'h0 | ~anonOut_a_bits_data_rdata_written_once;
wire anonOut_a_bits_data_masked_enable_1 =
({count[2:1], ~(count[0])} & ~(_limit_T[2:0])) == 3'h0
| ~anonOut_a_bits_data_rdata_written_once;
wire anonOut_a_bits_data_masked_enable_2 =
({count[2], count[1:0] ^ 2'h2} & ~(_limit_T[2:0])) == 3'h0
| ~anonOut_a_bits_data_rdata_written_once;
wire anonOut_a_bits_data_masked_enable_3 =
({count[2], ~(count[1:0])} & ~(_limit_T[2:0])) == 3'h0
| ~anonOut_a_bits_data_rdata_written_once;
wire anonOut_a_bits_data_masked_enable_4 =
((count ^ 3'h4) & ~(_limit_T[2:0])) == 3'h0 | ~anonOut_a_bits_data_rdata_written_once;
wire anonOut_a_bits_data_masked_enable_5 =
((count ^ 3'h5) & ~(_limit_T[2:0])) == 3'h0 | ~anonOut_a_bits_data_rdata_written_once;
wire anonOut_a_bits_data_masked_enable_6 =
((count ^ 3'h6) & ~(_limit_T[2:0])) == 3'h0 | ~anonOut_a_bits_data_rdata_written_once;
reg [7:0] anonOut_a_bits_data_rdata_0;
reg [7:0] anonOut_a_bits_data_rdata_1;
reg [7:0] anonOut_a_bits_data_rdata_2;
reg [7:0] anonOut_a_bits_data_rdata_3;
reg [7:0] anonOut_a_bits_data_rdata_4;
reg [7:0] anonOut_a_bits_data_rdata_5;
reg [7:0] anonOut_a_bits_data_rdata_6;
wire [3:0] _anonOut_a_bits_mask_sizeOH_T_1 = 4'h1 << auto_anon_in_a_bits_size[1:0];
wire anonOut_a_bits_mask_sub_sub_sub_0_1 = auto_anon_in_a_bits_size > 4'h2;
wire anonOut_a_bits_mask_sub_sub_0_1 =
anonOut_a_bits_mask_sub_sub_sub_0_1 | _anonOut_a_bits_mask_sizeOH_T_1[2]
& ~(auto_anon_in_a_bits_address[2]);
wire anonOut_a_bits_mask_sub_sub_1_1 =
anonOut_a_bits_mask_sub_sub_sub_0_1 | _anonOut_a_bits_mask_sizeOH_T_1[2]
& auto_anon_in_a_bits_address[2];
wire anonOut_a_bits_mask_sub_0_2 =
~(auto_anon_in_a_bits_address[2]) & ~(auto_anon_in_a_bits_address[1]);
wire anonOut_a_bits_mask_sub_0_1 =
anonOut_a_bits_mask_sub_sub_0_1 | _anonOut_a_bits_mask_sizeOH_T_1[1]
& anonOut_a_bits_mask_sub_0_2;
wire anonOut_a_bits_mask_sub_1_2 =
~(auto_anon_in_a_bits_address[2]) & auto_anon_in_a_bits_address[1];
wire anonOut_a_bits_mask_sub_1_1 =
anonOut_a_bits_mask_sub_sub_0_1 | _anonOut_a_bits_mask_sizeOH_T_1[1]
& anonOut_a_bits_mask_sub_1_2;
wire anonOut_a_bits_mask_sub_2_2 =
auto_anon_in_a_bits_address[2] & ~(auto_anon_in_a_bits_address[1]);
wire anonOut_a_bits_mask_sub_2_1 =
anonOut_a_bits_mask_sub_sub_1_1 | _anonOut_a_bits_mask_sizeOH_T_1[1]
& anonOut_a_bits_mask_sub_2_2;
wire anonOut_a_bits_mask_sub_3_2 =
auto_anon_in_a_bits_address[2] & auto_anon_in_a_bits_address[1];
wire anonOut_a_bits_mask_sub_3_1 =
anonOut_a_bits_mask_sub_sub_1_1 | _anonOut_a_bits_mask_sizeOH_T_1[1]
& anonOut_a_bits_mask_sub_3_2;
wire [17:0] _repeat_limit_T = 18'h7 << _repeated_repeater_io_deq_bits_size;
reg [2:0] repeat_count;
wire repeat_first = repeat_count == 3'h0;
wire repeat_last =
repeat_count == ~(_repeat_limit_T[2:0]) | ~(_repeated_repeater_io_deq_bits_opcode[0]);
reg [2:0] repeat_sel_sel_sources_0;
reg [2:0] repeat_sel_hold_r;
wire [7:0][7:0] _GEN =
{{_repeated_repeater_io_deq_bits_data[63:56]},
{_repeated_repeater_io_deq_bits_data[55:48]},
{_repeated_repeater_io_deq_bits_data[47:40]},
{_repeated_repeater_io_deq_bits_data[39:32]},
{_repeated_repeater_io_deq_bits_data[31:24]},
{_repeated_repeater_io_deq_bits_data[23:16]},
{_repeated_repeater_io_deq_bits_data[15:8]},
{auto_anon_out_d_bits_data[7:0]}};
always @(posedge clock) begin
automatic logic _repeat_sel_sel_T;
automatic logic _anonOut_a_bits_data_T_2;
_repeat_sel_sel_T = anonIn_a_ready & auto_anon_in_a_valid;
_anonOut_a_bits_data_T_2 = _repeat_sel_sel_T & ~last;
if (reset) begin
count <= 3'h0;
anonOut_a_bits_data_rdata_written_once <= 1'h0;
repeat_count <= 3'h0;
end
else begin
if (_repeat_sel_sel_T)
count <= last ? 3'h0 : count + 3'h1;
anonOut_a_bits_data_rdata_written_once <=
_anonOut_a_bits_data_T_2 | anonOut_a_bits_data_rdata_written_once;
if (auto_anon_in_d_ready & _repeated_repeater_io_deq_valid)
repeat_count <= repeat_last ? 3'h0 : repeat_count + 3'h1;
end
if (_anonOut_a_bits_data_T_2 & anonOut_a_bits_data_masked_enable_0)
anonOut_a_bits_data_rdata_0 <= auto_anon_in_a_bits_data;
if (_anonOut_a_bits_data_T_2 & anonOut_a_bits_data_masked_enable_1)
anonOut_a_bits_data_rdata_1 <= auto_anon_in_a_bits_data;
if (_anonOut_a_bits_data_T_2 & anonOut_a_bits_data_masked_enable_2)
anonOut_a_bits_data_rdata_2 <= auto_anon_in_a_bits_data;
if (_anonOut_a_bits_data_T_2 & anonOut_a_bits_data_masked_enable_3)
anonOut_a_bits_data_rdata_3 <= auto_anon_in_a_bits_data;
if (_anonOut_a_bits_data_T_2 & anonOut_a_bits_data_masked_enable_4)
anonOut_a_bits_data_rdata_4 <= auto_anon_in_a_bits_data;
if (_anonOut_a_bits_data_T_2 & anonOut_a_bits_data_masked_enable_5)
anonOut_a_bits_data_rdata_5 <= auto_anon_in_a_bits_data;
if (_anonOut_a_bits_data_T_2 & anonOut_a_bits_data_masked_enable_6)
anonOut_a_bits_data_rdata_6 <= auto_anon_in_a_bits_data;
if (_repeat_sel_sel_T)
repeat_sel_sel_sources_0 <= auto_anon_in_a_bits_address[2:0];
if (repeat_first)
repeat_sel_hold_r <= repeat_sel_sel_sources_0;
end // always @(posedge)
Repeater_TLBundleD_a32d64s1k1z4u repeated_repeater (
.clock (clock),
.reset (reset),
.io_repeat (~repeat_last),
.io_enq_ready (auto_anon_out_d_ready),
.io_enq_valid (auto_anon_out_d_valid),
.io_enq_bits_opcode (auto_anon_out_d_bits_opcode),
.io_enq_bits_param (auto_anon_out_d_bits_param),
.io_enq_bits_size (auto_anon_out_d_bits_size),
.io_enq_bits_sink (auto_anon_out_d_bits_sink),
.io_enq_bits_denied (auto_anon_out_d_bits_denied),
.io_enq_bits_data (auto_anon_out_d_bits_data),
.io_enq_bits_corrupt (auto_anon_out_d_bits_corrupt),
.io_deq_ready (auto_anon_in_d_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_in_d_bits_param),
.io_deq_bits_size (_repeated_repeater_io_deq_bits_size),
.io_deq_bits_sink (auto_anon_in_d_bits_sink),
.io_deq_bits_denied (auto_anon_in_d_bits_denied),
.io_deq_bits_data (_repeated_repeater_io_deq_bits_data),
.io_deq_bits_corrupt (auto_anon_in_d_bits_corrupt)
);
assign auto_anon_in_a_ready = anonIn_a_ready;
assign auto_anon_in_d_valid = _repeated_repeater_io_deq_valid;
assign auto_anon_in_d_bits_opcode = _repeated_repeater_io_deq_bits_opcode;
assign auto_anon_in_d_bits_size = _repeated_repeater_io_deq_bits_size;
assign auto_anon_in_d_bits_data =
_GEN[(repeat_first ? repeat_sel_sel_sources_0 : repeat_sel_hold_r)
& _repeat_limit_T[2:0] | repeat_count];
assign auto_anon_out_a_valid = auto_anon_in_a_valid & last;
assign auto_anon_out_a_bits_opcode = auto_anon_in_a_bits_opcode;
assign auto_anon_out_a_bits_size = auto_anon_in_a_bits_size;
assign auto_anon_out_a_bits_address = auto_anon_in_a_bits_address;
assign auto_anon_out_a_bits_mask =
{anonOut_a_bits_mask_sub_3_1 | anonOut_a_bits_mask_sub_3_2
& auto_anon_in_a_bits_address[0],
anonOut_a_bits_mask_sub_3_1 | anonOut_a_bits_mask_sub_3_2
& ~(auto_anon_in_a_bits_address[0]),
anonOut_a_bits_mask_sub_2_1 | anonOut_a_bits_mask_sub_2_2
& auto_anon_in_a_bits_address[0],
anonOut_a_bits_mask_sub_2_1 | anonOut_a_bits_mask_sub_2_2
& ~(auto_anon_in_a_bits_address[0]),
anonOut_a_bits_mask_sub_1_1 | anonOut_a_bits_mask_sub_1_2
& auto_anon_in_a_bits_address[0],
anonOut_a_bits_mask_sub_1_1 | anonOut_a_bits_mask_sub_1_2
& ~(auto_anon_in_a_bits_address[0]),
anonOut_a_bits_mask_sub_0_1 | anonOut_a_bits_mask_sub_0_2
& auto_anon_in_a_bits_address[0],
anonOut_a_bits_mask_sub_0_1 | anonOut_a_bits_mask_sub_0_2
& ~(auto_anon_in_a_bits_address[0])};
assign auto_anon_out_a_bits_data =
{auto_anon_in_a_bits_data,
anonOut_a_bits_data_masked_enable_6
? auto_anon_in_a_bits_data
: anonOut_a_bits_data_rdata_6,
anonOut_a_bits_data_masked_enable_5
? auto_anon_in_a_bits_data
: anonOut_a_bits_data_rdata_5,
anonOut_a_bits_data_masked_enable_4
? auto_anon_in_a_bits_data
: anonOut_a_bits_data_rdata_4,
anonOut_a_bits_data_masked_enable_3
? auto_anon_in_a_bits_data
: anonOut_a_bits_data_rdata_3,
anonOut_a_bits_data_masked_enable_2
? auto_anon_in_a_bits_data
: anonOut_a_bits_data_rdata_2,
anonOut_a_bits_data_masked_enable_1
? auto_anon_in_a_bits_data
: anonOut_a_bits_data_rdata_1,
anonOut_a_bits_data_masked_enable_0
? auto_anon_in_a_bits_data
: anonOut_a_bits_data_rdata_0};
endmodule