high-level synthesis

{{Short description|Creation of hardware designs from software code}}

{{Use American English|date = April 2019}}

{{Multiple issues|

{{More citations needed|date=October 2016}}

{{Unbalanced|date=April 2011}}}}

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.{{cite book|title=High-Level Synthesis - Springer |doi=10.1007/978-1-4020-8588-8 |isbn=978-1-4020-8587-1 |year=2008 |editor1-last=Coussy |editor1-first=Philippe |editor2-last=Morawiec |editor2-first=Adam }}{{Cite journal|last1=McFarland|first1=M.C.|last2=Parker|first2=A.C.|last3=Camposano|first3=R.|date=February 1990|title=The high-level synthesis of digital systems|url=https://ieeexplore.ieee.org/document/52214|journal=Proceedings of the IEEE|volume=78|issue=2|pages=301–318|doi=10.1109/5.52214|issn=1558-2256}}{{Cite web |title=HLS Book : Home |url=https://www.hlsbook.com/ |access-date=2023-06-21 |website=www.hlsbook.com}}

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,IEEE Xplore [https://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=5209959 High-Level Synthesis: Past, Present, and Future] DOI 10.1109/MDT.2009.83 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.{{cite web |last=Bowyer |first=Bryan |date=2005-05-02 |title=The 'why' and 'what' of algorithmic synthesis |url=https://www.eetimes.com/the-why-and-what-of-algorithmic-synthesis/ |access-date=2016-10-03 |publisher=EE Times}}

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.{{cite web|publisher=UBS University, France|url=http://www.ee.bilkent.edu.tr/~signal/defevent/papers/cr1179.pdf|title=C-Based Rapid Prototyping for Digital Signal Processing|access-date=2016-10-03}} 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{{cite web |url=http://www.bdti.com/articles/info_dspx95asics.htm |title=Publications and Presentations |website=Bdti.com |access-date=2016-10-03 |url-status=dead |archive-url=https://web.archive.org/web/20080426075303/http://www.bdti.com/articles/info_dspx95asics.htm |archive-date=2008-04-26 }} 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.{{cite web|url=http://www.eetimes.com/news/design/columns/tool_talk/showArticle.jhtml?articleID=18700196 |title=Behavioral synthesis crossroad |publisher=EE Times |access-date=2016-10-03}}

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|date=March 2023}}

In 2006, an efficient and scalable "SDC modulo scheduling" technique was developed on control and data flow graphs {{Cite book |last1=Cong |first1=Jason |last2=Fan |first2=Yiping |last3=Han |first3=Guoling |last4=Jiang |first4=Wei |last5=Zhang |first5=Zhiru |chapter=Platform-Based Behavior-Level and System-Level Synthesis |date=September 2006 |pages=199–202 |title=2006 IEEE International SOC Conference |chapter-url=http://dx.doi.org/10.1109/socc.2006.283880 |publisher=IEEE |doi=10.1109/socc.2006.283880|isbn=0-7803-9782-7 }} and was later extended to pipeline scheduling.{{cite book |last1=Zhang |first1=Zhiru |url=https://www.csl.cornell.edu/~zhiruz/pdfs/sdcmod-iccad2013.pdf |title=2013 IEEE/ACM International Conference on Computer-Aided Design (ICCAD) |last2=Liu |first2=Bin |date=2013 |publisher=IEEE |isbn=978-1-4799-1071-7 |pages=211–218}} This technique uses the integer linear programming formulation. But it shows that the underlying constraint matrix is totally unimodular (after approximating the resource constraints). Thus, the problem can be solved in polynomial time optimally using a linear programming solver in polynomial time. This work was inducted to the FPGA and Reconfigurable Computing Hall of Fame 2022.{{Cite journal |last1=Cong |first1=Jason |last2=Bin Liu |last3=Neuendorffer |first3=Stephen |last4=Noguera |first4=Juanjo |last5=Vissers |first5=Kees |last6=Zhiru Zhang |date=April 2011 |title=High-Level Synthesis for FPGAs: From Prototyping to Deployment |url=http://dx.doi.org/10.1109/tcad.2011.2110592 |journal=IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems |volume=30 |issue=4 |pages=473–491 |doi=10.1109/tcad.2011.2110592 |issn=0278-0070}}

The SDC scheduling algorithm was implemented in the xPilot HLS system{{Cite book |last1=Cong |first1=J. |last2=Zhiru Zhang |chapter=An efficient and versatile scheduling algorithm based on SDC formulation |date=2006 |pages=433–438 |title=2006 43rd ACM/IEEE Design Automation Conference |chapter-url=http://dx.doi.org/10.1109/dac.2006.229228 |publisher=IEEE |doi=10.1109/dac.2006.229228|isbn=1-59593-381-6 }} developed at UCLA,{{Cite web |title=xPilot: Platform-based Behavior Synthesis System {{!}} VAST lab |url=https://vast.cs.ucla.edu/software/xpilot-platform-based-behavior-synthesis-system |access-date=2024-04-18 |website=vast.cs.ucla.edu}} and later licensed to the AutoESL Design Technologies, a spin-off from UCLA. AutoESL was acquired by Xilinx (now part of AMD) in 2011, and the HLS tool developed by AutoESL became the base of Xilinx HLS solutions, Vivado HLS and Vitis HLS, widely used for FPGA designs.

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.[http://www.hindawi.com/GetArticle.aspx?doi=10.1155/2008/916867&e=html Multiple Word-Length High-Level Synthesis] EURASIP Journal on Embedded Systems

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.{{cite web|url=http://www.eetimes.com/document.asp?doc_id=1217645 |title=A look inside behavioral synthesis |publisher=EE Times |access-date=2016-10-03}}

  • 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. 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.{{cite web |url=http://www.designcon.com/infovault/paper.asp?PAPER_ID=407 |title=DesignCon: InfoVault: Paper Library |website=www.designcon.com |access-date=13 January 2022 |archive-url=https://web.archive.org/web/20100925034609/http://www.designcon.com/infovault/paper.asp?PAPER_ID=407 |archive-date=25 September 2010 |url-status=dead}}

Vendors

Data reported on recent Survey{{Cite journal|last1=Nane|first1=R.|last2=Sima|first2=V. M.|last3=Pilato|first3=C.|last4=Choi|first4=J.|last5=Fort|first5=B.|last6=Canis|first6=A.|last7=Chen|first7=Y. T.|last8=Hsiao|first8=H.|last9=Brown|first9=S.|year=2016|title=A Survey and Evaluation of FPGA High-Level Synthesis Tools|journal=IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems|volume=35|issue=10|pages=1591–1604|doi=10.1109/TCAD.2015.2513673|issn=0278-0070|hdl=11311/998432|s2cid=8749577|url=https://re.public.polimi.it/bitstream/11311/998432/1/TCADHLSEVAL2016.pdf|hdl-access=free}}

class="wikitable"
Status

! Compiler

! Owner

! License

! Input

! Output

! Year

! Domain

! Test
bench

! FP

! FixP

rowspan="28" | In use

|[https://www.cadence.com/en_US/home/tools/digital-design-and-signoff/synthesis/stratus-high-level-synthesis.html Stratus HLS]

|Cadence Design Systems

|Commercial

|CC++ SystemC

|RTL

|2015

|All

|{{Yes}}

|{{Yes}}

|{{Yes}}

[http://tima.imag.fr/sls/research-projects/augh/ AUGH]

|TIMA Lab.

|Academic

|C subset

|VHDL

|2012

|All

|{{Yes}}

|{{No}}

|{{No}}

[http://www.yxi.com eXCite] {{Webarchive|url=https://web.archive.org/web/20190917062628/http://www.yxi.com/ |date=2019-09-17}}

|Y Explorations

|Commercial

|C

|VHDLVerilog

|2001

|All

|{{Yes}}

|{{No}}

|{{Yes}}

[http://panda.dei.polimi.it/?page_id=81 Bambu]

|PoliMi

|Academic

|C

|VHDLVerilog

|2012

|All

|{{Yes}}

|{{Yes}}

|{{No}}

Bluespec

|BlueSpec, Inc.

|BSD-3

|Bluespec SystemVerilog
(Haskell)

|SystemVerilog

|2007

|All

|{{No}}

|{{No}}

|{{No}}

[https://cacheq.com/ QCC]

|[https://cacheq.com/ CacheQ Systems, Inc.]

|Commercial

|C, C++, Fortran

|Host executable + FPGA bit file (SystemVerilog is intermediate)

|2018

|All - multi-core and heterogeneous compute

|{{Yes}} (C++)

|{{Yes}}

|{{Yes}}

CHC

|Altium

|Commercial

|C subset

|VHDLVerilog

|2008

|All

|{{No}}

|{{Yes}}

|{{Yes}}

CoDeveloper

|Impulse Accelerated

|Commercial

|Impulse-C

|VHDL

|2003

|Image
streaming

|{{Yes}}

|{{Yes}}

|{{No}}

[https://www.mathworks.com/products/hdl-coder.html 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}}

[http://www.cyberworkbench.com CyberWorkBench]

|NEC

|Commercial

|C, BDL, SystemC

|VHDLVerilog

|2004

|All

|Cycle,
formal

|{{Yes}}

|{{Yes}}

[https://eda.sw.siemens.com/en-US/ic/catapult-high-level-synthesis Catapult]

|Siemens EDA

|Commercial

|CC++ SystemC

|VHDLVerilog

|2004

|All

|{{Yes}}

|{{Yes}}

|{{Yes}}

DWARV

|TU. Delft

|Academic

|C subset

|VHDL

|2012

|All

|{{Yes}}

|{{Yes}}

|{{Yes}}

[http://www.gaut.fr GAUT]

|University of Western Brittany

|Academic

|C, C++

|VHDL

|2010

|DSP

|{{Yes}}

|{{No}}

|{{Yes}}

[https://hastlayer.com/ Hastlayer]

|Lombiq Technologies

|BSD-3

|C#, C++, F#, ...
(.NET)

|VHDL

|2015

|.NET

|{{Yes}}

|{{Yes}}

|{{Yes}}

[http://www.fpga-cores.com/instant-soc/ Instant SoC]

|FPGA Cores

|Commercial

|C, C++

|VHDLVerilog

|2019

|All

|{{Yes}}

|{{No}}

|{{No}}

[https://www.intel.com/content/www/us/en/software/programmable/quartus-prime/hls-compiler.html Intel High Level Synthesis Compiler]

|Intel FPGA (Formerly Altera)

|Commercial

|C, C++

|Verilog

|2017

|All

|{{Yes}}

|{{Yes}}

|{{Yes}}

[https://www.legupcomputing.com LegUp HLS]

|LegUp Computing

|Commercial

|C, C++

|Verilog

|2015

|All

|{{Yes}}

|{{Yes}}

|{{Yes}}

[http://legup.eecg.utoronto.ca LegUp] {{Webarchive|url=https://web.archive.org/web/20200724081231/http://legup.eecg.utoronto.ca/ |date=2020-07-24}}

|University of Toronto

|Academic

|C

|Verilog

|2010

|All

|{{Yes}}

|{{Yes}}

|{{No}}

MaxCompiler

|Maxeler

|Commercial

|MaxJ

|RTL

|2010

|Data-flow analysis

|{{No}}

|{{Yes}}

|{{No}}

[http://roccc.cs.ucr.edu/ ROCCC]

|Jacquard Comp.

|Commercial

|C subset

|VHDL

|2010

|Streaming

|{{No}}

|{{Yes}}

|{{No}}

Symphony C

|Synopsys

|Commercial

|C, C++

|VHDLVerilog,
SystemC

|2010

|All

|{{Yes}}

|{{No}}

|{{Yes}}

[http://www.xilinx.com/products/design-tools/vivado/ VivadoHLS]
(formerly AutoPilot
from AutoESL{{cite web |url=http://www.eetimes.com/electronics-news/4212668/Xilinx-buys-high-level-synthesis-EDA-vendor |title=Xilinx buys high-level synthesis EDA vendor |publisher=EE Times |date=2011-02-05 |access-date=2016-10-03 |archive-url=https://web.archive.org/web/20111017170928/http://www.eetimes.com/electronics-news/4212668/Xilinx-buys-high-level-synthesis-EDA-vendor |archive-date=2011-10-17 |url-status=dead}})

|Xilinx

|Commercial

|CC++ SystemC

|VHDLVerilog,
SystemC

|2013

|All

|{{Yes}}

|{{Yes}}

|{{Yes}}

[http://www.cl.cam.ac.uk/research/srg/han/hprls/orangepath/kiwic.html Kiwi]

|University of Cambridge

|Academic

|C#

|Verilog

|2008

|.NET

|{{No}}

|{{Yes}}

|{{Yes}}

CHiMPS

|University of Washington

|Academic

|C

|VHDL

|2008

|All

|{{No}}

|{{No}}

|{{No}}

gcc2verilog

|Korea University

|Academic

|C

|Verilog

|2011

|All

|{{No}}

|{{No}}

|{{No}}

[http://www.nkavvadias.com/hercules/ HercuLeS]

|Ajax Compilers

|Commercial

|C/NAC

|VHDL

|2012

|All

|{{Yes}}

|{{Yes}}

|{{Yes}}

[https://github.com/etherzhhb/Shang Shang]

|University of Illinois Urbana-Champaign

|Academic

|C

|Verilog

|2013

|All

|{{Yes}}

|?

|?

Trident

|Los Alamos NL

|Academic

|C subset

|VHDL

|2007

|Scientific

|{{No}}

|{{Yes}}

|{{No}}

rowspan="11" | Aban-
doned

|AccelDSP

|Xilinx

|Commercial

|MATLAB

|VHDLVerilog

|2006

|DSP

|{{Yes}}

|{{Yes}}

|{{Yes}}

C2H

|Altera

|Commercial

|C

|VHDLVerilog

|2006

|All

|{{No}}

|{{No}}

|{{No}}

CtoVerilog

|University of Haifa

|Academic

|C

|Verilog

|2008

|All

|{{No}}

|{{No}}

|{{No}}

DEFACTO

|University South Cailf.

|Academic

|C

|RTL

|1999

|DSE

|{{No}}

|{{No}}

|{{No}}

Garp

|University of California, Berkeley

|Academic

|C subset

|bitstream

|2000

|Loop

|{{No}}

|{{No}}

|{{No}}

MATCH

|Northwest University

|Academic

|MATLAB

|VHDL

|2000

|Image

|{{No}}

|{{No}}

|{{No}}

Napa-C

|Sarnoff Corp.

|Academic

|C subset

|VHDLVerilog

|1998

|Loop

|{{No}}

|{{No}}

|{{No}}

PipeRench

|Carnegie Mellon University

|Academic

|DIL

|bistream

|2000

|Stream

|{{No}}

|{{No}}

|{{No}}

SA-C

|University of Colorado

|Academic

|SA-C

|VHDL

|2003

|Image

|{{No}}

|{{No}}

|{{No}}

SeaCucumber

|Brigham Young University

|Academic

|Java

|EDIF

|2002

|All

|{{No}}

|{{Yes}}

|{{Yes}}

SPARK

|University of California, Irvine

|Academic

|C

|VHDL

|2003

|Control

|{{No}}

|{{No}}

|{{No}}

  • [https://dynamatic.epfl.ch/ Dynamatic] from EPFL/ETH Zurich
  • MATLAB HDL Coder [https://www.mathworks.com/products/hdl-coder.html] from Mathworks{{cite web|url=http://mathworks.com/ |title=MathWorks: Makers of MATLAB and Simulink |website=Mathworks.com |access-date=2016-10-03}}
  • HLS-QSP from CircuitSutra Technologies{{cite web|url=http://www.circuitsutra.com |title=SystemC based ESL methodologies - SystemC based ESL methodologies |website=Circuitsutra.com |access-date=2016-10-03}}
  • C-to-Silicon from Cadence Design Systems
  • Concurrent Acceleration from Concurrent EDA
  • Symphony C Compiler from Synopsys
  • QuickPlay from PLDA{{cite web|author=John M. at a major ERP & DBMS Corporation |url=http://www.quickplay.io |title=QuickPlay: Bringing FPGA Computing to the Masses |website=Quickplay.io |date=2016-08-29 |access-date=2016-10-03}}
  • PowerOpt from ChipVision{{cite web |url=http://www.chipvision.com/ |title=Chipvision - Fast Track to Low Power |website=www.chipvision.com |access-date=13 January 2022 |archive-url=https://web.archive.org/web/20020530041720/http://www.chipvision.com/ |archive-date=30 May 2002 |url-status=dead}}
  • 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. In November 2016 Siemens announced plans to acquire Mentor Graphics, Mentor Graphics became styled as "Mentor, a Siemens Business". In January 2021, the legal merger of Mentor Graphics with Siemens was completed - merging into the Siemens Industry Software Inc legal entity. Mentor Graphics' name was changed to Siemens EDA, a division of Siemens Digital Industries Software.{{cite web | url=https://www.eetimes.com/mentor-finally-becomes-siemens-eda-from-january-2021/ | title=Mentor Finally Becomes Siemens EDA from January 2021 | date=15 December 2020}}
  • PipelineC [https://github.com/JulianKemmerer/PipelineC]
  • CyberWorkBench from NEC{{cite web|url=http://www.nec.com/en/global/prod/cwb/index.html |title=CyberWorkBench: Products |publisher=NEC |access-date=2016-10-03}}
  • Mega Hardware {{cite web |url=http://www.mega-hardware.com/ |title=Accueil mega-hardware |website=www.mega-hardware.com |access-date=13 January 2022 |archive-url=https://web.archive.org/web/20040115020254/http://www.mega-hardware.com/ |archive-date=15 January 2004 |url-status=dead}}
  • C2R from CebaTech{{cite web |url=http://www.cebatech.com/ |title=Cebatech - Home |website=www.cebatech.com |access-date=13 January 2022 |archive-url=https://web.archive.org/web/20050507101111/http://www.cebatech.com/ |archive-date=7 May 2005 |url-status=dead}}
  • CoDeveloper from Impulse Accelerated Technologies
  • HercuLeS by Nikolaos Kavvadias{{cite web|url=http://www.nkavvadias.com/hercules/ |title=Nikolaos Kavvadias - HercuLeS high-level synthesis tool |website=Nkavvadias.com |access-date=2016-10-03}}
  • Program In/Code Out (PICO) from Synfora, acquired by Synopsys in June 2010{{cite web |url=http://www.eetimes.com/electronics-news/4200083/Synopsys-buys-Synfora-assets |title=Synopsys buys Synfora assets |publisher=EE Times |access-date=2016-10-03 |archive-url=https://web.archive.org/web/20110407145420/http://www.eetimes.com/electronics-news/4200083/Synopsys-buys-Synfora-assets |archive-date=2011-04-07 |url-status=dead}}
  • xPilot from University of California, Los Angeles{{cite web|url=http://cadlab.cs.ucla.edu/soc/ |title=The xPilot System |website=Cadlab.cs.ucla.edu |access-date=2016-10-03}}
  • Vsyn from vsyn.ru{{cite web |url=http://www.vsyn.ru |title=vSyn.ru |website=vSyn.ru |date=2016-06-16 |access-date=2016-10-03 |archive-url=https://web.archive.org/web/20160630171129/http://www.vsyn.ru/ |archive-date=2016-06-30 |url-status=dead}}
  • ngDesign from SynFlow{{cite web|url=https://www.synflow.com/ |title=Hardware design for all |publisher=Synflow |access-date=2016-10-03}}

See also

References

{{Reflist|30em}}

Further reading

  • Jason Cong, Jason Lau, Gai Liu, Stephen Neuendorffer, Peichen Pan, Kees Vissers, Zhiru Zhang.  FPGA HLS Today: Successes, Challenges, and Opportunities. ACM Transactions on Reconfigurable Technology and Systems, Volume 15, Issue 4, Article No. 5, pp 1–42, December 2022, https://doi.org/10.1145/3530775.
  • {{cite book|author=Michael Fingeroff|title=High-Level Synthesis Blue Book|year=2010|publisher=Xlibris{{Self-published inline|certain=yes|date=January 2018}} Corporation|isbn=978-1-4500-9724-6}}
  • {{Cite journal | doi = 10.1109/MDT.2009.69| last1 = Coussy | first1 = P. | last2 = Gajski | first2 = D. D. | last3 = Meredith | first3 = M. | last4 = Takach | first4 = A. | title = An Introduction to High-Level Synthesis | journal = IEEE Design & Test of Computers | volume = 26 | issue = 4 | pages = 8–17 | year = 2009 | s2cid = 52870966 }}
  • {{cite book|author1=Ewout S. J. Martens|author2=Georges Gielen|title=High-level modeling and synthesis of analog integrated systems|year=2008|publisher=Springer|isbn=978-1-4020-6801-0}}
  • {{cite book|author=Saraju Mohanty|author-link=Saraju Mohanty|author2=N. Ranganathan|author3=E. Kougianos|author4= P. Patra|name-list-style=amp|title=Low-Power High-Level Synthesis for Nanoscale CMOS Circuits|year=2008|publisher=Springer|isbn=978-0387764733}}
  • {{cite book|editor=Wai-Kai Chen|title=The VLSI handbook|year=2007|publisher=CRC Press|isbn=978-0-8493-4199-1|edition=2nd|chapter=System-Level Design|id=chapter 76|author1=Alice C. Parker|author1-link=Alice C. Parker |author2=Yosef Tirat-Gefen |author3=Suhrid A. Wadekar }}
  • {{cite book|editor=Wai-Kai Chen|title=The VLSI handbook|year=2007|publisher=CRC Press|isbn=978-0-8493-4199-1|edition=2nd|chapter=System Level Design Languages|id=chapter 86|author1=Shahrzad Mirkhani |author2=Zainalabedin Navabi }} covers the use of C/C++, SystemC, TML and even UML
  • {{cite book|author=Liming Xiu|title=VLSI circuit design methodology demystified: a conceptual taxonomy|year=2007|publisher=Wiley-IEEE|isbn=978-0-470-12742-1}}
  • {{cite book|author=John P. Elliott|title=Understanding behavioral synthesis: a practical guide to high-level design|year=1999|publisher=Springer|isbn=978-0-7923-8542-4}}
  • {{cite journal | doi = 10.1109/TCAD.2015.2513673 | last1 = Nane | first1 = Razvan | last2 = Sima | first2 = Vlad-Mihai | last3 = Pilato | first3 = Christian | last4 = Choi | first4 = Jongsok | last5 = Fort | first5 = Blair | last6 = Canis | first6 = Andrew | last7 = Chen | first7 = Yu Ting | last8 = Hsiao | first8 = Hsuan | last9 = Brown | first9 = Stephen | last10 = Ferrandi | first10 = Fabrizio | last11 = Anderson | first11 = Jason | last12 = Bertels | first12 = Koen | title = A Survey and Evaluation of FPGA High-Level Synthesis Tools | journal = IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems | volume = 35 | issue = 10 | pages = 1591–1604 | year = 2016 | hdl = 11311/998432 | s2cid = 8749577 | hdl-access = free }}
  • {{cite book| doi = 10.1007/978-1-4020-8588-8_2 | last1 = Gupta | first1 = Rajesh | last2 = Brewer | first2 = Forrest | title = "High-level Synthesis: A Retrospective" | chapter = High-Level Synthesis: A Retrospective | publisher=Springer | year=2008| pages = 13–28 | isbn = 978-1-4020-8587-1 }}