Kiwi: Synthesis of FPGA Circuits from Parallel Programs
Authors:
- Satnam SinghSSSatnam Singh
- David J. GreavesDGDavid J. Greaves
- 1 April 2008
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- p. 3-12
Abstract
We describe the Kiwi parallel programming library and its associated synthesis system which is used to transform C# parallel programs into circuits for realization on FPGAs. The Kiwi system is targeted at making reconfigurable computing technology accessible to software engineers that are willing to express their computations as parallel programs. Although there has been much work on compiling sequential C-like programs to hardware by automatically `discovering¿ parallelism, we work by exploiting the parallel architecture communicated by the designer through the choice of parallel and concurrent programming language constructs. Specifically, we describe a system that takes .NET assembly language with suitable custom attributes as input and produces Verilog output which is mapped to FPGAs. We can then choose to apply analysis and verification techniques to either the highlevel representation in C# or other .NET languages or to the generated RTL netlists. A distinctive aspect of our approach is the exploitation of existing language constructs for concurrent programming and synchronization which contrasts with other schemes which introduce specialized concurrency control constructs to extend a sequential language.Keywords
This publication has 11 references indexed in Scilit:
- DWARV: Delftworkbench Automated Reconfigurable VHDL Generator2007
- The Problem with ThreadsComputer, 2006
- Lbtorial bluespec systemverilog: efficient, correct RTL from high-level specifications2005
- Synthesis of complex control structures from behavioral SystemC models2005
- C Based Hardware Design for Wireless Applications2005
- Hardware Join Java: a high level language for reconfigurable hardware development2003
- SPARK: a high-level synthesis framework for applying parallelizing compiler transformations2003
- High-level language abstraction for reconfigurable computingComputer, 2003
- Stream-oriented FPGA computing in the Streams-C high level language2002
- Using a programming language for digital system designIEEE Design & Test of Computers, 1997