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/dut/hart/ifu/PCE
 | 
				
			||||||
add wave -noupdate -expand -group {Execution Stage} /testbench/InstrEName
 | 
					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 {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 -expand -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 -expand -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 -expand -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 -expand -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 -expand -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 -expand -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 -expand -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 -expand -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 -expand -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 -expand -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 -expand -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 -expand -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/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/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/CSRWritePendingDEM
 | 
				
			||||||
add wave -noupdate -expand -group HDU -expand -group hazards /testbench/dut/hart/hzu/RetM
 | 
					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/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/ResultSrcW
 | 
				
			||||||
add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ResultW
 | 
					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 -expand -group alu /testbench/dut/hart/ieu/dp/alu/a
 | 
				
			||||||
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/b
 | 
					add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/b
 | 
				
			||||||
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/alucontrol
 | 
					add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/alucontrol
 | 
				
			||||||
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/result
 | 
					add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/result
 | 
				
			||||||
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/flags
 | 
					add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/flags
 | 
				
			||||||
add wave -noupdate -group alu -divider internals
 | 
					add wave -noupdate -expand -group alu -divider internals
 | 
				
			||||||
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/overflow
 | 
					add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/overflow
 | 
				
			||||||
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/carry
 | 
					add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/carry
 | 
				
			||||||
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/zero
 | 
					add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/zero
 | 
				
			||||||
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/neg
 | 
					add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/neg
 | 
				
			||||||
add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/lt
 | 
					add wave -noupdate -expand -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/ltu
 | 
				
			||||||
add wave -noupdate -group Forward /testbench/dut/hart/ieu/fw/Rs1D
 | 
					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/Rs2D
 | 
				
			||||||
add wave -noupdate -group Forward /testbench/dut/hart/ieu/fw/Rs1E
 | 
					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 -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/DisableTranslation
 | 
				
			||||||
add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/MemRWM
 | 
					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/MemAdrM
 | 
				
			||||||
add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/MemPAdrM
 | 
					add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/MemPAdrM
 | 
				
			||||||
add wave -noupdate -expand -group lsu /testbench/dut/hart/lsu/ReadDataW
 | 
					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/MTIMECMP
 | 
				
			||||||
add wave -noupdate -group CLINT /testbench/dut/uncore/genblk1/clint/TimerIntM
 | 
					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 -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 -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 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/HCLK
 | 
				
			||||||
add wave -noupdate -group uart /testbench/dut/uncore/genblk4/uart/HRESETn
 | 
					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/TLBMiss
 | 
				
			||||||
add wave -noupdate -group dtlb /testbench/dut/hart/lsu/dmmu/tlb/TLBWrite
 | 
					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 -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 /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/VirtualAddress
 | 
				
			||||||
add wave -noupdate -group tlbread /testbench/dut/hart/lsu/dmmu/tlb/tlbcam/CAMHit
 | 
					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/PTEWriteVal
 | 
				
			||||||
add wave -noupdate -group tlbwrite /testbench/dut/hart/lsu/dmmu/tlb/tlbcam/WriteLines
 | 
					add wave -noupdate -group tlbwrite /testbench/dut/hart/lsu/dmmu/tlb/tlbcam/WriteLines
 | 
				
			||||||
TreeUpdate [SetDefaultTree]
 | 
					TreeUpdate [SetDefaultTree]
 | 
				
			||||||
WaveRestoreCursors {{Cursor 8} {4545 ns} 0} {{Cursor 3} {2540 ns} 0} {{Cursor 4} {681 ns} 0}
 | 
					WaveRestoreCursors {{Cursor 8} {4545 ns} 0} {{Cursor 3} {3377 ns} 0} {{Cursor 4} {3215 ns} 0}
 | 
				
			||||||
quietly wave cursor active 2
 | 
					quietly wave cursor active 1
 | 
				
			||||||
configure wave -namecolwidth 250
 | 
					configure wave -namecolwidth 250
 | 
				
			||||||
configure wave -valuecolwidth 189
 | 
					configure wave -valuecolwidth 189
 | 
				
			||||||
configure wave -justifyvalue left
 | 
					configure wave -justifyvalue left
 | 
				
			||||||
@ -346,4 +383,4 @@ configure wave -griddelta 40
 | 
				
			|||||||
configure wave -timeline 0
 | 
					configure wave -timeline 0
 | 
				
			||||||
configure wave -timelineunits ns
 | 
					configure wave -timelineunits ns
 | 
				
			||||||
update
 | 
					update
 | 
				
			||||||
WaveRestoreZoom {2313 ns} {2789 ns}
 | 
					WaveRestoreZoom {4209 ns} {4657 ns}
 | 
				
			||||||
 | 
				
			|||||||
@ -72,7 +72,6 @@ module pagetablewalker
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  // Internal signals
 | 
					  // Internal signals
 | 
				
			||||||
  // register TLBs translation miss requests
 | 
					  // register TLBs translation miss requests
 | 
				
			||||||
  logic [`XLEN-1:0] 	    TranslationVAdrQ;
 | 
					 | 
				
			||||||
  logic 		    ITLBMissFQ, DTLBMissMQ;
 | 
					  logic 		    ITLBMissFQ, DTLBMissMQ;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  logic [`PPN_BITS-1:0]     BasePageTablePPN;
 | 
					  logic [`PPN_BITS-1:0]     BasePageTablePPN;
 | 
				
			||||||
@ -110,6 +109,8 @@ module pagetablewalker
 | 
				
			|||||||
  statetype WalkerState, NextWalkerState;
 | 
					  statetype WalkerState, NextWalkerState;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  logic 		    PRegEn;
 | 
					  logic 		    PRegEn;
 | 
				
			||||||
 | 
					  logic 		    SelDataTranslation;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  assign SvMode = SATP_REGW[`XLEN-1:`XLEN-`SVMODE_BITS];
 | 
					  assign SvMode = SATP_REGW[`XLEN-1:`XLEN-`SVMODE_BITS];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -118,13 +119,8 @@ module pagetablewalker
 | 
				
			|||||||
  assign MemStore = MemRWM[0];
 | 
					  assign MemStore = MemRWM[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Prefer data address translations over instruction address translations
 | 
					  // Prefer data address translations over instruction address translations
 | 
				
			||||||
  assign TranslationVAdr = (DTLBMissM) ? MemAdrM : PCF; // *** need to register TranslationVAdr
 | 
					  assign TranslationVAdr = (SelDataTranslation) ? MemAdrM : PCF; // *** need to register TranslationVAdr
 | 
				
			||||||
  flopenr #(`XLEN) 
 | 
					  assign SelDataTranslation = DTLBMissMQ | DTLBMissM;
 | 
				
			||||||
  TranslationVAdrReg(.clk(clk),
 | 
					 | 
				
			||||||
		     .reset(reset),
 | 
					 | 
				
			||||||
		     .en(StartWalk), // *** use enable later to save power
 | 
					 | 
				
			||||||
		     .d(TranslationVAdr),
 | 
					 | 
				
			||||||
		     .q(TranslationVAdrQ));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  flopenrc #(1)
 | 
					  flopenrc #(1)
 | 
				
			||||||
  DTLBMissMReg(.clk(clk),
 | 
					  DTLBMissMReg(.clk(clk),
 | 
				
			||||||
@ -227,7 +223,7 @@ module pagetablewalker
 | 
				
			|||||||
              PageType = (WalkerState == LEVEL1) ? 2'b01 : 2'b00;  // *** not sure about this mux?
 | 
					              PageType = (WalkerState == LEVEL1) ? 2'b01 : 2'b00;  // *** not sure about this mux?
 | 
				
			||||||
              DTLBWriteM = DTLBMissMQ;
 | 
					              DTLBWriteM = DTLBMissMQ;
 | 
				
			||||||
              ITLBWriteF = ~DTLBMissMQ;  // Prefer data over instructions
 | 
					              ITLBWriteF = ~DTLBMissMQ;  // Prefer data over instructions
 | 
				
			||||||
              TranslationPAdr = {2'b00, TranslationVAdrQ[31:0]};
 | 
					              TranslationPAdr = {2'b00, TranslationVAdr[31:0]};
 | 
				
			||||||
	    end
 | 
						    end
 | 
				
			||||||
            // else if (ValidPTE && LeafPTE)    NextWalkerState = LEAF;  // *** Once the above line is properly tested, delete this line.
 | 
					            // else if (ValidPTE && LeafPTE)    NextWalkerState = LEAF;  // *** Once the above line is properly tested, delete this line.
 | 
				
			||||||
            else if (ValidPTE && ~LeafPTE) begin
 | 
					            else if (ValidPTE && ~LeafPTE) begin
 | 
				
			||||||
@ -256,7 +252,7 @@ module pagetablewalker
 | 
				
			|||||||
              PageType = (WalkerState == LEVEL1) ? 2'b01 : 2'b00;
 | 
					              PageType = (WalkerState == LEVEL1) ? 2'b01 : 2'b00;
 | 
				
			||||||
              DTLBWriteM = DTLBMissMQ;
 | 
					              DTLBWriteM = DTLBMissMQ;
 | 
				
			||||||
              ITLBWriteF = ~DTLBMissMQ;  // Prefer data over instructions
 | 
					              ITLBWriteF = ~DTLBMissMQ;  // Prefer data over instructions
 | 
				
			||||||
              TranslationPAdr = {2'b00, TranslationVAdrQ[31:0]};
 | 
					              TranslationPAdr = {2'b00, TranslationVAdr[31:0]};
 | 
				
			||||||
	    end else begin
 | 
						    end else begin
 | 
				
			||||||
              NextWalkerState = FAULT;
 | 
					              NextWalkerState = FAULT;
 | 
				
			||||||
	    end
 | 
						    end
 | 
				
			||||||
@ -281,8 +277,8 @@ module pagetablewalker
 | 
				
			|||||||
      assign MegapageMisaligned = |(CurrentPPN[9:0]);
 | 
					      assign MegapageMisaligned = |(CurrentPPN[9:0]);
 | 
				
			||||||
      assign BadMegapage = MegapageMisaligned || AccessAlert;  // *** Implement better access/dirty scheme
 | 
					      assign BadMegapage = MegapageMisaligned || AccessAlert;  // *** Implement better access/dirty scheme
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      assign VPN1 = TranslationVAdrQ[31:22];
 | 
					      assign VPN1 = TranslationVAdr[31:22];
 | 
				
			||||||
      assign VPN0 = TranslationVAdrQ[21:12];
 | 
					      assign VPN0 = TranslationVAdr[21:12];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -372,7 +368,7 @@ module pagetablewalker
 | 
				
			|||||||
                          ((WalkerState == LEVEL1) ? 2'b01 : 2'b00));
 | 
					                          ((WalkerState == LEVEL1) ? 2'b01 : 2'b00));
 | 
				
			||||||
              DTLBWriteM = DTLBMissMQ;
 | 
					              DTLBWriteM = DTLBMissMQ;
 | 
				
			||||||
              ITLBWriteF = ~DTLBMissMQ;  // Prefer data over instructions
 | 
					              ITLBWriteF = ~DTLBMissMQ;  // Prefer data over instructions
 | 
				
			||||||
              TranslationPAdr = TranslationVAdrQ[`PA_BITS-1:0];
 | 
					              TranslationPAdr = TranslationVAdr[`PA_BITS-1:0];
 | 
				
			||||||
            end 
 | 
					            end 
 | 
				
			||||||
            // else if (ValidPTE && LeafPTE)    NextWalkerState = LEAF;  // *** Once the above line is properly tested, delete this line.
 | 
					            // else if (ValidPTE && LeafPTE)    NextWalkerState = LEAF;  // *** Once the above line is properly tested, delete this line.
 | 
				
			||||||
            else if (ValidPTE && ~LeafPTE) begin
 | 
					            else if (ValidPTE && ~LeafPTE) begin
 | 
				
			||||||
@ -409,7 +405,7 @@ module pagetablewalker
 | 
				
			|||||||
                          ((WalkerState == LEVEL1) ? 2'b01 : 2'b00));
 | 
					                          ((WalkerState == LEVEL1) ? 2'b01 : 2'b00));
 | 
				
			||||||
              DTLBWriteM = DTLBMissMQ;
 | 
					              DTLBWriteM = DTLBMissMQ;
 | 
				
			||||||
              ITLBWriteF = ~DTLBMissMQ;  // Prefer data over instructions
 | 
					              ITLBWriteF = ~DTLBMissMQ;  // Prefer data over instructions
 | 
				
			||||||
              TranslationPAdr = TranslationVAdrQ[`PA_BITS-1:0];
 | 
					              TranslationPAdr = TranslationVAdr[`PA_BITS-1:0];
 | 
				
			||||||
            end
 | 
					            end
 | 
				
			||||||
            // else if (ValidPTE && LeafPTE)    NextWalkerState = LEAF;  // *** Once the above line is properly tested, delete this line.
 | 
					            // else if (ValidPTE && LeafPTE)    NextWalkerState = LEAF;  // *** Once the above line is properly tested, delete this line.
 | 
				
			||||||
            else if (ValidPTE && ~LeafPTE) begin
 | 
					            else if (ValidPTE && ~LeafPTE) begin
 | 
				
			||||||
@ -446,7 +442,7 @@ module pagetablewalker
 | 
				
			|||||||
                          ((WalkerState == LEVEL1) ? 2'b01 : 2'b00));
 | 
					                          ((WalkerState == LEVEL1) ? 2'b01 : 2'b00));
 | 
				
			||||||
              DTLBWriteM = DTLBMissMQ;
 | 
					              DTLBWriteM = DTLBMissMQ;
 | 
				
			||||||
              ITLBWriteF = ~DTLBMissMQ;  // Prefer data over instructions
 | 
					              ITLBWriteF = ~DTLBMissMQ;  // Prefer data over instructions
 | 
				
			||||||
              TranslationPAdr = TranslationVAdrQ[`PA_BITS-1:0];
 | 
					              TranslationPAdr = TranslationVAdr[`PA_BITS-1:0];
 | 
				
			||||||
              
 | 
					              
 | 
				
			||||||
            end
 | 
					            end
 | 
				
			||||||
            // else if (ValidPTE && LeafPTE)    NextWalkerState = LEAF;  // *** Once the above line is properly tested, delete this line.
 | 
					            // 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));
 | 
					                          ((WalkerState == LEVEL1) ? 2'b01 : 2'b00));
 | 
				
			||||||
              DTLBWriteM = DTLBMissMQ;
 | 
					              DTLBWriteM = DTLBMissMQ;
 | 
				
			||||||
              ITLBWriteF = ~DTLBMissMQ;  // Prefer data over instructions
 | 
					              ITLBWriteF = ~DTLBMissMQ;  // Prefer data over instructions
 | 
				
			||||||
              TranslationPAdr = TranslationVAdrQ[`PA_BITS-1:0];
 | 
					              TranslationPAdr = TranslationVAdr[`PA_BITS-1:0];
 | 
				
			||||||
            end else begin 
 | 
					            end else begin 
 | 
				
			||||||
              NextWalkerState = FAULT;
 | 
					              NextWalkerState = FAULT;
 | 
				
			||||||
            end
 | 
					            end
 | 
				
			||||||
