Begin commenting divsqrt

This commit is contained in:
Cedar Turek 2022-12-30 10:43:02 -08:00
parent aca6f0d4e6
commit 3115df9380

View File

@ -56,6 +56,8 @@ module fdivsqrt(
// output logic [`XLEN-1:0] RemM, // output logic [`XLEN-1:0] RemM,
); );
// Floating-point division and square root module, with optional integer division and remainder
logic [`DIVb+3:0] WS, WC; logic [`DIVb+3:0] WS, WC;
logic [`DIVb+3:0] X; logic [`DIVb+3:0] X;
logic [`DIVb-1:0] D; logic [`DIVb-1:0] D;
@ -63,29 +65,43 @@ module fdivsqrt(
logic [`DIVb:0] FirstU, FirstUM; logic [`DIVb:0] FirstU, FirstUM;
logic [`DIVb+1:0] FirstC; logic [`DIVb+1:0] FirstC;
logic Firstun; logic Firstun;
logic WZeroE, AZeroM, BZeroM, AZeroE, BZeroE; logic WZeroE;
logic SpecialCaseM, MDUM; logic SpecialCaseM;
logic DivStartE;
// Integer div/rem signals
logic AZeroM, BZeroM, AZeroE, BZeroE, MDUM;
logic [`DIVBLEN:0] nE, nM, mM; logic [`DIVBLEN:0] nE, nM, mM;
logic NegQuotM, ALTBM, AsM, W64M; logic NegQuotM, ALTBM, AsM, W64M;
logic DivStartE;
logic [`XLEN-1:0] AM; logic [`XLEN-1:0] AM;
fdivsqrtpreproc fdivsqrtpreproc( fdivsqrtpreproc fdivsqrtpreproc( // Preprocessor
.clk, .IFDivStartE, .Xm(XmE), .QeM, .Xe(XeE), .Fmt(FmtE), .Ye(YeE), // Inputs
.Sqrt(SqrtE), .Ym(YmE), .XZeroE, .X, .DPreproc, .AM, .MDUM, .W64M, .clk, .IFDivStartE, .Xm(XmE), .Ym(YmE), .Xe(XeE), .Ye(YeE),
.nE, .nM, .mM, .NegQuotM, .ALTBM, .AZeroM, .BZeroM, .AZeroE, .BZeroE, .AsM, .Fmt(FmtE), .Sqrt(SqrtE), .XZeroE, .Funct3E,
.ForwardedSrcAE, .ForwardedSrcBE, .Funct3E, .MDUE, .W64E); // Int-specific Inputs
fdivsqrtfsm fdivsqrtfsm( .ForwardedSrcAE, .ForwardedSrcBE, .MDUE, .W64E,
.clk, .reset, .FmtE, .XsE, .SqrtE, .nE, // Outputs
.FDivBusyE, .FDivStartE, .IDivStartE, .IFDivStartE, .FDivDoneE, .StallM, .FlushE, .QeM, .X, .DPreproc,
.XZeroE, .YZeroE, .AZeroE, .BZeroE, // Int-specific Outputs
.XNaNE, .YNaNE, .MDUE, .AZeroE, .BZeroE, .nE,
.XInfE, .YInfE, .WZeroE, .SpecialCaseM); .AZeroM, .BZeroM, .nM, .mM, .AM,
fdivsqrtiter fdivsqrtiter( .MDUM, .W64M, .NegQuotM, .ALTBM, .AsM);
fdivsqrtfsm fdivsqrtfsm( // FSM
// Inputs
.clk, .reset, .FmtE, .XInfE, .YInfE,
.XZeroE, .YZeroE, .XNaNE, .YNaNE,
.FDivStartE, .XsE, .SqrtE, .WZeroE,
.FlushE, .StallM,
// Int-specific Inputs
.IDivStartE, .AZeroE, .BZeroE, .nE, .MDUE,
// Outputs
.FDivBusyE, .IFDivStartE, .FDivDoneE, .SpecialCaseM);
fdivsqrtiter fdivsqrtiter( // CSA Iterator
.clk, .Firstun, .D, .FirstU, .FirstUM, .FirstC, .SqrtE, .clk, .Firstun, .D, .FirstU, .FirstUM, .FirstC, .SqrtE,
.X,.DPreproc, .FirstWS(WS), .FirstWC(WC), .X,.DPreproc, .FirstWS(WS), .FirstWC(WC),
.IFDivStartE, .FDivBusyE); .IFDivStartE, .FDivBusyE);
fdivsqrtpostproc fdivsqrtpostproc( fdivsqrtpostproc fdivsqrtpostproc( // Postprocessor
.clk, .reset, .StallM, .clk, .reset, .StallM,
.WS, .WC, .D, .FirstU, .FirstUM, .FirstC, .SqrtE, .Firstun, .WS, .WC, .D, .FirstU, .FirstUM, .FirstC, .SqrtE, .Firstun,
.SqrtM, .SpecialCaseM, .RemOpM(Funct3M[1]), .AM, .SqrtM, .SpecialCaseM, .RemOpM(Funct3M[1]), .AM,