More than any other language standard, SystemC has made system-level design possible. It is the lifeblood of high-level synthesis, virtual prototyping, and transaction-level verification. Thus, the first IEEE revision of the standard in six years -- announced today (Nov. 10, 2011) as IEEE 1666-2011 -- is a milestone event for all who are using SystemC or may be doing so in the future.
The IEEE Standards Association (IEEE-SA) Standards Board has approved a revised version of the IEEE 1666 "Standard SystemC Language Reference Manual," and it is expected to be available early next year. Compared to the original IEEE 1666-2005 standard, the new standard has a number of clarifications and bug fixes, has been expanded to include the transaction-level modeling (TLM) interfaces developed by the Open SystemC Initiative (OSCI), and has added some important new language features such as the process control constructs noted below.
With IEEE 1666-2001, said Stan Krolikoski (right), chair of the IEEE 1666 Working Group and group director of standards at Cadence, "there is no question [SystemC] is a real standard." To gain even more international recognition, he noted, the SystemC standardization effort will now move on to the International Electrotechnical Commission (IEC).
Additions to the 2011 Standard
The OSCI TLM interfaces help enable interoperability and reuse for SystemC models. TLM 1.0 defines a standard set of APIs for transaction-level communications, but does not define the content of the communications. TLM 2.0 defines the content of transactions with a "generic payload" and also identifies two levels of transaction-level modeling - Loosely Timed (LT) and Approximately Timed (AT). The TLM nomenclature may be a bit confusing in that TLM 1.0 is not a direct subset of TLM 2.0.
In addition to adding the TLM interfaces to the LRM, the IEEE 1666 Working Group has clarified their descriptions and fixed bugs, Krolikoski noted. Now, he said, "it's in one spot, it's cleaned up and it is the official standard." While widely used today, OSCI TLM 1.0 and TLM 2.0 have not been IEEE standards until now.
There are other new features in the 2011 standard as well. One is process control constructs, which I blogged about earlier this year. In short, processes are basic behavioral entities in SystemC, but the 2005 standard lacked a direct API for controlling one process from another. The new process control constructs make it possible for one process to suspend-resume, disable-enable, or kill/reset another. This is useful for developing testbenches, modeling asynchronous resets or triggers, or simulating events such as a sudden power loss to a computer.
Process control constructs are based on a specification written by Cadence and submitted to OSCI several years ago. They are supported in the Cadence Incisive Enterprise Simulator. A 2009 Cadence paper describes further details about their use.
Cleaning and Expanding
Other new features in IEEE 1666-2011 include the following:
Beyond these new features, Krolikoski noted, were a number of small clarifications and bug fixes. "SystemC really took hold after its standardization in 2005, and there were lots of areas where there were questions, and in some cases bugs. We cleaned that up for 2011." Indeed, a lot of people read that 2005 standard. Krolikoski noted that over 50,000 copies of the 2005 LRM have been downloaded, thanks in part to a deal in which OSCI paid the IEEE so the LRMs could be downloaded for free.
IEEE 1666 is a corporate standard (one company, one vote). Members of the IEEE 1666 Working Group include Accellera, Cadence, Freescale, Intel, JEITA, Mentor Graphics, NXP, OSCI, STMicroelectronics, STARC, Synopsys, and Texas Instruments. The 2011 standard was a true international effort, Krolikoski said, and was almost all conducted by email, making it a true Internet-driven standard.
Congratulations to all whose hard work is reflected in the new 2011 SystemC standard!