diff options
Diffstat (limited to '')
| -rw-r--r-- | PLAN | 1 | ||||
| -rw-r--r-- | hdl/mem_arbiter.sv | 11 |
2 files changed, 11 insertions, 1 deletions
| @@ -1,4 +1,3 @@ | |||
| 1 | 0. figure out a way to add a single-cycle bypass to the arbiter | ||
| 2 | 1. add pdp-8 instruction cache | 1 | 1. add pdp-8 instruction cache |
| 3 | 2. add pdp-8 data cache | 2 | 2. add pdp-8 data cache |
| 4 | 3. add global shared cache | 3 | 3. add global shared cache |
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; |
