Define variant choice regions in the Variant Source and Sink blocks based on the block connectivity. The variant choice regions are computed by Simulink when you update diagram (Simulation > Prepare > Update Model).
The process of computing the variant choice regions is called variant condition propagation
. The Variant Source block provides variation on the source of a signal, and the Variant Sink blocks provides variation on the destination (sink) of a signal.
Consider a model containing two Variant Source blocks ( Variant Source1
, Variant Source2
) and a Sink block ( Variant Sink
).
The variant conditions at the inports and outports of Variant Source and Sink blocks, respectively, determine the activation and deactivation of the blocks connected to them. To view the annotations and the variant conditions, in the Debug tab of the toolstrip, click Information Overlays > Variant Conditions.
Let us analyze the variant conditions and the block activation state.
In Variant Source1
, when W==1
, the Sine3
block is active, and when V==4
, the Sine4
block is active.
In Variant Source2
, when V==1
, the Sine1 block is active, and when V==2
, the Add1
block is active.
At Add1
block the condition propagation continues making Variant Source1
block to be active only when the V==2
. This further propagates to Sine3
block and Sine4
block, making the Sine3
block active at V==2 && W==1
and the Sine4
block active at V==2 && W==2
, respectively.
The Gain3
block is active when either V==1
or V==2
, and hence the condition V==2
| | V==1
. The variant condition is further propagated to Scope1
and Out1
.
The blocks connected to the outport of Variant Sink
are active when W==1
(Gain5
), or W==2
(Sine
, Subtract
, Terminator
).
The Sum
block illustrates two key concepts in variant condition propagation: Signals are only variant if explicitly marked or when all paths can be proven to be variant. To make the Sine6
, Sum
, Out2
variant, place a Single-Input Single-Output Variant Source before Out2 (or after the Sine6
). Reading an inactive signal is equivalent to reading ground. When W ~= 1
, then the bottom input to the Sum
block is inactive and Out2 = Sine6 + ground
.
If you set the Variant activation time parameter to code compile
for the Variant Source and Variant Sink block, the generated code contains the code for the active and the inactive (#if COND
). If this parameter is not selected, then code is generated only for the active choices.
If you select the Allow zero active variant controls parameter for the Variant Source and Variant Sink block, you can simulate the variant model without an active variant. In such cases, Simulink disables the blocks connected to the input and output stream of Variant Source and Variant Sink. These disabled blocks are ignored from update diagram or simulation.