|
For many years people have been using C or C++ as a starting point
for developing their hardware and systems. This is because these languages are widely
known, quick to write, and give an executable specification, which allows very fast
simulation. C or C++ versions of standard algorithms are widely available, which allows
easy reuse of legacy and publicly available code. For system-level design, they allow
hardware and software descriptions to be described in a single framework.
|
|
C++ is widely known, quick to write, and gives a fast executable specification.
|
|
for (int i = 0; i < 7; i++) { |
|
x[i] = a[i] * b[i];
y[i] = k[i] * x[i];
result += y[i];
|
| } |
|
|
However there have been two drawbacks. Firstly, C and C++ don't support the description of some
important hardware concepts, such as timing and concurrency. This has led to the development
of proprietary C-like languages, which haven't been popular because they tied the user to a
single software supplier. Secondly, C and
C++ have to be translated manually to a hardware description language, such as VHDL or
Verilog, for hardware implementation. This step requires specialist resources, is
time-consuming, and often introduces errors that are difficult to find.
|
|
The first of these problems was solved by the development of SystemC,
which is now a widely-accepted industry standard that adds hardware concepts to C++.
The second of these problems is solved by the development of tools
like SystemCrafter SC, which allows SystemC descriptions to be automatically translated to VHDL and Verilog.
Next
|