Skip to content

Commit

Permalink
rob: Fix missing backpressure when id counters are full
Browse files Browse the repository at this point in the history
  • Loading branch information
fischeti committed Nov 13, 2023
1 parent c3ba2c4 commit cee4617
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/floo_rob_wrapper.sv
Original file line number Diff line number Diff line change
Expand Up @@ -130,13 +130,14 @@ module floo_rob_wrapper
localparam int unsigned CounterWidth = $clog2(MaxRoTxnsPerId);

logic push, pop;
logic counter_full;
logic in_flight;
dest_t prev_dest;

// A new transaction can be pushed if it is the first one
// i.e. `in_flight` is not set or if the previous transaction
// has the same destination
assign push = ax_valid_i && (!in_flight || ax_dest_i == prev_dest);
assign push = ax_valid_i && (!in_flight || ax_dest_i == prev_dest) && !counter_full;
// Whenever a response arrives we can pop the transaction
assign pop = rsp_valid_i && rsp_last_i;

Expand All @@ -161,7 +162,7 @@ module floo_rob_wrapper
.lookup_axi_id_i ( ax_id_i ),
.lookup_mst_select_o ( prev_dest ),
.lookup_mst_select_occupied_o ( in_flight ),
.full_o ( /* TODO */ ),
.full_o ( counter_full ),
.push_axi_id_i ( ax_id_i ),
.push_mst_select_i ( ax_dest_i ),
.push_i ( push && ax_ready_i ), // Only push on handshake
Expand Down

0 comments on commit cee4617

Please sign in to comment.