Moved all bus logic outside the dcache. Still needs cleanup.

This commit is contained in:
Ross Thompson 2021-12-28 11:18:47 -06:00
parent 44b63fc0ba
commit d6960da90e

View File

@ -470,6 +470,9 @@ module lsu
case(BusCurrState) case(BusCurrState)
STATE_BUS_READY: begin STATE_BUS_READY: begin
if(IgnoreRequest) begin
BusNextState = STATE_BUS_READY;
end else
// uncache write // uncache write
if(MemRWMtoDCache[0] & ~CacheableMtoDCache) begin if(MemRWMtoDCache[0] & ~CacheableMtoDCache) begin
BusNextState = STATE_BUS_UNCACHED_WRITE; BusNextState = STATE_BUS_UNCACHED_WRITE;
@ -537,39 +540,25 @@ module lsu
CommittedMfromBus = 1'b1; CommittedMfromBus = 1'b1;
if (FetchCountFlag & DCfromAHBAck) begin if (FetchCountFlag & DCfromAHBAck) begin
BusNextState = STATE_BUS_FETCH_DONE; BusNextState = STATE_BUS_READY;
BUSACK = 1'b1;
end else begin end else begin
BusNextState = STATE_BUS_FETCH_WDV; BusNextState = STATE_BUS_FETCH_WDV;
end end
end end
STATE_BUS_FETCH_DONE: begin
BusStall = 1'b1;
CntReset = 1'b1;
CommittedMfromBus = 1'b1;
BusNextState = STATE_BUS_READY;
BUSACK = 1'b1;
end
STATE_BUS_EVICT_DIRTY: begin STATE_BUS_EVICT_DIRTY: begin
BusStall = 1'b1; BusStall = 1'b1;
PreCntEn = 1'b1; PreCntEn = 1'b1;
DCtoAHBWriteM = 1'b1; DCtoAHBWriteM = 1'b1;
CommittedMfromBus = 1'b1; CommittedMfromBus = 1'b1;
if(FetchCountFlag & DCfromAHBAck) begin if(FetchCountFlag & DCfromAHBAck) begin
BusNextState = STATE_BUS_WRITE_CACHE_BLOCK; BusNextState = STATE_BUS_READY;
BUSACK = 1'b1;
end else begin end else begin
BusNextState = STATE_BUS_EVICT_DIRTY; BusNextState = STATE_BUS_EVICT_DIRTY;
end end
end end
STATE_BUS_WRITE_CACHE_BLOCK: begin
BusStall = 1'b1;
CntReset = 1'b1;
CommittedMfromBus = 1'b1;
BusNextState = STATE_BUS_READY;
BUSACK = 1'b1;
end
endcase endcase
end end