mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Removed unnecessary generate inside hptw
This commit is contained in:
		
							parent
							
								
									8225f85b86
								
							
						
					
					
						commit
						347896064d
					
				@ -268,7 +268,6 @@ module lsu
 | 
			
		||||
  endgenerate
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  // conditional
 | 
			
		||||
  // 1. ram // controlled by `MEM_DTIM
 | 
			
		||||
  // 2. cache `MEM_DCACHE
 | 
			
		||||
 | 
			
		||||
@ -54,8 +54,6 @@ module hptw
 | 
			
		||||
					L3_ADR, L3_RD, 
 | 
			
		||||
					LEAF, IDLE} statetype; // *** placed outside generate statement to remove synthesis errors
 | 
			
		||||
 | 
			
		||||
  generate
 | 
			
		||||
    if (`MEM_VIRTMEM) begin:virtmem
 | 
			
		||||
	logic			    DTLBWalk; // register TLBs translation miss requests
 | 
			
		||||
	logic [`PPN_BITS-1:0]	    BasePageTablePPN;
 | 
			
		||||
	logic [`PPN_BITS-1:0]	    CurrentPPN;
 | 
			
		||||
@ -164,34 +162,34 @@ module hptw
 | 
			
		||||
	L3_ADR: 			NextWalkerState = L3_RD; // first access in SV48
 | 
			
		||||
	L3_RD: if (DCacheStall) NextWalkerState = L3_RD;
 | 
			
		||||
				else 			NextWalkerState = L2_ADR;
 | 
			
		||||
//	    LEVEL3: if (ValidLeafPTE && ~Misaligned) NextWalkerState = LEAF;
 | 
			
		||||
//		  		else if (ValidNonLeafPTE) NextWalkerState = L2_ADR;
 | 
			
		||||
//		 		else 				NextWalkerState = FAULT;
 | 
			
		||||
	//	    LEVEL3: if (ValidLeafPTE && ~Misaligned) NextWalkerState = LEAF;
 | 
			
		||||
	//		  		else if (ValidNonLeafPTE) NextWalkerState = L2_ADR;
 | 
			
		||||
	//		 		else 				NextWalkerState = FAULT;
 | 
			
		||||
	L2_ADR: if (InitialWalkerState == L2_ADR) NextWalkerState = L2_RD; // first access in SV39
 | 
			
		||||
			else if (ValidLeafPTE && ~Misaligned) NextWalkerState = LEAF; // could shortcut this by a cyle for all Lx_ADR superpages
 | 
			
		||||
			else if (ValidNonLeafPTE) NextWalkerState = L2_RD;
 | 
			
		||||
			else 				NextWalkerState = LEAF;
 | 
			
		||||
	L2_RD: if (DCacheStall) NextWalkerState = L2_RD;
 | 
			
		||||
				else 			NextWalkerState = L1_ADR;
 | 
			
		||||
//	    LEVEL2: if (ValidLeafPTE && ~Misaligned) NextWalkerState = LEAF;
 | 
			
		||||
//				else if (ValidNonLeafPTE) NextWalkerState = L1_ADR;
 | 
			
		||||
//				else 				NextWalkerState = FAULT;
 | 
			
		||||
	//	    LEVEL2: if (ValidLeafPTE && ~Misaligned) NextWalkerState = LEAF;
 | 
			
		||||
	//				else if (ValidNonLeafPTE) NextWalkerState = L1_ADR;
 | 
			
		||||
	//				else 				NextWalkerState = FAULT;
 | 
			
		||||
	L1_ADR: if (InitialWalkerState == L1_ADR) NextWalkerState = L1_RD; // first access in SV32
 | 
			
		||||
			else if (ValidLeafPTE && ~Misaligned) NextWalkerState = LEAF; // could shortcut this by a cyle for all Lx_ADR superpages
 | 
			
		||||
			else if (ValidNonLeafPTE) NextWalkerState = L1_RD;
 | 
			
		||||
			else 				NextWalkerState = LEAF;	
 | 
			
		||||
	L1_RD: if (DCacheStall) NextWalkerState = L1_RD;
 | 
			
		||||
				else 			NextWalkerState = L0_ADR;
 | 
			
		||||
//	    LEVEL1: if (ValidLeafPTE && ~Misaligned) NextWalkerState = LEAF;
 | 
			
		||||
//	      		else if (ValidNonLeafPTE) NextWalkerState = L0_ADR;
 | 
			
		||||
//				else 				NextWalkerState = FAULT;
 | 
			
		||||
	//	    LEVEL1: if (ValidLeafPTE && ~Misaligned) NextWalkerState = LEAF;
 | 
			
		||||
	//	      		else if (ValidNonLeafPTE) NextWalkerState = L0_ADR;
 | 
			
		||||
	//				else 				NextWalkerState = FAULT;
 | 
			
		||||
	L0_ADR: if (ValidLeafPTE && ~Misaligned) NextWalkerState = LEAF; // could shortcut this by a cyle for all Lx_ADR superpages
 | 
			
		||||
			else if (ValidNonLeafPTE) NextWalkerState = L0_RD;
 | 
			
		||||
			else 				NextWalkerState = LEAF;
 | 
			
		||||
	L0_RD: if (DCacheStall) NextWalkerState = L0_RD;
 | 
			
		||||
				else 			NextWalkerState = LEAF;
 | 
			
		||||
//	    LEVEL0: if (ValidLeafPTE) 	NextWalkerState = LEAF;
 | 
			
		||||
//				else 				NextWalkerState = FAULT;
 | 
			
		||||
	//	    LEVEL0: if (ValidLeafPTE) 	NextWalkerState = LEAF;
 | 
			
		||||
	//				else 				NextWalkerState = FAULT;
 | 
			
		||||
	LEAF:                       NextWalkerState = IDLE; // updates TLB
 | 
			
		||||
	default: begin
 | 
			
		||||
		// synthesis translate_off
 | 
			
		||||
@ -200,10 +198,4 @@ module hptw
 | 
			
		||||
		NextWalkerState = IDLE; // should never be reached
 | 
			
		||||
	end
 | 
			
		||||
	endcase
 | 
			
		||||
    end else begin // No Virtual memory supported; tie HPTW outputs to 0
 | 
			
		||||
      assign HPTWRead = 0;
 | 
			
		||||
      assign HPTWAdr = 0;
 | 
			
		||||
	  assign HPTWSize = 3'b000;
 | 
			
		||||
    end
 | 
			
		||||
  endgenerate
 | 
			
		||||
endmodule
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user