High-level synthesis

From HandWiki
Short description: Creation of hardware designs from software code

High-level synthesis (HLS), sometimes referred to as C synthesis, electronic system-level (ESL) synthesis, algorithmic synthesis, or behavioral synthesis, is an automated design process that takes an abstract behavioral specification of a digital system and finds a register-transfer level structure that realizes the given behavior.[1][2][3]

Synthesis begins with a high-level specification of the problem, where behavior is generally decoupled from low-level circuit mechanics such as clock-level timing. Early HLS explored a variety of input specification languages,[4] although recent research and commercial applications generally accept synthesizable subsets of ANSI C/C++/SystemC/MATLAB. The code is analyzed, architecturally constrained, and scheduled to transcompile from a transaction-level model (TLM) into a register-transfer level (RTL) design in a hardware description language (HDL), which is in turn commonly synthesized to the gate level by the use of a logic synthesis tool.

The goal of HLS is to let hardware designers efficiently build and verify hardware, by giving them better control over optimization of their design architecture, and through the nature of allowing the designer to describe the design at a higher level of abstraction while the tool does the RTL implementation. Verification of the RTL is an important part of the process.[5]

Hardware can be designed at varying levels of abstraction. The commonly used levels of abstraction are gate level, register-transfer level (RTL), and algorithmic level.

While logic synthesis uses an RTL description of the design, high-level synthesis works at a higher level of abstraction, starting with an algorithmic description in a high-level language such as SystemC and ANSI C/C++. The designer typically develops the module functionality and the interconnect protocol. The high-level synthesis tools handle the micro-architecture and transform untimed or partially timed functional code into fully timed RTL implementations, automatically creating cycle-by-cycle detail for hardware implementation.[6] The (RTL) implementations are then used directly in a conventional logic synthesis flow to create a gate-level implementation.

History

Early academic work extracted scheduling, allocation, and binding as the basic steps for high-level-synthesis. Scheduling partitions the algorithm in control steps that are used to define the states in the finite-state machine. Each control step contains one small section of the algorithm that can be performed in a single clock cycle in the hardware. Allocation and binding maps the instructions and variables to the hardware components, multiplexers, registers and wires of the data path.

First generation behavioral synthesis was introduced by Synopsys in 1994 as Behavioral Compiler[7] and used Verilog or VHDL as input languages. The abstraction level used was partially timed (clocked) processes. Tools based on behavioral Verilog or VHDL were not widely adopted in part because neither languages nor the partially timed abstraction were well suited to modeling behavior at a high level. 10 years later, in early 2004, Synopsys end-of-lifed Behavioral Compiler.[8]

In 1998, Forte Design Systems introduced its Cynthesizer tool which used SystemC as an entry language instead of Verilog or VHDL. Cynthesizer was adopted by many Japanese companies in 2000 as Japan had a very mature SystemC user community. The first high-level synthesis tapeout was achieved in 2001 by Sony using Cynthesizer. Adoption in the United States started in earnest in 2008.[citation needed]

In 2006, the "SDC modulo scheduling" technique for optimal scheduling of pipelines was developed.[9] This technique reduces the task of optimally scheduling operations into different pipeline stages while minimizing registers, which is naively an integer linear programming problem, to a linear programming problem, by making use of the fact that the constraint matrix is totally unimodular. For high level synthesis of ASIC designs this algorithm works well, but for FPGA use there are typically complex resource constraints that must be implemented using a brute force search on top of the SDC scheduling algorithm.

Source input

The most common source inputs for high-level synthesis are based on standard languages such as ANSI C/C++, SystemC and MATLAB.

High-level synthesis typically also includes a bit-accurate executable specification as input, since to derive an efficient hardware implementation, additional information is needed on what is an acceptable Mean-Square Error or Bit-Error Rate etc. For example, if the designer starts with an FIR filter written using the "double" floating type, before he can derive an efficient hardware implementation, they need to perform numerical refinement to arrive at a fixed-point implementation. The refinement requires additional information on the level of quantization noise that can be tolerated, the valid input ranges etc. This bit-accurate specification makes the high level synthesis source specification functionally complete.[10] Normally the tools infer from the high level code a Finite State Machine and a Datapath that implement arithmetic operations.

Process stages

