AboutSystemC

About SystemC

One of the primary goals of SystemC is to raise the level of abstraction when modeling hardware/software and system behaviour. Moreover the modeling language should also be suitable to handle hardware oriented structures, enforcing the specification and design of various levels of abstraction. According to [1] a system-level description language should support the following:

  • incorporation of embedded software portions of a complex system, both models and implementation-level code
  • creation of executable specifications of design intent.
  • creation of executable platform models, representing possible implementation architectures on which the design intent will be mapped
  • fast simulation speed to enable design-space exploration, of both functional specification and architectural implementation alternatives
  • constructs allowing the sparation of system function from system communications, in order to allow flexible adaptation and reuse of both models and implementation

The primary goal of SystemC was to provide a modeling framework for systems in which high-level functional models can be refined down to implementation in a single language. Nowadays, SystemC has virtually moved apart from this paradigma, as high-level synthesis is a complex and complicated venture (Note that high-level synthesis is possible and there exist tools for that, however). Thus, SystemC is being used for executable high-level (i.e. system-level and transaction-level) specifications and simulations as well as verification at those levels. It is a matter of quickly bringing ideas into an executable specification and test environment.

The Open SystemC Initiative (OSCI)

SystemC is a language which provides hardware constructs with C++. The language has been developed by the Open SystemC Initiative (OSCI) (http://www.systemc.org/).

In order to use SystemC, you require a simulator. OSCI has provided a proof of concept simulator under the OSCI open source license.

The OSCI simulator is implemented as a C++ library. In order to use it, you simply have to write your SystemC code, compile (with gcc for instance) and link it with the OSCI SystemC library.

Here is what OSCI says about SystemC:

 ''SystemC provides hardware-oriented constructs within the context of C++ as a class library implemented in standard C++.  Its use spans design and verification from concept to implementation in hardware and software.''

 ''SystemC provides an interoperable modeling platform which enables the development and exchange of very fast system-level C++ models. It also provides a stable platform for development of system-level tools.''

 ''The Open SystemC Initiative (OSCI) is an independent not-for-profit organization composed of a broad range of companies, universities and individuals dedicated to supporting and advancing SystemC as an open source standard for system-level design.''

References

[1] Thorsten Groetker, Stan Liao, Grant Martin, and Stuart Swan, System Design with SystemC, Kluwer Academic Publishers, 2002


PageComment2(commentfirst=1,nosmiley=1,articleview=1)


NewPage(PublicTemplate,New Page Here,SystemC/AboutSystemC)