To speed up the simulation of a model, by default the Simulink® software avoids unnecessary execution of blocks connected to Switch, Multiport Switch, and of conditionally executed blocks. This behavior is conditional execution (CE) behavior. You can disable this behavior for all Switch and Multiport Switch blocks in a model, or for specific conditional subsystems. See Disabling Conditional Execution Behavior.
The following model illustrates conditional execution behavior.
The Scope block shows the simulation result:
Has the Display > Signals & Ports > Execution Context Indicator menu option enabled.
Pulse Generator block has the
following parameter settings:
Pulse type —
Pulse width —
Phase delay —
Sample Time —
Gain block's sorted
order (1:2) is second (2) in the enabled subsystem's execution
Enabled Subsystem block has
the Propagate execution context across subsystem boundary parameter
In the enabled subsystem, the
has the following parameter settings:
Initial output —
Output when disabled —
The outputs of the Constant block and Gain blocks are computed only while the enabled subsystem is enabled (for example, at time steps 0.5 to 1.0 and 1.0 to 1.5). This behavior is necessary because the output of the Constant block is required and the input of the Gain block changes only while the enabled subsystem is enabled. When CE behavior is off, the outputs of the Constant and Gain blocks are computed at every time step, regardless of whether the outputs are needed or change.
In this example, the enabled subsystem is regarded as defining an execution context for the Constant and Gain blocks. Although the blocks reside graphically in the root system of the model, the Simulink software invokes the block methods during simulation as if the blocks reside in the enabled subsystem. This is indicated in the sorted order labels displayed on the diagram for the Constant and Gain blocks. The notations list the subsystem's (id = 1) as the execution context for the blocks even though the blocks exist graphically at the root level (id = 0) of the model. The Gain block's sorted order (1:2) is second (2) in the enabled subsystem's execution context (1).
In general, the Simulink software defines an execution context as a set of blocks to be executed as a unit. At model compilation time, the Simulink software associates an execution context with the model's root system and with each of its nonvirtual subsystems. Initially, the execution context of the root system and each nonvirtual subsystem is simply the blocks that it contains.
When compiling, each block in the model is examined to determine whether it meets the following conditions:
The block output is required only by a conditional subsystem or the block input changes only as a result of the execution of a conditionally executed subsystem.
The execution context of the subsystem can propagate across the subsystem boundaries.
The output of the block is not a test point (see Test Points).
The block is allowed to inherit its conditional execution context.
The Simulink software does not allow some built-in blocks,
such as the Delay block, ever to inherit their execution
context. Also, S-Function blocks can inherit their
execution context only if they specify the
The block is not a multirate block.
The block sample time is set to inherited (
If a block meets these conditions and execution context propagation is enabled for the associated conditional subsystem (see Disabling Conditional Execution Behavior), the Simulink software moves the block into the execution context of the subsystem. This ensures that the block methods execute during the simulation loop only when the corresponding conditional subsystem executes.
Note: Execution contexts are not propagated to blocks having a constant sample time.
This behavior treats the input branches of a Switch or Multiport Switch block as invisible, conditional subsystems, each of which has its own execution context. This conditional execution is enabled only when the control input of the switch selects the corresponding data input. As a result, switch branches execute only when selected by switch control inputs.
If a switch branch gets its input from a conditional subsystem, then that branch always executes, irrespective of conditional execution optimization settings.
To determine the execution context to which a block belongs,
in the Simulink Editor, select Display > Blocks > Sorted Execution Order. The sorted order index for each block in the model
is displayed in the upper-right corner of the block. The index has
s specifies the subsystem to whose
execution context the block belongs and
an index that indicates the block sorted order in the execution context
of the subsystem. For example, 0:0 indicates that the block is the
first block in the execution context of the root subsystem.
If a bus is connected to a block input, the block sorted order is displayed as s:B. For example, 0:B indicates that the block belongs to the execution context of the root system and has a bus connected to its input.
The sorted order index of conditional subsystems is expanded to include the system ID of the subsystem itself in curly brackets as illustrated in the following figure.
In this example, the sorted order index of the enabled subsystem
0 indicates that
the enabled subsystem resides in the root system of the model. The
1 indicates that the enabled subsystem is
the second block on the sorted list of the root system (zero-based
1 in curly brackets indicates that
the system index of the enabled subsystem itself is
Thus any block whose system index is
to the execution context of the enabled subsystem and hence executes
when it does. For example, the fact that the Constant block
has an index of
1:0 indicates that it is the first
block on the sorted list of the enabled subsystem, even though it
resides in the root system.
To disable conditional execution behavior for all Switch and Multiport Switch blocks in a model, turn off the Conditional input branch execution optimization on the All Parameters tab of the Configuration Parameters dialog box. To disable conditional execution behavior for a specific conditional subsystem, clear the Propagate execution context across subsystem boundary check box on the subsystem parameter dialog box.
Even if this option is enabled, the execution context of the subsystem cannot propagate across its boundaries under the following circumstances:
The subsystem is a triggered subsystem with a latched input port.
The subsystem has one or more output ports that specify
an initial condition other than
. In this case,
a block connected to the subsystem output cannot inherit the execution
context of the subsystem.
You are linearizing the root-level block diagram using
the MATLAB® Command Window or the Time Based Linearization block.
Simulink can optionally display bars next to the ports of subsystems across which execution contexts cannot propagate. To display the bars, select Display > Signals & Ports > Execution Context Indicator.
For example, it displays bars on subsystems from which no block
can inherit its execution context. In the following figure, the context
bars appear next to the
of the Enabled Subsystem block.