mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-03 10:15:19 +00:00
Cleanup.
This commit is contained in:
parent
3a0af5d9e9
commit
382d5fab0f
@ -265,7 +265,6 @@ module ifu (
|
|||||||
// Mux only required on instruction class miss prediction.
|
// Mux only required on instruction class miss prediction.
|
||||||
mux2 #(`XLEN) pcmuxBPWrongInvalidateFlush(.d0(PCE), .d1(PCF),
|
mux2 #(`XLEN) pcmuxBPWrongInvalidateFlush(.d0(PCE), .d1(PCF),
|
||||||
.s(BPPredWrongM), .y(PCBPWrongInvalidate));
|
.s(BPPredWrongM), .y(PCBPWrongInvalidate));
|
||||||
// The true correct target is IEUAdrE if PCSrcE is 1 else it is the fall through PCLinkE.
|
|
||||||
mux2 #(`XLEN) pccorrectemux(.d0(PCLinkE), .d1(IEUAdrE), .s(PCSrcE), .y(PCCorrectE));
|
mux2 #(`XLEN) pccorrectemux(.d0(PCLinkE), .d1(IEUAdrE), .s(PCSrcE), .y(PCCorrectE));
|
||||||
|
|
||||||
end else begin : bpred
|
end else begin : bpred
|
||||||
|
@ -174,7 +174,8 @@ module lsu (
|
|||||||
logic [`XLEN-1:0] FinalAMOWriteDataM, FinalWriteDataM;
|
logic [`XLEN-1:0] FinalAMOWriteDataM, FinalWriteDataM;
|
||||||
logic [`XLEN-1:0] ReadDataWordM;
|
logic [`XLEN-1:0] ReadDataWordM;
|
||||||
logic [`XLEN-1:0] ReadDataWordMuxM;
|
logic [`XLEN-1:0] ReadDataWordMuxM;
|
||||||
logic SelUncachedAdr;
|
logic IgnoreRequest;
|
||||||
|
assign IgnoreRequest = IgnoreRequestTLB | IgnoreRequestTrapM;
|
||||||
|
|
||||||
if (`DMEM == `MEM_TIM) begin : dtim
|
if (`DMEM == `MEM_TIM) begin : dtim
|
||||||
dtim dtim(.clk, .reset, .CPUBusy, .LSURWM, .IEUAdrM, .IEUAdrE, .TrapM, .FinalWriteDataM,
|
dtim dtim(.clk, .reset, .CPUBusy, .LSURWM, .IEUAdrM, .IEUAdrE, .TrapM, .FinalWriteDataM,
|
||||||
@ -203,25 +204,25 @@ module lsu (
|
|||||||
.WordCount, .LSUBusWriteCrit,
|
.WordCount, .LSUBusWriteCrit,
|
||||||
.LSUFunct3M, .LSUBusAdr, .DCacheBusAdr, .DCacheFetchLine,
|
.LSUFunct3M, .LSUBusAdr, .DCacheBusAdr, .DCacheFetchLine,
|
||||||
.DCacheWriteLine, .DCacheBusAck, .DCacheMemWriteData, .LSUPAdrM, .FinalAMOWriteDataM,
|
.DCacheWriteLine, .DCacheBusAck, .DCacheMemWriteData, .LSUPAdrM, .FinalAMOWriteDataM,
|
||||||
.ReadDataWordM, .ReadDataWordMuxM, .IgnoreRequest(IgnoreRequestTLB | IgnoreRequestTrapM), .LSURWM, .CPUBusy, .CacheableM,
|
.ReadDataWordM, .ReadDataWordMuxM, .IgnoreRequest, .LSURWM, .CPUBusy, .CacheableM,
|
||||||
.BusStall, .BusCommittedM);
|
.BusStall, .BusCommittedM);
|
||||||
|
|
||||||
assign WordOffsetAddr = LSUBusWriteCrit ? ({{`PA_BITS-LOGWPL{1'b0}}, WordCount} << $clog2(`XLEN/8)) : LSUPAdrM;
|
assign WordOffsetAddr = LSUBusWriteCrit ? ({{`PA_BITS-LOGWPL{1'b0}}, WordCount} << $clog2(`XLEN/8)) : LSUPAdrM;
|
||||||
|
|
||||||
|
|
||||||
if(`DMEM == `MEM_CACHE) begin : dcache
|
if(`DMEM == `MEM_CACHE) begin : dcache
|
||||||
|
logic [1:0] RW, Atomic;
|
||||||
|
assign RW = CacheableM ? LSURWM : 2'b00; // AND gate
|
||||||
|
assign Atomic = CacheableM ? LSUAtomicM : 2'b00; // AND gate
|
||||||
cache #(.LINELEN(`DCACHE_LINELENINBITS), .NUMLINES(`DCACHE_WAYSIZEINBYTES*8/LINELEN),
|
cache #(.LINELEN(`DCACHE_LINELENINBITS), .NUMLINES(`DCACHE_WAYSIZEINBYTES*8/LINELEN),
|
||||||
.NUMWAYS(`DCACHE_NUMWAYS), .DCACHE(1)) dcache(
|
.NUMWAYS(`DCACHE_NUMWAYS), .DCACHE(1)) dcache(
|
||||||
.clk, .reset, .CPUBusy,
|
.clk, .reset, .CPUBusy, .save, .restore, .RW, .Atomic,
|
||||||
.RW(CacheableM ? LSURWM : 2'b00), .FlushCache(FlushDCacheM),
|
.FlushCache(FlushDCacheM), .NextAdr(LSUAdrE), .PAdr(LSUPAdrM),
|
||||||
.Atomic(CacheableM ? LSUAtomicM : 2'b00), .NextAdr(LSUAdrE), .PAdr(LSUPAdrM),
|
|
||||||
.save, .restore,
|
|
||||||
.FinalWriteData(FinalWriteDataM),
|
.FinalWriteData(FinalWriteDataM),
|
||||||
.CacheStall(DCacheStallM), .CacheMiss(DCacheMiss), .CacheAccess(DCacheAccess),
|
.CacheStall(DCacheStallM), .CacheMiss(DCacheMiss), .CacheAccess(DCacheAccess),
|
||||||
.IgnoreRequestTLB, .IgnoreRequestTrapM, .CacheCommitted(DCacheCommittedM), .CacheBusAdr(DCacheBusAdr),
|
.IgnoreRequestTLB, .IgnoreRequestTrapM, .CacheCommitted(DCacheCommittedM),
|
||||||
.ReadDataLine(ReadDataLineM), .CacheMemWriteData(DCacheMemWriteData),
|
.CacheBusAdr(DCacheBusAdr), .ReadDataLine(ReadDataLineM),
|
||||||
.CacheFetchLine(DCacheFetchLine), .CacheWriteLine(DCacheWriteLine),
|
.CacheMemWriteData(DCacheMemWriteData), .CacheFetchLine(DCacheFetchLine),
|
||||||
.CacheBusAck(DCacheBusAck), .InvalidateCacheM(1'b0));
|
.CacheWriteLine(DCacheWriteLine), .CacheBusAck(DCacheBusAck), .InvalidateCacheM(1'b0));
|
||||||
|
|
||||||
subcachelineread #(LINELEN, `XLEN, `XLEN) subcachelineread(
|
subcachelineread #(LINELEN, `XLEN, `XLEN) subcachelineread(
|
||||||
.clk, .reset, .PAdr(WordOffsetAddr), .save, .restore,
|
.clk, .reset, .PAdr(WordOffsetAddr), .save, .restore,
|
||||||
@ -249,7 +250,7 @@ module lsu (
|
|||||||
|
|
||||||
if (`A_SUPPORTED) begin:atomic
|
if (`A_SUPPORTED) begin:atomic
|
||||||
atomic atomic(.clk, .reset, .FlushW, .CPUBusy, .ReadDataM, .WriteDataM, .LSUPAdrM,
|
atomic atomic(.clk, .reset, .FlushW, .CPUBusy, .ReadDataM, .WriteDataM, .LSUPAdrM,
|
||||||
.LSUFunct7M, .LSUFunct3M, .LSUAtomicM, .PreLSURWM, .IgnoreRequest(IgnoreRequestTLB | IgnoreRequestTrapM),
|
.LSUFunct7M, .LSUFunct3M, .LSUAtomicM, .PreLSURWM, .IgnoreRequest,
|
||||||
.DTLBMissM, .FinalAMOWriteDataM, .SquashSCW, .LSURWM);
|
.DTLBMissM, .FinalAMOWriteDataM, .SquashSCW, .LSURWM);
|
||||||
end else begin:lrsc
|
end else begin:lrsc
|
||||||
assign SquashSCW = 0; assign LSURWM = PreLSURWM; assign FinalAMOWriteDataM = WriteDataM;
|
assign SquashSCW = 0; assign LSURWM = PreLSURWM; assign FinalAMOWriteDataM = WriteDataM;
|
||||||
|
Loading…
Reference in New Issue
Block a user