mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
changed U/C initialization to account for integer bit generation on divider stage for sqrt. Quick and dirty j1 logic fix
This commit is contained in:
parent
6c24afaf98
commit
c32173f163
@ -72,8 +72,8 @@ module fdivsqrtiter import cvw::*; #(parameter cvw_t P) (
|
||||
|
||||
// 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 otherwise
|
||||
assign initU = {SqrtE, {(P.DIVb){1'b0}}};
|
||||
assign initUM = {~SqrtE, {(P.DIVb){1'b0}}};
|
||||
assign initU ={(P.DIVb+1){1'b0}};
|
||||
assign initUM = {{1'b1}, {(P.DIVb){1'b0}}};
|
||||
mux2 #(P.DIVb+1) Umux(UNext[P.DIVCOPIES-1], initU, IFDivStartE, UMux);
|
||||
mux2 #(P.DIVb+1) UMmux(UMNext[P.DIVCOPIES-1], initUM, IFDivStartE, UMMux);
|
||||
flopen #(P.DIVb+1) UReg(clk, FDivBusyE, UMux, U[0]);
|
||||
@ -85,7 +85,7 @@ module fdivsqrtiter import cvw::*; #(parameter cvw_t P) (
|
||||
if(P.RADIX == 4) begin
|
||||
mux2 #(2) cuppermux4(2'b00, 2'b00, SqrtE, initCUpper); // *** Remove this soon
|
||||
end else begin
|
||||
mux2 #(2) cuppermux2(2'b10, 2'b11, SqrtE, initCUpper);
|
||||
mux2 #(2) cuppermux2(2'b10, 2'b10, SqrtE, initCUpper);
|
||||
end
|
||||
|
||||
assign initC = {initCUpper, {P.DIVb{1'b0}}};
|
||||
@ -110,7 +110,7 @@ module fdivsqrtiter import cvw::*; #(parameter cvw_t P) (
|
||||
end else begin: stage
|
||||
logic j1,j0;
|
||||
assign j0 = (i == 0 & ~C[0][P.DIVb+1]);
|
||||
assign j1 = (i == 1 & ~C[0][P.DIVb+1]);
|
||||
assign j1 = (i == 1 & ~C[0][P.DIVb+1]) || (i == 0 & (C[0][P.DIVb-1] ^ C[0][P.DIVb]));
|
||||
fdivsqrtstage4 #(P) fdivsqrtstage(.D, .DBar, .D2, .DBar2, .SqrtE, .j1, .j0,
|
||||
.WS(WS[i]), .WC(WC[i]), .WSNext(WSNext[i]), .WCNext(WCNext[i]),
|
||||
.C(C[i]), .U(U[i]), .UM(UM[i]), .CNext(C[i+1]), .UNext(UNext[i]), .UMNext(UMNext[i]), .un(un[i]));
|
||||
|
Loading…
Reference in New Issue
Block a user