mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Renamed DAPageFault to HPTWDAPageFault in hptw to avoid name conflict with DAPageFault from tlbcontrol
This commit is contained in:
		
							parent
							
								
									fe161f6bde
								
							
						
					
					
						commit
						f31764c3e1
					
				| @ -87,7 +87,7 @@ module hptw ( | |||||||
|   logic [`XLEN-1:0] 	   TranslationVAdr; |   logic [`XLEN-1:0] 	   TranslationVAdr; | ||||||
|   logic [`XLEN-1:0] 	   NextPTE; |   logic [`XLEN-1:0] 	   NextPTE; | ||||||
|   logic 				   UpdatePTE; |   logic 				   UpdatePTE; | ||||||
|   logic 				   DAPageFault; |   logic 				   HPTWDAPageFault; | ||||||
|   logic [`PA_BITS-1:0] 	   HPTWReadAdr; |   logic [`PA_BITS-1:0] 	   HPTWReadAdr; | ||||||
|   logic 				   SelHPTWAdr; |   logic 				   SelHPTWAdr; | ||||||
|   logic [`XLEN+1:0] 	   HPTWAdrExt; |   logic [`XLEN+1:0] 	   HPTWAdrExt; | ||||||
| @ -167,14 +167,14 @@ module hptw ( | |||||||
|     // memory access.  If there is the PTE needs to be updated seting Access
 |     // memory access.  If there is the PTE needs to be updated seting Access
 | ||||||
|     // and possibly also Dirty.  Dirty is set if the operation is a store/amo.
 |     // and possibly also Dirty.  Dirty is set if the operation is a store/amo.
 | ||||||
|     // However any other fault should not cause the update.
 |     // However any other fault should not cause the update.
 | ||||||
|     assign DAPageFault = ValidLeafPTE & (~Accessed | SetDirty) & ~OtherPageFault; |     assign HPTWDAPageFault = ValidLeafPTE & (~Accessed | SetDirty) & ~OtherPageFault; | ||||||
| 
 | 
 | ||||||
|     assign HPTWRW[0] = (WalkerState == UPDATE_PTE); |     assign HPTWRW[0] = (WalkerState == UPDATE_PTE); | ||||||
|     assign UpdatePTE = (WalkerState == LEAF) & DAPageFault; |     assign UpdatePTE = (WalkerState == LEAF) & HPTWDAPageFault; | ||||||
|   end else begin // block: hptwwrites
 |   end else begin // block: hptwwrites
 | ||||||
|     assign NextPTE = ReadDataM; |     assign NextPTE = ReadDataM; | ||||||
|     assign HPTWAdr = HPTWReadAdr; |     assign HPTWAdr = HPTWReadAdr; | ||||||
|     assign DAPageFault = '0; |     assign HPTWDAPageFault = '0; | ||||||
|     assign UpdatePTE = '0; |     assign UpdatePTE = '0; | ||||||
|     assign HPTWRW[0] = '0; |     assign HPTWRW[0] = '0; | ||||||
|   end |   end | ||||||
| @ -182,8 +182,8 @@ module hptw ( | |||||||
| 	// Enable and select signals based on states
 | 	// Enable and select signals based on states
 | ||||||
| 	assign StartWalk = (WalkerState == IDLE) & TLBMiss; | 	assign StartWalk = (WalkerState == IDLE) & TLBMiss; | ||||||
| 	assign HPTWRW[1] = (WalkerState == L3_RD) | (WalkerState == L2_RD) | (WalkerState == L1_RD) | (WalkerState == L0_RD); | 	assign HPTWRW[1] = (WalkerState == L3_RD) | (WalkerState == L2_RD) | (WalkerState == L1_RD) | (WalkerState == L0_RD); | ||||||
| 	assign DTLBWriteM = (WalkerState == LEAF & ~DAPageFault) & DTLBWalk; | 	assign DTLBWriteM = (WalkerState == LEAF & ~HPTWDAPageFault) & DTLBWalk; | ||||||
| 	assign ITLBWriteF = (WalkerState == LEAF & ~DAPageFault) & ~DTLBWalk; | 	assign ITLBWriteF = (WalkerState == LEAF & ~HPTWDAPageFault) & ~DTLBWalk; | ||||||
|    |    | ||||||
| 	// FSM to track PageType based on the levels of the page table traversed
 | 	// FSM to track PageType based on the levels of the page table traversed
 | ||||||
| 	flopr #(2) PageTypeReg(clk, reset, NextPageType, PageType); | 	flopr #(2) PageTypeReg(clk, reset, NextPageType, PageType); | ||||||
| @ -262,7 +262,7 @@ module hptw ( | |||||||
| 					else                                 										NextWalkerState = LEAF; | 					else                                 										NextWalkerState = LEAF; | ||||||
| 			L0_RD: if (DCacheStallM)                     								NextWalkerState = L0_RD; | 			L0_RD: if (DCacheStallM)                     								NextWalkerState = L0_RD; | ||||||
| 				   else                                     							NextWalkerState = LEAF; | 				   else                                     							NextWalkerState = LEAF; | ||||||
| 			LEAF: if (`HPTW_WRITES_SUPPORTED & DAPageFault)             NextWalkerState = UPDATE_PTE; | 			LEAF: if (`HPTW_WRITES_SUPPORTED & HPTWDAPageFault)             NextWalkerState = UPDATE_PTE; | ||||||
| 				  else 																										NextWalkerState = IDLE; | 				  else 																										NextWalkerState = IDLE; | ||||||
| 			UPDATE_PTE: if(DCacheStallM) 		                        		NextWalkerState = UPDATE_PTE; | 			UPDATE_PTE: if(DCacheStallM) 		                        		NextWalkerState = UPDATE_PTE; | ||||||
| 						else 																									NextWalkerState = LEAF; | 						else 																									NextWalkerState = LEAF; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user