58 lines
2.0 KiB
Systemverilog
58 lines
2.0 KiB
Systemverilog
// Generated by CIRCT firtool-1.151.0
|
|
module Queue1_TLBundleD_a29d32s7k1z2u(
|
|
input clock,
|
|
reset,
|
|
output io_enq_ready,
|
|
input io_enq_valid,
|
|
input [2:0] io_enq_bits_opcode,
|
|
input [1:0] io_enq_bits_size,
|
|
input [6:0] io_enq_bits_source,
|
|
input io_enq_bits_denied,
|
|
input [31:0] io_enq_bits_data,
|
|
input io_enq_bits_corrupt,
|
|
io_deq_ready,
|
|
output io_deq_valid,
|
|
output [2:0] io_deq_bits_opcode,
|
|
output [1:0] io_deq_bits_param,
|
|
io_deq_bits_size,
|
|
output [6:0] io_deq_bits_source,
|
|
output io_deq_bits_sink,
|
|
io_deq_bits_denied,
|
|
output [31:0] io_deq_bits_data,
|
|
output io_deq_bits_corrupt
|
|
);
|
|
|
|
reg [48:0] ram;
|
|
reg maybe_full;
|
|
wire io_deq_valid_0 = io_enq_valid | maybe_full;
|
|
always @(posedge clock) begin
|
|
automatic logic do_enq;
|
|
do_enq = ~(~maybe_full & io_deq_ready) & ~maybe_full & io_enq_valid;
|
|
if (reset)
|
|
maybe_full <= 1'h0;
|
|
else if (do_enq != (maybe_full & io_deq_ready & io_deq_valid_0))
|
|
maybe_full <= do_enq;
|
|
if (do_enq)
|
|
ram <=
|
|
{io_enq_bits_opcode,
|
|
2'h0,
|
|
io_enq_bits_size,
|
|
io_enq_bits_source,
|
|
1'h0,
|
|
io_enq_bits_denied,
|
|
io_enq_bits_data,
|
|
io_enq_bits_corrupt};
|
|
end // always @(posedge)
|
|
assign io_enq_ready = ~maybe_full;
|
|
assign io_deq_valid = io_deq_valid_0;
|
|
assign io_deq_bits_opcode = maybe_full ? ram[48:46] : io_enq_bits_opcode;
|
|
assign io_deq_bits_param = maybe_full ? ram[45:44] : 2'h0;
|
|
assign io_deq_bits_size = maybe_full ? ram[43:42] : io_enq_bits_size;
|
|
assign io_deq_bits_source = maybe_full ? ram[41:35] : io_enq_bits_source;
|
|
assign io_deq_bits_sink = maybe_full & ram[34];
|
|
assign io_deq_bits_denied = maybe_full ? ram[33] : io_enq_bits_denied;
|
|
assign io_deq_bits_data = maybe_full ? ram[32:1] : io_enq_bits_data;
|
|
assign io_deq_bits_corrupt = maybe_full ? ram[0] : io_enq_bits_corrupt;
|
|
endmodule
|
|
|