HDL and programming languages
A HDL is analogous to a software programming
language, but with major differences. Programming languages are inherently
procedural (single-threaded), with limited syntactical and semantic support to
handle concurrency. HDLs, on the other hand, can model multiple parallel
processes (such as flipflops, adders, etc.) that automatically execute
independently of one another. Any change to the process's input automatically
triggers an update in the simulator's process stack. Both programming languages
and HDLs are processed by a compiler (usually called a synthesizer in the HDL
case), but with different goals. For HDLs, 'compiler' refers to synthesis, a
process of transforming the HDL code listing into a physically realizable gate
netlist. The netlist output can take any of many forms: a
"simulation" netlist with gate-delay information, a
"handoff" netlist for post-synthesis place and route, or a generic
industry-standard EDIF format (for subsequent conversion to a JEDEC-format
file).
On the other hand, a software compiler converts
the source-code listing into a microprocessor-specific object-code, for
execution on the target microprocessor. As HDLs and programming languages
borrow concepts and features from each other, the boundary between them is
becoming less distinct. However, pure HDLs are unsuitable for general purpose
software application development, just as general-purpose programming languages
are undesirable for modeling hardware. Yet as electronic systems grow
increasingly complex, and reconfigurable systems become increasingly
mainstream, there is growing desire in the industry for a single language that
can perform some tasks of both hardware design and software programming.
SystemC is an example of such—embedded system hardware can be modeled as
non-detailed architectural blocks (blackboxes with modeled signal inputs and
output drivers). The target application is written in C/C++, and natively
compiled for the host-development system (as opposed to targeting the embedded
CPU, which requires host-simulation of the embedded CPU). The high level of
abstraction of SystemC models is well suited to early architecture exploration,
as architectural modifications can be easily evaluated with little concern for
signal-level implementation issues.
In an attempt to reduce the complexity of
designing in HDLs, which have been compared to the equivalent of assembly
languages, there are moves to raise the abstraction level of the design.
Companies such as Cadence, Synopsys and Agility Design Solutions are promoting
SystemC as a way to combine high level languages with concurrency models to
allow faster design cycles for FPGAs than is possible using traditional HDLs.
Approaches based on standard C or C++ (with libraries or other extensions
allowing parallel programming) are found in the Catapult C tools from Mentor
Graphics, and in the Impulse C tools from Impulse Accelerated Technologies.
Annapolis Micro Systems, Inc.'s CoreFire Design Suite and National Instruments
LabVIEW FPGA provide a graphical dataflow approach to high-level design entry.
Languages such as SystemVerilog, SystemVHDL, and Handel-C seek to accomplish
the same goal, but are aimed at making existing hardware engineers more
productive versus making FPGAs more accessible to existing software engineers.
Thus SystemVerilog is more quickly and widely adopted than SystemC. There is
more information on C to HDL and Flow to HDL in their respective articles.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.