Skip to content

Commit

Permalink
hw(simple_rob): Add assertions that floo_simple_rob which does not …
Browse files Browse the repository at this point in the history
…support bursts correctly
  • Loading branch information
fischeti committed Sep 10, 2024
1 parent 455548c commit 97d8924
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions hw/floo_simple_rob.sv
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
`include "common_cells/assertions.svh"

/// A simplistic low-complexity Reorder Buffer, similar to a FIFO
/// WARNING: The implementation has a known bug for burst support,
/// and is therefore only advised to be used for B responses.
module floo_simple_rob #(
/// Maximum number of transactions in flight per ID which *require* reordering
/// Not used in the simple RoB
Expand Down Expand Up @@ -150,6 +152,11 @@ module floo_simple_rob #(
rob_addr = rsp_rob_idx_i + rsp_burst_cnt_q;
rob_meta_d[rob_addr] = rob_meta;
rob_valid_d[rob_addr] = 1'b1;
// WARNING: This implementation does not support interleaved
// bursts with different IDs. Each burst would need its own
// `rsp_burst_cnt` counter which is currently not implemented.
// The way to implement this would be to increment `rsp_rob_idx_i`
// at the endpoint which issues the responses.
rsp_burst_cnt_d = (rsp_last_i)? '0 : rsp_burst_cnt_q + 1'b1;
end

Expand Down Expand Up @@ -209,4 +216,7 @@ module floo_simple_rob #(
`FF(rob_state_q, rob_state_d, RoBWrite)
`FF(rsp_out_valid_q, rsp_out_valid_d, '0)

// This module currently does not handle interleaved burst responses correctly
`ASSERT(NoBurstSupport, rsp_last_i == 1'b1)

endmodule

0 comments on commit 97d8924

Please sign in to comment.