forked from Github_Repos/cvw
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.
This commit is contained in:
parent
247af17b6b
commit
d3a988c96c
30
src/cache/cache.sv
vendored
30
src/cache/cache.sv
vendored
@ -188,19 +188,25 @@ module cache #(parameter LINELEN, NUMLINES, NUMWAYS, LOGBWPL, WORDLEN, MUXINTE
|
|||||||
// Flush logic
|
// Flush logic
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// Flush address (line number)
|
if (!READ_ONLY_CACHE) begin:flushlogic
|
||||||
assign ResetOrFlushCntRst = reset | FlushCntRst;
|
// Flush address (line number)
|
||||||
flopenr #(SETLEN) FlushAdrReg(clk, ResetOrFlushCntRst, FlushAdrCntEn, FlushAdrP1, NextFlushAdr);
|
assign ResetOrFlushCntRst = reset | FlushCntRst;
|
||||||
mux2 #(SETLEN) FlushAdrMux(NextFlushAdr, FlushAdrP1, FlushAdrCntEn, FlushAdr);
|
flopenr #(SETLEN) FlushAdrReg(clk, ResetOrFlushCntRst, FlushAdrCntEn, FlushAdrP1, NextFlushAdr);
|
||||||
assign FlushAdrP1 = NextFlushAdr + 1'b1;
|
mux2 #(SETLEN) FlushAdrMux(NextFlushAdr, FlushAdrP1, FlushAdrCntEn, FlushAdr);
|
||||||
assign FlushAdrFlag = (NextFlushAdr == FLUSHADRTHRESHOLD[SETLEN-1:0]);
|
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];
|
|
||||||
|
|
||||||
|
// 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
|
// Cache FSM
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
Loading…
Reference in New Issue
Block a user