YOKOHAMA, Japan Taking a big step toward creating a full system-level design language, the Open SystemC Initiative steering group announced the SystemC v2.0 specification at the Asia South Pacific Design Automation Conference on Thursday (Feb. 1). The group also announced the availability of beta software for v1.2, which has a limited set of the system-level features found in v2.0.
Synopsys Inc. and CoWare Inc. launched the SystemC effort in Sept. '99 to create a standardized dialect of C/C++ for both hardware and software design. SystemC provides a C/C++ class library that represents hardware concepts such as concurrency. Some 54 companies have endorsed the Open SystemC Initiative, and six companies Synopsys, CoWare, Cadence Design Systems, Fujitsu, STMicroelectronics and Motorola were heavily involved in the 2.0 specification.
The original SystemC 1.0 platform was essentially a register-transfer-level language, said Gary Smith, chief EDA analyst at Dataquest Inc. "SystemC 2.0 has basically brought it up to the ES [electronic-system] level, so it may address the original high-level modeling language requirements," Smith said. "It's an announcement of major importance."
SystemC 2.0 provides new methods of synchronization and control, including channels and events. But it doesn't include some features that may be important to software developers, such as dynamic threads, RTOS modeling and interrupt modeling. Those features are on the SystemC road map, however.
"SystemC 2.0 is all about modeling entire systems that consist of hardware and software," said Kevin Kranen, director of marketing for SystemC at Synopsys. "1.0 is about capturing things at the functional block level. 2.0 extends that to the notion of a global system with many subsystems, both hardware and software, interacting in a concurrent fashion."
SystemC 1.01, 1.1 beta and 1.2 beta are available now at the Open SystemC Initiative Web site. The software is available through open-source licensing. Kranen said the SystemC Initiative is shooting for third-quarter delivery of 2.0 software, with an intermediate beta version likely in the second quarter.
Channels, events added
While SystemC 1.0 has some features that support system-level modeling, it relies on hardware signals for communication and synchronization. Hardware signals are difficult to model in software and are generally not sufficient for system-level modeling.
SystemC 2.0 introduces three new features that implement a new model for communication and synchronization. These include channels, which allow communications between blocks; interfaces, which specify access methods to be implemented within a channel; and events, which are low-level synchronization primitives.
"If you're going to try to refine a design from a very high-level functional definition, you have to have this notion of channels," said Kranen. "You have to be able to refine a channel independently of what the blocks themselves do."
SystemC 2.0, in fact, provides an ability to "hide" the channel implementation so that communication can be abstracted away from the behavior of the blocks.
Events provide a more flexible synchronization mechanism than signals. Unlike signals, an event does not have a type and does not transmit a value. Events always cause sensitive processes to be resumed. And event notifications can be specified to occur at any time, whereas signal assignments always occur one delta step in the future.
Also new in SystemC 2.0 is the notion of dynamic sensitivity, accomplished by allowing arguments to the "wait" statement. The net effect is to change the signals and inputs to which a block is sensitive on the fly. This is particularly important in software and systems modeling, said Kranen. "You can have different processes sensitive to different events that are chosen at run-times," he said.
SystemC 2.0 won't support the continuous time models used in analog modeling. It will, however, support various models of computation, including static and dynamic multirate dataflow, Kahn process networks, communicating sequential processes, and discrete events.
"We've grown up out of the hardware box into the system architect box," said Pete Hardee, director of product marketing at CoWare. "2.0 pretty much has all most people would ever want."
The SystemC 1.2 beta release, apparently, has some but not all of what systems designers would want. It has channels and interfaces, but they're limited to implementation of bus protocols. The capability in version 2.0 is much more general-purpose, Hardee said.
SystemC claims a user base of over 7,000 licensees from over 500 companies. Over 20 companies provide EDA, intellectual property or training support. There are no licensing fees, and it's no longer necessary to sign a licensing agreement with Synopsys an earlier requirement that limited support from competing EDA vendors.