mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Removed the TranslationVAdrQ as it is not necessary.
This commit is contained in:
		
							parent
							
								
									1131ec8e35
								
							
						
					
					
						commit
						a252416535
					
				| @ -7,19 +7,19 @@ add wave -noupdate -expand -group {Execution Stage} /testbench/FunctionName/Func | ||||
| add wave -noupdate -expand -group {Execution Stage} /testbench/dut/hart/ifu/PCE | ||||
| add wave -noupdate -expand -group {Execution Stage} /testbench/InstrEName | ||||
| add wave -noupdate -expand -group {Execution Stage} /testbench/dut/hart/ifu/InstrE | ||||
| add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/InstrMisalignedFaultM | ||||
| add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/InstrAccessFaultM | ||||
| add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/IllegalInstrFaultM | ||||
| add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/BreakpointFaultM | ||||
| add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/LoadMisalignedFaultM | ||||
| add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/StoreMisalignedFaultM | ||||
| add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/LoadAccessFaultM | ||||
| add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/StoreAccessFaultM | ||||
| add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/EcallFaultM | ||||
| add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/InstrPageFaultM | ||||
| add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/LoadPageFaultM | ||||
| add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/StorePageFaultM | ||||
| add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/InterruptM | ||||
| add wave -noupdate -expand -group HDU -expand -group traps /testbench/dut/hart/priv/trap/InstrMisalignedFaultM | ||||
| add wave -noupdate -expand -group HDU -expand -group traps /testbench/dut/hart/priv/trap/InstrAccessFaultM | ||||
| add wave -noupdate -expand -group HDU -expand -group traps /testbench/dut/hart/priv/trap/IllegalInstrFaultM | ||||
| add wave -noupdate -expand -group HDU -expand -group traps /testbench/dut/hart/priv/trap/BreakpointFaultM | ||||
| add wave -noupdate -expand -group HDU -expand -group traps /testbench/dut/hart/priv/trap/LoadMisalignedFaultM | ||||
| add wave -noupdate -expand -group HDU -expand -group traps /testbench/dut/hart/priv/trap/StoreMisalignedFaultM | ||||
| add wave -noupdate -expand -group HDU -expand -group traps /testbench/dut/hart/priv/trap/LoadAccessFaultM | ||||
| add wave -noupdate -expand -group HDU -expand -group traps /testbench/dut/hart/priv/trap/StoreAccessFaultM | ||||
| add wave -noupdate -expand -group HDU -expand -group traps /testbench/dut/hart/priv/trap/EcallFaultM | ||||
| add wave -noupdate -expand -group HDU -expand -group traps /testbench/dut/hart/priv/trap/InstrPageFaultM | ||||
| add wave -noupdate -expand -group HDU -expand -group traps /testbench/dut/hart/priv/trap/LoadPageFaultM | ||||
| add wave -noupdate -expand -group HDU -expand -group traps /testbench/dut/hart/priv/trap/StorePageFaultM | ||||
| add wave -noupdate -expand -group HDU -expand -group traps /testbench/dut/hart/priv/trap/InterruptM | ||||
| add wave -noupdate -expand -group HDU -expand -group hazards /testbench/dut/hart/hzu/BPPredWrongE | ||||
| add wave -noupdate -expand -group HDU -expand -group hazards /testbench/dut/hart/hzu/CSRWritePendingDEM | ||||
| add wave -noupdate -expand -group HDU -expand -group hazards /testbench/dut/hart/hzu/RetM | ||||
| @ -118,18 +118,18 @@ add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart | ||||
| add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/CSRReadValW | ||||
| add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ResultSrcW | ||||
| add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ResultW | ||||
| add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/a | ||||
| add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/b | ||||
| add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/alucontrol | ||||
| add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/result | ||||
| add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/flags | ||||
| add wave -noupdate -group alu -divider internals | ||||
| add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/overflow | ||||
| add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/carry | ||||
| add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/zero | ||||
| add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/neg | ||||
| add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/lt | ||||
| add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/ltu | ||||
| add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/a | ||||
| add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/b | ||||
| add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/alucontrol | ||||
| add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/result | ||||
| add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/flags | ||||
| add wave -noupdate -expand -group alu -divider internals | ||||
| add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/overflow | ||||
| add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/carry | ||||
| add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/zero | ||||
| add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/neg | ||||
| add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/lt | ||||
| add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/ltu | ||||
| add wave -noupdate -group Forward /testbench/dut/hart/ieu/fw/Rs1D | ||||
| add wave -noupdate -group Forward /testbench/dut/hart/ieu/fw/Rs2D | ||||
| add wave -noupdate -group Forward /testbench/dut/hart/ieu/fw/Rs1E | ||||
| @ -243,6 +243,7 @@ add wave -noupdate -group AHB /testbench/dut/hart/ebu/StallW | ||||
| add wave -noupdate -expand -group lsu -color Gold /testbench/dut/hart/lsu/CurrState | ||||
| add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/DisableTranslation | ||||
| add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/MemRWM | ||||
| add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/DataStall | ||||
| add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/MemAdrM | ||||
| add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/MemPAdrM | ||||
| add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/ReadDataW | ||||
| @ -293,7 +294,42 @@ add wave -noupdate -group CLINT /testbench/dut/uncore/genblk1/clint/MTIME | ||||
| add wave -noupdate -group CLINT /testbench/dut/uncore/genblk1/clint/MTIMECMP | ||||
| add wave -noupdate -group CLINT /testbench/dut/uncore/genblk1/clint/TimerIntM | ||||
| add wave -noupdate -group CLINT /testbench/dut/uncore/genblk1/clint/SwIntM | ||||
| add wave -noupdate -expand -group ptwalker /testbench/dut/hart/pagetablewalker/MMUTranslate | ||||
| add wave -noupdate -expand -group ptwalker -color Gold /testbench/dut/hart/pagetablewalker/WalkerState | ||||
| add wave -noupdate -expand -group ptwalker -color Salmon /testbench/dut/hart/pagetablewalker/HPTWStall | ||||
| add wave -noupdate -expand -group ptwalker /testbench/dut/hart/pagetablewalker/HPTWRead | ||||
| add wave -noupdate -expand -group ptwalker /testbench/dut/hart/pagetablewalker/MMUPAdr | ||||
| add wave -noupdate -expand -group ptwalker /testbench/dut/hart/pagetablewalker/MMUStall | ||||
| add wave -noupdate -expand -group ptwalker /testbench/dut/hart/pagetablewalker/EndWalk | ||||
| add wave -noupdate -expand -group ptwalker -expand -group pte /testbench/dut/hart/pagetablewalker/MMUReadPTE | ||||
| add wave -noupdate -expand -group ptwalker -expand -group pte /testbench/dut/hart/pagetablewalker/PRegEn | ||||
| add wave -noupdate -expand -group ptwalker -expand -group pte /testbench/dut/hart/pagetablewalker/CurrentPTE | ||||
| add wave -noupdate -expand -group ptwalker -divider data | ||||
| add wave -noupdate -expand -group ptwalker /testbench/dut/hart/pagetablewalker/TranslationPAdr | ||||
| add wave -noupdate -expand -group ptwalker /testbench/dut/hart/pagetablewalker/ValidPTE | ||||
| add wave -noupdate -expand -group ptwalker /testbench/dut/hart/pagetablewalker/LeafPTE | ||||
| add wave -noupdate -expand -group ptwalker /testbench/dut/hart/pagetablewalker/MMUStall | ||||
| add wave -noupdate -expand -group ptwalker -group {fsm outputs} /testbench/dut/hart/pagetablewalker/TranslationPAdr | ||||
| add wave -noupdate -expand -group ptwalker -group {fsm outputs} /testbench/dut/hart/pagetablewalker/PageTableEntry | ||||
| add wave -noupdate -expand -group ptwalker -group {fsm outputs} /testbench/dut/hart/pagetablewalker/PageType | ||||
| add wave -noupdate -expand -group ptwalker -group {fsm outputs} /testbench/dut/hart/pagetablewalker/ITLBWriteF | ||||
| add wave -noupdate -expand -group ptwalker -group {fsm outputs} /testbench/dut/hart/pagetablewalker/DTLBWriteM | ||||
| add wave -noupdate -expand -group ptwalker -group {fsm outputs} /testbench/dut/hart/pagetablewalker/WalkerInstrPageFaultF | ||||
| add wave -noupdate -expand -group ptwalker -group {fsm outputs} /testbench/dut/hart/pagetablewalker/WalkerLoadPageFaultM | ||||
| add wave -noupdate -expand -group ptwalker -group {fsm outputs} /testbench/dut/hart/pagetablewalker/WalkerStorePageFaultM | ||||
| add wave -noupdate -expand -group ptwalker -group {fsm outputs} /testbench/dut/hart/pagetablewalker/MMUStall | ||||
| add wave -noupdate -expand -group ptwalker -group {fsm outputs} /testbench/dut/hart/pagetablewalker/EndWalk | ||||
| add wave -noupdate -expand -group ptwalker /testbench/dut/hart/pagetablewalker/MMUPAdr | ||||
| add wave -noupdate -expand -group {LSU ARB} -color Gold /testbench/dut/hart/arbiter/CurrState | ||||
| add wave -noupdate -expand -group {LSU ARB} -color {Medium Orchid} /testbench/dut/hart/arbiter/SelPTW | ||||
| add wave -noupdate -expand -group {LSU ARB} /testbench/dut/hart/pagetablewalker/MMUStall | ||||
| add wave -noupdate -expand -group {LSU ARB} -expand -group hptw /testbench/dut/hart/arbiter/HPTWTranslate | ||||
| add wave -noupdate -expand -group {LSU ARB} -expand -group hptw /testbench/dut/hart/arbiter/HPTWRead | ||||
| add wave -noupdate -expand -group {LSU ARB} -expand -group hptw /testbench/dut/hart/arbiter/HPTWPAdr | ||||
| add wave -noupdate -expand -group {LSU ARB} -expand -group hptw /testbench/dut/hart/arbiter/HPTWReadPTE | ||||
| add wave -noupdate -expand -group {LSU ARB} -expand -group hptw /testbench/dut/hart/arbiter/HPTWReady | ||||
| add wave -noupdate -expand -group {LSU ARB} -group toLSU /testbench/dut/hart/arbiter/MemAdrMtoLSU | ||||
| add wave -noupdate /testbench/dut/hart/lsu/DataStall | ||||
| add wave -noupdate -group csr /testbench/dut/hart/priv/csr/MIP_REGW | ||||
| add wave -noupdate -group uart /testbench/dut/uncore/genblk4/uart/HCLK | ||||
| add wave -noupdate -group uart /testbench/dut/uncore/genblk4/uart/HRESETn | ||||
| @ -320,6 +356,7 @@ add wave -noupdate -group uart -expand -group outputs /testbench/dut/uncore/genb | ||||
| add wave -noupdate -group dtlb /testbench/dut/hart/lsu/dmmu/TLBMiss | ||||
| add wave -noupdate -group dtlb /testbench/dut/hart/lsu/dmmu/tlb/TLBWrite | ||||
| add wave -noupdate -group itlb /testbench/dut/hart/ifu/ITLBMissF | ||||
| add wave -noupdate /testbench/dut/hart/pagetablewalker/StartWalk | ||||
| add wave -noupdate /testbench/dut/hart/lsu/dmmu/tlb/DisableTranslation | ||||
| add wave -noupdate -group tlbread /testbench/dut/hart/lsu/dmmu/tlb/VirtualAddress | ||||
| add wave -noupdate -group tlbread /testbench/dut/hart/lsu/dmmu/tlb/tlbcam/CAMHit | ||||
| @ -330,8 +367,8 @@ add wave -noupdate -group tlbwrite /testbench/dut/hart/lsu/dmmu/tlb/tlbcam/TLBWr | ||||
| add wave -noupdate -group tlbwrite /testbench/dut/hart/lsu/dmmu/tlb/PTEWriteVal | ||||
| add wave -noupdate -group tlbwrite /testbench/dut/hart/lsu/dmmu/tlb/tlbcam/WriteLines | ||||
| TreeUpdate [SetDefaultTree] | ||||
| WaveRestoreCursors {{Cursor 8} {4545 ns} 0} {{Cursor 3} {2540 ns} 0} {{Cursor 4} {681 ns} 0} | ||||
| quietly wave cursor active 2 | ||||
| WaveRestoreCursors {{Cursor 8} {4545 ns} 0} {{Cursor 3} {3377 ns} 0} {{Cursor 4} {3215 ns} 0} | ||||
| quietly wave cursor active 1 | ||||
| configure wave -namecolwidth 250 | ||||
| configure wave -valuecolwidth 189 | ||||
| configure wave -justifyvalue left | ||||
| @ -346,4 +383,4 @@ configure wave -griddelta 40 | ||||
| configure wave -timeline 0 | ||||
| configure wave -timelineunits ns | ||||
| update | ||||
| WaveRestoreZoom {2313 ns} {2789 ns} | ||||
| WaveRestoreZoom {4209 ns} {4657 ns} | ||||
|  | ||||
| @ -72,7 +72,6 @@ module pagetablewalker | ||||
| 
 | ||||
