Simulate Variant Blocks in Accelerator and Rapid Accelerator Modes with Startup Activation Time
This example shows how to simulate Variant Source and Variant Sink blocks in accelerator and rapid accelerator mode with startup
variant activation time.
Both modes enable faster simulation without changing the model itself. The accelerator and rapid accelerator modes replace the normal interpreted code with compiled target code. Using compiled code speeds up simulation of many models, especially those where runtime is long compared to the time associated with compilation and checking to see if the target is up to date. For more information on accelerator modes, see How Acceleration Modes Work.
Combined with the startup
variant activation time, simulating in accelerator or rapid accelerator mode retains all variant choices. Thus incremental simulation does not regenerate code when there are no structural changes in the model and you only change the variant control value.
Model
Open the model slexVariantSourceAndSinkWithStartup.slx
. The Variant Source1
has conditions X==1
and X==2
for its input ports. The block named Variant Source1
has an update diagram
activation time. X
is a variant control variable and is defined in the PostLoadFcn
of File -> Model Properties -> Callbacks. The Sine3
block is active when X==1
is true, and the Sine4
block is active when X==2
is true.
In the block named Variant Source2
block, the first input port is active when V==1
is true. The second input port is active when V==2
is true. The Variant Source2
has a startup
activation time.
The block named Variant Sink
has the conditions W==1
and W==2
on its output ports. These conditions are propagated to the connected blocks. The Gain5
block is assigned the condition W==1
.The second output port of the Variant Sink
block has the condition W==2
. This condition is propagated to the Out4
block.
Since the Variant Source2
and Variant Sink
blocks have a startup
activation time, all the choices are available. You can toggle the active or inactive branch just before simulation.
Simulate the Model
Before you run the simulation, set the mode to be either Accelerator or Rapid Accelerator.
sim(slexVariantSourceAndSinkWithStartup);
You can generate code by clicking on Build ERT or Build GRT. The generated code from Embedded Coder (ERT) or Simulink Coder (GRT) will have regular if
conditions. For more information on generating code with startup
activation time, see Generate Code from Variant Blocks with Startup Activation Time.