Package: float_pkg
- File: float_pkg_c.vhd
Constants
Name | Type | Value | Description |
---|---|---|---|
float_exponent_width | NATURAL | 8 | |
float_fraction_width | NATURAL | 23 | |
float_round_style | round_type | round_nearest | Rounding algorithm, "round_nearest" is default, other valid values are "round_zero" (truncation), "round_inf" (round up), and "round_neginf" (round down) |
float_denormalize | BOOLEAN | true | Denormal numbers (very small numbers near zero) true or false |
float_check_error | BOOLEAN | true | Turns on NAN processing (invalid numbers and overflow) true of false |
float_guard_bits | NATURAL | 3 | Guard bits are added to the bottom of every operation for rounding. any natural number (including 0) are valid. |
no_warning | BOOLEAN | (false ) | If TRUE, then turn off warnings on "X" propagation |
Types
Name | Type | Description |
---|---|---|
UNRESOLVED_float | array (INTEGER range <>) of STD_ULOGIC | main type |
valid_fpstate | (nan, -- Signaling NaN (C FP_NAN) quiet_nan, -- Quiet NaN (C FP_NAN) neg_inf, -- Negative infinity (C FP_INFINITE) neg_normal, -- negative normalized nonzero neg_denormal, -- negative denormalized (FP_SUBNORMAL) neg_zero, -- -0 (C FP_ZERO) pos_zero, -- +0 (C FP_ZERO) pos_denormal, -- Positive denormalized (FP_SUBNORMAL) pos_normal, -- positive normalized nonzero pos_inf, -- positive infinity isx) |
--------------------------------------------------------------------------- The 128 bit floating point number is "long double" in C (on some systems this is a 70 bit floating point number) and FLOAT32 in Fortran. The exponent is 15 bits wide and the fraction is 112 bits wide. This number can handle approximately 33 decimal digits. Infinity is 2*32,767 in this number system. --------------------------------------------------------------------------- purpose: Checks for a valid floating point number |
Functions
- Classfp ( x : UNRESOLVED_float;
-- floating point input check_error : BOOLEAN := float_check_error) return valid_fpstate
Description
deferred constant
Returns the class which X falls into
- add ( l,
r : UNRESOLVED_float;
-- floating point input constant round_style : round_type := float_round_style;
-- rounding option constant guard : NATURAL := float_guard_bits;
-- number of guard bits constant check_error : BOOLEAN := float_check_error;
-- check for errors constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
Description
Basic parameter list
round_style - Selects the rounding algorithm to use
guard - extra bits added to the end if the operation to add precision
check_error - When "false" turns off NAN and overflow checks
denormalize - When "false" turns off denormal number processing
- subtract ( l,
r : UNRESOLVED_float;
-- floating point input constant round_style : round_type := float_round_style;
-- rounding option constant guard : NATURAL := float_guard_bits;
-- number of guard bits constant check_error : BOOLEAN := float_check_error;
-- check for errors constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
- multiply ( l,
r : UNRESOLVED_float;
-- floating point input constant round_style : round_type := float_round_style;
-- rounding option constant guard : NATURAL := float_guard_bits;
-- number of guard bits constant check_error : BOOLEAN := float_check_error;
-- check for errors constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
- divide ( l,
r : UNRESOLVED_float;
-- floating point input constant round_style : round_type := float_round_style;
-- rounding option constant guard : NATURAL := float_guard_bits;
-- number of guard bits constant check_error : BOOLEAN := float_check_error;
-- check for errors constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
- remainder ( l,
r : UNRESOLVED_float;
-- floating point input constant round_style : round_type := float_round_style;
-- rounding option constant guard : NATURAL := float_guard_bits;
-- number of guard bits constant check_error : BOOLEAN := float_check_error;
-- check for errors constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
- modulo ( l,
r : UNRESOLVED_float;
-- floating point input constant round_style : round_type := float_round_style;
-- rounding option constant guard : NATURAL := float_guard_bits;
-- number of guard bits constant check_error : BOOLEAN := float_check_error;
-- check for errors constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
- reciprocal ( arg : UNRESOLVED_float;
-- floating point input constant round_style : round_type := float_round_style;
-- rounding option constant guard : NATURAL := float_guard_bits;
-- number of guard bits constant check_error : BOOLEAN := float_check_error;
-- check for errors constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
Description
reciprocal
- dividebyp2 ( l,
r : UNRESOLVED_float;
-- floating point input constant round_style : round_type := float_round_style;
-- rounding option constant guard : NATURAL := float_guard_bits;
-- number of guard bits constant check_error : BOOLEAN := float_check_error;
-- check for errors constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
- mac ( l,
r,
c : UNRESOLVED_float;
-- floating point input constant round_style : round_type := float_round_style;
-- rounding option constant guard : NATURAL := float_guard_bits;
-- number of guard bits constant check_error : BOOLEAN := float_check_error;
-- check for errors constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
Description
Multiply accumulate result = l*r + c
- sqrt ( arg : UNRESOLVED_float;
-- floating point input constant round_style : round_type := float_round_style;
constant guard : NATURAL := float_guard_bits;
constant check_error : BOOLEAN := float_check_error;
constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
Description
Square root (all 754 based implementations need this)
- Is_Negative (arg : UNRESOLVED_float) return BOOLEAN
- eq ( -- equal = l,
r : UNRESOLVED_float;
-- floating point input constant check_error : BOOLEAN := float_check_error;
constant denormalize : BOOLEAN := float_denormalize) return BOOLEAN
Description
compare functions
=, /=, >=, <=, <, >, maximum, minimum
- ne ( -- not equal /= l,
r : UNRESOLVED_float;
-- floating point input constant check_error : BOOLEAN := float_check_error;
constant denormalize : BOOLEAN := float_denormalize) return BOOLEAN
- lt ( -- less than < l,
r : UNRESOLVED_float;
-- floating point input constant check_error : BOOLEAN := float_check_error;
constant denormalize : BOOLEAN := float_denormalize) return BOOLEAN
- gt ( -- greater than > l,
r : UNRESOLVED_float;
-- floating point input constant check_error : BOOLEAN := float_check_error;
constant denormalize : BOOLEAN := float_denormalize) return BOOLEAN
- le ( -- less than or equal to <= l,
r : UNRESOLVED_float;
-- floating point input constant check_error : BOOLEAN := float_check_error;
constant denormalize : BOOLEAN := float_denormalize) return BOOLEAN
- ge ( -- greater than or equal to >= l,
r : UNRESOLVED_float;
-- floating point input constant check_error : BOOLEAN := float_check_error;
constant denormalize : BOOLEAN := float_denormalize) return BOOLEAN
- \?=\ (l,
r : UNRESOLVED_float) return STD_ULOGIC
- \?/=\ (l,
r : UNRESOLVED_float) return STD_ULOGIC
- \?>\ (l,
r : UNRESOLVED_float) return STD_ULOGIC
- \?>=\ (l,
r : UNRESOLVED_float) return STD_ULOGIC
- \?<\ (l,
r : UNRESOLVED_float) return STD_ULOGIC
- \?<=\ (l,
r : UNRESOLVED_float) return STD_ULOGIC
- std_match (l,
r : UNRESOLVED_float) return BOOLEAN
- find_rightmost (arg : UNRESOLVED_float;
y : STD_ULOGIC) return INTEGER
- find_leftmost (arg : UNRESOLVED_float;
y : STD_ULOGIC) return INTEGER
- maximum (l,
r : UNRESOLVED_float) return UNRESOLVED_float
- minimum (l,
r : UNRESOLVED_float) return UNRESOLVED_float
- resize ( arg : UNRESOLVED_float;
-- Floating point input constant exponent_width : NATURAL := float_exponent_width;
-- length of FP output exponent constant fraction_width : NATURAL := float_fraction_width;
-- length of FP output fraction constant round_style : round_type := float_round_style;
-- rounding option constant check_error : BOOLEAN := float_check_error;
constant denormalize_in : BOOLEAN := float_denormalize;
-- Use IEEE extended FP constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
Description
conversion functions
Converts one floating point number into another.
- resize ( arg : UNRESOLVED_float;
-- Floating point input size_res : UNRESOLVED_float;
constant round_style : round_type := float_round_style;
-- rounding option constant check_error : BOOLEAN := float_check_error;
constant denormalize_in : BOOLEAN := float_denormalize;
-- Use IEEE extended FP constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
- to_float32 ( arg : UNRESOLVED_float;
constant round_style : round_type := float_round_style;
-- rounding option constant check_error : BOOLEAN := float_check_error;
constant denormalize_in : BOOLEAN := float_denormalize;
-- Use IEEE extended FP constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float32
- to_float64 ( arg : UNRESOLVED_float;
constant round_style : round_type := float_round_style;
-- rounding option constant check_error : BOOLEAN := float_check_error;
constant denormalize_in : BOOLEAN := float_denormalize;
-- Use IEEE extended FP constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float64
- to_float128 ( arg : UNRESOLVED_float;
constant round_style : round_type := float_round_style;
-- rounding option constant check_error : BOOLEAN := float_check_error;
constant denormalize_in : BOOLEAN := float_denormalize;
-- Use IEEE extended FP constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float128
- to_slv (arg : UNRESOLVED_float) return STD_LOGIC_VECTOR
Description
Converts an fp into an SLV (needed for synthesis)
- to_sulv (arg : UNRESOLVED_float) return STD_ULOGIC_VECTOR
Description
Converts an fp into an std_ulogic_vector (sulv)
- to_float ( arg : STD_ULOGIC_VECTOR;
constant exponent_width : NATURAL := float_exponent_width;
-- length of FP output exponent constant fraction_width : NATURAL := float_fraction_width) return UNRESOLVED_float
Description
std_ulogic_vector to float
- to_float ( arg : INTEGER;
constant exponent_width : NATURAL := float_exponent_width;
-- length of FP output exponent constant fraction_width : NATURAL := float_fraction_width;
-- length of FP output fraction constant round_style : round_type := float_round_style) return UNRESOLVED_float
Description
Integer to float
- to_float ( arg : REAL;
constant exponent_width : NATURAL := float_exponent_width;
-- length of FP output exponent constant fraction_width : NATURAL := float_fraction_width;
-- length of FP output fraction constant round_style : round_type := float_round_style;
-- rounding option constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
Description
real to float
- to_float ( arg : UNSIGNED;
constant exponent_width : NATURAL := float_exponent_width;
-- length of FP output exponent constant fraction_width : NATURAL := float_fraction_width;
-- length of FP output fraction constant round_style : round_type := float_round_style) return UNRESOLVED_float
Description
unsigned to float
- to_float ( arg : SIGNED;
constant exponent_width : NATURAL := float_exponent_width;
-- length of FP output exponent constant fraction_width : NATURAL := float_fraction_width;
-- length of FP output fraction constant round_style : round_type := float_round_style) return UNRESOLVED_float
Description
signed to float
- to_float ( arg : UNRESOLVED_ufixed;
-- unsigned fixed point input constant exponent_width : NATURAL := float_exponent_width;
-- width of exponent constant fraction_width : NATURAL := float_fraction_width;
-- width of fraction constant round_style : round_type := float_round_style;
-- rounding constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
Description
unsigned fixed point to float
- to_float ( arg : UNRESOLVED_sfixed;
constant exponent_width : NATURAL := float_exponent_width;
-- length of FP output exponent constant fraction_width : NATURAL := float_fraction_width;
-- length of FP output fraction constant round_style : round_type := float_round_style;
-- rounding constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
Description
signed fixed point to float
- to_float ( arg : INTEGER;
size_res : UNRESOLVED_float;
constant round_style : round_type := float_round_style) return UNRESOLVED_float
Description
size_res functions
Integer to float
- to_float ( arg : REAL;
size_res : UNRESOLVED_float;
constant round_style : round_type := float_round_style;
-- rounding option constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
Description
real to float
- to_float ( arg : UNSIGNED;
size_res : UNRESOLVED_float;
constant round_style : round_type := float_round_style) return UNRESOLVED_float
Description
unsigned to float
- to_float ( arg : SIGNED;
size_res : UNRESOLVED_float;
constant round_style : round_type := float_round_style) return UNRESOLVED_float
Description
signed to float
- to_float ( arg : STD_ULOGIC_VECTOR;
size_res : UNRESOLVED_float) return UNRESOLVED_float
Description
sulv to float
- to_float ( arg : UNRESOLVED_ufixed;
-- unsigned fixed point input size_res : UNRESOLVED_float;
constant round_style : round_type := float_round_style;
-- rounding constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
Description
unsigned fixed point to float
- to_float ( arg : UNRESOLVED_sfixed;
size_res : UNRESOLVED_float;
constant round_style : round_type := float_round_style;
-- rounding constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
Description
signed fixed point to float
- to_unsigned ( arg : UNRESOLVED_float;
-- floating point input constant size : NATURAL;
-- length of output constant round_style : round_type := float_round_style;
-- rounding option constant check_error : BOOLEAN := float_check_error) return UNSIGNED
Description
float to unsigned
- to_signed ( arg : UNRESOLVED_float;
-- floating point input constant size : NATURAL;
-- length of output constant round_style : round_type := float_round_style;
-- rounding option constant check_error : BOOLEAN := float_check_error) return SIGNED
Description
float to signed
- to_ufixed ( arg : UNRESOLVED_float;
-- fp input constant left_index : INTEGER;
-- integer part constant right_index : INTEGER;
-- fraction part constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-- saturate constant round_style : fixed_round_style_type := fixed_round_style;
-- rounding constant check_error : BOOLEAN := float_check_error;
-- check for errors constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_ufixed
Description
purpose: Converts a float to unsigned fixed point
- to_sfixed ( arg : UNRESOLVED_float;
-- fp input constant left_index : INTEGER;
-- integer part constant right_index : INTEGER;
-- fraction part constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-- saturate constant round_style : fixed_round_style_type := fixed_round_style;
-- rounding constant check_error : BOOLEAN := float_check_error;
-- check for errors constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_sfixed
Description
float to signed fixed point
- to_unsigned ( arg : UNRESOLVED_float;
-- floating point input size_res : UNSIGNED;
constant round_style : round_type := float_round_style;
-- rounding option constant check_error : BOOLEAN := float_check_error) return UNSIGNED
Description
size_res versions
float to unsigned
- to_signed ( arg : UNRESOLVED_float;
-- floating point input size_res : SIGNED;
constant round_style : round_type := float_round_style;
-- rounding option constant check_error : BOOLEAN := float_check_error) return SIGNED
Description
float to signed
- to_ufixed ( arg : UNRESOLVED_float;
-- fp input size_res : UNRESOLVED_ufixed;
constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-- saturate constant round_style : fixed_round_style_type := fixed_round_style;
-- rounding constant check_error : BOOLEAN := float_check_error;
-- check for errors constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_ufixed
Description
purpose: Converts a float to unsigned fixed point
- to_sfixed ( arg : UNRESOLVED_float;
-- fp input size_res : UNRESOLVED_sfixed;
constant overflow_style : fixed_overflow_style_type := fixed_overflow_style;
-- saturate constant round_style : fixed_round_style_type := fixed_round_style;
-- rounding constant check_error : BOOLEAN := float_check_error;
-- check for errors constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_sfixed
Description
float to signed fixed point
- to_real ( arg : UNRESOLVED_float;
-- floating point input constant check_error : BOOLEAN := float_check_error;
-- check for errors constant denormalize : BOOLEAN := float_denormalize) return REAL
Description
float to real
- to_integer ( arg : UNRESOLVED_float;
-- floating point input constant round_style : round_type := float_round_style;
-- rounding option constant check_error : BOOLEAN := float_check_error) return INTEGER
Description
float to integer
- realtobits (arg : REAL) return STD_ULOGIC_VECTOR
Description
For Verilog compatability
- bitstoreal (arg : STD_ULOGIC_VECTOR) return REAL
- to_01 ( arg : UNRESOLVED_float;
-- floating point input XMAP : STD_LOGIC := '0') return UNRESOLVED_float
Description
Maps metalogical values
- Is_X (arg : UNRESOLVED_float) return BOOLEAN
- to_X01 (arg : UNRESOLVED_float) return UNRESOLVED_float
- to_X01Z (arg : UNRESOLVED_float) return UNRESOLVED_float
- to_UX01 (arg : UNRESOLVED_float) return UNRESOLVED_float
- break_number ( arg : in UNRESOLVED_float;
denormalize : in BOOLEAN := float_denormalize;
check_error : in BOOLEAN := float_check_error;
fract : out UNSIGNED;
expon : out SIGNED;
-- NOTE: Add 1 to get the real exponent! sign : out STD_ULOGIC) return ()
Description
These two procedures were copied out of the body because they proved
very useful for vendor specific algorithm development
Break_number converts a floating point number into it's parts
Exponent is biased by -1
- break_number ( arg : in UNRESOLVED_float;
denormalize : in BOOLEAN := float_denormalize;
check_error : in BOOLEAN := float_check_error;
fract : out ufixed;
-- a number between 1.0 and 2.0 expon : out SIGNED;
-- NOTE: Add 1 to get the real exponent! sign : out STD_ULOGIC) return ()
- normalize ( fract : UNSIGNED;
-- fraction,
unnormalized expon : SIGNED;
-- exponent - 1,
normalized sign : STD_ULOGIC;
-- sign bit sticky : STD_ULOGIC := '0';
-- Sticky bit (rounding) constant exponent_width : NATURAL := float_exponent_width;
-- size of output exponent constant fraction_width : NATURAL := float_fraction_width;
-- size of output fraction constant round_style : round_type := float_round_style;
-- rounding option constant denormalize : BOOLEAN := float_denormalize;
-- Use IEEE extended FP constant nguard : NATURAL := float_guard_bits) return UNRESOLVED_float
Description
Normalize takes a fraction and and exponent and converts them into
a floating point number. Does the shifting and the rounding.
Exponent is assumed to be biased by -1
- normalize ( fract : ufixed;
-- unsigned fixed point expon : SIGNED;
-- exponent - 1,
normalized sign : STD_ULOGIC;
-- sign bit sticky : STD_ULOGIC := '0';
-- Sticky bit (rounding) constant exponent_width : NATURAL := float_exponent_width;
-- size of output exponent constant fraction_width : NATURAL := float_fraction_width;
-- size of output fraction constant round_style : round_type := float_round_style;
-- rounding option constant denormalize : BOOLEAN := float_denormalize;
-- Use IEEE extended FP constant nguard : NATURAL := float_guard_bits) return UNRESOLVED_float
Description
Exponent is assumed to be biased by -1
- normalize ( fract : UNSIGNED;
-- unsigned expon : SIGNED;
-- exponent - 1,
normalized sign : STD_ULOGIC;
-- sign bit sticky : STD_ULOGIC := '0';
-- Sticky bit (rounding) size_res : UNRESOLVED_float;
-- used for sizing only constant round_style : round_type := float_round_style;
-- rounding option constant denormalize : BOOLEAN := float_denormalize;
-- Use IEEE extended FP constant nguard : NATURAL := float_guard_bits) return UNRESOLVED_float
- normalize ( fract : ufixed;
-- unsigned fixed point expon : SIGNED;
-- exponent - 1,
normalized sign : STD_ULOGIC;
-- sign bit sticky : STD_ULOGIC := '0';
-- Sticky bit (rounding) size_res : UNRESOLVED_float;
-- used for sizing only constant round_style : round_type := float_round_style;
-- rounding option constant denormalize : BOOLEAN := float_denormalize;
-- Use IEEE extended FP constant nguard : NATURAL := float_guard_bits) return UNRESOLVED_float
Description
Exponent is assumed to be biased by -1
- \?=\ (l : UNRESOLVED_float;
r : REAL) return STD_ULOGIC
- \?/=\ (l : UNRESOLVED_float;
r : REAL) return STD_ULOGIC
- \?>\ (l : UNRESOLVED_float;
r : REAL) return STD_ULOGIC
- \?>=\ (l : UNRESOLVED_float;
r : REAL) return STD_ULOGIC
- \?<\ (l : UNRESOLVED_float;
r : REAL) return STD_ULOGIC
- \?<=\ (l : UNRESOLVED_float;
r : REAL) return STD_ULOGIC
- \?=\ (l : REAL;
r : UNRESOLVED_float) return STD_ULOGIC
- \?/=\ (l : REAL;
r : UNRESOLVED_float) return STD_ULOGIC
- \?>\ (l : REAL;
r : UNRESOLVED_float) return STD_ULOGIC
- \?>=\ (l : REAL;
r : UNRESOLVED_float) return STD_ULOGIC
- \?<\ (l : REAL;
r : UNRESOLVED_float) return STD_ULOGIC
- \?<=\ (l : REAL;
r : UNRESOLVED_float) return STD_ULOGIC
- \?=\ (l : UNRESOLVED_float;
r : INTEGER) return STD_ULOGIC
- \?/=\ (l : UNRESOLVED_float;
r : INTEGER) return STD_ULOGIC
- \?>\ (l : UNRESOLVED_float;
r : INTEGER) return STD_ULOGIC
- \?>=\ (l : UNRESOLVED_float;
r : INTEGER) return STD_ULOGIC
- \?<\ (l : UNRESOLVED_float;
r : INTEGER) return STD_ULOGIC
- \?<=\ (l : UNRESOLVED_float;
r : INTEGER) return STD_ULOGIC
- \?=\ (l : INTEGER;
r : UNRESOLVED_float) return STD_ULOGIC
- \?/=\ (l : INTEGER;
r : UNRESOLVED_float) return STD_ULOGIC
- \?>\ (l : INTEGER;
r : UNRESOLVED_float) return STD_ULOGIC
- \?>=\ (l : INTEGER;
r : UNRESOLVED_float) return STD_ULOGIC
- \?<\ (l : INTEGER;
r : UNRESOLVED_float) return STD_ULOGIC
- \?<=\ (l : INTEGER;
r : UNRESOLVED_float) return STD_ULOGIC
- maximum (l : UNRESOLVED_float;
r : REAL) return UNRESOLVED_float
Description
minimum and maximum overloads
- minimum (l : UNRESOLVED_float;
r : REAL) return UNRESOLVED_float
- maximum (l : REAL;
r : UNRESOLVED_float) return UNRESOLVED_float
- minimum (l : REAL;
r : UNRESOLVED_float) return UNRESOLVED_float
- maximum (l : UNRESOLVED_float;
r : INTEGER) return UNRESOLVED_float
- minimum (l : UNRESOLVED_float;
r : INTEGER) return UNRESOLVED_float
- maximum (l : INTEGER;
r : UNRESOLVED_float) return UNRESOLVED_float
- minimum (l : INTEGER;
r : UNRESOLVED_float) return UNRESOLVED_float
- and_reduce (l : UNRESOLVED_float) return STD_ULOGIC
Description
Reduction operators, same as numeric_std functions
- nand_reduce (l : UNRESOLVED_float) return STD_ULOGIC
- or_reduce (l : UNRESOLVED_float) return STD_ULOGIC
- nor_reduce (l : UNRESOLVED_float) return STD_ULOGIC
- xor_reduce (l : UNRESOLVED_float) return STD_ULOGIC
- xnor_reduce (l : UNRESOLVED_float) return STD_ULOGIC
- Copysign (x,
y : UNRESOLVED_float) return UNRESOLVED_float
Description
Note: "sla", "sra", "sll", "slr", "rol" and "ror" not implemented.
Recommended Functions from the IEEE 754 Appendix
returns x with the sign of y.
- Scalb ( y : UNRESOLVED_float;
-- floating point input N : INTEGER;
-- exponent to add constant round_style : round_type := float_round_style;
-- rounding option constant check_error : BOOLEAN := float_check_error;
-- check for errors constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
Description
Returns y * 2n for integral values of N without computing 2n
- Scalb ( y : UNRESOLVED_float;
-- floating point input N : SIGNED;
-- exponent to add constant round_style : round_type := float_round_style;
-- rounding option constant check_error : BOOLEAN := float_check_error;
-- check for errors constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
Description
Returns y * 2n for integral values of N without computing 2n
- Logb (x : UNRESOLVED_float) return INTEGER
Description
returns the unbiased exponent of x
- Logb (x : UNRESOLVED_float) return SIGNED
- Nextafter ( x,
y : UNRESOLVED_float;
-- floating point input constant check_error : BOOLEAN := float_check_error;
-- check for errors constant denormalize : BOOLEAN := float_denormalize) return UNRESOLVED_float
Description
returns the next representable neighbor of x in the direction toward y
- Unordered (x,
y : UNRESOLVED_float) return BOOLEAN
Description
Returns TRUE if X is unordered with Y.
- Finite (x : UNRESOLVED_float) return BOOLEAN
- Isnan (x : UNRESOLVED_float) return BOOLEAN
- zerofp ( constant exponent_width : NATURAL := float_exponent_width;
-- exponent constant fraction_width : NATURAL := float_fraction_width) return UNRESOLVED_float
Description
Function to return constants.
- nanfp ( constant exponent_width : NATURAL := float_exponent_width;
-- exponent constant fraction_width : NATURAL := float_fraction_width) return UNRESOLVED_float
- qnanfp ( constant exponent_width : NATURAL := float_exponent_width;
-- exponent constant fraction_width : NATURAL := float_fraction_width) return UNRESOLVED_float
- pos_inffp ( constant exponent_width : NATURAL := float_exponent_width;
-- exponent constant fraction_width : NATURAL := float_fraction_width) return UNRESOLVED_float
- neg_inffp ( constant exponent_width : NATURAL := float_exponent_width;
-- exponent constant fraction_width : NATURAL := float_fraction_width) return UNRESOLVED_float
- neg_zerofp ( constant exponent_width : NATURAL := float_exponent_width;
-- exponent constant fraction_width : NATURAL := float_fraction_width) return UNRESOLVED_float
- zerofp ( size_res : UNRESOLVED_float) return UNRESOLVED_float
Description
size_res versions
- nanfp ( size_res : UNRESOLVED_float) return UNRESOLVED_float
- qnanfp ( size_res : UNRESOLVED_float) return UNRESOLVED_float
- pos_inffp ( size_res : UNRESOLVED_float) return UNRESOLVED_float
- neg_inffp ( size_res : UNRESOLVED_float) return UNRESOLVED_float
- neg_zerofp ( size_res : UNRESOLVED_float) return UNRESOLVED_float
- WRITE ( L : inout LINE;
-- access type (pointer) VALUE : in UNRESOLVED_float;
-- value to write JUSTIFIED : in SIDE := right;
-- which side to justify text FIELD : in WIDTH := 0) return ()
Description
===========================================================================
string and textio Functions
===========================================================================
rtl_synthesis off
pragma synthesis_off
writes S:EEEE:FFFFFFFF
- READ (L : inout LINE;
VALUE : out UNRESOLVED_float) return ()
Description
width of field
Reads SEEEEFFFFFFFF, "." and ":" are ignored
- READ (L : inout LINE;
VALUE : out UNRESOLVED_float;
GOOD : out BOOLEAN) return ()
- OWRITE ( L : inout LINE;
-- access type (pointer) VALUE : in UNRESOLVED_float;
-- value to write JUSTIFIED : in SIDE := right;
-- which side to justify text FIELD : in WIDTH := 0) return ()
- OREAD (L : inout LINE;
VALUE : out UNRESOLVED_float) return ()
Description
width of field
Octal read with padding, no separators used
- OREAD (L : inout LINE;
VALUE : out UNRESOLVED_float;
GOOD : out BOOLEAN) return ()
- HWRITE ( L : inout LINE;
-- access type (pointer) VALUE : in UNRESOLVED_float;
-- value to write JUSTIFIED : in SIDE := right;
-- which side to justify text FIELD : in WIDTH := 0) return ()
Description
Hex write with padding, no separators
- HREAD (L : inout LINE;
VALUE : out UNRESOLVED_float) return ()
Description
width of field
Hex read with padding, no separators used
- HREAD (L : inout LINE;
VALUE : out UNRESOLVED_float;
GOOD : out BOOLEAN) return ()
- to_string (value : UNRESOLVED_float) return STRING
Description
returns "S:EEEE:FFFFFFFF"
- to_hstring (value : UNRESOLVED_float) return STRING
Description
Returns a HEX string, with padding
- to_ostring (value : UNRESOLVED_float) return STRING
Description
Returns and octal string, with padding
- from_string ( bstring : STRING;
-- binary string constant exponent_width : NATURAL := float_exponent_width;
constant fraction_width : NATURAL := float_fraction_width) return UNRESOLVED_float
- from_ostring ( ostring : STRING;
-- Octal string constant exponent_width : NATURAL := float_exponent_width;
constant fraction_width : NATURAL := float_fraction_width) return UNRESOLVED_float
- from_hstring ( hstring : STRING;
-- hex string constant exponent_width : NATURAL := float_exponent_width;
constant fraction_width : NATURAL := float_fraction_width) return UNRESOLVED_float
- from_string ( bstring : STRING;
-- binary string size_res : UNRESOLVED_float) return UNRESOLVED_float
- from_ostring ( ostring : STRING;
-- Octal string size_res : UNRESOLVED_float) return UNRESOLVED_float
- from_hstring ( hstring : STRING;
-- hex string size_res : UNRESOLVED_float) return UNRESOLVED_float
- to_float ( arg : STD_LOGIC_VECTOR;
constant exponent_width : NATURAL := float_exponent_width;
-- length of FP output exponent constant fraction_width : NATURAL := float_fraction_width) return UNRESOLVED_float
Description
rtl_synthesis on
pragma synthesis_on
IN VHDL-2006 std_logic_vector is a subtype of std_ulogic_vector, so these
extra functions are needed for compatability.
- to_float ( arg : STD_LOGIC_VECTOR;
size_res : UNRESOLVED_float) return UNRESOLVED_float
- realtobits (arg : REAL) return STD_LOGIC_VECTOR
Description
For Verilog compatability
- bitstoreal (arg : STD_LOGIC_VECTOR) return REAL