More cache cleanup.

This commit is contained in:
Ross Thompson 2022-02-09 19:29:15 -06:00
parent 754bd41fde
commit 7ff715f44f

View File

@ -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;