Besides the development of new reconfigurable architectures, the need for efficient compilation flow is stronger than ever. Challenges come from the high parallelism of these architectures and also from new constraints such as resource heterogeneity, memory hierarchy and power. This is a hot topic in the reconfigurable architecture community, and we continue our effort to offer efficient compilers with close links to architectures. We aim at defining a highly effective software framework for the compilation of high-level specifications into optimized code executed on a reconfigurable hardware platform. Figure 2 shows the global framework that we are currently developing.
Our approach assumes that the application is specified as a hierarchical block diagram of communicating tasks expressing data-flow or control, where each task is expressed using languages like C, Signal, Scilab or Matlab, and is then transformed into an internal representation by the compiler front-end. Then, our framework is based on applying some high-level transformations onto the internal representation.
Different internal representations are used depending on the targeted transformations or the targeted architectures.
The classical Control and Data Flow Graphs (CDFG) is the main internal formalism of our framework. It is the basis for transformations like code optimizations, fixed-point transformations, instruction-set extraction or scheduling. Gateways will be provided from CDFG to other supported formalisms.
The Hierarchical Conditional Dependency Graph (HCDG) format (as defined in the Polychrony http://www.irisa.fr/espresso/Polychrony/ toolset)will be used as the internal representation for pattern-based transformations.
Other internal representations like Signal Flow Graphs (SFG) and Polyhedral Reduced Dependence Graph (PRDG) will be used respectively for application accuracy estimation and loop parallelization techniques.
Finally, back-end tools enable the generation of code like VHDL for the hardwired or reconfigurable blocks, C for embedded processor software, and SystemC for simulation purposes (e.g. fixed-point simulations). The compiler front-end, the back-end generators, the transformation toolbox as well as the different internal representations and their respective gateways are based on a unique framework: the Gecos framework.
Besides Cairn's general design workflow, and in order to promote research undertaken by Cairn , several hardware and software prototypes are developed. Among those, five distributed software are presented in this report: Gecos a flexible compilation platform, Float2Fix an infrastructure for the automatic transformation of software code aiming at the conversion of floating-point data types into a fixed-point representation, FWRToolbox a Matlab open-source toolbox used to analyze and optimize the Finite Word Length effects of digital filters/controllers, UPaK for the compilation and the synthesis targeting reconfigurable platforms, and Interconnect Explorer a high-level power and delay estimation tool for on-chip interconnects.