Skip to content

Commit bf98ae5

Browse files
authored
id_queue: Add parameter to cut a critical path (#220)
With the parameter enabled, cut the path from the output pop and the input gnt with minimal impact to buffering.
1 parent 7773d97 commit bf98ae5

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/id_queue.sv

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ module id_queue #(
4949
parameter int ID_WIDTH = 0,
5050
parameter int CAPACITY = 0,
5151
parameter bit FULL_BW = 0,
52+
parameter bit CUT_OUP_POP_INP_GNT = 0,
5253
parameter type data_t = logic[31:0],
5354
// Dependent parameters, DO NOT OVERRIDE!
5455
localparam type id_t = logic[ID_WIDTH-1:0]
@@ -185,8 +186,9 @@ module id_queue #(
185186
// Data potentially freed by the output.
186187
assign oup_data_free_idx = head_tail_q[match_out_idx].head;
187188

188-
// Data can be accepted if the linked list pool is not full, or some data is simultaneously.
189-
assign inp_gnt_o = ~full || (oup_data_popped && FULL_BW);
189+
// Data can be accepted if the linked list pool is not full, or if some data is simultaneously
190+
// popped (given FULL_BW & !CUT_OUP_POP_INP_GNT).
191+
assign inp_gnt_o = ~full || (oup_data_popped && FULL_BW && ~CUT_OUP_POP_INP_GNT);
190192
always_comb begin
191193
match_in_id = '0;
192194
match_out_id = '0;

0 commit comments

Comments
 (0)