Behavioral Floating Point Primitives in Place
Somehow I feel like it has taken me forever to create
a somewhat usable set of floating point primitives.
So I can report that I have a first version of
high-precision floating point primitives coded up in
Verilog. Different from a standard IEEE 754 library,
those floating point numbers use a 17-bit mantissa,
which works much more efficiently with 18x18 bit
multipliers as usually available on FPGAs. In
addition, the primitives use an unpacked format,
thereby reducing the operations necessary to bring
values into the arithmetic operation and to prepare
the result. There is still a lot of work left around
these primitives, so any expert in this area who
wants to volunteer some spare time is highly welcome.
Aside from more testing, the routines can probably be
refined with regard to precision, i.e. making them
correct up to the last bit. Further, it would be
great if someone could take a look to see how to best
match those primitives to an actual FPGA device. Most
likely, a certain amount of pipelining will be
necessary, which will also guide the timing behavior
of the larger design. So if you are interested,
please get in touch with me.