C to HDL tools convert
C language
C (''pronounced like the letter c'') is a general-purpose computer programming language. It was created in the 1970s by Dennis Ritchie, and remains very widely used and influential. By design, C's features cleanly reflect the capabilities o ...
or
C-like computer code
A computer is a machine that can be programmed to carry out sequences of arithmetic or logical operations ( computation) automatically. Modern digital electronic computers can perform generic sets of operations known as programs. These pr ...
into a
hardware description language
In computer engineering, a hardware description language (HDL) is a specialized computer language used to describe the structure and behavior of electronic circuits, and most commonly, digital logic circuits.
A hardware description language en ...
(HDL) such as
VHDL
The VHSIC Hardware Description Language (VHDL) is a hardware description language (HDL) that can model the behavior and structure of digital systems at multiple levels of abstraction, ranging from the system level down to that of logic gate ...
or
Verilog
Verilog, standardized as IEEE 1364, is a hardware description language (HDL) used to model electronic systems. It is most commonly used in the design and verification of digital circuits at the register-transfer level of abstraction. It is als ...
. The converted code can then be
synthesized and
translated
Translation is the communication of the meaning of a source-language text by means of an equivalent target-language text. The English language draws a terminological distinction (which does not exist in every language) between ''transla ...
into a hardware device such as a
field-programmable gate array. Compared to
software
Software is a set of computer programs and associated software documentation, documentation and data (computing), data. This is in contrast to Computer hardware, hardware, from which the system is built and which actually performs the work.
...
, equivalent designs in
hardware consume less power (yielding higher
performance per watt
In computing, performance per watt is a measure of the energy efficiency of a particular computer architecture or computer hardware. Literally, it measures the rate of computation that can be delivered by a computer for every watt of power consu ...
) and execute faster with lower
latency, more
parallelism and higher
throughput
Network throughput (or just throughput, when in context) refers to the rate of message delivery over a communication channel, such as Ethernet or packet radio, in a communication network. The data that these messages contain may be delivered ove ...
. However,
system design and
functional verification
In electronic design automation, functional verification is the task of verifying that the logic design conforms to specification. Functional verification attempts to answer the question "Does this proposed design do what is intended?" This is a ...
in a hardware description language can be tedious and time-consuming, so systems engineers often write
critical modules in HDL and other
modules
Broadly speaking, modularity is the degree to which a system's components may be separated and recombined, often with the benefit of flexibility and variety in use. The concept of modularity is used primarily to reduce complexity by breaking a s ...
in a
high-level language
In computer science, a high-level programming language is a programming language with strong abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language ''elements'', be easier to use, ...
and synthesize these into HDL through C to HDL or
high-level synthesis
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 ...
tools.
C to is another name for this methodology. RTL refers to the
register transfer level
In digital circuit design, register-transfer level (RTL) is a design abstraction which models a synchronous digital circuit in terms of the flow of digital signals (data) between hardware registers, and the logical operations performed on those ...
representation of a program necessary to implement it in logic.
History
Early development on C to HDL was done by Ian Page, Charles Sweeney and colleagues at
Oxford University
Oxford () is a city in England. It is the county town and only city of Oxfordshire. In 2020, its population was estimated at 151,584. It is north-west of London, south-east of Birmingham and north-east of Bristol. The city is home to th ...
in the 1990s who developed the
Handel-C
Handel-C is a high-level programming language which targets low-level hardware, most commonly used in the programming of FPGAs. It is a rich subset of C, with non-standard extensions to control hardware instantiation with an emphasis on paralleli ...
language. They
commercialized their research by forming Embedded Solutions Limited (ESL) in 1999 which was renamed Celoxica in September 2000. In 2008, the embedded systems departments of Celoxica was sold to Catalytic for $3 million and which later merged to become Agility Computing. In January 2009,
Mentor Graphics acquired Agility's C synthesis assets. Celoxica continues to trade concentrating on
hardware acceleration in the
financial and other
industries.
Applications
C to HDL techniques are most commonly applied to
applications
Application may refer to:
Mathematics and computing
* Application software, computer software designed to help the user to perform specific tasks
** Application layer, an abstraction layer that specifies protocols and interface methods used in a c ...
that have unacceptably high
execution times on existing general-purpose
supercomputer architectures. Examples include
bioinformatics,
computational fluid dynamics
Computational fluid dynamics (CFD) is a branch of fluid mechanics that uses numerical analysis and data structures to analyze and solve problems that involve fluid flows. Computers are used to perform the calculations required to simulate ...
(CFD), financial processing, and oil and gas survey data analysis.
Embedded applications requiring
high performance or
real-time
Real-time or real time describes various operations in computing or other processes that must guarantee response times within a specified time (deadline), usually a relatively short time. A real-time process is generally one that happens in defined ...
data processing are also an area of use.
System-on-chip
A system on a chip or system-on-chip (SoC ; pl. ''SoCs'' ) is an integrated circuit that integrates most or all components of a computer or other electronic system. These components almost always include a central processing unit (CPU), memor ...
(SoC) design may also take advantage of C to HDL techniques.
C-to-VHDL compilers are very useful for large designs or for implementing code that might change in the future. Designing a large application entirely in HDL may be very difficult and time-consuming; the abstraction of a high level language for such a large application will often reduce total development time. Furthermore, an application coded in HDL will almost certainly be more difficult to modify than one coded in a higher level language. If the designer needs to add new functionality to the application, adding a few lines of C code will almost always be easier than remodeling the equivalent HDL code.
Flow to HDL
Flow to HDL tools and methods convert flow-based system design into a hardware description language (HDL) such as VHDL or Verilog. Typically this is a method of creating designs for field-programmable gate array, application-specific integrated c ...
tools have a similar aim, but with
flow rather than C-based design.
Example tools
LegUpOpen Source ANSI C to Verilog tool, based on LLVM compiler.
LegUpCommercial variant of LegUp.
VHDPSimplified VHDL with support of procedural programming.
*bambu (free and open source ANSI C to Verilog tool based on GCC compiler) fro
PandA websiteCBG CtoVA tool developed 1995-99 by DJ Greaves (Univ Cambridge) that instantiated RAMs and interpreted various
SystemC constructs and datatypes.
*C-to-Verilog tool (
NISC) from University of California, Irvine
Altium Designer 6.9 and 7.0(a.k.a. Summer 08) from
Altium
Altium Limited is an Australian multinational software company that provides electronic design automation software to engineers who design printed circuit boards. Founded as Protel Systems Pty Ltd in Australia in 1985, the company has regional ...
Nios II C-to-Hardware Acceleration Compilerfrom
Altera
Altera Corporation was a manufacturer of programmable logic devices (PLDs) headquartered in San Jose, California. It was founded in 1983 and acquired by Intel in 2015.
The main product lines from Altera were the flagship Stratix series, mid-ran ...
*
Catapult C Catapult C Synthesis, a commercial electronic design automation product of Mentor Graphics, is a high-level synthesis tool, sometimes called algorithmic synthesis or ESL synthesis. Catapult C takes ANSI C/ C++ and SystemC inputs and generates re ...
tool from
Mentor Graphics
*Cynthesizer from
Forte Design Systems
*
SystemC fro
Celoxica (defunct)*
Handel-C
Handel-C is a high-level programming language which targets low-level hardware, most commonly used in the programming of FPGAs. It is a rich subset of C, with non-standard extensions to control hardware instantiation with an emphasis on paralleli ...
fro
Celoxica (defunct)*
DIME-C from
Nallatech
Nallatech is a computer hardware and software firm based in Camarillo, California, United States.
The company specializes in field-programmable gate array (FPGA) integrated circuit technology applied in computing. As of 2007 the company's prim ...
*
Impulse C
Impulse C is a subset of the C programming language combined with a C-compatible function library supporting parallel programming, in particular for programming of applications targeting FPGA devices. It is developed by Impulse Accelerated Tech ...
fro
Impulse Accelerated Technologies*
FpgaC which is an open source initiative
*
SA-C programming language
Single Assignment C (SA-C) (pronounced "sassy") is a member of the C programming language family designed to be directly and intuitively translatable into circuits, including FPGA
A field-programmable gate array (FPGA) is an integrated circu ...
* Cascade (C to RTL synthesizer) from
CriticalBlue
Lucio Lanza
, industry = IT, Cybersecurity
, products = SECaaS Dynamic Analysis Tools Profiling Tools Verification Tools
, production =
, services = API SecurityApplication Security Software Optimization ...
*
Mitrion-C from
Mitrionics
Mitrionics was a Swedish company manufacturing softcore reconfigurable processors. It has been mentioned as one of EETimes "60 Emerging startups".
The company was founded in 2001 by Stefan Möhl and Pontus Borg to commercialize a massively paralle ...
*C2R Compiler fro
Cebatech*PICO Express fro
Synfora*SPARK (a C-to-VHDL) fro
University Of California, San Diego*Hardware Compile Environment (HCE) fro
Accelize(formerly HARWEST Compiling Environment fro
YlichronHercuLeS(C/assembly-to-VHDL) tool
*VLSI/VHDL CAD Group Index of Useful Tools fro
*DWARV as part of the research project ′Delft Work Bench′ and used in the ′hArtes tool chain′
*
MyHDL MyHDL is a Python (programming language), Python-based hardware description language (HDL).
Features of MyHDL include:
* The ability to generate VHDL and Verilog code from a MyHDL design.
* The ability to generate a testbench (Conversion of test be ...
is a Python-subset compiler and simulator to
VHDL
The VHSIC Hardware Description Language (VHDL) is a hardware description language (HDL) that can model the behavior and structure of digital systems at multiple levels of abstraction, ranging from the system level down to that of logic gate ...
and
Verilog
Verilog, standardized as IEEE 1364, is a hardware description language (HDL) used to model electronic systems. It is most commonly used in the design and verification of digital circuits at the register-transfer level of abstraction. It is als ...
*Trident (C to VHDL) fro
trident.sourceforge.net*Vsyn (C to Verilog, Russian project)
Instant SoCb
FPGA Coresgenerates a SoC wit
RISC-Vcore, peripherals and memories directly from C++.
PipelineCC-like hardware description language adding
High-level synthesis
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 ...
-like automatic pipelining as a language construct/compiler feature.
See also
*
Comparison of EDA Software
This page is a comparison of electronic design automation (EDA) software which is used today to design the near totality of electronic devices. Modern electronic devices are too complex to be designed without the help of a computer. Electronic dev ...
*
Electronic design automation (EDA)
*
High-level synthesis
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 ...
*
Silicon compiler A silicon compiler is a software system that takes a user's specifications and automatically generates an integrated circuit (IC). The process is sometimes referred to as hardware compilation.
Silicon compilation takes place in three major steps ...
*
Hardware acceleration
References
External links
A good article on Dr Dobbs Journal about ImpulseC.An overview of flows by Daresbury Labs.*
ttps://web.archive.org/web/20070216180902/http://www.xilinx.com/products/design_tools/logic_design/advanced/esl/index.htm Xilinx's ESL initiative, some products listed and C to VHDL tools.br>
Altium's C-to-Hardware Compiler overview.Altera's Nios II C2H Acceleration Compiler White Paper.
{{Hardware acceleration
Hardware description languages
Program transformation
Hardware acceleration