mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Added flush controls to cachway.
This commit is contained in:
parent
cae350abb7
commit
d901f60a6d
5
wally-pipelined/src/cache/cacheway.sv
vendored
5
wally-pipelined/src/cache/cacheway.sv
vendored
@ -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;
|
||||
|
9
wally-pipelined/src/cache/dcache.sv
vendored
9
wally-pipelined/src/cache/dcache.sv
vendored
@ -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);
|
||||
|
||||
|
||||
|
4
wally-pipelined/src/cache/dcachefsm.sv
vendored
4
wally-pipelined/src/cache/dcachefsm.sv
vendored
@ -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)
|
||||
|
2
wally-pipelined/src/cache/icache.sv
vendored
2
wally-pipelined/src/cache/icache.sv
vendored
@ -152,6 +152,8 @@ module icache
|
||||
.ClearDirty(1'b0),
|
||||
.SelEvict(1'b0),
|
||||
.VictimWay,
|
||||
.FlushWay(1'b0),
|
||||
.SelFlush(1'b0),
|
||||
.ReadDataBlockWayMasked,
|
||||
.WayHit,
|
||||
.VictimDirtyWay(),
|
||||
|
Loading…
Reference in New Issue
Block a user