skip to main content
OSTI.GOV title logo U.S. Department of Energy
Office of Scientific and Technical Information

Title: Floating-Point Units and Algorithms for field-programmable gate arrays

Abstract

The software that we are attempting to copyright is a package of floating-point unit descriptions and example algorithm implementations using those units for use in FPGAs. The floating point units are best-in-class implementations of add, multiply, divide, and square root floating-point operations. The algorithm implementations are sample (not highly flexible) implementations of FFT, matrix multiply, matrix vector multiply, and dot product. Together, one could think of the collection as an implementation of parts of the BLAS library or something similar to the FFTW packages (without the flexibility) for FPGAs. Results from this work has been published multiple times and we are working on a publication to discuss the techniques we use to implement the floating-point units, For some more background, FPGAS are programmable hardware. "Programs" for this hardware are typically created using a hardware description language (examples include Verilog, VHDL, and JHDL). Our floating-point unit descriptions are written in JHDL, which allows them to include placement constraints that make them highly optimized relative to some other implementations of floating-point units. Many vendors (Nallatech from the UK, SRC Computers in the US) have similar implementations, but our implementations seem to be somewhat higher performance. Our algorithm implementations are written in VHDLmore » and models of the floating-point units are provided in VHDL as well. FPGA "programs" make multiple "calls" (hardware instantiations) to libraries of intellectual property (IP), such as the floating-point unit library described here. These programs are then compiled using a tool called a synthesizer (such as a tool from Synplicity, Inc.). The compiled file is a netlist of gates and flip-flops. This netlist is then mapped to a particular type of FPGA by a mapper and then a place- and-route tool. These tools assign the gates in the netlist to specific locations on the specific type of FPGA chip used and constructs the required routes between them. The result is a "bitstream" that is analogous to a compiled binary. The bitstream is loaded into the FPGA to create a specific hardware configuration.« less

Authors:
;
Publication Date:
Research Org.:
Sandia National Laboratories (SNL), Albuquerque, NM, and Livermore, CA (United States)
Sponsoring Org.:
USDOE
OSTI Identifier:
1230824
Report Number(s):
FPGAs; 001874MLTPL00
Resource Type:
Software
Software Revision:
00
Software Package Number:
001874
Software Package Contents:
Media Directory; Software Abstract; Media inlcudes Source Code / 1 CD-ROM
Software CPU:
MLTPL
Open Source:
No
Source Code Available:
Yes
Country of Publication:
United States

Citation Formats

Underwood, Keith D., and Hemmert, K. Scott. Floating-Point Units and Algorithms for field-programmable gate arrays. Computer software. Vers. 00. USDOE. 1 Nov. 2005. Web.
Underwood, Keith D., & Hemmert, K. Scott. (2005, November 1). Floating-Point Units and Algorithms for field-programmable gate arrays (Version 00) [Computer software].
Underwood, Keith D., and Hemmert, K. Scott. Floating-Point Units and Algorithms for field-programmable gate arrays. Computer software. Version 00. November 1, 2005.
@misc{osti_1230824,
title = {Floating-Point Units and Algorithms for field-programmable gate arrays, Version 00},
author = {Underwood, Keith D. and Hemmert, K. Scott},
abstractNote = {The software that we are attempting to copyright is a package of floating-point unit descriptions and example algorithm implementations using those units for use in FPGAs. The floating point units are best-in-class implementations of add, multiply, divide, and square root floating-point operations. The algorithm implementations are sample (not highly flexible) implementations of FFT, matrix multiply, matrix vector multiply, and dot product. Together, one could think of the collection as an implementation of parts of the BLAS library or something similar to the FFTW packages (without the flexibility) for FPGAs. Results from this work has been published multiple times and we are working on a publication to discuss the techniques we use to implement the floating-point units, For some more background, FPGAS are programmable hardware. "Programs" for this hardware are typically created using a hardware description language (examples include Verilog, VHDL, and JHDL). Our floating-point unit descriptions are written in JHDL, which allows them to include placement constraints that make them highly optimized relative to some other implementations of floating-point units. Many vendors (Nallatech from the UK, SRC Computers in the US) have similar implementations, but our implementations seem to be somewhat higher performance. Our algorithm implementations are written in VHDL and models of the floating-point units are provided in VHDL as well. FPGA "programs" make multiple "calls" (hardware instantiations) to libraries of intellectual property (IP), such as the floating-point unit library described here. These programs are then compiled using a tool called a synthesizer (such as a tool from Synplicity, Inc.). The compiled file is a netlist of gates and flip-flops. This netlist is then mapped to a particular type of FPGA by a mapper and then a place- and-route tool. These tools assign the gates in the netlist to specific locations on the specific type of FPGA chip used and constructs the required routes between them. The result is a "bitstream" that is analogous to a compiled binary. The bitstream is loaded into the FPGA to create a specific hardware configuration.},
doi = {},
url = {https://www.osti.gov/biblio/1230824}, year = {Tue Nov 01 00:00:00 EST 2005},
month = {Tue Nov 01 00:00:00 EST 2005},
note =
}

Software:
To order this software, request consultation services, or receive further information, please fill out the following request.

Save / Share:

To receive further information, fill out the request form below. OSTI staff will begin to process an order for scientific and technical software once the signed site license agreement is received. You may also reach us by email at: .

Software Request

(required)
(required)
(required)
(required)
(required)
(required)
(required)
(required)