forked from Github_Repos/cvw
		
	Cleaned up names in lsuvirtmem.
This commit is contained in:
		
							parent
							
								
									3ba70b74d6
								
							
						
					
					
						commit
						414e73edd9
					
				| @ -75,13 +75,15 @@ module lsuvirtmem( | ||||
|   logic [2:0]                 HPTWSize; | ||||
|   logic                       SelReplayCPURequest; | ||||
|   logic [11:0]                PreLSUAdrE;   | ||||
|   logic                       ITLBMissOrDAFaultF; | ||||
|   logic                       DTLBMissOrDAFaultM;   | ||||
|   logic                       ITLBMissOrDAFaultF, ITLBMissOrDAFaultNoTrapF; | ||||
|   logic                       DTLBMissOrDAFaultM, DTLBMissOrDAFaultNoTrapM;   | ||||
|   logic                       HPTWWrite; | ||||
| 
 | ||||
|   assign AnyCPUReqM = (|MemRWM) | (|AtomicM); | ||||
|   assign ITLBMissOrDAFaultF = ITLBMissF | (`HPTW_WRITES_SUPPORTED & InstrDAPageFaultF); | ||||
|   assign DTLBMissOrDAFaultM = DTLBMissM | (`HPTW_WRITES_SUPPORTED & DataDAPageFaultM);   | ||||
|   assign ITLBMissOrDAFaultNoTrapF = ITLBMissOrDAFaultF & ~TrapM; | ||||
|   assign DTLBMissOrDAFaultNoTrapM = DTLBMissOrDAFaultM & ~TrapM; | ||||
|   interlockfsm interlockfsm ( | ||||
|     .clk, .reset, .AnyCPUReqM, .ITLBMissOrDAFaultF, .ITLBWriteF, | ||||
|     .DTLBMissOrDAFaultM, .DTLBWriteM, .TrapM, .DCacheStallM, | ||||
| @ -89,7 +91,7 @@ module lsuvirtmem( | ||||
|   hptw hptw( // *** remove logic from (), mention this in style guide CH3
 | ||||
|     .clk, .reset, .SATP_REGW, .PCF, .IEUAdrExtM, .MemRWM, .AtomicM, | ||||
|     .STATUS_MXR, .STATUS_SUM, .STATUS_MPRV, .STATUS_MPP, .PrivilegeModeW, | ||||
|     .ITLBMissF(ITLBMissOrDAFaultF & ~TrapM), .DTLBMissM(DTLBMissOrDAFaultM & ~TrapM), // *** Fix me.  *** I'm not sure ITLBMiss should be suppressed on TrapM.
 | ||||
|     .ITLBMissOrDAFaultNoTrapF, .DTLBMissOrDAFaultNoTrapM, | ||||
|     .PTE, .PageType, .ITLBWriteF, .DTLBWriteM, .HPTWReadPTE(ReadDataM), | ||||
|     .DCacheStallM, .HPTWAdr, .HPTWRead, .HPTWWrite, .HPTWSize); | ||||
| 
 | ||||
|  | ||||
| @ -41,7 +41,7 @@ module hptw | ||||
|    input logic                 STATUS_MXR, STATUS_SUM, STATUS_MPRV, | ||||
|    input logic [1:0]           STATUS_MPP, | ||||
|    input logic [1:0]           PrivilegeModeW, | ||||
|    (* mark_debug = "true" *) input logic ITLBMissF, DTLBMissM, // TLB Miss
 | ||||
|    (* mark_debug = "true" *) input logic ITLBMissOrDAFaultNoTrapF, DTLBMissOrDAFaultNoTrapM, // TLB Miss
 | ||||
|    input logic [`XLEN-1:0]     HPTWReadPTE, // page table entry from LSU
 | ||||
|    input logic                 DCacheStallM, // stall from LSU
 | ||||
|    output logic [`XLEN-1:0]    PTE, // page table entry to TLBs
 | ||||
| @ -82,14 +82,14 @@ module hptw | ||||
| 	// Extract bits from CSRs and inputs
 | ||||
| 	assign SvMode = SATP_REGW[`XLEN-1:`XLEN-`SVMODE_BITS]; | ||||
| 	assign BasePageTablePPN = SATP_REGW[`PPN_BITS-1:0]; | ||||
| 	assign TLBMiss = (DTLBMissM | ITLBMissF); | ||||
| 	assign TLBMiss = (DTLBMissOrDAFaultNoTrapM | ITLBMissOrDAFaultNoTrapF); | ||||
| 
 | ||||
| 	// Determine which address to translate
 | ||||
| 	assign TranslationVAdr = DTLBWalk ? IEUAdrExtM[`XLEN-1:0] : PCF; | ||||
| 	assign CurrentPPN = PTE[`PPN_BITS+9:10]; | ||||
| 
 | ||||
| 	// State flops
 | ||||
| 	flopenr #(1) TLBMissMReg(clk, reset, StartWalk, DTLBMissM, DTLBWalk); // when walk begins, record whether it was for DTLB (or record 0 for ITLB)
 | ||||
| 	flopenr #(1) TLBMissMReg(clk, reset, StartWalk, DTLBMissOrDAFaultNoTrapM, DTLBWalk); // when walk begins, record whether it was for DTLB (or record 0 for ITLB)
 | ||||
| 	assign PRegEn = HPTWRead & ~DCacheStallM; | ||||
|    | ||||
| 	flopenr #(`XLEN) PTEReg(clk, reset, PRegEn | UpdatePTE, NextPTE, PTE); // Capture page table entry from data cache
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user