132 lines
5.0 KiB
Systemverilog
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
|
|
|