The high-level synthesis process consists of a number of activities. Various high-level synthesis tools perform these activities in different orders using different algorithms. Some high-level synthesis tools combine some of these activities or perform them iteratively to converge on the desired solution.[11]

  • Lexical processing
  • Algorithm optimization
  • Control/Dataflow analysis
  • Library processing
  • Resource allocation
  • Scheduling
  • Functional unit binding
  • Register binding
  • Output processing
  • Input Rebundling

Functionality

In general, an algorithm can be performed over many clock cycles with few hardware resources, or over fewer clock cycles using a larger number of ALUs, registers and memories. Correspondingly, from one algorithmic description, a variety of hardware microarchitectures can be generated by an HLS compiler according to the directives given to the tool. This is the same trade off of execution speed for hardware complexity as seen when a given program is run on conventional processors of differing performance, yet all running at roughly the same clock frequency.

Architectural constraints

Synthesis constraints for the architecture can automatically be applied based on the design analysis.[5] These constraints can be broken into

  • Hierarchy
  • Interface
  • Memory
  • Loop
  • Low-level timing constraints
  • Iteration

Interface synthesis

Interface Synthesis refers to the ability to accept pure C/C++ description as its input, then use automated interface synthesis technology to control the timing and communications protocol on the design interface. This enables interface analysis and exploration of a full range of hardware interface options such as streaming, single- or dual-port RAM plus various handshaking mechanisms. With interface synthesis the designer does not embed interface protocols in the source description. Examples might be: direct connection, one line, 2 line handshake, FIFO.[12]

Vendors

Data reported on recent Survey[13]

Status Compiler Owner License Input Output Year Domain Test
Bench
FP FixP
In Use Stratus HLS Cadence Design Systems Commercial C/C++ SystemC RTL 2015 All Yes Yes Yes
AUGH TIMA Lab. Academic C subset VHDL 2012 All Yes No No
eXCite Y Explorations Commercial C VHDL/Verilog 2001 All Yes No Yes
Bambu PoliMi Academic C VHDL/Verilog 2012 All Yes Yes No
Bluespec BlueSpec Inc. BSD-3 BSV SystemVerilog 2007 All No No No
QCC CacheQ Systems, Inc. Commercial C/C++/Fortan Host Executable + FPGA Bit file (SystemVerilog is intermediate) 2018 All - multi-core and heterogeneous compute Yes (C++) Yes Yes
CHC Altium Commercial C subset VHDL/Verilog 2008 All No Yes Yes
CoDeveloper Impulse Accelerated Commercial Impulse-C VHDL 2003 Image
Streaming
Yes Yes No
HDL Coder MathWorks Commercial MATLAB, Simulink, Stateflow, Simscape VHDL / Verilog 2003 Control Systems, Signal Processing, Wireless, Radar, Communications, Image and Computer Vision Yes Yes Yes
CyberWorkBench NEC Commercial C, BDL, SystemC VHDL/Verilog 2004 All Cycle/
Formal
Yes Yes
Catapult Mentor
(Siemens business)
Commercial C, C++, SystemC VHDL/Verilog 2004 All Yes Yes Yes
DWARV TU. Delft Academic C subset VHDL 2012 All Yes Yes Yes
GAUT U. Bretagne Academic C/C++ VHDL 2010 DSP Yes No Yes
Hastlayer Lombiq Technologies BSD-3 C#/C++/F#...
(.NET)
VHDL 2015 .NET Yes Yes Yes
Instant SoC FPGA Cores Commercial C/C++ VHDL/Verilog 2019 All Yes No No
Intel High Level Synthesis Compiler Intel FPGA (Formerly Altera) Commercial C/C++ Verilog 2017 All Yes Yes Yes
LegUp HLS LegUp Computing Commercial C/C++ Verilog 2015 All Yes Yes Yes
LegUp U. Toronto Academic C Verilog 2010 All Yes Yes No
MaxCompiler Maxeler Commercial MaxJ RTL 2010 DataFlow No Yes No
ROCCC Jacquard Comp. Commercial C subset VHDL 2010 Streaming No Yes No
Symphony C Synopsys Commercial C/C++ VHDL/Verilog/
SystemC
2010 All Yes No Yes
VivadoHLS
(formerly AutoPilot
from AutoESL[14])
Xilinx Commercial C/C++/SystemC VHDL/Verilog/
SystemC
2013 All Yes Yes Yes
Kiwi U. Cambridge Academic C# Verilog 2008 .NET No Yes Yes
CHiMPS U. Washington Academic C VHDL 2008 All No No No
gcc2verilog U. Korea Academic C Verilog 2011 All No No No
HercuLeS Ajax Compilers Commercial C/NAC VHDL 2012 All Yes Yes Yes
Shang U. Illinois Academic C Verilog 2013 All Yes ? ?
Trident Los Alamos NL Academic C subset VHDL 2007 Scientific No Yes No
Aban-
doned
AccelDSP Xilinx Commercial MATLAB VHDL/Verilog 2006 DSP Yes Yes Yes
C2H Altera Commercial C VHDL/Verilog 2006 All No No No
CtoVerilog U. Haifa Academic C Verilog 2008 All No No No
DEFACTO U. South Cailf. Academic C RTL 1999 DSE No No No
Garp U. Berkeley Academic C subset bitstream 2000 Loop No No No
MATCH U. Northwest Academic MATLAB VHDL 2000 Image No No No
Napa-C Sarnoff Corp. Academic C subset VHDL/Verilog 1998 Loop No No No
PipeRench U.Carnegie M. Academic DIL bistream 2000 Stream No No No
SA-C U. Colorado Academic SA-C VHDL 2003 Image No No No
SeaCucumber U. Brigham Y. Academic Java EDIF 2002 All No Yes Yes
SPARK U. Cal. Irvine Academic C VHDL 2003 Control No No No
  • Dynamatic from EPFL/ETH Zurich
  • MATLAB HDL Coder [1] from Mathworks[15]
  • HLS-QSP from CircuitSutra Technologies[16]
  • C-to-Silicon from Cadence Design Systems
  • Concurrent Acceleration from Concurrent EDA
  • Symphony C Compiler from Synopsys
  • QuickPlay from PLDA[17]
  • PowerOpt from ChipVision[18]
  • Cynthesizer from Forte Design Systems (now Stratus HLS from Cadence Design Systems)
  • Catapult C from Calypto Design Systems, part of Mentor Graphics as of 2015, September 16
  • PipelineC [2]
  • CyberWorkBench from NEC[19]
  • Mega Hardware [20]
  • C2R from CebaTech[21]
  • CoDeveloper from Impulse Accelerated Technologies
  • HercuLeS by Nikolaos Kavvadias[22]
  • PICO from Synfora, acquired by Synopsys in June 2010[23] (PICO = Program In/Code Out)
  • xPilot from University of California, Los Angeles[24]
  • Vsyn from vsyn.ru[25]
  • ngDesign from SynFlow[26]

