SystemC is applied to system-level modeling, architectural exploration, performance modeling, software development, functional verification, and high-level synthesis. SystemC is often associated with electronic system-level (ESL) design, and with transaction-level modeling (TLM).
-
- notify() : Immediate
- notify(SC_ZERO_TIME), wait(SC_ZERO_TIME) : Delta
- notify(t), wait(t) : Timed
First, elaboration occurs. During elaboration, SystemC modules are constructed and various simulation parameters are established. This elaboration phase is followed by a call to sc_start(), which invokes the simulation kernel. This call begins the initialization phase. Processes (e.g., SC_THREAD processes) defined during elaboration need to be started. During the initialization phase, all processes are placed initially into a ready pool and the preparation for the next phase, execution. The execution phase hands control to the SystemC simulation kernel, which orchestrates the execution of processes to create an illusion of concurrency.
A simulation process is run when an event to which it is sensitive occurs. Several simulation processes may begin at the same instant in simulator time. Because of this case, all of the simulation processes are evaluated and then their outputs are updated. An evaluation followed by an update is referred to as a delta-cycle. If no additional simulation processes need to be evaluated at that instant (as a result of the update), then simulation time is advanced. When no additional simulation processes need to run, the simulation ends