Main Content

Considerations and Limitations for startup Variant Activation Time

Combining startup and code compile Variant Activation Times in Variant Conditions

Simulink® does not support combining variant conditions with startup and code compile variant activation times in a model.

Case 1: Variant Source Block with startup Activation Time Connected to a Variant Source Block with code compile Activation Time

Consider a model with two Variant Source blocks, VS_CC and VS_ST, with the Variant activation time parameter set to code compile and startup, respectively.

Variant Source blocks with startup and code compile activation times

During model compilation, the VS_ST block propagates the variant condition, B==2 to the VS_CC block. So, the propagated variant condition on the VS_CC block is (A == 1 && B == 2) || (A == 2 && B == 2), which combines conditions with startup and code compile activation times. This combination results in a compilation error.

Case 2: Variant Source Block with startup Activation Time Connected to a Variant Subsystem Block with code compile Activation Time

In this model, a Variant Source block with the Variant activation time parameter set to startup is connected to a Variant Subsystem block with the Variant activation time parameter set to code compile. The Propagate conditions outside of variant subsystem and the Allow zero active variant controls parameters on the Variant Subsystem block are set to on. These settings result in propagation of conditions that combines startup and code compile activation times and produces a compilation error.

Variant Source with startup activation connected to Variant Subsystem with code compile activation

Note

This constraint is applicable to any Simulink block that supports variant condition propagation. For example, you cannot combine startup variant conditions with Simulink Function blocks or Initialize, Reset, and Terminate blocks that have the Generate preprocessor conditionals parameter set to on. This parameter works similarly to the code compile variant activation time. For information on condition propagation with different blocks, see Propagate Variant Conditions from Variant Blocks Upstream and Downstream.

The compilation error for this scenario normally indicates the block that caused the error. If the error message does not indicate the block, then the variant condition that combined startup and code compile activation times could have propagated to a hidden block that Simulink inserted for internal use. Such blocks are not visible in the model.

Exception Scenarios That Support Combining Variant Conditions with startup and code compile Variant Activation Times

These modeling scenarios support combining variant conditions with startup and code compile activation times:

  • Simulink Function blocks that inherit variant conditions from Function Caller blocks in a model. The variant condition assigned to the Simulink Function block is a logical OR of the variant conditions propagated to the Function Caller blocks. In such cases, the Function Caller blocks can have startup and code compile activation times.

  • Data Store Memory blocks in a model. These blocks receive a logical OR of the variant conditions propagated to the corresponding Data Store Read and Data Store Write blocks in the model. The reader and writer blocks in such models can have startup and code compile activation times.

In this model, the Variant control parameter on the function-call port block in the Simulink Function block is set to (inherit). The Function Caller blocks, Function Caller A and Function Caller B, receive variant conditions with code compile and startup activation times from the connected Variant Source blocks. The Simulink Function block inherits a combination of these variant conditions. This case does not result in a compilation error.

Simulink Function block that inherits both startup and code compile conditions

Use of Variant Control Variables with startup Variant Activation Time in Another Variant Block

You cannot use a variant control variable used in a block with startup activation time in another variant block with a different activation time.

Consider a model with two variant blocks, VSrc and VSink, with the Variant activation time parameter set to startup and update diagram, respectively. Both the blocks use the same variant control variable, A. This results in a compile-time error.

Variant source blocks with same variant control variable

Related Topics