mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Forwarding logic factoring
This commit is contained in:
		
							parent
							
								
									10dfefa8ad
								
							
						
					
					
						commit
						23c6b6370f
					
				@ -36,6 +36,8 @@ module forward(
 | 
			
		||||
  output logic [1:0] ForwardAE, ForwardBE,
 | 
			
		||||
  output logic       FPUStallD, LoadStallD, MulDivStallD, CSRRdStallD
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
  logic MatchDE;
 | 
			
		||||
  
 | 
			
		||||
  always_comb begin
 | 
			
		||||
    ForwardAE = 2'b00;
 | 
			
		||||
@ -50,9 +52,10 @@ module forward(
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  // Stall on dependent operations that finish in Mem Stage and can't bypass in time
 | 
			
		||||
   assign FPUStallD = FWriteIntE & ((Rs1D == RdE) | (Rs2D == RdE)); 
 | 
			
		||||
   assign LoadStallD = (MemReadE|SCE) & ((Rs1D == RdE) | (Rs2D == RdE));  
 | 
			
		||||
   assign MulDivStallD = MulDivE & ((Rs1D == RdE) | (Rs2D == RdE)); 
 | 
			
		||||
   assign CSRRdStallD = CSRReadE & ((Rs1D == RdE) | (Rs2D == RdE));
 | 
			
		||||
  assign MatchDE = (Rs1D == RdE) | (Rs2D == RdE); // Decode-stage instruction source depends on result from execute stage instruction
 | 
			
		||||
  assign FPUStallD = FWriteIntE & MatchDE; 
 | 
			
		||||
  assign LoadStallD = (MemReadE|SCE) & MatchDE;  
 | 
			
		||||
  assign MulDivStallD = MulDivE & MatchDE; 
 | 
			
		||||
  assign CSRRdStallD = CSRReadE & MatchDE;
 | 
			
		||||
 | 
			
		||||
endmodule
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user