See also

References

  1. Coussy, Philippe; Morawiec, Adam, eds (2008). High-Level Synthesis - Springer. doi:10.1007/978-1-4020-8588-8. ISBN 978-1-4020-8587-1. 
  2. McFarland, M.C.; Parker, A.C.; Camposano, R. (February 1990). "The high-level synthesis of digital systems". Proceedings of the IEEE 78 (2): 301–318. doi:10.1109/5.52214. ISSN 1558-2256. https://ieeexplore.ieee.org/document/52214. 
  3. "HLS Book : Home". https://www.hlsbook.com/. 
  4. IEEE Xplore High-Level Synthesis: Past, Present, and Future DOI 10.1109/MDT.2009.83
  5. 5.0 5.1 Bowyer, Bryan (2005-05-02). "The 'why' and 'what' of algorithmic synthesis". EE Times. https://www.eetimes.com/the-why-and-what-of-algorithmic-synthesis/. 
  6. "C-Based Rapid Prototyping for Digital Signal Processing". UBS University, France. http://www.ee.bilkent.edu.tr/~signal/defevent/papers/cr1179.pdf. 
  7. "Publications and Presentations". http://www.bdti.com/articles/info_dspx95asics.htm. 
  8. "Behavioral synthesis crossroad". EE Times. http://www.eetimes.com/news/design/columns/tool_talk/showArticle.jhtml?articleID=18700196. 
  9. Zhang, Zhiru; Liu, Bin (2013). 2013 IEEE/ACM International Conference on Computer-Aided Design (ICCAD). IEEE. pp. 211–218. ISBN 978-1-4799-1071-7. https://www.csl.cornell.edu/~zhiruz/pdfs/sdcmod-iccad2013.pdf. 
  10. Multiple Word-Length High-Level Synthesis EURASIP Journal on Embedded Systems
  11. "A look inside behavioral synthesis". EE Times. http://www.eetimes.com/document.asp?doc_id=1217645. 
  12. "DesignCon: InfoVault: Paper Library". http://www.designcon.com/infovault/paper.asp?PAPER_ID=407. 
  13. Nane, R.; Sima, V. M.; Pilato, C.; Choi, J.; Fort, B.; Canis, A.; Chen, Y. T.; Hsiao, H. et al. (2016). "A Survey and Evaluation of FPGA High-Level Synthesis Tools". IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems 35 (10): 1591–1604. doi:10.1109/TCAD.2015.2513673. ISSN 0278-0070. https://re.public.polimi.it/bitstream/11311/998432/1/TCADHLSEVAL2016.pdf. 
  14. "Xilinx buys high-level synthesis EDA vendor". EE Times. 2011-02-05. http://www.eetimes.com/electronics-news/4212668/Xilinx-buys-high-level-synthesis-EDA-vendor. 
  15. "MathWorks – Makers of MATLAB and Simulink". http://mathworks.com/. 
  16. "SystemC based ESL methodologies - SystemC based ESL methodologies". http://www.circuitsutra.com. 
  17. John M. at a major ERP & DBMS Corporation (2016-08-29). "QuickPlay: Bringing FPGA Computing to the Masses". http://www.quickplay.io. 
  18. "Chipvision - Fast Track to Low Power". http://www.chipvision.com/. 
  19. "CyberWorkBench: Products". NEC. http://www.nec.com/en/global/prod/cwb/index.html. 
  20. "Accueil mega-hardware". http://www.mega-hardware.com/. 
  21. "Cebatech - Home". http://www.cebatech.com/. 
  22. "Nikolaos Kavvadias - HercuLeS high-level synthesis tool". http://www.nkavvadias.com/hercules/. 
  23. "Synopsys buys Synfora assets". EE Times. http://www.eetimes.com/electronics-news/4200083/Synopsys-buys-Synfora-assets. 
  24. "The xPilot System". http://cadlab.cs.ucla.edu/soc/. 
  25. "vSyn.ru". 2016-06-16. http://www.vsyn.ru. 
  26. "Hardware design for all". Synflow. https://www.synflow.com/. 

