Minimal-area loop pipelining for high-level synthesis with CCC

Increased complexity of computer hardware makes close to impossible to rely on hand-coding at the-level of HDLs for digital hardware design. High-level synthesis can be employed instead, in order to automatically obtain HDL codes from highlevel language functional descriptions. With high-level synthesis it becomes easier to design coprocessors, accelerators, and other special-purpose hardware. Nonetheless, compiler optimizations can improve efficiency of automatically generated hardware descriptions and make high-level synthesis to become the dominant technology to build more complicated hardware as well. Compilers, well known and explored software tools, can allow programmers to use their software skills on hardware programming, without any language compromises. Furthermore, compiler optimizations transform the input code, in order to produce a high-quality high-performance output hardware description. In this paper, we discuss compiler issues for high-level synthesis, and in particular, the incorporation of loop pipelining in the C language front end of the CCC high-level synthesis tool. We also present a novel pipelining technique that minimizes the area used for the pipeline prologue and epilogue. Results from experiments on the Livermore loops and Mpeg2 open-source codes validate our technique.

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

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

[3]  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.

[4]  Georgios I. Stamoulis,et al.  Source-Level Compiler Optimizations for High-Level Synthesis , 2016, SEEDA-CECNSM '16.

[5]  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.

[6]  Jason Helge Anderson,et al.  Modulo SDC scheduling with recurrence minimization in high-level synthesis , 2014, 2014 24th International Conference on Field Programmable Logic and Applications (FPL).

[7]  Daniel Gajski,et al.  Introduction to high-level synthesis , 1994, IEEE Design & Test of Computers.

[8]  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.

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

[10]  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.

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

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

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

[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]  Sumit Gupta,et al.  SPARK: A Parallelizing Approach to the High-Level Synthesis of Digital Circuits , 2004 .

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

[17]  Zhiru Zhang,et al.  SDC-based modulo scheduling for pipeline synthesis , 2013, 2013 IEEE/ACM International Conference on Computer-Aided Design (ICCAD).

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

[19]  George A. Constantinides,et al.  Loop Splitting for Efficient Pipelining in High-Level Synthesis , 2016, 2016 IEEE 24th Annual International Symposium on Field-Programmable Custom Computing Machines (FCCM).

[20]  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.

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

[22]  Georgios I. Stamoulis,et al.  Loop pipelining in high-level synthesis with CCC , 2017, 2017 6th International Conference on Modern Circuits and Systems Technologies (MOCAST).

[23]  James Hrica Floating-Point Design with Vivado HLS , 2012 .