A Survey and Evaluation of FPGA High-Level Synthesis Tools

High-level synthesis (HLS) is increasingly popular for the design of high-performance and energy-efficient heterogeneous systems, shortening time-to-market and addressing today's system complexity. HLS allows designers to work at a higher-level of abstraction by using a software program to specify the hardware functionality. Additionally, HLS is particularly interesting for designing field-programmable gate array circuits, where hardware implementations can be easily refined and replaced in the target device. Recent years have seen much activity in the HLS research community, with a plethora of HLS tool offerings, from both industry and academia. All these tools may have different input languages, perform different internal optimizations, and produce results of different quality, even for the very same input description. Hence, it is challenging to compare their performance and understand which is the best for the hardware to be implemented. We present a comprehensive analysis of recent HLS tools, as well as overview the areas of active interest in the HLS research community. We also present a first-published methodology to evaluate different HLS tools. We use our methodology to compare one commercial and three academic tools on a common set of C benchmarks, aiming at performing an in-depth evaluation in terms of performance and the use of resources.

[1]  Jens Willkomm,et al.  Multiple constant multiplication with ternary adders , 2013, 2013 23rd International Conference on Field programmable Logic and Applications.

[2]  Kostas Masselos,et al.  Automated Synthesis of FSMD-Based Accelerators for Hardware Compilation , 2012, 2012 IEEE 23rd International Conference on Application-Specific Systems, Architectures and Processors.

[3]  Josep Llosa,et al.  Swing module scheduling: a lifetime-sensitive approach , 1996, Proceedings of the 1996 Conference on Parallel Architectures and Compilation Technique.

[4]  Kunle Olukotun,et al.  The Future of Microprocessors , 2005, ACM Queue.

[5]  Rishiyur S. Nikhil,et al.  Bluespec System Verilog: efficient, correct RTL from high level specifications , 2004, Proceedings. Second ACM and IEEE International Conference on Formal Methods and Models for Co-Design, 2004. MEMOCODE '04..

[6]  Dihu Chen,et al.  A gradual scheduling framework for problem size reduction and cross basic block parallelism exploitation in high-level synthesis , 2013, 2013 18th Asia and South Pacific Design Automation Conference (ASP-DAC).

[7]  Ieee Circuits,et al.  IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems information for authors , 2018, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[8]  Hiroyuki Tomiyama,et al.  Proposal and Quantitative Analysis of the CHStone Benchmark Program Suite for Practical C-based High-level Synthesis , 2009, J. Inf. Process..

[9]  Vlad Mihai Sima,et al.  A lightweight speculative and predicative scheme for hardware execution , 2012, 2012 International Conference on Reconfigurable Computing and FPGAs.

[10]  P. Cochat,et al.  Et al , 2008, Archives de pediatrie : organe officiel de la Societe francaise de pediatrie.

[11]  John J. Granacki,et al.  DEFACTO: A Design Environment for Adaptive Computing Technology , 1999, IPPS/SPDP Workshops.

[12]  John Wawrzynek,et al.  The Garp Architecture and C Compiler , 2000, Computer.

[13]  Jason Helge Anderson,et al.  LegUp: high-level synthesis for FPGA-based processor/accelerator systems , 2011, FPGA '11.

[14]  Wen-mei W. Hwu,et al.  The benefit of predicated execution for software pipelining , 1993, [1993] Proceedings of the Twenty-sixth Hawaii International Conference on System Sciences.

[15]  Fabrizio Ferrandi,et al.  A design methodology to implement memory accesses in High-Level Synthesis , 2011, 2011 Proceedings of the Ninth IEEE/ACM/IFIP International Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS).

[16]  Florent de Dinechin,et al.  Designing Custom Arithmetic Data Paths with FloPoCo , 2011, IEEE Design & Test of Computers.

[17]  Florent de Dinechin Multiplication by Rational Constants , 2012, IEEE Trans. Circuits Syst. II Express Briefs.

[18]  Jason Cong,et al.  Improving polyhedral code generation for high-level synthesis , 2013, 2013 International Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS).

[19]  Fabrizio Ferrandi,et al.  Bambu: A modular framework for the high level synthesis of memory-intensive applications , 2013, 2013 23rd International Conference on Field programmable Logic and Applications.

[20]  Gianluca Palermo,et al.  Using speculative computation and parallelizing techniques to improve scheduling of control based designs , 2006, Asia and South Pacific Conference on Design Automation, 2006..

[21]  Jason Cong,et al.  Theory and algorithm for generalized memory partitioning in high-level synthesis , 2014, FPGA.

[22]  Leon Stok,et al.  Data path synthesis , 1994, Integr..

[23]  Tomasz S. Czajkowski,et al.  Harnessing the power of FPGAs using altera's OpenCL compiler , 2013, FPGA '13.

[24]  Jason Cong,et al.  Combining computation and communication optimizations in system synthesis for streaming applications , 2014, FPGA.

