From 28d7b77b927144d69a82d8eaec6dc65c8afc5626 Mon Sep 17 00:00:00 2001 From: Julian Blake Kongslie Date: Sun, 29 May 2022 16:33:24 -0700 Subject: Only run selector logic if we need a new selection next cycle. --- hdl/mem_arbiter.sv | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'hdl') diff --git a/hdl/mem_arbiter.sv b/hdl/mem_arbiter.sv index 1404a54..e39317d 100644 --- a/hdl/mem_arbiter.sv +++ b/hdl/mem_arbiter.sv @@ -32,12 +32,15 @@ module mem_arbiter hold_valid[i] = 0; selector = 0; end else begin + automatic bit selector_stale = 0; + if (ram_ready) ram_valid = 0; if (!ram_valid && hold_valid[selector]) begin ram_valid = 1; ram_data = hold_data[selector]; hold_valid[selector] = 0; + selector_stale = 1; end if (hold_valid == 0) begin @@ -59,7 +62,7 @@ module mem_arbiter end end - if (hold_valid != 0) begin + if (hold_valid != 0 && (selector_stale || !ram_valid)) begin for (int i = 0; i < `NUM_PDPS+1; ++i) begin automatic int j = selector + i; if (j > `NUM_PDPS) -- cgit v1.2.3