mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Update some spacing to make it look better
This commit is contained in:
parent
f526519573
commit
3bd5bbce48
@ -28,20 +28,20 @@
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
module fcvt import cvw::*; #(parameter cvw_t P) (
|
module fcvt import cvw::*; #(parameter cvw_t P) (
|
||||||
input logic Xs, // input's sign
|
input logic Xs, // input's sign
|
||||||
input logic [P.NE-1:0] Xe, // input's exponent
|
input logic [P.NE-1:0] Xe, // input's exponent
|
||||||
input logic [P.NF:0] Xm, // input's fraction
|
input logic [P.NF:0] Xm, // input's fraction
|
||||||
input logic [P.XLEN-1:0] Int, // integer input - from IEU
|
input logic [P.XLEN-1:0] Int, // integer input - from IEU
|
||||||
input logic [2:0] OpCtrl, // choose which opperation (look below for values)
|
input logic [2:0] OpCtrl, // choose which opperation (look below for values)
|
||||||
input logic ToInt, // is fp->int (since it's writting to the integer register)
|
input logic ToInt, // is fp->int (since it's writting to the integer register)
|
||||||
input logic XZero, // is the input zero
|
input logic XZero, // is the input zero
|
||||||
input logic [P.FMTBITS-1:0] Fmt, // the input's precision (11=quad 01=double 00=single 10=half)
|
input logic [P.FMTBITS-1:0] Fmt, // the input's precision (11=quad 01=double 00=single 10=half)
|
||||||
output logic [P.NE:0] Ce, // the calculated expoent
|
output logic [P.NE:0] Ce, // the calculated expoent
|
||||||
output logic [P.LOGCVTLEN-1:0] ShiftAmt, // how much to shift by
|
output logic [P.LOGCVTLEN-1:0] ShiftAmt, // how much to shift by
|
||||||
output logic ResSubnormUf,// does the result underflow or is subnormal
|
output logic ResSubnormUf, // does the result underflow or is subnormal
|
||||||
output logic Cs, // the result's sign
|
output logic Cs, // the result's sign
|
||||||
output logic IntZero, // is the integer zero?
|
output logic IntZero, // is the integer zero?
|
||||||
output logic [P.CVTLEN-1:0] LzcIn // input to the Leading Zero Counter (priority encoder)
|
output logic [P.CVTLEN-1:0] LzcIn // input to the Leading Zero Counter (priority encoder)
|
||||||
);
|
);
|
||||||
|
|
||||||
// OpCtrls:
|
// OpCtrls:
|
||||||
@ -54,17 +54,16 @@ module fcvt import cvw::*; #(parameter cvw_t P) (
|
|||||||
// bit 2 bit 1 bit 0
|
// bit 2 bit 1 bit 0
|
||||||
// for example: signed long -> single floating point has the OpCode 101
|
// for example: signed long -> single floating point has the OpCode 101
|
||||||
|
|
||||||
logic [P.FMTBITS-1:0] OutFmt; // format of the output
|
logic [P.FMTBITS-1:0] OutFmt; // format of the output
|
||||||
logic [P.XLEN-1:0] PosInt; // the positive integer input
|
logic [P.XLEN-1:0] PosInt; // the positive integer input
|
||||||
logic [P.XLEN-1:0] TrimInt; // integer trimmed to the correct size
|
logic [P.XLEN-1:0] TrimInt; // integer trimmed to the correct size
|
||||||
logic [P.NE-2:0] NewBias; // the bias of the final result
|
logic [P.NE-2:0] NewBias; // the bias of the final result
|
||||||
logic [P.NE-1:0] OldExp; // the old exponent
|
logic [P.NE-1:0] OldExp; // the old exponent
|
||||||
logic Signed; // is the opperation with a signed integer?
|
logic Signed; // is the opperation with a signed integer?
|
||||||
logic Int64; // is the integer 64 bits?
|
logic Int64; // is the integer 64 bits?
|
||||||
logic IntToFp; // is the opperation an int->fp conversion?
|
logic IntToFp; // is the opperation an int->fp conversion?
|
||||||
logic [P.CVTLEN:0] LzcInFull; // input to the Leading Zero Counter (priority encoder)
|
logic [P.CVTLEN:0] LzcInFull; // input to the Leading Zero Counter (priority encoder)
|
||||||
logic [P.LOGCVTLEN-1:0] LeadingZeros; // output from the LZC
|
logic [P.LOGCVTLEN-1:0] LeadingZeros; // output from the LZC
|
||||||
|
|
||||||
|
|
||||||
// seperate OpCtrl for code readability
|
// seperate OpCtrl for code readability
|
||||||
assign Signed = OpCtrl[0];
|
assign Signed = OpCtrl[0];
|
||||||
@ -79,7 +78,6 @@ module fcvt import cvw::*; #(parameter cvw_t P) (
|
|||||||
else if (P.FPSIZES == 3 | P.FPSIZES == 4)
|
else if (P.FPSIZES == 3 | P.FPSIZES == 4)
|
||||||
assign OutFmt = IntToFp ? Fmt : OpCtrl[1:0];
|
assign OutFmt = IntToFp ? Fmt : OpCtrl[1:0];
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// negation
|
// negation
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
@ -143,7 +141,6 @@ module fcvt import cvw::*; #(parameter cvw_t P) (
|
|||||||
assign NewBias = ToInt ? (P.NE-1)'(1) : NewBiasToFp;
|
assign NewBias = ToInt ? (P.NE-1)'(1) : NewBiasToFp;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
// select the old exponent
|
// select the old exponent
|
||||||
// int -> fp : largest bias + XLEN-1
|
// int -> fp : largest bias + XLEN-1
|
||||||
// fp -> ??? : XExp
|
// fp -> ??? : XExp
|
||||||
@ -185,13 +182,11 @@ module fcvt import cvw::*; #(parameter cvw_t P) (
|
|||||||
// oldexp - biasold - LeadingZeros + newbias
|
// oldexp - biasold - LeadingZeros + newbias
|
||||||
assign Ce = {1'b0, OldExp} - (P.NE+1)'(P.BIAS) - {{P.NE-P.LOGCVTLEN+1{1'b0}}, (LeadingZeros)} + {2'b0, NewBias};
|
assign Ce = {1'b0, OldExp} - (P.NE+1)'(P.BIAS) - {{P.NE-P.LOGCVTLEN+1{1'b0}}, (LeadingZeros)} + {2'b0, NewBias};
|
||||||
|
|
||||||
|
|
||||||
// find if the result is dnormal or underflows
|
// find if the result is dnormal or underflows
|
||||||
// - if Calculated expoenent is 0 or negitive (and the input/result is not exactaly 0)
|
// - if Calculated expoenent is 0 or negitive (and the input/result is not exactaly 0)
|
||||||
// - can't underflow an integer to Fp conversion
|
// - can't underflow an integer to Fp conversion
|
||||||
assign ResSubnormUf = (~|Ce | Ce[P.NE])&~XZero&~IntToFp;
|
assign ResSubnormUf = (~|Ce | Ce[P.NE])&~XZero&~IntToFp;
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// shifter
|
// shifter
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
@ -212,7 +207,6 @@ module fcvt import cvw::*; #(parameter cvw_t P) (
|
|||||||
if(ToInt) ShiftAmt = Ce[P.LOGCVTLEN-1:0]&{P.LOGCVTLEN{~Ce[P.NE]}};
|
if(ToInt) ShiftAmt = Ce[P.LOGCVTLEN-1:0]&{P.LOGCVTLEN{~Ce[P.NE]}};
|
||||||
else if (ResSubnormUf) ShiftAmt = (P.LOGCVTLEN)'(P.NF-1)+Ce[P.LOGCVTLEN-1:0];
|
else if (ResSubnormUf) ShiftAmt = (P.LOGCVTLEN)'(P.NF-1)+Ce[P.LOGCVTLEN-1:0];
|
||||||
else ShiftAmt = LeadingZeros;
|
else ShiftAmt = LeadingZeros;
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// sign
|
// sign
|
||||||
@ -230,4 +224,3 @@ module fcvt import cvw::*; #(parameter cvw_t P) (
|
|||||||
else Cs = Xs;
|
else Cs = Xs;
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user