|   // Internal signals
 | ||||
|   // register TLBs translation miss requests
 | ||||
|   logic [`XLEN-1:0] 	    TranslationVAdrQ; | ||||
|   logic 		    ITLBMissFQ, DTLBMissMQ; | ||||
|    | ||||
|   logic [`PPN_BITS-1:0]     BasePageTablePPN; | ||||
| @ -110,6 +109,8 @@ module pagetablewalker | ||||
|   statetype WalkerState, NextWalkerState; | ||||
| 
 | ||||
|   logic 		    PRegEn; | ||||
|   logic 		    SelDataTranslation; | ||||
|    | ||||
|    | ||||
|   assign SvMode = SATP_REGW[`XLEN-1:`XLEN-`SVMODE_BITS]; | ||||
| 
 | ||||
| @ -118,13 +119,8 @@ module pagetablewalker | ||||
|   assign MemStore = MemRWM[0]; | ||||
| 
 | ||||
|   // Prefer data address translations over instruction address translations
 | ||||
|   assign TranslationVAdr = (DTLBMissM) ? MemAdrM : PCF; // *** need to register TranslationVAdr
 | ||||
|   flopenr #(`XLEN)  | ||||
|   TranslationVAdrReg(.clk(clk), | ||||
| 		     .reset(reset), | ||||
| 		     .en(StartWalk), // *** use enable later to save power
 | ||||
| 		     .d(TranslationVAdr), | ||||
| 		     .q(TranslationVAdrQ)); | ||||
|   assign TranslationVAdr = (SelDataTranslation) ? MemAdrM : PCF; // *** need to register TranslationVAdr
 | ||||