@ -516,10 +512,10 @@ module pagetablewalker
 | 
				
			|||||||
      assign BadGigapage = GigapageMisaligned || AccessAlert;  // *** Implement better access/dirty scheme
 | 
					      assign BadGigapage = GigapageMisaligned || AccessAlert;  // *** Implement better access/dirty scheme
 | 
				
			||||||
      assign BadMegapage = MegapageMisaligned || AccessAlert;  // *** Implement better access/dirty scheme
 | 
					      assign BadMegapage = MegapageMisaligned || AccessAlert;  // *** Implement better access/dirty scheme
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      assign VPN3 = TranslationVAdrQ[47:39];
 | 
					      assign VPN3 = TranslationVAdr[47:39];
 | 
				
			||||||
      assign VPN2 = TranslationVAdrQ[38:30];
 | 
					      assign VPN2 = TranslationVAdr[38:30];
 | 
				
			||||||
      assign VPN1 = TranslationVAdrQ[29:21];
 | 
					      assign VPN1 = TranslationVAdr[29:21];
 | 
				
			||||||
      assign VPN0 = TranslationVAdrQ[20:12];
 | 
					      assign VPN0 = TranslationVAdr[20:12];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // Capture page table entry from ahblite
 | 
					      // Capture page table entry from ahblite
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user