forked from Github_Repos/cvw
More cache cleanup.
This commit is contained in:
parent
754bd41fde
commit
7ff715f44f
87
pipelined/src/cache/cache.sv
vendored
87
pipelined/src/cache/cache.sv
vendored
@ -60,52 +60,47 @@ module cache #(parameter LINELEN, NUMLINES, NUMWAYS, DCACHE = 1) (
|
|||||||
output logic [LINELEN-1:0] ReadDataLine);
|
output logic [LINELEN-1:0] ReadDataLine);
|
||||||
|
|
||||||
// Cache parameters
|
// Cache parameters
|
||||||
localparam LINEBYTELEN = LINELEN/8;
|
localparam LINEBYTELEN = LINELEN/8;
|
||||||
localparam OFFSETLEN = $clog2(LINEBYTELEN);
|
localparam OFFSETLEN = $clog2(LINEBYTELEN);
|
||||||
localparam SETLEN = $clog2(NUMLINES);
|
localparam SETLEN = $clog2(NUMLINES);
|
||||||
localparam SETTOP = SETLEN+OFFSETLEN;
|
localparam SETTOP = SETLEN+OFFSETLEN;
|
||||||
localparam TAGLEN = `PA_BITS - SETTOP;
|
localparam TAGLEN = `PA_BITS - SETTOP;
|
||||||
localparam WORDSPERLINE = LINELEN/`XLEN;
|
localparam WORDSPERLINE = LINELEN/`XLEN;
|
||||||
localparam LOGWPL = $clog2(WORDSPERLINE);
|
localparam FlushAdrThreshold = NUMLINES - 1;
|
||||||
localparam LOGXLENBYTES = $clog2(`XLEN/8);
|
|
||||||
localparam FlushAdrThreshold = NUMLINES - 1;
|
|
||||||
|
|
||||||
logic [1:0] SelAdr;
|
logic [1:0] SelAdr;
|
||||||
logic [SETLEN-1:0] RAdr;
|
logic [SETLEN-1:0] RAdr;
|
||||||
logic [LINELEN-1:0] SRAMWriteData;
|
logic [LINELEN-1:0] SRAMWriteData;
|
||||||
logic SetValid, ClearValid;
|
logic SetValid, ClearValid;
|
||||||
logic SetDirty, ClearDirty;
|
logic SetDirty, ClearDirty;
|
||||||
logic [LINELEN-1:0] ReadDataLineWay [NUMWAYS-1:0];
|
logic [LINELEN-1:0] ReadDataLineWay [NUMWAYS-1:0];
|
||||||
logic [NUMWAYS-1:0] WayHit;
|
logic [NUMWAYS-1:0] WayHit;
|
||||||
logic CacheHit;
|
logic CacheHit;
|
||||||
logic FSMWordWriteEn;
|
logic FSMWordWriteEn;
|
||||||
logic FSMLineWriteEn;
|
logic FSMLineWriteEn;
|
||||||
logic [NUMWAYS-1:0] SRAMLineWayWriteEnable;
|
logic [NUMWAYS-1:0] VictimWay;
|
||||||
logic [NUMWAYS-1:0] VictimWay;
|
logic [NUMWAYS-1:0] VictimDirtyWay;
|
||||||
logic [NUMWAYS-1:0] VictimDirtyWay;
|
logic VictimDirty;
|
||||||
logic VictimDirty;
|
logic [TAGLEN-1:0] VictimTagWay [NUMWAYS-1:0];
|
||||||
logic [2**LOGWPL-1:0] MemPAdrDecoded;
|
logic [TAGLEN-1:0] VictimTag;
|
||||||
logic [TAGLEN-1:0] VictimTagWay [NUMWAYS-1:0];
|
logic [SETLEN-1:0] FlushAdr;
|
||||||
logic [TAGLEN-1:0] VictimTag;
|
logic [SETLEN-1:0] FlushAdrP1;
|
||||||
logic [SETLEN-1:0] FlushAdr;
|
logic FlushAdrCntEn;
|
||||||
logic [SETLEN-1:0] FlushAdrP1;
|
logic FlushAdrCntRst;
|
||||||
logic FlushAdrCntEn;
|
logic FlushAdrFlag;
|
||||||
logic FlushAdrCntRst;
|
logic FlushWayFlag;
|
||||||
logic FlushAdrFlag;
|
logic [NUMWAYS-1:0] FlushWay;
|
||||||
logic FlushWayFlag;
|
logic [NUMWAYS-1:0] NextFlushWay;
|
||||||
logic [NUMWAYS-1:0] FlushWay;
|
logic FlushWayCntEn;
|
||||||
logic [NUMWAYS-1:0] NextFlushWay;
|
logic FlushWayCntRst;
|
||||||
logic FlushWayCntEn;
|
logic SelEvict;
|
||||||
logic FlushWayCntRst;
|
logic LRUWriteEn;
|
||||||
logic SelEvict;
|
logic SelFlush;
|
||||||
logic LRUWriteEn;
|
logic ResetOrFlushAdr, ResetOrFlushWay;
|
||||||
logic SelFlush;
|
logic [NUMWAYS-1:0] WayHitSaved, WayHitRaw;
|
||||||
logic ResetOrFlushAdr, ResetOrFlushWay;
|
logic [NUMWAYS-1:0] SelectedWay;
|
||||||
logic [NUMWAYS-1:0] WayHitSaved, WayHitRaw;
|
logic [NUMWAYS-1:0] SetValidWay, ClearValidWay, SetDirtyWay, ClearDirtyWay;
|
||||||
logic [LINELEN-1:0] ReadDataLineRaw, ReadDataLineSaved;
|
logic [NUMWAYS-1:0] WriteWordWayEn, WriteLineWayEn;
|
||||||
logic [NUMWAYS-1:0] SelectedWay;
|
|
||||||
logic [NUMWAYS-1:0] SetValidWay, ClearValidWay, SetDirtyWay, ClearDirtyWay;
|
|
||||||
logic [NUMWAYS-1:0] WriteWordWayEn, WriteLineWayEn;
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Read Path
|
// Read Path
|
||||||
@ -184,7 +179,7 @@ module cache #(parameter LINELEN, NUMLINES, NUMWAYS, DCACHE = 1) (
|
|||||||
/////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// *** change to structural
|
// *** change to structural
|
||||||
assign SelectedWay = SelFlush ? FlushWay : (FSMLineWriteEn ? VictimWay : WayHit);
|
mux3 #(NUMWAYS) selectwaymux(WayHit, VictimWay, FlushWay, {SelFlush, FSMLineWriteEn}, SelectedWay);
|
||||||
assign SetValidWay = SetValid ? SelectedWay : '0;
|
assign SetValidWay = SetValid ? SelectedWay : '0;
|
||||||
assign ClearValidWay = ClearValid ? SelectedWay : '0;
|
assign ClearValidWay = ClearValid ? SelectedWay : '0;
|
||||||
assign SetDirtyWay = SetDirty ? SelectedWay : '0;
|
assign SetDirtyWay = SetDirty ? SelectedWay : '0;
|
||||||
|
Loading…
Reference in New Issue
Block a user