Fly - A Modifiable Hardware Compiler

In this paper we present the "fly" hardware compiler for rapid system prototyping research. Fly takes a C-like program as input and produces a synthesizable VHDL description of a one-hot state machine and the associated data path elements as output. Furthermore, it is tightly integrated with the hardware design environment and implementation platform, and is able to hide issues associated with these tools from the user. Unlike previous tools, fly encourages modification of the compiler for research in rapid system prototyping and code generation, and the full source code to the compiler is presented in the paper. Case studies involving the implementation of an FPGA based greatest common divisor (GCD) coprocessor as well as the extension of the basic fly compiler to solve a differential equation using floating point arithmetic are presented.

[1]  Ian Page Constructing hardware-software systems from a single description , 1996, J. VLSI Signal Process..

[2]  David A. Patterson,et al.  Computer Architecture - A Quantitative Approach, 5th Edition , 1996 .

[3]  Steve McKeever,et al.  Pebble: A Language for Parametrised and Reconfigurable Hardware Design , 1998, FPL.

[4]  Larry Wall,et al.  Programming Perl , 1991 .

[5]  Niklaus Wirth Hardware Compilation: Translating Programs into Circuits , 1998, Computer.

[6]  John H. Mathews,et al.  Using MATLAB as a programming language for numerical analysis , 1994 .

[7]  David A. Patterson,et al.  Computer architecture (2nd ed.): a quantitative approach , 1996 .

[8]  Wayne Luk,et al.  Parameterised floating-point arithmetic on FPGAs , 2001, 2001 IEEE International Conference on Acoustics, Speech, and Signal Processing. Proceedings (Cat. No.01CH37221).

[9]  Monk-Ping Leong,et al.  Pilchard - A Reconfigurable Computing Platform with Memory Slot Interface , 2001, IEEE Symposium on Field-Programmable Custom Computing Machines.

[10]  Monk-Ping Leong,et al.  Rapid prototyping of FPGA based floating point DSP systems , 2002, Proceedings 13th IEEE International Workshop on Rapid System Prototyping.

[11]  Erik Brunvand Translating concurrent communicating programs into asynchronous circuits , 1992 .

[12]  P.H.W. Leong,et al.  Pilchard — a reconfigurable computing platform with memory slot interface , 2001, The 9th Annual IEEE Symposium on Field-Programmable Custom Computing Machines (FCCM'01).

[13]  George Lindfield,et al.  Numerical Methods Using MATLAB , 1998 .