forked from Github_Repos/cvw
Removed CacheFetchLine and CacheWriteLine
This commit is contained in:
parent
fb5ddc476c
commit
de9ec7cc2e
@ -37,8 +37,6 @@ module busfsm #(parameter integer LOGWPL, parameter logic CACHE_ENABLED )
|
||||
|
||||
input logic IgnoreRequest,
|
||||
input logic [1:0] RW,
|
||||
input logic CacheFetchLine,
|
||||
input logic CacheWriteLine,
|
||||
input logic BusAck,
|
||||
input logic BusInit, // This might be better as LSUBusLock, or to send this using BusAck.
|
||||
input logic CPUBusy,
|
||||
@ -58,7 +56,6 @@ module busfsm #(parameter integer LOGWPL, parameter logic CACHE_ENABLED )
|
||||
|
||||
logic UnCachedBusRead;
|
||||
logic UnCachedBusWrite;
|
||||
logic CntReset;
|
||||
logic WordCountFlag;
|
||||
logic UnCachedAccess, UnCachedRW;
|
||||
logic [2:0] LocalBurstType;
|
||||
@ -90,8 +87,6 @@ module busfsm #(parameter integer LOGWPL, parameter logic CACHE_ENABLED )
|
||||
STATE_BUS_READY: if(IgnoreRequest) BusNextState = STATE_BUS_READY;
|
||||
else if(RW[0] & UnCachedAccess) BusNextState = STATE_BUS_UNCACHED_WRITE;
|
||||
else if(RW[1] & UnCachedAccess) BusNextState = STATE_BUS_UNCACHED_READ;
|
||||
else if(CacheFetchLine) BusNextState = STATE_BUS_FETCH;
|
||||
else if(CacheWriteLine) BusNextState = STATE_BUS_WRITE;
|
||||
else BusNextState = STATE_BUS_READY;
|
||||
STATE_BUS_UNCACHED_WRITE: if(BusAck) BusNextState = STATE_BUS_UNCACHED_WRITE_DONE;
|
||||
else BusNextState = STATE_BUS_UNCACHED_WRITE;
|
||||
@ -103,16 +98,6 @@ module busfsm #(parameter integer LOGWPL, parameter logic CACHE_ENABLED )
|
||||
else BusNextState = STATE_BUS_READY;
|
||||
STATE_BUS_CPU_BUSY: if(CPUBusy) BusNextState = STATE_BUS_CPU_BUSY;
|
||||
else BusNextState = STATE_BUS_READY;
|
||||
STATE_BUS_FETCH: if (WordCountFlag & BusAck) begin
|
||||
if (CacheFetchLine) BusNextState = STATE_BUS_FETCH;
|
||||
else if (CacheWriteLine) BusNextState = STATE_BUS_WRITE;
|
||||
else BusNextState = STATE_BUS_READY;
|
||||
end else BusNextState = STATE_BUS_FETCH;
|
||||
STATE_BUS_WRITE: if(WordCountFlag & BusAck) begin
|
||||
if (CacheFetchLine) BusNextState = STATE_BUS_FETCH;
|
||||
else if (CacheWriteLine) BusNextState = STATE_BUS_WRITE;
|
||||
else BusNextState = STATE_BUS_READY;
|
||||
end else BusNextState = STATE_BUS_WRITE;
|
||||
default: BusNextState = STATE_BUS_READY;
|
||||
endcase
|
||||
end
|
||||
@ -123,14 +108,10 @@ module busfsm #(parameter integer LOGWPL, parameter logic CACHE_ENABLED )
|
||||
assign BusTransComplete = (UnCachedRW) ? BusAck : WordCountFlag & BusAck;
|
||||
// Use SEQ if not doing first word, NONSEQ if doing the first read/write, and IDLE if finishing up.
|
||||
assign HTRANS = (BusRead | BusWrite) & (~BusTransComplete) ? AHB_NONSEQ : AHB_IDLE;
|
||||
// Reset if we aren't initiating a transaction or if we are finishing a transaction.
|
||||
assign CntReset = BusCurrState == STATE_BUS_READY & ~(CacheFetchLine | CacheWriteLine) | BusTransComplete;
|
||||
|
||||
assign BusStall = (BusCurrState == STATE_BUS_READY & ~IgnoreRequest & ((UnCachedAccess & (|RW)) | CacheFetchLine | CacheWriteLine)) |
|
||||
|
||||
assign BusStall = (BusCurrState == STATE_BUS_READY & ~IgnoreRequest & ((UnCachedAccess & (|RW)))) |
|
||||
(BusCurrState == STATE_BUS_UNCACHED_WRITE) |
|
||||
(BusCurrState == STATE_BUS_UNCACHED_READ) |
|
||||
(BusCurrState == STATE_BUS_FETCH) |
|
||||
(BusCurrState == STATE_BUS_WRITE);
|
||||
(BusCurrState == STATE_BUS_UNCACHED_READ);
|
||||
assign UnCachedBusWrite = (BusCurrState == STATE_BUS_READY & UnCachedAccess & RW[0] & ~IgnoreRequest) |
|
||||
(BusCurrState == STATE_BUS_UNCACHED_WRITE);
|
||||
assign BusWrite = UnCachedBusWrite | (BusCurrState == STATE_BUS_WRITE & ~WordCountFlag);
|
||||
@ -140,7 +121,7 @@ module busfsm #(parameter integer LOGWPL, parameter logic CACHE_ENABLED )
|
||||
|
||||
assign UnCachedBusRead = (BusCurrState == STATE_BUS_READY & UnCachedAccess & RW[1] & ~IgnoreRequest) |
|
||||
(BusCurrState == STATE_BUS_UNCACHED_READ);
|
||||
assign BusRead = UnCachedBusRead | (BusCurrState == STATE_BUS_FETCH & ~(WordCountFlag)) | (BusCurrState == STATE_BUS_READY & CacheFetchLine);
|
||||
assign BusRead = UnCachedBusRead | (BusCurrState == STATE_BUS_FETCH & ~(WordCountFlag));
|
||||
assign BufferCaptureEn = UnCachedBusRead | BusCurrState == STATE_BUS_FETCH;
|
||||
|
||||
// Makes bus only do uncached reads/writes when we actually do uncached reads/writes. Needed because Cacheable is 0 when flushing cache.
|
||||
|
@ -257,7 +257,7 @@ module lsu (
|
||||
assign LSUHWDATA = LSUWriteDataM[`XLEN-1:0];
|
||||
|
||||
busfsm #(LOGBWPL, `DCACHE) busfsm(
|
||||
.clk, .reset, .IgnoreRequest, .RW(LSURWM), .CacheFetchLine(DCacheFetchLine), .CacheWriteLine(DCacheWriteLine),
|
||||
.clk, .reset, .IgnoreRequest, .RW(LSURWM),
|
||||
.BusAck(LSUBusAck), .BusInit(LSUBusInit), .CPUBusy, .Cacheable(1'b0), .BusStall, .BusWrite(LSUBusWrite),
|
||||
.SelBusWord, .BusRead(LSUBusRead), .BufferCaptureEn,
|
||||
.HBURST(LSUHBURST), .HTRANS(LSUHTRANS), .BusTransComplete(LSUTransComplete),
|
||||
|
Loading…
Reference in New Issue
Block a user