From 8aad95366d80402bd499bf908bb8235b66451c2f Mon Sep 17 00:00:00 2001 From: Ross Thompson Date: Fri, 29 Oct 2021 12:46:02 -0500 Subject: [PATCH] Fixed the 4 way set associative pseudo LRU replacement policy. --- wally-pipelined/src/cache/cachereplacementpolicy.sv | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/wally-pipelined/src/cache/cachereplacementpolicy.sv b/wally-pipelined/src/cache/cachereplacementpolicy.sv index 47e521a87..a0b774745 100644 --- a/wally-pipelined/src/cache/cachereplacementpolicy.sv +++ b/wally-pipelined/src/cache/cachereplacementpolicy.sv @@ -59,7 +59,7 @@ module cachereplacementpolicy ReplacementBits[index] <= '0; end else begin RAdrD <= RAdr; - MemPAdrMD <= MemPAdrMD; + MemPAdrMD <= MemPAdrM; LRUWriteEnD <= LRUWriteEn; NewReplacementD <= NewReplacement; if (LRUWriteEnD) begin @@ -91,6 +91,14 @@ module cachereplacementpolicy //assign VictimWay[1] = BlockReplacementBits[2]; // 1 hot encoding + //| WayHit | LRU 2 | LRU 1 | LRU 0 | + //|--------+-------+-------+-------| + //| 0000 | - | - | - | + //| 0001 | 1 | - | 1 | + //| 0010 | 1 | - | 0 | + //| 0100 | 0 | 1 | - | + //| 1000 | 0 | 0 | - | + assign VictimWay[0] = ~BlockReplacementBits[2] & ~BlockReplacementBits[0]; assign VictimWay[1] = ~BlockReplacementBits[2] & BlockReplacementBits[0]; assign VictimWay[2] = BlockReplacementBits[2] & ~BlockReplacementBits[1];