tree: f3f72832cc87655e297ce39f4847405a9a2939c3 [path history] [tgz]
  1. bsg_fpu_add_sub.v
  2. bsg_fpu_classify.v
  3. bsg_fpu_clz.v
  4. bsg_fpu_cmp.v
  5. bsg_fpu_f2i.v
  6. bsg_fpu_i2f.v
  7. bsg_fpu_mul.v
  8. bsg_fpu_pkg.v
  9. bsg_fpu_preprocess.v
  10. bsg_fpu_sticky.v
  11. README.md
src/Testcases/BlackParrot/external/basejump_stl/bsg_fpu/README.md

██████╗ ███████╗ ██████╗ ███████╗██████╗ ██╗ ██╗ ██╔══██╗██╔════╝██╔════╝ ██╔════╝██╔══██╗██║ ██║ ██████╔╝███████╗██║ ███╗ █████╗ ██████╔╝██║ ██║ ██╔══██╗╚════██║██║ ██║ ██╔══╝ ██╔═══╝ ██║ ██║ ██████╔╝███████║╚██████╔╝███████╗██║ ██║ ╚██████╔╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝ BaseJump Floating-Point Arithmetic Core This library implements IEEE-754 floating-point arithmetic operators: add, sub, mul, cmp, i2f, f2i. These modules are parameterizable by exponent and mantissa bit-width (e_p, m_p), which the users can specify to pick the floating-point encoding of their choice. Typical values for these parameters are: ---------------------------------------------- exponent (e_p) mantissa (m_p) ---------------------------------------------- binary64 11 52 binary32 8 23 binary16 5 10 bfloat16 8 7 ---------------------------------------------- 1. bsg_fpu_add_sub - 3-stage pipeline. - rounding mode is "round to nearest even". - If either input is signaling NaN, the output is signaling NaN, and invalid exceptinon is raised. - If either input is quiet NaN, output is set to quiet NaN. - If both inputs are infinite, output is set to either infinite or quiet NaN, depending on sub_i and signs of inputs. For example, pos_infty plus pos_infty results in pos_infty, whereas pos_infty plus neg_infty results in quiet NaN. - If either input is denormal, then output is set to quiet NaN, and unimplemented exception is raised. - If the sum or diff results in denormal, then output is set to zero, and underflow exception is raised. - If the result underflows, then the output is set to zero, and underflow exception is raised. - If the result overflows, then the output is set to infinity, and overflow exception is raised. 2. bsg_fpu_mul - 3-stage pipeline. - rounding mode is "round to nearest even". - If either input is signaling NaN, output is set to signaling NaN, and invalid exception is raised. - If either input is quiet NaN, output is set to quiet NaN. - If one input is infinite and the other is finite, then the output is set to infinity. - If one input is infinite and the other is zero, then the output is set to quiet NaN, and invalid exception is raised. - If one input zero and the other is non-zero, then the output is set to zero. - If both inputs are denormal, then the output is set to zero, and underflow exception is raised. - If one input is denormal, and the other is not denormal, then the output is set to quiet NaN, and unimplemented exception is raised. - If the product results in denormal, then the output is set to zero, and underflow exception is raised. - If the result underflows, then the output is set to zero, and underflow exception is raised. - If the result overflows, then the output is set to infinitiy, and overflow exception is raised. 3. bsg_fpu_cmp - No pipeline stage. - This module computes less-than, equal, less-than-or-equal. - This module also computes min and max. 4. bsg_fpu_i2f - 1-stage pipeline - there is a port (signed_i) to decide whether the input integer is signed or unsigned. 5. bsg_fpu_f2i - No pipeline stage. - there is a port (signed_i) to decide whether the output integer is signed or unsigned. - If the input is negative float and the output is chosen to be unsigned, then the output is set to zero and invalid exception is raised. - If the input is (+/-) zero, or exponent is too small or big, or the input is NaN, then the output is set to zero and invalid exception is raised.