78 lines
2.3 KiB
Systemverilog
78 lines
2.3 KiB
Systemverilog
// Generated by CIRCT firtool-1.151.0
|
|
module Queue2_TLBundleA_a32d64s2k1z3u(
|
|
input clock,
|
|
reset,
|
|
output io_enq_ready,
|
|
input io_enq_valid,
|
|
input [2:0] io_enq_bits_opcode,
|
|
io_enq_bits_param,
|
|
io_enq_bits_size,
|
|
input [1:0] io_enq_bits_source,
|
|
input [31:0] io_enq_bits_address,
|
|
input [7:0] io_enq_bits_mask,
|
|
input [63:0] io_enq_bits_data,
|
|
input io_enq_bits_corrupt,
|
|
io_deq_ready,
|
|
output io_deq_valid,
|
|
output [2:0] io_deq_bits_opcode,
|
|
io_deq_bits_param,
|
|
io_deq_bits_size,
|
|
output [1:0] io_deq_bits_source,
|
|
output [31:0] io_deq_bits_address,
|
|
output [7:0] io_deq_bits_mask,
|
|
output [63:0] io_deq_bits_data
|
|
);
|
|
|
|
wire [114:0] _ram_ext_R0_data;
|
|
reg enq_ptr_value;
|
|
reg deq_ptr_value;
|
|
reg maybe_full;
|
|
wire ptr_match = enq_ptr_value == deq_ptr_value;
|
|
wire empty = ptr_match & ~maybe_full;
|
|
wire full = ptr_match & maybe_full;
|
|
wire do_enq = ~full & io_enq_valid;
|
|
always @(posedge clock) begin
|
|
if (reset) begin
|
|
enq_ptr_value <= 1'h0;
|
|
deq_ptr_value <= 1'h0;
|
|
maybe_full <= 1'h0;
|
|
end
|
|
else begin
|
|
automatic logic do_deq = io_deq_ready & ~empty;
|
|
if (do_enq)
|
|
enq_ptr_value <= enq_ptr_value - 1'h1;
|
|
if (do_deq)
|
|
deq_ptr_value <= deq_ptr_value - 1'h1;
|
|
if (do_enq != do_deq)
|
|
maybe_full <= do_enq;
|
|
end
|
|
end // always @(posedge)
|
|
ram_2x115 ram_ext (
|
|
.R0_addr (deq_ptr_value),
|
|
.R0_en (1'h1),
|
|
.R0_clk (clock),
|
|
.R0_data (_ram_ext_R0_data),
|
|
.W0_addr (enq_ptr_value),
|
|
.W0_en (do_enq),
|
|
.W0_clk (clock),
|
|
.W0_data
|
|
({io_enq_bits_opcode,
|
|
io_enq_bits_param,
|
|
io_enq_bits_size,
|
|
io_enq_bits_source,
|
|
io_enq_bits_address,
|
|
io_enq_bits_mask,
|
|
io_enq_bits_data})
|
|
);
|
|
assign io_enq_ready = ~full;
|
|
assign io_deq_valid = ~empty;
|
|
assign io_deq_bits_opcode = _ram_ext_R0_data[114:112];
|
|
assign io_deq_bits_param = _ram_ext_R0_data[111:109];
|
|
assign io_deq_bits_size = _ram_ext_R0_data[108:106];
|
|
assign io_deq_bits_source = _ram_ext_R0_data[105:104];
|
|
assign io_deq_bits_address = _ram_ext_R0_data[103:72];
|
|
assign io_deq_bits_mask = _ram_ext_R0_data[71:64];
|
|
assign io_deq_bits_data = _ram_ext_R0_data[63:0];
|
|
endmodule
|
|
|