Added flush controls to cachway.

This commit is contained in:
Ross Thompson 2021-09-16 16:56:48 -05:00
parent cae350abb7
commit d901f60a6d
4 changed files with 17 additions and 3 deletions

View File

@ -43,6 +43,8 @@ module cacheway #(parameter NUMLINES=512, parameter BLOCKLEN = 256, TAGLEN = 26,
input logic SelEvict,
input logic VictimWay,
input logic InvalidateAll,
input logic SelFlush,
input logic FlushWay,
output logic [BLOCKLEN-1:0] ReadDataBlockWayMasked,
output logic WayHit,
@ -80,7 +82,8 @@ module cacheway #(parameter NUMLINES=512, parameter BLOCKLEN = 256, TAGLEN = 26,
.WriteEnable(TagWriteEnable));
assign WayHit = Valid & (ReadTag == PAdr[`PA_BITS-1:OFFSETLEN+INDEXLEN]);
assign SelectedWay = SelEvict ? VictimWay : WayHit;
assign SelectedWay = SelFlush ? FlushWay :
SelEvict ? VictimWay : WayHit;
assign ReadDataBlockWayMasked = SelectedWay ? ReadDataBlockWay : '0; // first part of AO mux.
assign VictimDirtyWay = VictimWay & Dirty & Valid;

View File

@ -125,6 +125,9 @@ module dcache
logic [TAGLEN-1:0] VictimTagWay [NUMWAYS-1:0];
logic [TAGLEN-1:0] VictimTag;
logic [INDEXLEN-1:0] FlushAdr;
logic [NUMWAYS-1:0] FlushWay;
logic SelFlush;
logic AnyCPUReqM;
logic FetchCountFlag;
@ -137,10 +140,11 @@ module dcache
// Read Path CPU (IEU) side
mux3 #(INDEXLEN)
mux4 #(INDEXLEN)
AdrSelMux(.d0(MemAdrE[INDEXLEN+OFFSETLEN-1:OFFSETLEN]),
.d1(VAdr[INDEXLEN+OFFSETLEN-1:OFFSETLEN]),
.d2(MemPAdrM[INDEXLEN+OFFSETLEN-1:OFFSETLEN]),
.d3(FlushAdr),
.s(SelAdrM),
.y(RAdr));
@ -160,6 +164,8 @@ module dcache
.ClearDirty,
.SelEvict,
.VictimWay,
.FlushWay,
.SelFlush,
.ReadDataBlockWayMasked(ReadDataBlockWayMaskedM),
.WayHit,
.VictimDirtyWay,
@ -334,6 +340,7 @@ module dcache
.CntReset,
.SelUncached,
.SelEvict,
.SelFlush,
.LRUWriteEn);

View File

@ -77,7 +77,8 @@ module dcachefsm
output logic CntReset,
output logic SelUncached,
output logic SelEvict,
output logic LRUWriteEn
output logic LRUWriteEn,
output logic SelFlush
);
logic PreCntEn;
@ -168,6 +169,7 @@ module dcachefsm
DCacheMiss = 1'b0;
LRUWriteEn = 1'b0;
MemAfterIWalkDone = 1'b0;
SelFlush = 1'b0;
NextState = STATE_READY;
case (CurrState)

View File

@ -152,6 +152,8 @@ module icache
.ClearDirty(1'b0),
.SelEvict(1'b0),
.VictimWay,
.FlushWay(1'b0),
.SelFlush(1'b0),
.ReadDataBlockWayMasked,
.WayHit,
.VictimDirtyWay(),