mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Fixed BZero and initU/initUM muxes
This commit is contained in:
parent
e4c1bb2bff
commit
482caec42d
@ -80,7 +80,7 @@ module fdivsqrt(
|
|||||||
.XNaNE, .YNaNE, .MDUE, .n,
|
.XNaNE, .YNaNE, .MDUE, .n,
|
||||||
.XInfE, .YInfE, .WZero, .SpecialCaseM);
|
.XInfE, .YInfE, .WZero, .SpecialCaseM);
|
||||||
fdivsqrtiter fdivsqrtiter(
|
fdivsqrtiter fdivsqrtiter(
|
||||||
.clk, .Firstun, .D, .FirstU, .FirstUM, .FirstC, .SqrtE, // .SqrtM,
|
.clk, .Firstun, .D, .FirstU, .FirstUM, .FirstC, .MDUE, .SqrtE, // .SqrtM,
|
||||||
.X,.DPreproc, .FirstWS(WS), .FirstWC(WC),
|
.X,.DPreproc, .FirstWS(WS), .FirstWC(WC),
|
||||||
.IFDivStartE, .Xe(XeE), .Ye(YeE), .XZeroE, .YZeroE, .OTFCSwap,
|
.IFDivStartE, .Xe(XeE), .Ye(YeE), .XZeroE, .YZeroE, .OTFCSwap,
|
||||||
.FDivBusyE);
|
.FDivBusyE);
|
||||||
|
@ -36,7 +36,7 @@ module fdivsqrtiter(
|
|||||||
input logic FDivBusyE,
|
input logic FDivBusyE,
|
||||||
input logic [`NE-1:0] Xe, Ye,
|
input logic [`NE-1:0] Xe, Ye,
|
||||||
input logic XZeroE, YZeroE,
|
input logic XZeroE, YZeroE,
|
||||||
input logic SqrtE,
|
input logic SqrtE, MDUE,
|
||||||
// input logic SqrtM,
|
// input logic SqrtM,
|
||||||
input logic OTFCSwap,
|
input logic OTFCSwap,
|
||||||
input logic [`DIVb+3:0] X,
|
input logic [`DIVb+3:0] X,
|
||||||
@ -82,8 +82,8 @@ module fdivsqrtiter(
|
|||||||
|
|
||||||
// UOTFC Result U and UM registers/initialization mux
|
// UOTFC Result U and UM registers/initialization mux
|
||||||
// Initialize U to 1.0 and UM to 0 for square root; U to 0 and UM to -1 for division
|
// Initialize U to 1.0 and UM to 0 for square root; U to 0 and UM to -1 for division
|
||||||
assign initU = SqrtE ? {1'b1, {(`DIVb){1'b0}}} : 0;
|
assign initU = (SqrtE & ~(MDUE)) ? {1'b1, {(`DIVb){1'b0}}} : 0;
|
||||||
assign initUM = SqrtE ? 0 : {1'b1, {(`DIVb){1'b0}}};
|
assign initUM = (SqrtE & ~(MDUE)) ? 0 : {1'b1, {(`DIVb){1'b0}}};
|
||||||
mux2 #(`DIVb+1) Umux(UNext[`DIVCOPIES-1], initU, IFDivStartE, UMux);
|
mux2 #(`DIVb+1) Umux(UNext[`DIVCOPIES-1], initU, IFDivStartE, UMux);
|
||||||
mux2 #(`DIVb+1) UMmux(UMNext[`DIVCOPIES-1], initUM, IFDivStartE, UMMux);
|
mux2 #(`DIVb+1) UMmux(UMNext[`DIVCOPIES-1], initUM, IFDivStartE, UMMux);
|
||||||
flopen #(`DIVb+1) UReg(clk, IFDivStartE|FDivBusyE, UMux, U[0]);
|
flopen #(`DIVb+1) UReg(clk, IFDivStartE|FDivBusyE, UMux, U[0]);
|
||||||
|
@ -75,7 +75,7 @@ module fdivsqrtpreproc (
|
|||||||
|
|
||||||
assign PosA = As ? -A64 : A64;
|
assign PosA = As ? -A64 : A64;
|
||||||
assign PosB = Bs ? -B64 : B64;
|
assign PosB = Bs ? -B64 : B64;
|
||||||
assign BZero = |ForwardedSrcBE;
|
assign BZero = ~(|ForwardedSrcBE);
|
||||||
|
|
||||||
assign IFNormLenX = MDUE ? {PosA, {(`DIVb-`XLEN){1'b0}}} : {Xm, {(`DIVb-`NF-1){1'b0}}};
|
assign IFNormLenX = MDUE ? {PosA, {(`DIVb-`XLEN){1'b0}}} : {Xm, {(`DIVb-`NF-1){1'b0}}};
|
||||||
assign IFNormLenD = MDUE ? {PosB, {(`DIVb-`XLEN){1'b0}}} : {Ym, {(`DIVb-`NF-1){1'b0}}};
|
assign IFNormLenD = MDUE ? {PosB, {(`DIVb-`XLEN){1'b0}}} : {Ym, {(`DIVb-`NF-1){1'b0}}};
|
||||||
|
Loading…
Reference in New Issue
Block a user