Automatic generation of FPGA hardware accelerators using a domain specific language

This paper describes an alternative approach to direct mapping loops described in high-level languages onto FPGAs. Different from other approaches, this technique does not inherit from software pipelining techniques. The control is distributed over operations, thus a finite state machine is not necessary to control the order of operations, allowing efficient hardware implementations. The specification of a hardware block is done by means of LALP, a domain specific language specially designed to help the application of the techniques. While the language syntax resembles C, it contains certain constructs that allow programmer interventions to enforce or relax data dependences as needed, and so optimize the performance of the generated hardware blocks.

[1]  Alok N. Choudhary,et al.  A system for synthesizing optimized FPGA hardware from Matlab(R) , 2001, IEEE/ACM International Conference on Computer Aided Design. ICCAD 2001. IEEE/ACM Digest of Technical Papers (Cat. No.01CH37281).

[2]  Alexander Aiken,et al.  Perfect Pipelining: A New Loop Parallelization Technique , 1988, ESOP.

[3]  Walid A. Najjar,et al.  Impact of Loop Unrolling on Area, Throughput and Clock Frequency in ROCCC: C to VHDL Compiler for FPGAs , 2006, ARC.

[4]  Vicki H. Allan,et al.  Software pipelining , 1995, CSUR.

[5]  Stephen A. Edwards,et al.  The Challenges of Synthesizing Hardware from C-Like Languages , 2006, IEEE Design & Test of Computers.

[6]  John Wawrzynek,et al.  The Garp Architecture and C Compiler , 2000, Computer.

[7]  Wayne Luk,et al.  Pipeline vectorization , 2001, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[8]  Pedro C. Diniz,et al.  A Data-Driven Approach for Pipelining Sequences of Data-Dependent Loops , 2007, 15th Annual IEEE Symposium on Field-Programmable Custom Computing Machines (FCCM 2007).

[9]  João M. P. Cardoso,et al.  Aggressive Loop Pipelining for Reconfigurable Architectures , 2007, 2007 International Conference on Field Programmable Logic and Applications.

[10]  Sumit Gupta,et al.  SPARK: A Parallelizing Approach to the High-Level Synthesis of Digital Circuits , 2004 .

[11]  B. Ramakrishna Rau,et al.  Iterative modulo scheduling: an algorithm for software pipelining loops , 1994, MICRO 27.

[12]  João M. P. Cardoso Dynamic loop pipelining in data-driven architectures , 2005, CF '05.

[13]  Roberto Passerone,et al.  A Platform-Based Taxonomy for ESL Design , 2006, IEEE Design & Test of Computers.

[14]  Guy Even,et al.  An FPGA implementation of pipelined multiplicative division with IEEE Rounding , 2007 .