diff --git a/src/fpu/divremsqrt/divremsqrt.sv b/src/fpu/divremsqrt/divremsqrt.sv index e45e383f9..bf5b1d782 100644 --- a/src/fpu/divremsqrt/divremsqrt.sv +++ b/src/fpu/divremsqrt/divremsqrt.sv @@ -73,7 +73,7 @@ logic [P.XLEN-1:0] AM; // Original Numerator for postprocessor logic ISpecialCaseE; // Integer div/remainder special cases - fdivsqrtpreproc fdivsqrtpreproc( // Preprocessor + fdivsqrtpreproc #(P) fdivsqrtpreproc( // Preprocessor .clk, .IFDivStartE, .Xm(XmE), .Ym(YmE), .Xe(XeE), .Ye(YeE), .FmtE, .SqrtE, .XZeroE, .Funct3E, .QeM, .X, .D, .CyclesE, // Int-specific @@ -81,18 +81,18 @@ .BZeroM, .nM, .mM, .AM, .IntDivM, .W64M, .NegQuotM, .ALTBM, .AsM); - fdivsqrtfsm fdivsqrtfsm( // FSM + fdivsqrtfsm #(P) fdivsqrtfsm( // FSM .clk, .reset, .XInfE, .YInfE, .XZeroE, .YZeroE, .XNaNE, .YNaNE, .FDivStartE, .XsE, .SqrtE, .WZeroE, .FlushE, .StallM, .FDivBusyE, .IFDivStartE, .FDivDoneE, .SpecialCaseM, .CyclesE, // Int-specific .IDivStartE, .ISpecialCaseE, .IntDivE); - fdivsqrtiter fdivsqrtiter( // CSA Iterator + fdivsqrtiter #(P) fdivsqrtiter( // CSA Iterator .clk, .IFDivStartE, .FDivBusyE, .SqrtE, .X, .D, .FirstU, .FirstUM, .FirstC, .Firstun, .FirstWS(WS), .FirstWC(WC)); - fdivsqrtpostproc fdivsqrtpostproc( // Postprocessor + fdivsqrtpostproc #(P) fdivsqrtpostproc( // Postprocessor .clk, .reset, .StallM, .WS, .WC, .D, .FirstU, .FirstUM, .FirstC, .SqrtE, .Firstun, .SqrtM, .SpecialCaseM, .QmM, .WZeroE, .DivStickyM, diff --git a/src/fpu/divremsqrt/divremsqrtpostprocess.sv b/src/fpu/divremsqrt/divremsqrtpostprocess.sv index 0307121c0..02981ea2d 100644 --- a/src/fpu/divremsqrt/divremsqrtpostprocess.sv +++ b/src/fpu/divremsqrt/divremsqrtpostprocess.sv @@ -122,16 +122,16 @@ module divremsqrtpostprocess import cvw::*; #(parameter cvw_t P) ( /*cvtshiftcalc cvtshiftcalc(.ToInt, .CvtCe, .CvtResSubnormUf, .Xm, .CvtLzcIn, .XZero, .IntToFp, .OutFmt, .CvtResUf, .CvtShiftIn);*/ - divshiftcalc divshiftcalc(.DivQe, .DivQm, .DivResSubnorm, .DivSubnormShiftPos, .DivShiftAmt, .DivShiftIn); + divshiftcalc #(P) divshiftcalc(.DivQe, .DivQm, .DivResSubnorm, .DivSubnormShiftPos, .DivShiftAmt, .DivShiftIn); assign ShiftAmt = DivShiftAmt; assign ShiftIn = DivShiftIn; // main normalization shift - normshift normshift (.ShiftIn, .ShiftAmt, .Shifted); + normshift #(P) normshift (.ShiftIn, .ShiftAmt, .Shifted); // correct for LZA/divsqrt error - divremsqrtshiftcorrection shiftcorrection(.DivResSubnorm, .DivSubnormShiftPos, .DivOp, .DivQe, .Qe, .Shifted, .Mf); + divremsqrtshiftcorrection #(P) shiftcorrection(.DivResSubnorm, .DivSubnormShiftPos, .DivOp, .DivQe, .Qe, .Shifted, .Mf); /////////////////////////////////////////////////////////////////////////////// // Rounding @@ -144,9 +144,9 @@ module divremsqrtpostprocess import cvw::*; #(parameter cvw_t P) ( // round to nearest max magnitude // calulate result sign used in rounding unit - divremsqrtroundsign roundsign( .DivOp, .Sqrt, .Xs, .Ys, .Ms); + divremsqrtroundsign #(P) roundsign( .DivOp, .Sqrt, .Xs, .Ys, .Ms); - divremsqrtround round(.OutFmt, .Frm, .Plus1, .Qe, + divremsqrtround #(P) round(.OutFmt, .Frm, .Plus1, .Qe, .Ms, .Mf, .DivSticky, .DivOp, .UfPlus1, .FullRe, .Rf, .Re, .Sticky, .Round, .Guard, .Me); /////////////////////////////////////////////////////////////////////////////// @@ -161,7 +161,7 @@ module divremsqrtpostprocess import cvw::*; #(parameter cvw_t P) ( // Flags /////////////////////////////////////////////////////////////////////////////// - divremsqrtflags flags(.XSNaN, .YSNaN, .XInf, .YInf, .InfIn, .XZero, .YZero, + divremsqrtflags #(P) flags(.XSNaN, .YSNaN, .XInf, .YInf, .InfIn, .XZero, .YZero, .Xs, .OutFmt, .Sqrt, .NaNIn, .Round, .DivByZero, .Guard, .Sticky, .UfPlus1,.DivOp, .FullRe, .Plus1, @@ -173,7 +173,7 @@ module divremsqrtpostprocess import cvw::*; #(parameter cvw_t P) ( //negateintres negateintres(.Xs, .Shifted, .Signed, .Int64, .Plus1, .CvtNegResMsbs, .CvtNegRes); - divremsqrtspecialcase specialcase(.Xs, .Xm, .Ym, .XZero, + divremsqrtspecialcase #(P) specialcase(.Xs, .Xm, .Ym, .XZero, .Frm, .OutFmt, .XNaN, .YNaN, .NaNIn, .Plus1, .Invalid, .Overflow, .InfIn, .XInf, .YInf, .DivOp, .DivByZero, .FullRe, .Rs, .Re, .Rf, .PostProcRes ); diff --git a/src/fpu/divremsqrt/drsu.sv b/src/fpu/divremsqrt/drsu.sv index fc04c0d31..a9fb58860 100644 --- a/src/fpu/divremsqrt/drsu.sv +++ b/src/fpu/divremsqrt/drsu.sv @@ -79,7 +79,7 @@ module drsu import cvw::*; #(parameter cvw_t P) ( logic [P.NE+1:0] QeM; logic DivStickyM; - divremsqrt divremsqrt(.clk, .reset, .XsE, .FmtE, .XmE, .YmE, + divremsqrt #(P) divremsqrt(.clk, .reset, .XsE, .FmtE, .XmE, .YmE, .XeE, .YeE, .SqrtE, .SqrtM, .XInfE, .YInfE, .XZeroE, .YZeroE, .XNaNE, .YNaNE, @@ -89,7 +89,7 @@ module drsu import cvw::*; #(parameter cvw_t P) ( .FlushE, .ForwardedSrcAE, .ForwardedSrcBE, .Funct3M, .Funct3E, .IntDivE, .FIntDivResultM, .FDivDoneE, .IFDivStartE); - divremsqrtpostprocess divremsqrtpostprocess(.Xs(XsE), .Ys(YsE), .Xm(XmE), .Ym(YmE), .Frm(Frm), .Fmt(FmtE), .OpCtrl, + divremsqrtpostprocess #(P) divremsqrtpostprocess(.Xs(XsE), .Ys(YsE), .Xm(XmE), .Ym(YmE), .Frm(Frm), .Fmt(FmtE), .OpCtrl, .XZero(XZeroE), .YZero(YZeroE), .XInf(XInfE), .YInf(YInfE), .XNaN(XNaNE), .YNaN(YNaNE), .XSNaN(XSNaNE), .YSNaN(YSNaNE), .PostProcSel,.DivSticky(DivStickyM), .DivQe(QeM), .DivQm(QmM), .PostProcRes(FResM), .PostProcFlg(FlgM)); endmodule