mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
remw works
This commit is contained in:
parent
2a68e4a065
commit
05c2bd88df
@ -715,6 +715,24 @@ module testbenchfp;
|
|||||||
Unit = {Unit, `INTDIVUNIT};
|
Unit = {Unit, `INTDIVUNIT};
|
||||||
Fmt = {Fmt, 2'b10};
|
Fmt = {Fmt, 2'b10};
|
||||||
end
|
end
|
||||||
|
if (TEST === "intremw") begin // if unified div sqrt is being tested
|
||||||
|
Tests = {Tests, intremw};
|
||||||
|
OpCtrl = {OpCtrl, `INTREMW_OPCTRL};
|
||||||
|
WriteInt = {WriteInt, 1'b0};
|
||||||
|
Unit = {Unit, `INTDIVUNIT};
|
||||||
|
Fmt = {Fmt, 2'b10};
|
||||||
|
end
|
||||||
|
//TODO:REMUWm DIVW, DIVUW
|
||||||
|
if (TEST === "intremuw") begin // if unified div sqrt is being tested
|
||||||
|
Tests = {Tests, intremw};
|
||||||
|
OpCtrl = {OpCtrl, `INTREMW_OPCTRL};
|
||||||
|
WriteInt = {WriteInt, 1'b0};
|
||||||
|
Unit = {Unit, `INTDIVUNIT};
|
||||||
|
Fmt = {Fmt, 2'b10};
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
// check if nothing is being tested
|
// check if nothing is being tested
|
||||||
@ -833,7 +851,7 @@ module testbenchfp;
|
|||||||
.Funct3E(Funct3E), .IntDivE(1'b0), .FIntDivResultM(FIntDivResultM),
|
.Funct3E(Funct3E), .IntDivE(1'b0), .FIntDivResultM(FIntDivResultM),
|
||||||
.FDivDoneE(FDivDoneE), .IFDivStartE(IFDivStartE));
|
.FDivDoneE(FDivDoneE), .IFDivStartE(IFDivStartE));
|
||||||
end
|
end
|
||||||
if (TEST === "divremsqrt" | TEST === "divremsqrttest" | TEST === "customdiv" | TEST === "intdiv" | TEST === "intrem" | TEST === "intdivu" | TEST ==="intremu") begin: divremsqrt
|
if (TEST === "divremsqrt" | TEST === "divremsqrttest" | TEST === "customdiv" | TEST === "intdiv" | TEST === "intrem" | TEST === "intdivu" | TEST ==="intremu" | TEST ==="intremw" | TEST ==="intremuw" | TEST ==="intdivw" | TEST ==="intdivuw") begin: divremsqrt
|
||||||
drsu #(P) drsu(.clk, .reset, .XsE(Xs), .YsE(Ys), .FmtE(ModFmt), .XmE(Xm), .YmE(Ym),
|
drsu #(P) drsu(.clk, .reset, .XsE(Xs), .YsE(Ys), .FmtE(ModFmt), .XmE(Xm), .YmE(Ym),
|
||||||
.XeE(Xe), .YeE(Ye), .SqrtE(TEST === "sqrt"), .SqrtM(TEST === "sqrt"),
|
.XeE(Xe), .YeE(Ye), .SqrtE(TEST === "sqrt"), .SqrtM(TEST === "sqrt"),
|
||||||
.XInfE(XInf), .YInfE(YInf), .XZeroE(XZero), .YZeroE(YZero),
|
.XInfE(XInf), .YInfE(YInf), .XZeroE(XZero), .YZeroE(YZero),
|
||||||
@ -1066,7 +1084,7 @@ module testbenchfp;
|
|||||||
// wait till the division result is done or one extra cylcle for early termination (to simulate the EM pipline stage)
|
// wait till the division result is done or one extra cylcle for early termination (to simulate the EM pipline stage)
|
||||||
assign ResMatch = ((Res === Ans) | NaNGood | (NaNGood === 1'bx));
|
assign ResMatch = ((Res === Ans) | NaNGood | (NaNGood === 1'bx));
|
||||||
assign FlagMatch = ((ResFlg === AnsFlg) | (AnsFlg === 5'bx));
|
assign FlagMatch = ((ResFlg === AnsFlg) | (AnsFlg === 5'bx));
|
||||||
assign divsqrtop = (OpCtrlVal == `SQRT_OPCTRL) | (OpCtrlVal == `DIV_OPCTRL) | (OpCtrlVal == `INTREM_OPCTRL) | (OpCtrlVal == `INTDIV_OPCTRL) | (OpCtrlVal == `INTDIVU_OPCTRL) | (OpCtrlVal ==`INTREMU_OPCTRL);
|
assign divsqrtop = (OpCtrlVal == `SQRT_OPCTRL) | (OpCtrlVal == `DIV_OPCTRL) | (OpCtrlVal == `INTREM_OPCTRL) | (OpCtrlVal == `INTDIV_OPCTRL) | (OpCtrlVal == `INTDIVU_OPCTRL) | (OpCtrlVal ==`INTREMU_OPCTRL) | (OpCtrlVal ==`INTREMW_OPCTRL);
|
||||||
assign FMAop = (OpCtrlVal == `FMAUNIT);
|
assign FMAop = (OpCtrlVal == `FMAUNIT);
|
||||||
assign DivDone = OldFDivBusyE & ~FDivBusyE;
|
assign DivDone = OldFDivBusyE & ~FDivBusyE;
|
||||||
|
|
||||||
@ -1383,9 +1401,11 @@ module readvectors (
|
|||||||
IDivStart = 1'b1;
|
IDivStart = 1'b1;
|
||||||
IntDivE = 1'b1;
|
IntDivE = 1'b1;
|
||||||
Funct3E = 3'b101;
|
Funct3E = 3'b101;
|
||||||
|
W64 = 1'b1;
|
||||||
#10 // one clk cycle
|
#10 // one clk cycle
|
||||||
IDivStart = 1'b0;
|
IDivStart = 1'b0;
|
||||||
IntDivE = 1'b0;
|
IntDivE = 1'b0;
|
||||||
|
W64 = 1'b1;
|
||||||
end
|
end
|
||||||
else if (OpCtrl == `INTREMW_OPCTRL) begin
|
else if (OpCtrl == `INTREMW_OPCTRL) begin
|
||||||
X = {P.FLEN{1'bx}};
|
X = {P.FLEN{1'bx}};
|
||||||
|
@ -612,5 +612,23 @@ string intdivu[] = '{
|
|||||||
"cvw_64_divu-01.tv"
|
"cvw_64_divu-01.tv"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
string intremw[] = '{
|
||||||
|
"cvw_64_remw-01.tv"
|
||||||
|
};
|
||||||
|
|
||||||
|
string intremuw[] = '{
|
||||||
|
"cvw_64_remuw-01.tv"
|
||||||
|
};
|
||||||
|
|
||||||
|
string intdivuw[] = '{
|
||||||
|
"cvw_64_divuw-01.tv"
|
||||||
|
};
|
||||||
|
|
||||||
|
string intdivw[] = '{
|
||||||
|
"cvw_64_divw-01.tv"
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user