Floating-point behavioral synthesis

Traditionally, the data processed by a synthesized digital design is fixed (occasionally variable) width integer, and the functional units available are concomitantly simple ladders, subtractors, multipliers, multiplexers, and so on). The aims of paper work are two-fold: 1) to provide a library of high-level floating-point functions (trigonometric, transcendental, complex) to support the synthesis of behavioral designs incorporating complicated sets of floating-point operations and 2) to incorporate this into an optimizing behavioral synthesis environment. Floating-point units are large and cumbersome and an optimization technique that allows the internal substructures of these units to be shared (in both space and time) produces a dramatic decrease in the overall hardware resources required to support a design. The floating-point modules themselves are each implemented in several ways: as an iterative series, by table lookup, and using the coordinate rotation digital computer algorithm. The choice of implementation is left to the optimizer, which makes individual binding choices based on global knowledge of the overall design. This paper describes the library and the optimization algorithm and demonstrates the overall system use with an exemplar: a floating-point quadratic equation solver capable of delivering complex roots, realized using 30% of a Xilinx 40125XV field-programmable gate array.

[1]  Andrew D. Brown,et al.  Optimisation efficiency in behavioural synthesis , 1994 .

[2]  Yamin Li,et al.  Implementation of single precision floating point square root on FPGAs , 1997, Proceedings. The 5th Annual IEEE Symposium on Field-Programmable Custom Computing Machines Cat. No.97TB100186).

[3]  R. J. Chance The effect of processor architecture on an efficient floating point table look-up algorithm , 1991 .

[4]  A. D. Brown,et al.  Source level optimisation of VHDL for behavioural synthesis , 1997 .

[5]  A. D. Brown,et al.  HDL-specific source level behavioural optimisation , 1997 .

[6]  Richard H. Bartels,et al.  An approach for floating-point error analysis using computer algebra , 1992, ISSAC '92.

[7]  K. G. Nichols,et al.  Multiple objective optimisation in a behavioural synthesis system , 1993 .

[8]  Peter M. Athanas,et al.  Quantitative analysis of floating point arithmetic on FPGA based custom computing machines , 1995, Proceedings IEEE Symposium on FPGAs for Custom Computing Machines.

[9]  Andrew D. Brown,et al.  On-line testing of statically and dynamically scheduled synthesized systems , 1997, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[10]  Andrew D. Brown,et al.  Hierarchical module expansion in a VHDL behavioural synthesis system , 2001 .

[11]  Jack E. Volder The CORDIC Trigonometric Computing Technique , 1959, IRE Trans. Electron. Comput..

[12]  Jean-Michel Muller,et al.  Computing Functions cos^{-1} and sin^{-1} Using Cordic , 1993, IEEE Trans. Computers.