mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Fixed formatting
This commit is contained in:
		
							parent
							
								
									2194f7d604
								
							
						
					
					
						commit
						811e2fd94c
					
				| @ -29,41 +29,41 @@ | ||||
| module shiftcorrection import cvw::*;  #(parameter cvw_t P) ( | ||||
|   input logic  [P.NORMSHIFTSZ-1:0] Shifted,                // the shifted sum before LZA correction
 | ||||
|   // divsqrt
 | ||||
|   input logic                     DivOp,                  // is it a divsqrt opperation
 | ||||
|   input logic                     DivResSubnorm,          // is the divsqrt result subnormal
 | ||||
|   input logic                      DivOp,                  // is it a divsqrt opperation
 | ||||
|   input logic                      DivResSubnorm,          // is the divsqrt result subnormal
 | ||||
|   input logic  [P.NE+1:0]          DivQe,                  // the divsqrt result's exponent
 | ||||
|   input logic                     DivSubnormShiftPos,     // is the subnorm divider shift amount positive (ie not underflowed)
 | ||||
|   input logic                      DivSubnormShiftPos,     // is the subnorm divider shift amount positive (ie not underflowed)
 | ||||
|   //fma
 | ||||
|   input logic                     FmaOp,                  // is it an fma opperation
 | ||||
|   input logic                      FmaOp,                  // is it an fma opperation
 | ||||
|   input logic  [P.NE+1:0]          NormSumExp,             // exponent of the normalized sum not taking into account Subnormal or zero results
 | ||||
|   input logic                     FmaPreResultSubnorm,    // is the result subnormal - calculated before LZA corection
 | ||||
|   input logic                     FmaSZero, | ||||
|   input logic                      FmaPreResultSubnorm,    // is the result subnormal - calculated before LZA corection
 | ||||
|   input logic                      FmaSZero, | ||||
|   // output
 | ||||
|   output logic [P.NE+1:0]          FmaMe,                  // exponent of the normalized sum
 | ||||
|   output logic [P.CORRSHIFTSZ-1:0] Mf,                     // the shifted sum before LZA correction
 | ||||
|   output logic [P.NE+1:0]          Qe                      // corrected exponent for divider
 | ||||
| ); | ||||
| 
 | ||||
|   logic [3*P.NF+3:0]           CorrSumShifted;             // the shifted sum after LZA correction
 | ||||
|   logic [P.CORRSHIFTSZ-1:0]    CorrQm0, CorrQm1;           // portions of Shifted to select for CorrQmShifted
 | ||||
|   logic [P.CORRSHIFTSZ-1:0]    CorrQmShifted;              // the shifted divsqrt result after one bit shift
 | ||||
|   logic                       ResSubnorm;                 // is the result Subnormal
 | ||||
|   logic                       LZAPlus1;                   // add one or two to the sum's exponent due to LZA correction
 | ||||
|   logic                       LeftShiftQm;                // should the divsqrt result be shifted one to the left
 | ||||
|   logic [3*P.NF+3:0]               CorrSumShifted;         // the shifted sum after LZA correction
 | ||||
|   logic [P.CORRSHIFTSZ-1:0]        CorrQm0, CorrQm1;       // portions of Shifted to select for CorrQmShifted
 | ||||
|   logic [P.CORRSHIFTSZ-1:0]        CorrQmShifted;          // the shifted divsqrt result after one bit shift
 | ||||
|   logic                            ResSubnorm;             // is the result Subnormal
 | ||||
|   logic                            LZAPlus1;               // add one or two to the sum's exponent due to LZA correction
 | ||||
|   logic                            LeftShiftQm;            // should the divsqrt result be shifted one to the left
 | ||||
| 
 | ||||
|   // LZA correction
 | ||||
|   assign LZAPlus1 = Shifted[P.NORMSHIFTSZ-1]; | ||||
| 
 | ||||
|   // correct the shifting error caused by the LZA
 | ||||
|   //  - the only possible mantissa for a plus two is all zeroes 
 | ||||
|   //      - a one has to propigate all the way through a sum. so we can leave the bottom statement alone
 | ||||
|   //  - a one has to propigate all the way through a sum. so we can leave the bottom statement alone
 | ||||
|   mux2 #(P.NORMSHIFTSZ-2) lzacorrmux(Shifted[P.NORMSHIFTSZ-3:0], Shifted[P.NORMSHIFTSZ-2:1], LZAPlus1, CorrSumShifted); | ||||
| 
 | ||||
|   // correct the shifting of the divsqrt caused by producing a result in (2, .5] range
 | ||||
|   //    condition: if the msb is 1 or the exponent was one, but the shifted quotent was < 1 (Subnorm)
 | ||||
|   // condition: if the msb is 1 or the exponent was one, but the shifted quotent was < 1 (Subnorm)
 | ||||
|   assign LeftShiftQm = (LZAPlus1|(DivQe==1&~LZAPlus1)); | ||||
|   assign CorrQm0 = Shifted[P.NORMSHIFTSZ-3:P.NORMSHIFTSZ-P.CORRSHIFTSZ-2]; | ||||
|   assign CorrQm1 = Shifted[P.NORMSHIFTSZ-2:P.NORMSHIFTSZ-P.CORRSHIFTSZ-1]; | ||||
|   assign CorrQm0     = Shifted[P.NORMSHIFTSZ-3:P.NORMSHIFTSZ-P.CORRSHIFTSZ-2]; | ||||
|   assign CorrQm1     = Shifted[P.NORMSHIFTSZ-2:P.NORMSHIFTSZ-P.CORRSHIFTSZ-1]; | ||||
|   mux2 #(P.CORRSHIFTSZ) divcorrmux(CorrQm0, CorrQm1, LeftShiftQm, CorrQmShifted); | ||||
|    | ||||
|   // if the result of the divider was calculated to be subnormal, then the result was correctly normalized, so select the top shifted bits
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user