Further reading

  • Michael Fingeroff (2010). High-Level Synthesis Blue Book. Xlibris[self-published source] Corporation. ISBN 978-1-4500-9724-6. 
  • Coussy, P.; Gajski, D. D.; Meredith, M.; Takach, A. (2009). "An Introduction to High-Level Synthesis". IEEE Design & Test of Computers 26 (4): 8–17. doi:10.1109/MDT.2009.69. 
  • Ewout S. J. Martens; Georges Gielen (2008). High-level modeling and synthesis of analog integrated systems. Springer. ISBN 978-1-4020-6801-0. 
  • Saraju Mohanty; N. Ranganathan; E. Kougianos; P. Patra (2008). Low-Power High-Level Synthesis for Nanoscale CMOS Circuits. Springer. ISBN 978-0387764733. 
  • Alice C. Parker; Yosef Tirat-Gefen; Suhrid A. Wadekar (2007). "System-Level Design". in Wai-Kai Chen. The VLSI handbook (2nd ed.). CRC Press. chapter 76. ISBN 978-0-8493-4199-1. 
  • Shahrzad Mirkhani; Zainalabedin Navabi (2007). "System Level Design Languages". in Wai-Kai Chen. The VLSI handbook (2nd ed.). CRC Press. chapter 86. ISBN 978-0-8493-4199-1.  covers the use of C/C++, SystemC, TML and even UML
  • Liming Xiu (2007). VLSI circuit design methodology demystified: a conceptual taxonomy. Wiley-IEEE. ISBN 978-0-470-12742-1. 
  • John P. Elliott (1999). Understanding behavioral synthesis: a practical guide to high-level design. Springer. ISBN 978-0-7923-8542-4. 
  • Nane, Razvan; Sima, Vlad-Mihai; Pilato, Christian; Choi, Jongsok; Fort, Blair; Canis, Andrew; Chen, Yu Ting; Hsiao, Hsuan et al. (2016). "A Survey and Evaluation of FPGA High-Level Synthesis Tools". IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems 35 (10): 1591–1604. doi:10.1109/TCAD.2015.2513673. 
  • Gupta, Rajesh; Brewer, Forrest (2008). "High-Level Synthesis: A Retrospective". "High-level Synthesis: A Retrospective". Springer. pp. 13–28. doi:10.1007/978-1-4020-8588-8_2. ISBN 978-1-4020-8587-1. 

External links