diff --git a/src/fpu/fdivsqrt/fdivsqrtcycles.sv b/src/fpu/fdivsqrt/fdivsqrtcycles.sv index 20fb16f62..6043ebb4a 100644 --- a/src/fpu/fdivsqrt/fdivsqrtcycles.sv +++ b/src/fpu/fdivsqrt/fdivsqrtcycles.sv @@ -30,7 +30,7 @@ module fdivsqrtcycles import cvw::*; #(parameter cvw_t P) ( input logic [P.FMTBITS-1:0] FmtE, input logic SqrtE, input logic IntDivE, - input logic [P.DIVBLEN-1:0] IntResultBitsE, + input logic [P.DIVBLEN-1:0] IntResultBitsE, output logic [P.DURLEN-1:0] CyclesE ); diff --git a/src/fpu/fdivsqrt/fdivsqrtexpcalc.sv b/src/fpu/fdivsqrt/fdivsqrtexpcalc.sv index a1dd82e35..cf243a84b 100644 --- a/src/fpu/fdivsqrt/fdivsqrtexpcalc.sv +++ b/src/fpu/fdivsqrt/fdivsqrtexpcalc.sv @@ -28,17 +28,19 @@ module fdivsqrtexpcalc import cvw::*; #(parameter cvw_t P) ( input logic [P.FMTBITS-1:0] Fmt, - input logic [P.NE-1:0] Xe, Ye, + input logic [P.NE-1:0] Xe, Ye, // input exponents input logic Sqrt, input logic XZero, - input logic [P.DIVBLEN-1:0] ell, m, - output logic [P.NE+1:0] Ue + input logic [P.DIVBLEN-1:0] ell, m, // number of leading 0s in Xe and Ye + output logic [P.NE+1:0] Ue // result exponent ); logic [P.NE-2:0] Bias; logic [P.NE+1:0] SXExp; logic [P.NE+1:0] SExp; logic [P.NE+1:0] DExp; + + // Determine exponent bias according to the format if (P.FPSIZES == 1) begin assign Bias = (P.NE-1)'(P.BIAS); diff --git a/src/fpu/fdivsqrt/fdivsqrtfgen2.sv b/src/fpu/fdivsqrt/fdivsqrtfgen2.sv index 990e3f19f..cf398f570 100644 --- a/src/fpu/fdivsqrt/fdivsqrtfgen2.sv +++ b/src/fpu/fdivsqrt/fdivsqrtfgen2.sv @@ -28,12 +28,12 @@ module fdivsqrtfgen2 import cvw::*; #(parameter cvw_t P) ( input logic up, uz, - input logic [P.DIVb+3:0] C, U, UM, - output logic [P.DIVb+3:0] F + input logic [P.DIVb+3:0] C, U, UM, // Q4.DIVb (extended from shorter forms) + output logic [P.DIVb+3:0] F // Q4.DIVb ); - logic [P.DIVb+3:0] FP, FN, FZ; + logic [P.DIVb+3:0] FP, FN, FZ; // Q4.DIVb - // Generate for both positive and negative bits + // Generate for both positive and negative quotient digits assign FP = ~(U << 1) & C; assign FN = (UM << 1) | (C & ~(C << 2)); assign FZ = '0; diff --git a/src/fpu/fdivsqrt/fdivsqrtfgen4.sv b/src/fpu/fdivsqrt/fdivsqrtfgen4.sv index fc648f5bd..e2cec1ab4 100644 --- a/src/fpu/fdivsqrt/fdivsqrtfgen4.sv +++ b/src/fpu/fdivsqrt/fdivsqrtfgen4.sv @@ -27,14 +27,14 @@ //////////////////////////////////////////////////////////////////////////////////////////////// module fdivsqrtfgen4 import cvw::*; #(parameter cvw_t P) ( - input logic [3:0] udigit, - input logic [P.DIVb+3:0] C, U, UM, - output logic [P.DIVb+3:0] F + input logic [3:0] udigit, // {2, 1, -1, -2}; all cold for zero + input logic [P.DIVb+3:0] C, U, UM, // Q4.DIVb (extended from shorter forms) + output logic [P.DIVb+3:0] F // Q4.DIVb ); - logic [P.DIVb+3:0] F2, F1, F0, FN1, FN2; + logic [P.DIVb+3:0] F2, F1, F0, FN1, FN2; // Q4.DIVb - // Generate for both positive and negative bits - assign F2 = (~U << 2) & (C << 2); + // Generate for both positive and negative digits + assign F2 = (~U << 2) & (C << 2); // assign F1 = ~(U << 1) & C; assign F0 = '0; assign FN1 = (UM << 1) | (C & ~(C << 3)); diff --git a/src/fpu/fdivsqrt/fdivsqrtfsm.sv b/src/fpu/fdivsqrt/fdivsqrtfsm.sv index 0e2cba90e..862d53b25 100644 --- a/src/fpu/fdivsqrt/fdivsqrtfsm.sv +++ b/src/fpu/fdivsqrt/fdivsqrtfsm.sv @@ -57,7 +57,7 @@ module fdivsqrtfsm import cvw::*; #(parameter cvw_t P) ( // terminate immediately on special cases assign FSpecialCaseE = XZeroE | XInfE | XNaNE | (XsE&SqrtE) | (YZeroE | YInfE | YNaNE)&~SqrtE; if (P.IDIV_ON_FPU) assign SpecialCaseE = IntDivE ? ISpecialCaseE : FSpecialCaseE; - else assign SpecialCaseE = FSpecialCaseE; + else assign SpecialCaseE = FSpecialCaseE; flopenr #(1) SpecialCaseReg(clk, reset, IFDivStartE, SpecialCaseE, SpecialCaseM); // save SpecialCase for checking in fdivsqrtpostproc always_ff @(posedge clk) begin diff --git a/src/fpu/fdivsqrt/fdivsqrtiter.sv b/src/fpu/fdivsqrt/fdivsqrtiter.sv index 0f66982ab..863d94837 100644 --- a/src/fpu/fdivsqrt/fdivsqrtiter.sv +++ b/src/fpu/fdivsqrt/fdivsqrtiter.sv @@ -104,14 +104,14 @@ module fdivsqrtiter import cvw::*; #(parameter cvw_t P) ( for(i=0; $unsigned(i)