SystemC

SystemC

SystemC is an event-driven simulator providing hardware-oriented constructs within the context of C++ as a class library implemented in standard C++. SystemC 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 library provides a set of data types implementing various data representations needed for hardware modeling and certain types of software programming. These include 2-valued and 4-valued bit vectors of arbitrary width, and fixed-point representations. Also included in the core language are modules and ports for representing structure, as well as interfaces and channels that describe communication. Finally, the library includes a set of built-in primitive channels that have wide use such as signals and FIFOs.

A SystemC system consists of a set of one or more modules. Modules provide the ability to describe structure. Modules may contain processes, ports, internal data, channels, and instances of other modules. All processes are conceptually concurrent and can be used to model the functionality of the module. Ports are objects through which the module communicates with other modules. The internal data and channels provide for communication between processes and maintaining module state. Module instances provide for hierarchical structures. The interface, port, and channel structure provides for great flexibility in modeling communication and in model refinement.