diff options
| author | Julian Blake Kongslie | 2022-05-29 16:33:56 -0700 |
|---|---|---|
| committer | Julian Blake Kongslie | 2022-05-29 16:33:56 -0700 |
| commit | fd8f6b112a8a7545d58d1c6974c1214b85252709 (patch) | |
| tree | 68e8b052b07f53ef9fe0abe518947037a10e0d39 /hdl | |
| parent | Only run selector logic if we need a new selection next cycle. (diff) | |
| download | multipdp8-fd8f6b112a8a7545d58d1c6974c1214b85252709.tar.xz | |
Single-cycle bypass when there is no contention on memory arbiter.
Diffstat (limited to '')
| -rw-r--r-- | hdl/mem_arbiter.sv | 11 |
1 files changed, 11 insertions, 0 deletions
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 | |||
| 62 | end | 62 | end |
| 63 | end | 63 | end |
| 64 | 64 | ||
| 65 | if (hold_valid != 0 && !ram_valid) begin | ||
| 66 | for (int i = 0; i < `NUM_PDPS+1; ++i) begin | ||
| 67 | if (hold_valid == 1 << i) begin | ||
| 68 | ram_valid = 1; | ||
| 69 | ram_data = hold_data[i]; | ||
| 70 | hold_valid[i] = 0; | ||
| 71 | break; | ||
| 72 | end | ||
| 73 | end | ||
| 74 | end | ||
| 75 | |||
| 65 | if (hold_valid != 0 && (selector_stale || !ram_valid)) begin | 76 | if (hold_valid != 0 && (selector_stale || !ram_valid)) begin |
| 66 | for (int i = 0; i < `NUM_PDPS+1; ++i) begin | 77 | for (int i = 0; i < `NUM_PDPS+1; ++i) begin |
| 67 | automatic int j = selector + i; | 78 | automatic int j = selector + i; |
