Global Sources
EE Times-Asia
Stay in touch with EE Times Asia
EE Times-Asia > Embedded

ANSI C vs. System C: Resolving the confusion

Posted: 02 Jun 2008 ?? ?Print Version ?Bookmark and Share

Keywords:ANSI C? SystemC? SoC architecture?

Is ANSI C or SystemC the best language for ESL? The debate rages but EDA language wars never reach a conclusion. We all want a single language for every stage of design, but the range of systems makes this unlikely. Multiple languages have been developed, and they need to co-exist and interoperate for the many aspects of IC design and verification. The language debate seldom defines its scope and rarely gives specific examples of where a particular language can be used. You must define the area you are working in then decide which language is best.

Today, a typical consumer SoC comprises different types of intellectual property (IP) performing different tasks. In the digital domain, at the highest level, you can break these down into the following:

? Complex application engines (video codecs, wireless modems)They define the IP's functionality. They are critical for differentiating the end product and change rapidly with each revision. Significant investment is continually being made to improve the power, performance and area in application engines. This type of IP is based on reference algorithms that are already in C, and are simulated and verified by architects who work in C.

? Star IP such as CPUs and DSPsThey need significant investment in terms of building the hardware, and the creation, debugging and compatibility of the software. This type is usually hand-crafted, built bottom-up, doesn't often change and is very hard to alter when it does.

? Connectivity and control IP such as USB and DMAThis is system level glue that never defines the functionality nor differentiates the end product. It sometimes needs a limited amount of tailoring. It can be purchased or created from RTL and from higher-level languages that are very close to the actual hardware implementation.

? MemoryThis takes up the largest amount of silicon area, but also neither defines the function nor differentiates the end product. Memories are almost always compiled, built and verified bottom-up. Their models are generated from the transistor-level behavior.

Based on this breakdown, we can see that it is imperative to separate the languages' capabilities and to rank them according to the main tasks they must accomplish:

The Loop TV remote has two buttons and a scroll wheel that uses a Freespace in-air inertial sensor for 3D pointing.

Capture and implement complex sub-systemsAs the algorithms that constitute the foundation and specification already exist in C and were created by system engineers, ANSI C is the natural language for this task. Any other language requires the manual creation of yet another specification and the resulting burden of equivalence proof. Whatever ANSI C's perceived limitations for hardware, it has often been used to create complex, efficient hardware from an untimed ANSI C source.

In the future, designers will need to reduce the number of blocks they create. For example, an imaging pipeline with 15 blocks that are now made individually and manually assembled and tested must become one engine that is automatically assembled and testedespecially when some small feature change affects multiple blocks in the pipeline. Many of the attributes of SystemC (i.e. the ability to specify detailed hardware behavior or to create multiple threads) rapidly become liabilities when the designer wants to create complex hardware quickly.

Model hardware-level behaviorWhether the IP blocks come from algorithmic descriptions (complex application engines) or are built bottom-up (as is the case for memory or Star IP CPUs or DSPs), a unique and interoperable modeling description language is needed. SystemC is a widely used backplane for system level modeling where the different types of IP are assembled. As such, the creation of SystemC transaction-level models (TLMs) is an important part of the system modeling and verification process. Those are built bottom-up for the memory and Star IP CPU/DSP, and ideally are automatically created along with the RTL from the algorithmic level descriptions for the complex subsystems. The automatic generation of SystemC TLMs gives the verification team an early start.

No single language can describe every type of IP on any type of IC. Each IC design organization has to determine which types of IP are critical to it, and prioritize time and resources accordingly. As we look at the evolution of consumer SoC architecture, however, we see that ANSI C is the language of choice for the specification and implementation of application engines that are set to dominate the design effort and the system differentiation. SystemC is the modeling language and is better suited as an output language for high-level synthesis systems rather than an input language.

- Simon Napper
CEO, Synfora Inc.

Article Comments - ANSI C vs. System C: Resolving the c...
*? You can enter [0] more charecters.
*Verify code:


Visit Asia Webinars to learn about the latest in technology and get practical design tips.

Back to Top