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

132 lines
5.0 KiB
Systemverilog

// Generated by CIRCT firtool-1.151.0
module ShiftQueue(
input clock,
reset,
output io_enq_ready,
input io_enq_valid,
input [33:0] io_enq_bits_pc,
input [31:0] io_enq_bits_data,
input io_enq_bits_xcpt_pf_inst,
io_enq_bits_xcpt_ae_inst,
io_enq_bits_replay,
io_deq_ready,
output io_deq_valid,
output [33:0] io_deq_bits_pc,
output [31:0] io_deq_bits_data,
output io_deq_bits_xcpt_pf_inst,
io_deq_bits_xcpt_ae_inst,
io_deq_bits_replay,
output [4:0] io_mask
);
reg valid_0;
reg valid_1;
reg valid_2;
reg valid_3;
reg valid_4;
reg [33:0] elts_0_pc;
reg [31:0] elts_0_data;
reg elts_0_xcpt_pf_inst;
reg elts_0_xcpt_ae_inst;
reg elts_0_replay;
reg [33:0] elts_1_pc;
reg [31:0] elts_1_data;
reg elts_1_xcpt_pf_inst;
reg elts_1_xcpt_ae_inst;
reg elts_1_replay;
reg [33:0] elts_2_pc;
reg [31:0] elts_2_data;
reg elts_2_xcpt_pf_inst;
reg elts_2_xcpt_ae_inst;
reg elts_2_replay;
reg [33:0] elts_3_pc;
reg [31:0] elts_3_data;
reg elts_3_xcpt_pf_inst;
reg elts_3_xcpt_ae_inst;
reg elts_3_replay;
reg [33:0] elts_4_pc;
reg [31:0] elts_4_data;
reg elts_4_xcpt_pf_inst;
reg elts_4_xcpt_ae_inst;
reg elts_4_replay;
always @(posedge clock) begin
automatic logic _valid_4_T_4;
_valid_4_T_4 = ~valid_4 & io_enq_valid;
if (reset) begin
valid_0 <= 1'h0;
valid_1 <= 1'h0;
valid_2 <= 1'h0;
valid_3 <= 1'h0;
valid_4 <= 1'h0;
end
else begin
valid_0 <= io_deq_ready ? valid_1 | _valid_4_T_4 & valid_0 : _valid_4_T_4 | valid_0;
valid_1 <=
io_deq_ready
? valid_2 | _valid_4_T_4 & valid_1
: _valid_4_T_4 & valid_0 | valid_1;
valid_2 <=
io_deq_ready
? valid_3 | _valid_4_T_4 & valid_2
: _valid_4_T_4 & valid_1 | valid_2;
valid_3 <=
io_deq_ready
? valid_4 | _valid_4_T_4 & valid_3
: _valid_4_T_4 & valid_2 | valid_3;
valid_4 <= io_deq_ready ? _valid_4_T_4 & valid_4 : _valid_4_T_4 & valid_3 | valid_4;
end
if (io_deq_ready ? valid_1 | _valid_4_T_4 & valid_0 : _valid_4_T_4 & ~valid_0) begin
elts_0_pc <= valid_1 ? elts_1_pc : io_enq_bits_pc;
elts_0_data <= valid_1 ? elts_1_data : io_enq_bits_data;
elts_0_xcpt_pf_inst <= valid_1 ? elts_1_xcpt_pf_inst : io_enq_bits_xcpt_pf_inst;
elts_0_xcpt_ae_inst <= valid_1 ? elts_1_xcpt_ae_inst : io_enq_bits_xcpt_ae_inst;
elts_0_replay <= valid_1 ? elts_1_replay : io_enq_bits_replay;
end
if (io_deq_ready
? valid_2 | _valid_4_T_4 & valid_1
: _valid_4_T_4 & valid_0 & ~valid_1) begin
elts_1_pc <= valid_2 ? elts_2_pc : io_enq_bits_pc;
elts_1_data <= valid_2 ? elts_2_data : io_enq_bits_data;
elts_1_xcpt_pf_inst <= valid_2 ? elts_2_xcpt_pf_inst : io_enq_bits_xcpt_pf_inst;
elts_1_xcpt_ae_inst <= valid_2 ? elts_2_xcpt_ae_inst : io_enq_bits_xcpt_ae_inst;
elts_1_replay <= valid_2 ? elts_2_replay : io_enq_bits_replay;
end
if (io_deq_ready
? valid_3 | _valid_4_T_4 & valid_2
: _valid_4_T_4 & valid_1 & ~valid_2) begin
elts_2_pc <= valid_3 ? elts_3_pc : io_enq_bits_pc;
elts_2_data <= valid_3 ? elts_3_data : io_enq_bits_data;
elts_2_xcpt_pf_inst <= valid_3 ? elts_3_xcpt_pf_inst : io_enq_bits_xcpt_pf_inst;
elts_2_xcpt_ae_inst <= valid_3 ? elts_3_xcpt_ae_inst : io_enq_bits_xcpt_ae_inst;
elts_2_replay <= valid_3 ? elts_3_replay : io_enq_bits_replay;
end
if (io_deq_ready
? valid_4 | _valid_4_T_4 & valid_3
: _valid_4_T_4 & valid_2 & ~valid_3) begin
elts_3_pc <= valid_4 ? elts_4_pc : io_enq_bits_pc;
elts_3_data <= valid_4 ? elts_4_data : io_enq_bits_data;
elts_3_xcpt_pf_inst <= valid_4 ? elts_4_xcpt_pf_inst : io_enq_bits_xcpt_pf_inst;
elts_3_xcpt_ae_inst <= valid_4 ? elts_4_xcpt_ae_inst : io_enq_bits_xcpt_ae_inst;
elts_3_replay <= valid_4 ? elts_4_replay : io_enq_bits_replay;
end
if (io_deq_ready ? _valid_4_T_4 & valid_4 : _valid_4_T_4 & valid_3) begin
elts_4_pc <= io_enq_bits_pc;
elts_4_data <= io_enq_bits_data;
elts_4_xcpt_pf_inst <= io_enq_bits_xcpt_pf_inst;
elts_4_xcpt_ae_inst <= io_enq_bits_xcpt_ae_inst;
elts_4_replay <= io_enq_bits_replay;
end
end // always @(posedge)
assign io_enq_ready = ~valid_4;
assign io_deq_valid = io_enq_valid | valid_0;
assign io_deq_bits_pc = valid_0 ? elts_0_pc : io_enq_bits_pc;
assign io_deq_bits_data = valid_0 ? elts_0_data : io_enq_bits_data;
assign io_deq_bits_xcpt_pf_inst =
valid_0 ? elts_0_xcpt_pf_inst : io_enq_bits_xcpt_pf_inst;
assign io_deq_bits_xcpt_ae_inst =
valid_0 ? elts_0_xcpt_ae_inst : io_enq_bits_xcpt_ae_inst;
assign io_deq_bits_replay = valid_0 ? elts_0_replay : io_enq_bits_replay;
assign io_mask = {valid_4, valid_3, valid_2, valid_1, valid_0};
endmodule