From fd8f6b112a8a7545d58d1c6974c1214b85252709 Mon Sep 17 00:00:00 2001 From: Julian Blake Kongslie Date: Sun, 29 May 2022 16:33:56 -0700 Subject: Single-cycle bypass when there is no contention on memory arbiter. --- hdl/mem_arbiter.sv | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'hdl') diff --git a/hdl/mem_arbiter.sv b/hdl/mem_arbiter.sv index e39317d..854867f 100644 --- a/hdl/mem_arbiter.sv +++ b/hdl/mem_arbiter.sv @@ -62,6 +62,17 @@ module mem_arbiter end end + if (hold_valid != 0 && !ram_valid) begin + for (int i = 0; i < `NUM_PDPS+1; ++i) begin + if (hold_valid == 1 << i) begin + ram_valid = 1; + ram_data = hold_data[i]; + hold_valid[i] = 0; + break; + end + end + end + if (hold_valid != 0 && (selector_stale || !ram_valid)) begin for (int i = 0; i < `NUM_PDPS+1; ++i) begin automatic int j = selector + i; -- cgit v1.2.3