|   assign SelDataTranslation = DTLBMissMQ | DTLBMissM; | ||||
| 
 | ||||
|   flopenrc #(1) | ||||
|   DTLBMissMReg(.clk(clk), | ||||
| @ -227,7 +223,7 @@ module pagetablewalker | ||||
|               PageType = (WalkerState == LEVEL1) ? 2'b01 : 2'b00;  // *** not sure about this mux?
 | ||||
|               DTLBWriteM = DTLBMissMQ; | ||||
|               ITLBWriteF = ~DTLBMissMQ;  // Prefer data over instructions
 | ||||
|               TranslationPAdr = {2'b00, TranslationVAdrQ[31:0]}; | ||||
|               TranslationPAdr = {2'b00, TranslationVAdr[31:0]}; | ||||
| 	    end | ||||
|             // else if (ValidPTE && LeafPTE)    NextWalkerState = LEAF;  // *** Once the above line is properly tested, delete this line.
 | ||||
|             else if (ValidPTE && ~LeafPTE) begin | ||||
| @ -256,7 +252,7 @@ module pagetablewalker | ||||
|               PageType = (WalkerState == LEVEL1) ? 2'b01 : 2'b00; | ||||
|               DTLBWriteM = DTLBMissMQ; | ||||
|               ITLBWriteF = ~DTLBMissMQ;  // Prefer data over instructions
 | ||||
|               TranslationPAdr = {2'b00, TranslationVAdrQ[31:0]}; | ||||
|               TranslationPAdr = {2'b00, TranslationVAdr[31:0]}; | ||||
| 	    end else begin | ||||
|               NextWalkerState = FAULT; | ||||
| 	    end | ||||
| @ -281,8 +277,8 @@ module pagetablewalker | ||||
|       assign MegapageMisaligned = |(CurrentPPN[9:0]); | ||||
|       assign BadMegapage = MegapageMisaligned || AccessAlert;  // *** Implement better access/dirty scheme
 | ||||
| 
 | ||||
|       assign VPN1 = TranslationVAdrQ[31:22]; | ||||
|       assign VPN0 = TranslationVAdrQ[21:12]; | ||||
|       assign VPN1 = TranslationVAdr[31:22]; | ||||
|       assign VPN0 = TranslationVAdr[21:12]; | ||||
| 
 | ||||
|        | ||||
| 
 | ||||
| @ -372,7 +368,7 @@ module pagetablewalker | ||||
|                           ((WalkerState == LEVEL1) ? 2'b01 : 2'b00)); | ||||
|               DTLBWriteM = DTLBMissMQ; | ||||
|               ITLBWriteF = ~DTLBMissMQ;  // Prefer data over instructions
 | ||||
|               TranslationPAdr = TranslationVAdrQ[`PA_BITS-1:0]; | ||||
|               TranslationPAdr = TranslationVAdr[`PA_BITS-1:0]; | ||||
|             end  | ||||
|             // else if (ValidPTE && LeafPTE)    NextWalkerState = LEAF;  // *** Once the above line is properly tested, delete this line.
 | ||||
|             else if (ValidPTE && ~LeafPTE) begin | ||||
| @ -409,7 +405,7 @@ module pagetablewalker | ||||
|                           ((WalkerState == LEVEL1) ? 2'b01 : 2'b00)); | ||||
|               DTLBWriteM = DTLBMissMQ; | ||||
|               ITLBWriteF = ~DTLBMissMQ;  // Prefer data over instructions
 | ||||
|               TranslationPAdr = TranslationVAdrQ[`PA_BITS-1:0]; | ||||
|               TranslationPAdr = TranslationVAdr[`PA_BITS-1:0]; | ||||
|             end | ||||
|             // else if (ValidPTE && LeafPTE)    NextWalkerState = LEAF;  // *** Once the above line is properly tested, delete this line.
 | ||||
|             else if (ValidPTE && ~LeafPTE) begin | ||||
| @ -446,7 +442,7 @@ module pagetablewalker | ||||
|                           ((WalkerState == LEVEL1) ? 2'b01 : 2'b00)); | ||||
|               DTLBWriteM = DTLBMissMQ; | ||||
|               ITLBWriteF = ~DTLBMissMQ;  // Prefer data over instructions
 | ||||
|               TranslationPAdr = TranslationVAdrQ[`PA_BITS-1:0]; | ||||
|               TranslationPAdr = TranslationVAdr[`PA_BITS-1:0]; | ||||
|                | ||||
|             end | ||||
|             // else if (ValidPTE && LeafPTE)    NextWalkerState = LEAF;  // *** Once the above line is properly tested, delete this line.
 | ||||
| @ -478,7 +474,7 @@ module pagetablewalker | ||||
|                           ((WalkerState == LEVEL1) ? 2'b01 : 2'b00)); | ||||
|               DTLBWriteM = DTLBMissMQ; | ||||
|               ITLBWriteF = ~DTLBMissMQ;  // Prefer data over instructions
 | ||||
|               TranslationPAdr = TranslationVAdrQ[`PA_BITS-1:0]; | ||||
|               TranslationPAdr = TranslationVAdr[`PA_BITS-1:0]; | ||||
|             end else begin  | ||||
|               NextWalkerState = FAULT; | ||||
|             end | ||||
| @ -516,10 +512,10 @@ module pagetablewalker | ||||
|       assign BadGigapage = GigapageMisaligned || AccessAlert;  // *** Implement better access/dirty scheme
 | ||||
|       assign BadMegapage = MegapageMisaligned || AccessAlert;  // *** Implement better access/dirty scheme
 | ||||
| 
 | ||||
|       assign VPN3 = TranslationVAdrQ[47:39]; | ||||
|       assign VPN2 = TranslationVAdrQ[38:30]; | ||||
|       assign VPN1 = TranslationVAdrQ[29:21]; | ||||
|       assign VPN0 = TranslationVAdrQ[20:12]; | ||||
|       assign VPN3 = TranslationVAdr[47:39]; | ||||
|       assign VPN2 = TranslationVAdr[38:30]; | ||||
|       assign VPN1 = TranslationVAdr[29:21]; | ||||
|       assign VPN0 = TranslationVAdr[20:12]; | ||||
| 
 | ||||
| 
 | ||||
|       // Capture page table entry from ahblite
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user