Project Name: Floating Point Unit

(See change Log at bottom of page for changes/updates)
 

Description

This is a single precision floating point unit. It is fully IEEE 754 compliant. It can currently perform Add/Sub,  Mul and Divide operations, as well as integer to floating point and floating point to integer conversions. It supports four rounding modes: Round to Nearest Even, Round to Zero, Round to +INF and Round to -INF.

There is now also a separate FP compare unit. It is located in the fpu/fcmp directory.
 

Motivation


Compatibility

To the best of my knowledge the FPU is 100% IEEE 754 compliant. I have run over 14Mil. test vectors on it,  that where generated using the SoftFloat library by John R. Hauser, which can be found at: http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/SoftFloat.html
The test pattern generator is included with the distribution.
 

Performance


Implementing the Core

It is very difficult to partition such a complex piece of hardware for optimal pipe lining. Therefore you will need a synthesis tool that has a "retiring" feature to obtain best results.

Actual Add/Sub, Multiply and Divide cores must be replaced in the primitives.v file, or your synthesis tool must be able to synthesize them for you. I might fix this in the future.
 

Status

Second version of the core is released. Included with the release is also a  test bench and a test pattern generator.

I won't be doing any more work on the core in the near future, except for bug fixes.

The core can be downloaded from OpenCores CVS via cvsweb or via cvsget (use fpu for module name)
 

To-Do

Things that need to be done:


Author / Maintainer

I have been doing ASIC design, verification and synthesis for over 15 years. I hope you find this cores useful. Please send me a note if you intend to use it  !

Many thanks to Damjan Lampret for his support and motivation !

Rudolf Usselmann
rudi@asics.ws_NOSPAM
www.asics.ws

Feel free to send me comments, suggestions and bug reports.
 

Change Log

9/16/00 RU
- Added FP compare unit

9/15/00 RU
- Added int to float and float to int conversion
- Fixed documentation

9/13/200 RU
- Initial release