mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Signal renames.
This commit is contained in:
parent
dc82d44f9e
commit
8feb36b926
4
wally-pipelined/src/cache/dcache.sv
vendored
4
wally-pipelined/src/cache/dcache.sv
vendored
@ -28,7 +28,7 @@
|
||||
module dcache
|
||||
(input logic clk,
|
||||
input logic reset,
|
||||
input logic StallWtoDCache,
|
||||
input logic CPUBusy,
|
||||
|
||||
// cpu side
|
||||
input logic [1:0] MemRWM,
|
||||
@ -346,7 +346,7 @@ module dcache
|
||||
.AtomicM,
|
||||
.ExceptionM,
|
||||
.PendingInterruptM,
|
||||
.StallWtoDCache,
|
||||
.CPUBusy,
|
||||
.CacheableM,
|
||||
.IgnoreRequest,
|
||||
.AHBAck, // from ahb
|
||||
|
22
wally-pipelined/src/cache/dcachefsm.sv
vendored
22
wally-pipelined/src/cache/dcachefsm.sv
vendored
@ -35,7 +35,7 @@ module dcachefsm
|
||||
// hazard inputs
|
||||
input logic ExceptionM,
|
||||
input logic PendingInterruptM,
|
||||
input logic StallWtoDCache,
|
||||
input logic CPUBusy,
|
||||
input logic CacheableM,
|
||||
// hptw inputs
|
||||
input logic IgnoreRequest,
|
||||
@ -182,7 +182,7 @@ module dcachefsm
|
||||
SelAdrM = 2'b10;
|
||||
DCacheStall = 1'b0;
|
||||
|
||||
if(StallWtoDCache) begin
|
||||
if(CPUBusy) begin
|
||||
NextState = STATE_CPU_BUSY_FINISH_AMO;
|
||||
SelAdrM = 2'b10;
|
||||
end
|
||||
@ -198,7 +198,7 @@ module dcachefsm
|
||||
DCacheStall = 1'b0;
|
||||
LRUWriteEn = 1'b1;
|
||||
|
||||
if(StallWtoDCache) begin
|
||||
if(CPUBusy) begin
|
||||
NextState = STATE_CPU_BUSY;
|
||||
SelAdrM = 2'b10;
|
||||
end
|
||||
@ -214,7 +214,7 @@ module dcachefsm
|
||||
SetDirty = 1'b1;
|
||||
LRUWriteEn = 1'b1;
|
||||
|
||||
if(StallWtoDCache) begin
|
||||
if(CPUBusy) begin
|
||||
NextState = STATE_CPU_BUSY;
|
||||
SelAdrM = 2'b10;
|
||||
end
|
||||
@ -307,7 +307,7 @@ module dcachefsm
|
||||
LRUWriteEn = 1'b0;
|
||||
if(&MemRWM & AtomicM[1]) begin // amo write
|
||||
SelAdrM = 2'b10;
|
||||
if(StallWtoDCache) begin
|
||||
if(CPUBusy) begin
|
||||
NextState = STATE_CPU_BUSY_FINISH_AMO;
|
||||
end
|
||||
else begin
|
||||
@ -318,7 +318,7 @@ module dcachefsm
|
||||
end
|
||||
end else begin
|
||||
LRUWriteEn = 1'b1;
|
||||
if(StallWtoDCache) begin
|
||||
if(CPUBusy) begin
|
||||
NextState = STATE_CPU_BUSY;
|
||||
SelAdrM = 2'b10;
|
||||
end
|
||||
@ -334,7 +334,7 @@ module dcachefsm
|
||||
SelAdrM = 2'b10;
|
||||
CommittedM = 1'b1;
|
||||
LRUWriteEn = 1'b1;
|
||||
if(StallWtoDCache) begin
|
||||
if(CPUBusy) begin
|
||||
NextState = STATE_CPU_BUSY;
|
||||
SelAdrM = 2'b10;
|
||||
end
|
||||
@ -361,7 +361,7 @@ module dcachefsm
|
||||
STATE_CPU_BUSY: begin
|
||||
CommittedM = 1'b1;
|
||||
SelAdrM = 2'b00;
|
||||
if(StallWtoDCache) begin
|
||||
if(CPUBusy) begin
|
||||
NextState = STATE_CPU_BUSY;
|
||||
SelAdrM = 2'b10;
|
||||
end
|
||||
@ -376,7 +376,7 @@ module dcachefsm
|
||||
SRAMWordWriteEnableM = 1'b0;
|
||||
SetDirty = 1'b0;
|
||||
LRUWriteEn = 1'b0;
|
||||
if(StallWtoDCache) begin
|
||||
if(CPUBusy) begin
|
||||
NextState = STATE_CPU_BUSY_FINISH_AMO;
|
||||
end
|
||||
else begin
|
||||
@ -412,7 +412,7 @@ module dcachefsm
|
||||
STATE_UNCACHED_WRITE_DONE: begin
|
||||
CommittedM = 1'b1;
|
||||
SelAdrM = 2'b00;
|
||||
if(StallWtoDCache) begin
|
||||
if(CPUBusy) begin
|
||||
NextState = STATE_CPU_BUSY;
|
||||
SelAdrM = 2'b10;
|
||||
end
|
||||
@ -425,7 +425,7 @@ module dcachefsm
|
||||
CommittedM = 1'b1;
|
||||
SelUncached = 1'b1;
|
||||
SelAdrM = 2'b00;
|
||||
if(StallWtoDCache) begin
|
||||
if(CPUBusy) begin
|
||||
NextState = STATE_CPU_BUSY;
|
||||
SelAdrM = 2'b10;
|
||||
end
|
||||
|
@ -29,7 +29,7 @@
|
||||
module lrsc
|
||||
(
|
||||
input logic clk, reset,
|
||||
input logic FlushW, StallWtoDCache,
|
||||
input logic FlushW, CPUBusy,
|
||||
input logic MemReadM,
|
||||
input logic [1:0] MemRWMtoLRSC,
|
||||
output logic [1:0] MemRWMtoDCache,
|
||||
@ -57,7 +57,7 @@ module lrsc
|
||||
end
|
||||
flopenrc #(`PA_BITS-2) resadrreg(clk, reset, FlushW, lrM, MemPAdrM[`PA_BITS-1:2], ReservationPAdrW); // could drop clear on this one but not valid
|
||||
flopenrc #(1) resvldreg(clk, reset, FlushW, lrM, ReservationValidM, ReservationValidW);
|
||||
flopenrc #(1) squashreg(clk, reset, FlushW, ~StallWtoDCache, SquashSCM, SquashSCW);
|
||||
flopenrc #(1) squashreg(clk, reset, FlushW, ~CPUBusy, SquashSCM, SquashSCW);
|
||||
end else begin // Atomic operations not supported
|
||||
assign SquashSCW = 0;
|
||||
assign MemRWMtoDCache = MemRWMtoLRSC;
|
||||
|
@ -27,7 +27,6 @@
|
||||
|
||||
`include "wally-config.vh"
|
||||
|
||||
// *** Ross Thompson amo misalignment check?
|
||||
module lsu
|
||||
(
|
||||
input logic clk, reset,
|
||||
@ -100,8 +99,8 @@ module lsu
|
||||
logic DTLBMissM;
|
||||
logic DTLBWriteM;
|
||||
logic HPTWStall;
|
||||
logic [`PA_BITS-1:0] TranslationPAdr;
|
||||
//logic [`PA_BITS-1:0] TranslationPAdrM;
|
||||
logic [`PA_BITS-1:0] HPTWAdr;
|
||||
//logic [`PA_BITS-1:0] HPTWAdrM;
|
||||
logic HPTWRead;
|
||||
logic [1:0] MemRWMtoDCache;
|
||||
logic [1:0] MemRWMtoLRSC;
|
||||
@ -109,7 +108,7 @@ module lsu
|
||||
logic [1:0] AtomicMtoDCache;
|
||||
logic [`PA_BITS-1:0] MemPAdrNoTranslate;
|
||||
logic [11:0] MemAdrE, MemAdrE_RENAME;
|
||||
logic StallWtoDCache;
|
||||
logic CPUBusy;
|
||||
logic MemReadM;
|
||||
logic DataMisalignedM;
|
||||
logic DCacheStall;
|
||||
@ -262,7 +261,7 @@ module lsu
|
||||
.DTLBMissM(DTLBMissM & ~PendingInterruptM),
|
||||
.MemRWM, .PTE, .PageType, .ITLBWriteF, .DTLBWriteM,
|
||||
.HPTWReadPTE(ReadDataM),
|
||||
.DCacheStall, .TranslationPAdr, .HPTWRead, .HPTWSize, .AnyCPUReqM,
|
||||
.DCacheStall, .HPTWAdr, .HPTWRead, .HPTWSize, .AnyCPUReqM,
|
||||
.WalkerInstrPageFaultF(WalkerInstrPageFaultRaw),
|
||||
.WalkerLoadPageFaultM, .WalkerStorePageFaultM);
|
||||
|
||||
@ -279,12 +278,12 @@ module lsu
|
||||
|
||||
// this is for the d cache SRAM.
|
||||
// turns out because we cannot pipeline hptw requests we don't need this register
|
||||
//flop #(`PA_BITS) TranslationPAdrMReg(clk, TranslationPAdr, TranslationPAdrM); // delay TranslationPAdrM by a cycle
|
||||
//flop #(`PA_BITS) HPTWAdrMReg(clk, HPTWAdr, HPTWAdrM); // delay HPTWAdrM by a cycle
|
||||
|
||||
assign AtomicMtoDCache = SelPTW ? 2'b00 : AtomicM;
|
||||
assign MemPAdrNoTranslate = SelPTW ? TranslationPAdr : {2'b00, IEUAdrM}[`PA_BITS-1:0];
|
||||
assign MemAdrE = SelPTW ? TranslationPAdr[11:0] : IEUAdrE[11:0];
|
||||
assign StallWtoDCache = SelPTW ? 1'b0 : StallW;
|
||||
assign MemPAdrNoTranslate = SelPTW ? HPTWAdr : {2'b00, IEUAdrM}[`PA_BITS-1:0];
|
||||
assign MemAdrE = SelPTW ? HPTWAdr[11:0] : IEUAdrE[11:0];
|
||||
assign CPUBusy = SelPTW ? 1'b0 : StallW;
|
||||
// always block interrupts when using the hardware page table walker.
|
||||
assign CommittedM = SelPTW ? 1'b1 : CommittedMfromDCache;
|
||||
|
||||
@ -318,7 +317,7 @@ module lsu
|
||||
|
||||
// Move generate from lrsc to outside this module.
|
||||
assign MemReadM = MemRWMtoLRSC[1] & ~(ExceptionM | PendingInterruptMtoDCache) & ~DTLBMissM; // & ~NonBusTrapM & ~DTLBMissM & CurrState != STATE_STALLED;
|
||||
lrsc lrsc(.clk, .reset, .FlushW, .StallWtoDCache, .MemReadM, .MemRWMtoLRSC, .AtomicMtoDCache, .MemPAdrM,
|
||||
lrsc lrsc(.clk, .reset, .FlushW, .CPUBusy, .MemReadM, .MemRWMtoLRSC, .AtomicMtoDCache, .MemPAdrM,
|
||||
.SquashSCW, .MemRWMtoDCache);
|
||||
|
||||
// *** BUG, this is most likely wrong
|
||||
@ -351,7 +350,7 @@ module lsu
|
||||
|
||||
dcache dcache(.clk(clk),
|
||||
.reset(reset),
|
||||
.StallWtoDCache(StallWtoDCache),
|
||||
.CPUBusy(CPUBusy),
|
||||
.MemRWM(MemRWMtoDCache),
|
||||
.Funct3M(Funct3MtoDCache),
|
||||
.Funct7M(Funct7M),
|
||||
|
@ -5,7 +5,7 @@
|
||||
// Modified: david_harris@hmc.edu 18 July 2021 cleanup and simplification
|
||||
// kmacsaigoren@hmc.edu 1 June 2021
|
||||
// implemented SV48 on top of SV39. This included, adding a level of the FSM for the extra page number segment
|
||||
// adding support for terapage encoding, and for setting the TranslationPAdr using the new level,
|
||||
// adding support for terapage encoding, and for setting the HPTWAdr using the new level,
|
||||
// adding the internal SvMode signal
|
||||
//
|
||||
// Purpose: Page Table Walker
|
||||
@ -43,7 +43,7 @@ module hptw
|
||||
output logic [`XLEN-1:0] PTE, // page table entry to TLBs
|
||||
output logic [1:0] PageType, // page type to TLBs
|
||||
output logic ITLBWriteF, DTLBWriteM, // write TLB with new entry
|
||||
output logic [`PA_BITS-1:0] TranslationPAdr,
|
||||
output logic [`PA_BITS-1:0] HPTWAdr,
|
||||
output logic HPTWRead, // HPTW requesting to read memory
|
||||
output logic [2:0] HPTWSize, // 32 or 64 bit access.
|
||||
output logic WalkerInstrPageFaultF, WalkerLoadPageFaultM,WalkerStorePageFaultM // faults
|
||||
@ -118,13 +118,13 @@ module hptw
|
||||
default: NextPageType = PageType;
|
||||
endcase
|
||||
|
||||
// TranslationPAdr muxing
|
||||
// HPTWAdr muxing
|
||||
if (`XLEN==32) begin // RV32
|
||||
logic [9:0] VPN;
|
||||
logic [`PPN_BITS-1:0] PPN;
|
||||
assign VPN = ((WalkerState == L1_ADR) | (WalkerState == L1_RD)) ? TranslationVAdr[31:22] : TranslationVAdr[21:12]; // select VPN field based on HPTW state
|
||||
assign PPN = ((WalkerState == L1_ADR) | (WalkerState == L1_RD)) ? BasePageTablePPN : CurrentPPN;
|
||||
assign TranslationPAdr = {PPN, VPN, 2'b00};
|
||||
assign HPTWAdr = {PPN, VPN, 2'b00};
|
||||
assign HPTWSize = 3'b010;
|
||||
end else begin // RV64
|
||||
logic [8:0] VPN;
|
||||
@ -138,7 +138,7 @@ module hptw
|
||||
endcase
|
||||
assign PPN = ((WalkerState == L3_ADR) | (WalkerState == L3_RD) |
|
||||
(SvMode != `SV48 & ((WalkerState == L2_ADR) | (WalkerState == L2_RD)))) ? BasePageTablePPN : CurrentPPN;
|
||||
assign TranslationPAdr = {PPN, VPN, 3'b000};
|
||||
assign HPTWAdr = {PPN, VPN, 3'b000};
|
||||
assign HPTWSize = 3'b011;
|
||||
end
|
||||
|
||||
@ -211,7 +211,7 @@ module hptw
|
||||
end else begin // No Virtual memory supported; tie HPTW outputs to 0
|
||||
assign HPTWRead = 0;
|
||||
assign WalkerInstrPageFaultF = 0; assign WalkerLoadPageFaultM = 0; assign WalkerStorePageFaultM = 0;
|
||||
assign TranslationPAdr = 0;
|
||||
assign HPTWAdr = 0;
|
||||
assign HPTWSize = 3'b000;
|
||||
end
|
||||
endgenerate
|
||||
|
Loading…
Reference in New Issue
Block a user