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 /////////////////////////////////////////////////////////////////////////////////////////////