mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
LSU partitioning
This commit is contained in:
parent
36d49a8a74
commit
291deb5c39
@ -122,9 +122,18 @@ module lsu
|
|||||||
logic BusCommittedM, DCacheCommittedM;
|
logic BusCommittedM, DCacheCommittedM;
|
||||||
|
|
||||||
|
|
||||||
|
// Execute Stage Logic
|
||||||
|
|
||||||
|
|
||||||
|
// Execute-Memory Stage Registers (and Cache fires on this edge)
|
||||||
|
|
||||||
flopenrc #(`XLEN) AddressMReg(clk, reset, FlushM, ~StallM, IEUAdrE, IEUAdrM);
|
flopenrc #(`XLEN) AddressMReg(clk, reset, FlushM, ~StallM, IEUAdrE, IEUAdrM);
|
||||||
|
|
||||||
|
// Memory Stage Logic
|
||||||
|
|
||||||
assign IEUAdrExtM = {2'b00, IEUAdrM};
|
assign IEUAdrExtM = {2'b00, IEUAdrM};
|
||||||
|
|
||||||
|
// HPTW and Interlock FSM (only needed if VM supported)
|
||||||
if(`MEM_VIRTMEM) begin : MEM_VIRTMEM
|
if(`MEM_VIRTMEM) begin : MEM_VIRTMEM
|
||||||
logic AnyCPUReqM;
|
logic AnyCPUReqM;
|
||||||
logic [`PA_BITS-1:0] HPTWAdr;
|
logic [`PA_BITS-1:0] HPTWAdr;
|
||||||
@ -195,6 +204,7 @@ module lsu
|
|||||||
assign DTLBStorePageFaultM = 1'b0;
|
assign DTLBStorePageFaultM = 1'b0;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
// **** look into this confusing signal.
|
// **** look into this confusing signal.
|
||||||
// This signal is confusing. CommittedM tells the CPU's trap unit the current instruction
|
// This signal is confusing. CommittedM tells the CPU's trap unit the current instruction
|
||||||
// in the memory stage is a memory operaton and that memory operation is either completed
|
// in the memory stage is a memory operaton and that memory operation is either completed
|
||||||
@ -205,6 +215,9 @@ module lsu
|
|||||||
// to flush the memory operation at that time.
|
// to flush the memory operation at that time.
|
||||||
assign CommittedM = SelHPTW | DCacheCommittedM | BusCommittedM;
|
assign CommittedM = SelHPTW | DCacheCommittedM | BusCommittedM;
|
||||||
|
|
||||||
|
// Outside Pipeline Logic
|
||||||
|
|
||||||
|
// MMU and Misalignment fault logic required if privileged unit exists
|
||||||
if(`ZICSR_SUPPORTED == 1) begin : dmmu
|
if(`ZICSR_SUPPORTED == 1) begin : dmmu
|
||||||
logic DataMisalignedM;
|
logic DataMisalignedM;
|
||||||
|
|
||||||
@ -229,6 +242,7 @@ module lsu
|
|||||||
.PMPCFG_ARRAY_REGW, .PMPADDR_ARRAY_REGW
|
.PMPCFG_ARRAY_REGW, .PMPADDR_ARRAY_REGW
|
||||||
); // *** the pma/pmp instruction access faults don't really matter here. is it possible to parameterize which outputs exist?
|
); // *** the pma/pmp instruction access faults don't really matter here. is it possible to parameterize which outputs exist?
|
||||||
|
|
||||||
|
// *** lump into lsumislaigned module
|
||||||
// Determine if an Unaligned access is taking place
|
// Determine if an Unaligned access is taking place
|
||||||
// hptw guarantees alignment, only check inputs from IEU.
|
// hptw guarantees alignment, only check inputs from IEU.
|
||||||
always_comb
|
always_comb
|
||||||
|
Loading…
Reference in New Issue
Block a user