Sunday, July 29, 2007

C and C++ languages and hardware description

C and C++ have been a popular starting point for developing hardware and systems for many years; the languages are widely known, quick to write, and give an executable specification, which allows for very fast simulation. C or C++ versions of standard algorithms are widely available, so you can easily reuse legacy and publicly available code. For system level design, C and C++ allow you to describe hardware and software descriptions in a single framework.

Two drawbacks exist, however. First, C and C++ do not 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 aren’t popular because they tie users to a single software supplier. Second, you must manually translate C and C++ to a hardware description language such as VHDL or Verilog for hardware implementation. This time-consuming step requires hardware experts and often introduces errors that are difficult to find.

The first problem has been solved by the development of SystemC, which now a widely accepted industry standard that adds hardware concepts to C++. The second problem has been solved by the development of tools like SystemCrafter SC, which allows SystemC descriptions to be automatically translated to VHDL.

No comments: