Source-Level Compiler Optimizations for High-Level Synthesis

With high-level synthesis becoming the preferred method for hardware design, tools that operate on high-level programming languages and optimize hardware output are crucial for successful synthesis. In high-level synthesis, conventional programming language codes describe hardware behavior. Those codes are translated into RTL-level description by some appropriate tool. Common such tools that not only translate, but also optimize code, are programming language compilers. Compilers can make the transition from software to hardware smooth, allowing programmers to use their software skills on hardware programming, without any language compromises. Nonetheless, compilers also utilize optimization techniques to obtain a better output hardware description. In this paper, we discuss compiler issues for high-level synthesis, and present the results of several compiler transformations that can be implemented on our C language compiler front end of the CCC high-level synthesis tool. The results are taken from experiments conducted on the MPEG2 open-source codes, and prove the importance of such transformations in high-level synthesis.

[1]  Pierre G. Paulin,et al.  Force-directed scheduling for the behavioral synthesis of ASICs , 1989, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[2]  Gabriel Caffarena,et al.  A Formal Method for Optimal High-Level Casting of Heterogeneous Fixed-Point Adders and Subtractors , 2015, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[3]  O. Sarbishei,et al.  On the Fixed-Point Accuracy Analysis and Optimization of Polynomial Specifications , 2013, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[4]  Román Hermida,et al.  Multispeculative Addition Applied to Datapath Synthesis , 2012, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[5]  Vittorio Zaccaria,et al.  SPIRIT: Spectral-Aware Pareto Iterative Refinement Optimization for Supervised High-Level Synthesis , 2015, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[6]  Nikil D. Dutt,et al.  Coordinated parallelizing compiler optimizations and high-level synthesis , 2004, TODE.

[7]  Apostolos A. Kountouris,et al.  Efficient scheduling of conditional behaviors for high-level synthesis , 2002, TODE.

[8]  Jason Cong,et al.  Improving high level synthesis optimization opportunity through polyhedral transformations , 2013, FPGA '13.

[9]  Bertrand Le Gal,et al.  Dynamic Memory Access Management for High-Performance DSP Applications Using High-Level Synthesis , 2008, IEEE Transactions on Very Large Scale Integration (VLSI) Systems.

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

[11]  Robert A. Walker,et al.  Introduction to the Scheduling Problem , 1995, IEEE Des. Test Comput..

[12]  Rajesh Gupta,et al.  Loop shifting and compaction for the high-level synthesis of designs with complex control flow , 2004, Proceedings Design, Automation and Test in Europe Conference and Exhibition.

[13]  Tanguy Risset,et al.  Coupling Loop Transformations and High-Level Synthesis , 2008 .

[14]  Patrice Quinton,et al.  Polyhedral Bubble Insertion: A Method to Improve Nested Loop Pipelining for High-Level Synthesis , 2013, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[15]  Pedro C. Diniz,et al.  Compiling for reconfigurable computing: A survey , 2010, CSUR.

[16]  Jason Cong,et al.  Optimizing memory hierarchy allocation with loop transformations for high-level synthesis , 2012, DAC Design Automation Conference 2012.

[17]  Chittaranjan A. Mandal,et al.  Verification of Code Motion Techniques Using Value Propagation , 2014, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.