Configurable computing relies on the expression of a computation as a circuit. Its main purpose is the hardware based acceleration
of programs. Configurable computing has received renewed interest with the recent rapid increase in both size and speed of
FPGAs. One of the major obstacles in the way of wider adoption of (re)configurable computing is the lack of high-level tools
that support the efficient mapping of programs expressed in high-level languages (HLL) to reconfigurable fabrics. The major
difficulty in such a mapping is the translation from a temporal execution model to a spatial execution model. An intermediate
representation (IR) is the central structure around which tools such as compilers and synthesis tools are built. In this paper
we propose an IR specifically designed for reconfigurable fabrics: CIRRF (Compiler Intermediate Representation for Reconfigurable
Fabrics). We describe the design of CIRRF and its initial implementation as part of the ROCCC compiler for translating C code
to VHDL. CIRRF is designed to support the creation of a datapath and the scheduling of operations on it. It provides support
for buffers, look-up tables, predication and pipelining in the datapath. One of the important features of CIRRF, and ROCCC,
is its support for the import of pre-designed IP cores into the original C source code allowing the user to leverage the huge
wealth of existing IP cores while programming the configurable platform using a HLL. Using experiments and examples we show
that CIRRF is a solid foundation to generate high-performance hardware.
Keywords Configurable computing - Intermediate representation - FPGA - VHDL