[25]  Scott A. Mahlke,et al.  Characterizing the impact of predicated execution on branch prediction , 1994, Proceedings of MICRO-27. The 27th Annual IEEE/ACM International Symposium on Microarchitecture.

[26]  Maya Gokhale,et al.  NAPA C: compiling for a hybrid RISC/FPGA architecture , 1998, Proceedings. IEEE Symposium on FPGAs for Custom Computing Machines (Cat. No.98TB100251).

[27]  Vlad Mihai Sima,et al.  DWARV 2.0: A CoSy-based C-to-VHDL hardware compiler , 2012, 22nd International Conference on Field Programmable Logic and Applications (FPL).

[28]  Prithviraj Banerjee,et al.  Macro-models for high-level area and power estimation on FPGAs , 2006, Int. J. Simul. Process. Model..

[29]  Jason Cong,et al.  Optimizing FPGA-based Accelerator Design for Deep Convolutional Neural Networks , 2015, FPGA.

[30]  Jeff Mason,et al.  CHiMPS: A C-level compilation flow for hybrid CPU-FPGA architectures , 2008, 2008 International Conference on Field Programmable Logic and Applications.

[31]  Nikil D. Dutt,et al.  SPARK: a high-level synthesis framework for applying parallelizing compiler transformations , 2003, 16th International Conference on VLSI Design, 2003. Proceedings..

[32]  Luciano Lavagno,et al.  Exploiting area/delay tradeoffs in high-level synthesis , 2012, 2012 Design, Automation & Test in Europe Conference & Exhibition (DATE).

[33]  Adrian Park,et al.  Designing Modular Hardware Accelerators in C with ROCCC 2.0 , 2010, 2010 18th IEEE Annual International Symposium on Field-Programmable Custom Computing Machines.

[34]  Luca P. Carloni,et al.  System-level memory optimization for high-level synthesis of component-based SoCs , 2014, 2014 International Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS).

[35]  Seth Copen Goldstein,et al.  PipeRench: A Reconfigurable Architecture and Compiler , 2000, Computer.

[36]  Maya Gokhale,et al.  Trident: From High-Level Language to Hardware Circuitry , 2007, Computer.

[37]  Philippe Coussy,et al.  High-Level Synthesis: from Algorithm to Digital Circuit , 2008 .

[38]  B. Ramakrishna Rau,et al.  Iterative modulo scheduling: an algorithm for software pipelining loops , 1994, MICRO 27.

[39]  Brad L. Hutchings,et al.  Sea Cucumber: A Synthesizing Compiler for FPGAs , 2002, FPL.

[40]  Kazutoshi Wakabayashi,et al.  C-based SoC design flow and EDA tools: an ASIC and system vendorperspective , 2000, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[41]  Bruce A. Draper,et al.  High-Level Language Abstraction for Reconfigurable Computing , 2003, Computer.

[42]  Jason Helge Anderson,et al.  From software threads to parallel hardware in high-level synthesis for FPGAs , 2013, 2013 International Conference on Field-Programmable Technology (FPT).

[43]  Seon Wook Kim,et al.  GCC2verilog compiler toolset for complete translation of c programming language into verilog HDL , 2011 .

[44]  Luca P. Carloni,et al.  Compositional system-level design exploration with planning of high-level synthesis , 2012, 2012 Design, Automation & Test in Europe Conference & Exhibition (DATE).

[45]  Rainer Leupers,et al.  Retargetable Code Optimization for Predicated Execution , 2008, 2008 Design, Automation and Test in Europe.

[46]  Albert Cohen,et al.  The Polyhedral Model Is More Widely Applicable Than You Think , 2010, CC.

[47]  Dirk Stroobandt,et al.  An overview of today’s high-level synthesis tools , 2012, Design Automation for Embedded Systems.

[48]  Satnam Singh,et al.  Kiwi: Synthesis of FPGA Circuits from Parallel Programs , 2008, 2008 16th International Symposium on Field-Programmable Custom Computing Machines.

[49]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[50]  Jason Cong,et al.  High-Level Synthesis for FPGAs: From Prototyping to Deployment , 2011, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[51]  Nikil D. Dutt,et al.  Conditional speculation and its effects on performance and area for high-level synthesis , 2001, International Symposium on System Synthesis (IEEE Cat. No.01EX526).

[52]  Deming Chen,et al.  Fast and effective placement and routing directed high-level synthesis for FPGAs , 2014, FPGA.

[53]  Niraj K. Jha,et al.  Incorporating speculative execution into scheduling of control-flow intensive behavioral descriptions , 1998, Proceedings 1998 Design and Automation Conference. 35th DAC. (Cat. No.98CH36175).

[54]  B. Ramakrishna Rau,et al.  PICO: Automatically Designing Custom Computers , 2002, Computer.

[55]  Prithviraj Banerjee,et al.  Balanced Scheduling and Operation Chaining in High-Level Synthesis for FPGA Designs , 2007, 8th International Symposium on Quality Electronic Design (ISQED'07).