Table of Contents

Execution of a model

A generated model is executed by elaborating the user-specified processes . Within the draft hierarchy the core process

Propagation of signal values

As simulation time passes on the signal form within the waveform receive the values of the corresponding drivers. A driver is active when it is assigned a new value. A signal is active , if

If a compound-type signal has a source which is based on another type every scalar sub-element is considered active if the signal source is activated.

The same is valid for ports and for signals linked to them. An implicitly defined signal is active if this signal is updated by the core process. If a signal is not active it is called quiet .

For certain signals the core process monitors two different signal values. The driver value is the value of a signal which serves as a source for other signals. The effective value is the value determined by calculating the signal relations within an expression. The driver value and the effective value are not identical above all when a resolution function or type conversions are involved. The following table shows the particularities of both signal types.

Signal type Driver value Effective value
Scalar signal S S without a source: Driver value = default value S is declared by a signal declaration; port of the type buffer or an unlinked port of the type inout: effective value=driver value
Driver is source of S, S is unresolved: Driver value = value of the driver S is a linked port of the type in or inout: effective value of S = effective value of the actual part of the assignment element, Is-part is calculated.
Port is source of S, S is unresolved: Driver value = driver value of the formal part of the element which links S to the port. S to be an unlinked port of the type in: effective value = default value
S is resolved: driver value = resolved value of S, resolution function is calculated using the driver values of the sources of S as transfer parameters Control value and effective value both have the subtype of S
Compound signal V Driver value = summary of the driver values of every scalar sub-element of V effective value = summary of the effective values of every scalar sub-element of V

When a signal is updated the core process at first calculate the driver value and the effective value, then the variable belonging to the signal is newly seized. If the signal is not derived from an array-type the effective value is used. It is checked whether this value belongs to the signal`s subtype. The variable which stores the actual value receives the effective value by assignment. If the signal is based on an array-type the effective value is transformed implicitly into the signal`s subtype (including a consistency test between the signal elements and the elements of the effective value). The result of the type conversion is assigned to the variable mentioned above.

Comment

An element of a compound signal can be quiet while the signal itself is active .

For ports of the type out no effective value is specified as they are not allowed to be read.

The rules mentioned above are not valid for implicitly defined signals.

Updating implicitly defined signals

The core process links the values of implicitly defined guarded signals to a block statement which contains a guarded expression. At the same time the system updates the implicit signals S'Stable(t), S'Quiet(t) and S'Transaction as well as their drivers.

A guarded signal is changed in its current values only if the corresponding guarded expression is related to the signal and the signal is active. When this is done the expression`s value is calculated and assigned to the variable which contains the signal`s actual value.

The signals S'Stable(t), S'Quiet(t) and S'Transaction have the following special characteristics.

Characteristic S'Stable(t) S'Quiet(t) S'Transaction
Change current value only if an event occurs in the current simulation cycle the signal is activated the signal is activated
the driver is activated the driver is activated
Update by assigning the value ' false ' to the corresponding variable; driver is given the form ' true ' after the period t assigning the value ' false ' to the corresponding variable; driver is given the form ' true ' after the period t assigning the expression value to the corresponding variable (only one assignment is possible within one simulation cycle)
assigning the driver`s current value to the corresponding variable. assigning the driver`s current value to the corresponding variable.

The current value of an implicit value D depends on the current value of another signal E if

Within a simulation cycle the current value of E is updated in time before the current value of D, thus the principle of causality is valid.

The simulation cycle

A model is executed by repeatedly executing process statements from the level of model description. One repetition is called a simulation cycle. Within a cycle all signal values are calculated. Depending on that the system starts executing process statements, i.e., if an event occurs at a signal all processes which are sensitive to this signal are started. The execution is preceded by an initialisation which consists of the following steps:

The simulation`s start is usually assigned the time 0 ns.

The simulation cycle consists of the following parts: