mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Moved IDIV for postproc into generate block
This commit is contained in:
		
							parent
							
								
									d59878a886
								
							
						
					
					
						commit
						a832605658
					
				@ -98,11 +98,14 @@ module fdivsqrtpostproc(
 | 
			
		||||
 | 
			
		||||
  // Determine if sticky bit is negative  // *** look for ways to optimize this.  Shift shouldn't be needed.
 | 
			
		||||
  assign Sum = WC + WS;
 | 
			
		||||
  assign W = $signed(Sum) >>> `LOGR;
 | 
			
		||||
  assign NegStickyM = W[`DIVb+3];
 | 
			
		||||
  assign DM = {4'b0001, D};
 | 
			
		||||
  assign NegStickyM = Sum[`DIVb+3];
 | 
			
		||||
  
 | 
			
		||||
  // *** put conditionals on integer division hardware, move to its own module
 | 
			
		||||
  assign PreQmM = NegStickyM ? FirstUM : FirstU; // Select U or U-1 depending on negative sticky bit
 | 
			
		||||
  assign QmM = SqrtM ? (PreQmM << 1) : PreQmM;
 | 
			
		||||
 | 
			
		||||
  if (`IDIV_ON_FPU) begin
 | 
			
		||||
    assign W = $signed(Sum) >>> `LOGR;
 | 
			
		||||
    assign DM = {4'b0001, D};
 | 
			
		||||
 | 
			
		||||
    // Integer division: sign handling for div and rem
 | 
			
		||||
    always_comb 
 | 
			
		||||
@ -170,7 +173,5 @@ module fdivsqrtpostproc(
 | 
			
		||||
    assign SpecialFPIntDivResultM = BZeroM ? (RemOpM ? ForwardedSrcAM : {(`XLEN){1'b1}}) : PreFPIntDivResultM[`XLEN-1:0]; // special cases
 | 
			
		||||
    // *** conditional on RV64
 | 
			
		||||
    assign FPIntDivResultM = (W64M ? {{(`XLEN-32){SpecialFPIntDivResultM[31]}}, SpecialFPIntDivResultM[31:0]} : SpecialFPIntDivResultM[`XLEN-1:0]); // Sign extending in case of W64
 | 
			
		||||
 
 | 
			
		||||
  assign PreQmM = NegStickyM ? FirstUM : FirstU; // Select U or U-1 depending on negative sticky bit
 | 
			
		||||
  assign QmM = SqrtM ? (PreQmM << 1) : PreQmM;
 | 
			
		||||
  end
 | 
			
		||||
endmodule
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user