forked from Github_Repos/cvw
Corrected the LSU's fsm for stalling CPU. Removed state from hptw fsm.
This commit is contained in:
parent
a445bedcd2
commit
f4d778c2f6
@ -222,8 +222,8 @@ module lsu
|
||||
|
||||
// signal to CPU it needs to wait on HPTW.
|
||||
assign InterlockStall = (CurrState == STATE_T0_READY & (DTLBMissM | ITLBMissF)) |
|
||||
(CurrState == STATE_T3_DTLB_MISS) | (CurrState == STATE_T4_ITLB_MISS) |
|
||||
(CurrState == STATE_T5_ITLB_MISS) | (CurrState == STATE_T7_DITLB_MISS);
|
||||
(CurrState == STATE_T3_DTLB_MISS & ~WalkerPageFaultM) | (CurrState == STATE_T4_ITLB_MISS & ~WalkerInstrPageFaultF) |
|
||||
(CurrState == STATE_T5_ITLB_MISS & ~WalkerInstrPageFaultF) | (CurrState == STATE_T7_DITLB_MISS & ~WalkerPageFaultM);
|
||||
|
||||
// When replaying CPU memory request after PTW select the IEUAdrM for correct address.
|
||||
assign SelReplayCPURequest = NextState == STATE_T0_READY;
|
||||
|
@ -199,7 +199,7 @@ module hptw
|
||||
// LEVEL0: if (ValidLeafPTE) NextWalkerState = LEAF;
|
||||
// else NextWalkerState = FAULT;
|
||||
LEAF: if (DTLBWalk) NextWalkerState = IDLE; // updates TLB
|
||||
else NextWalkerState = LEAF_DELAY;
|
||||
else NextWalkerState = IDLE;
|
||||
LEAF_DELAY: NextWalkerState = IDLE; // give time to allow address translation
|
||||
FAULT: if (ITLBMissF & AnyCPUReqM & ~MemAfterIWalkDone) NextWalkerState = FAULT;
|
||||
else NextWalkerState = IDLE;
|
||||
|
Loading…
Reference in New Issue
Block a user