forked from Github_Repos/cvw
		
	hptw: Unified PageTableEntryM and PageTableEntryF outputs of pagetablewalker into PTE
This commit is contained in:
		
							parent
							
								
									86e04c080d
								
							
						
					
					
						commit
						d4eeabe355
					
				@ -118,7 +118,7 @@ module lsu
 | 
				
			|||||||
  logic [`PA_BITS-1:0] 	       MemPAdrM;  // from mmu to dcache
 | 
					  logic [`PA_BITS-1:0] 	       MemPAdrM;  // from mmu to dcache
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
  logic 		       DTLBMissM;
 | 
					  logic 		       DTLBMissM;
 | 
				
			||||||
  logic [`XLEN-1:0] 	       PageTableEntryM;
 | 
					  logic [`XLEN-1:0] 	       PTE, PageTableEntryM;
 | 
				
			||||||
  logic 		       DTLBWriteM;
 | 
					  logic 		       DTLBWriteM;
 | 
				
			||||||
  logic [`XLEN-1:0] 	       HPTWReadPTE;
 | 
					  logic [`XLEN-1:0] 	       HPTWReadPTE;
 | 
				
			||||||
  logic 		       HPTWStall;  
 | 
					  logic 		       HPTWStall;  
 | 
				
			||||||
@ -157,8 +157,8 @@ module lsu
 | 
				
			|||||||
				  .ITLBMissF(ITLBMissF),
 | 
									  .ITLBMissF(ITLBMissF),
 | 
				
			||||||
				  .DTLBMissM(DTLBMissM),
 | 
									  .DTLBMissM(DTLBMissM),
 | 
				
			||||||
				  .MemRWM(MemRWM),
 | 
									  .MemRWM(MemRWM),
 | 
				
			||||||
				  .PageTableEntryF(PageTableEntryF),
 | 
									  .PTE(PTE),
 | 
				
			||||||
				  .PageTableEntryM(PageTableEntryM),
 | 
					//				  .PageTableEntryM(PageTableEntryM),
 | 
				
			||||||
				  .PageType,
 | 
									  .PageType,
 | 
				
			||||||
				  .ITLBWriteF(ITLBWriteF),
 | 
									  .ITLBWriteF(ITLBWriteF),
 | 
				
			||||||
				  .DTLBWriteM(DTLBWriteM),
 | 
									  .DTLBWriteM(DTLBWriteM),
 | 
				
			||||||
@ -172,6 +172,9 @@ module lsu
 | 
				
			|||||||
				  .WalkerLoadPageFaultM(WalkerLoadPageFaultM),  
 | 
									  .WalkerLoadPageFaultM(WalkerLoadPageFaultM),  
 | 
				
			||||||
				  .WalkerStorePageFaultM(WalkerStorePageFaultM));
 | 
									  .WalkerStorePageFaultM(WalkerStorePageFaultM));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  assign PageTableEntryM = PTE;
 | 
				
			||||||
 | 
					  assign PageTableEntryF = PTE;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  assign WalkerPageFaultM = WalkerStorePageFaultM | WalkerLoadPageFaultM;
 | 
					  assign WalkerPageFaultM = WalkerStorePageFaultM | WalkerLoadPageFaultM;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // arbiter between IEU and pagetablewalker
 | 
					  // arbiter between IEU and pagetablewalker
 | 
				
			||||||
 | 
				
			|||||||
@ -41,7 +41,7 @@ module pagetablewalker
 | 
				
			|||||||
   input logic [1:0]	    MemRWM,
 | 
					   input logic [1:0]	    MemRWM,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   // Outputs to the TLBs (PTEs to write)
 | 
					   // Outputs to the TLBs (PTEs to write)
 | 
				
			||||||
   output logic [`XLEN-1:0] PageTableEntryF, PageTableEntryM,
 | 
					   output logic [`XLEN-1:0] PTE, //PageTableEntryM,
 | 
				
			||||||
   output logic [1:0]	    PageType,
 | 
					   output logic [1:0]	    PageType,
 | 
				
			||||||
   output logic		    ITLBWriteF, DTLBWriteM,
 | 
					   output logic		    ITLBWriteF, DTLBWriteM,
 | 
				
			||||||
   output logic 	    SelPTW,
 | 
					   output logic 	    SelPTW,
 | 
				
			||||||
@ -120,8 +120,8 @@ module pagetablewalker
 | 
				
			|||||||
	  
 | 
						  
 | 
				
			||||||
      // Assign specific outputs to general outputs
 | 
					      // Assign specific outputs to general outputs
 | 
				
			||||||
	  // *** try to eliminate this duplication, but attempts caused MMU to hang
 | 
						  // *** try to eliminate this duplication, but attempts caused MMU to hang
 | 
				
			||||||
      assign PageTableEntryF = CurrentPTE;
 | 
					      assign PTE = CurrentPTE;
 | 
				
			||||||
      assign PageTableEntryM = CurrentPTE;
 | 
					    //  assign PageTableEntryM = CurrentPTE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	  assign SelPTW = (WalkerState != IDLE) & (WalkerState != FAULT);
 | 
						  assign SelPTW = (WalkerState != IDLE) & (WalkerState != FAULT);
 | 
				
			||||||
	  assign DTLBWriteM = (WalkerState == LEAF) & DTLBWalk;
 | 
						  assign DTLBWriteM = (WalkerState == LEAF) & DTLBWalk;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user