From d3a988c96cce1d2548f8ce40e1ff7d8c59f3cf30 Mon Sep 17 00:00:00 2001 From: Alec Vercruysse Date: Wed, 5 Apr 2023 11:45:26 -0700 Subject: [PATCH] make Cache Flush Logic dependent on !READ_ONLY_CACHE read-only caches do not have flush logic since they do not have to deal with dirty bits. --- src/cache/cache.sv | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/cache/cache.sv b/src/cache/cache.sv index 63d882223..c01c714b1 100644 --- a/src/cache/cache.sv +++ b/src/cache/cache.sv @@ -188,19 +188,25 @@ module cache #(parameter LINELEN, NUMLINES, NUMWAYS, LOGBWPL, WORDLEN, MUXINTE // Flush logic ///////////////////////////////////////////////////////////////////////////////////////////// - // Flush address (line number) - assign ResetOrFlushCntRst = reset | FlushCntRst; - flopenr #(SETLEN) FlushAdrReg(clk, ResetOrFlushCntRst, FlushAdrCntEn, FlushAdrP1, NextFlushAdr); - mux2 #(SETLEN) FlushAdrMux(NextFlushAdr, FlushAdrP1, FlushAdrCntEn, FlushAdr); - assign FlushAdrP1 = NextFlushAdr + 1'b1; - assign FlushAdrFlag = (NextFlushAdr == FLUSHADRTHRESHOLD[SETLEN-1:0]); - - // Flush way - flopenl #(NUMWAYS) FlushWayReg(clk, FlushWayCntEn, ResetOrFlushCntRst, {{NUMWAYS-1{1'b0}}, 1'b1}, NextFlushWay, FlushWay); - if(NUMWAYS > 1) assign NextFlushWay = {FlushWay[NUMWAYS-2:0], FlushWay[NUMWAYS-1]}; - else assign NextFlushWay = FlushWay[NUMWAYS-1]; - assign FlushWayFlag = FlushWay[NUMWAYS-1]; + if (!READ_ONLY_CACHE) begin:flushlogic + // Flush address (line number) + assign ResetOrFlushCntRst = reset | FlushCntRst; + flopenr #(SETLEN) FlushAdrReg(clk, ResetOrFlushCntRst, FlushAdrCntEn, FlushAdrP1, NextFlushAdr); + mux2 #(SETLEN) FlushAdrMux(NextFlushAdr, FlushAdrP1, FlushAdrCntEn, FlushAdr); + assign FlushAdrP1 = NextFlushAdr + 1'b1; + assign FlushAdrFlag = (NextFlushAdr == FLUSHADRTHRESHOLD[SETLEN-1:0]); + // Flush way + flopenl #(NUMWAYS) FlushWayReg(clk, FlushWayCntEn, ResetOrFlushCntRst, {{NUMWAYS-1{1'b0}}, 1'b1}, NextFlushWay, FlushWay); + if(NUMWAYS > 1) assign NextFlushWay = {FlushWay[NUMWAYS-2:0], FlushWay[NUMWAYS-1]}; + else assign NextFlushWay = FlushWay[NUMWAYS-1]; + assign FlushWayFlag = FlushWay[NUMWAYS-1]; + end // block: flushlogic + else begin:flushlogic + assign FlushWayFlag = 0; + assign FlushAdrFlag = 0; + end + ///////////////////////////////////////////////////////////////////////////////////////////// // Cache FSM /////////////////////////////////////////////////////////////////////////////////////////////