Spec-C, Handel-C, SystemC : A Comparative Study By: Nikola Rank 13 March 2006
What is a Hardware Description Language(HDL)? A textual approach to describing electrical circuits. Not limited to circuit structure, can describe temporal/operational behavior. Popular examples: VHDL, Verilog Handel C, SystemC, SpecC are not true HDLs!
Motivation for Higher Level These System-level description languages are crucial for SOC design and testing. Work at varying levels of abstraction from the underlying hardware. Simplify hardware/software partitioning by describing both with a single, C-based language. Enhanced simulation and debugging performance.
Handel C Developed by Oxford Hardware Compilation Group Based on the language Occam Goal: Enable someone not familiar with H/W to do H/W design Currently, Celoxica provides a development suite called DK4 that uses Handel C.
What does Handel add to ANSI-C? Parallelism Timing Interfaces Clocks RAM/ROM Shared expression Communications Handel-C libraries Floating Point component library Bit manipulation Macro functions for hardware block reuse
What doesn’t Handel C support Recursion Side effects Standard libraries Malloc() Standard floating point Pointers Aside from these, everything else in C is supported by Handel C
Handel C design flow Sample Handel C design flow (Based on Celoxica toolset) Goal is implementation of JPEG 2000 algorithm Image source: Celoxica Presentation[1]
System C Offered by the Open SystemC Initiative (OSCI) Implemented via C++ library, runs on any C++ compiler. Includes constructs for testing/simulation as well as synthesis.
System C model Image source: Synthesizable SystemC [2]
Synthesizable Subset Only a subset of the SystemC library is suitable for synthesis of a circuit. This subset closely matches VHDL or another underlying HDL. In reality, most tools actually convert the SystemC to HDL for synthesis.
System C design flow Image source: Synthesizable SystemC [2]
System C from UML? The next level of abstraction above C++ is UML. It may be possible to generate synthesizable SystemC code from a UML model. Leads to even shorter design times. Image source: Synthesizable SystemC Code from UML Models[3]
Spec C First developed in 1997 at University of California Uses its own special compiler, a reference compiler is freely available. Designed to be true superset of ANSI-C Allows timing specification.
Spec C model Parallelism State Transition Structural Hierarchy Exception Handling Timing Constraints Synchronization Communication Data Path
Spec-C design flow Image source: The SpecC Methodology[4]
Conclusions There is no doubt a push in the direction of higher level languages for hardware design. Many more alternatives offered, SystemC, Spec C, Handel C, Impulse C, etc… None are perfect, none are the industry standard (Some more prominent than others). Future will hold even higher levels of abstraction.
References [1] Software-Compiled System Design:A Methodology for Field ProgrammableSystem-on-Chip Design. EDP paper presentation. Jeff Jussel. April 15, 2003 (Celoxica) [2] Synthesizable SystemC. Federico Angiolini DEIS – University of Bologna. [3] Synthesizable SystemC Code from UML Models. W.H. Tan, P.S. Thiagarajan,W.F. Wong, Y. Zhu. School of Computing:National University of Singapore. S.K. Pilakkat. Institute for Infocomm ResearchSingapore [4] The SpecC Methodology. Andreas Gerstlauer. Center for Embedded Computer Systems: University of California, Irvine [5] Handel-C Language Reference Manual. Embedded Solutions Limited: Version 2.1 [6] SpecC Language Reference Manual. SpecC Technology Open Consortium: Version 2.0. December 12, 2002 [7] SystemC Language Reference Manual. Open SystemC Initiative : San Jose, California [8] Presentation by SpecC Technology Open Consortium: [9] A Survey on the Handel-C Language. Altaf Abdul Gaffar.