Main Content

Variant Systems

Create custom model versions to support different specifications, without duplication

In Simulink®, you can create models that are based on a modular design platform that comprises a fixed common structure with a finite set of variable components. The variability helps you develop a single, fixed master design with variable components.

The approach helps you meet diverse customer requirements that are governed by application, cost, or operational considerations.

Variants are the variable components of modular design platforms. They help you specify multiple implementations of a model in a single, unified block diagram. For more information, see What Are Variants and When to Use Them.

There are two types of variants, hierarchical and inline. Hierarchical variants are through Variant Subsystem blocks, whereas Inline Variants are through Variant Source and Variant Sink blocks. Use of a Variant Subsystem block provides these advantages:

  • Allows you to mix Model and Subsystem blocks as variant systems

  • Supports flexible I/O, so that all variants do not need to have the same number of input and output ports


Variant Subsystem, Variant ModelTemplate subsystem containing Subsystem, Model, or Subsystem Reference blocks as Variant choices
Variant SourceRoute among multiple inputs using Variants
Variant SinkRoute amongst multiple outputs using Variants
Manual Variant SourceSwitch between multiple variant choices at input
Manual Variant SinkSwitch between multiple variant choices at output


Simulink.VariantSpecify conditions that control variant selection
Simulink.VariantConfigurationDataClass representing a variant configurations data object
Simulink.VariantManagerClass representing a set of Variant Manager functionality
Simulink.VariantConfigurationAnalysisClass representing a set of Variant Configuration Analysis functionality
Simulink.VariantControlCreate a variant control variable object
Simulink.VariantVariableCreate a variant parameter object


Introduction to Variants

What Are Variants and When to Use Them

Single system that caters to multiple variant requirements.

Variant Terminology

Learn terminology and parameters related to Simulink variants.

Create a Simple Variant Model

Learn how to create a model using Variant blocks.

Introduction to Variant Controls

Learn how to control variant blocks.

Working with Variant Choices

Activate, inactivate, or create default variant choices.

Create Variant Controls Programmatically

Use MATLAB® code to define variant controls.

Activate Variant During Different Stages of Simulation and Code Generation Workflow

Use variant activation time to set active choices during different stages of simulation and code generation workflows.

Approaches to Control Active Variant Choice of a Variant Block Using Mask or Model Workspace

This example shows different approaches to control the active choice of inline variant and Variant Subsystem blocks from a mask or a model workspace.

Variant Condition Propagation Overview

Understand variant condition propagation in Simulink.

Variant Subsystem

Variant Subsystems

Learn basic functionality of variant subsystems.

Define, Configure, and Activate Variant Choices in a Variant Subsystem Block

Represent variant choices in Variant Subsystems.

Propagate Variant Conditions Outside a Variant Subsystem Block

Propagate variant conditions outside of Variant Subsystem block.

Use Variant Subsystem Blocks with Conditionally Executed Subsystems

Understand how to use Variant Subsystem blocks with conditionally executed systems as variant choices.

Convert Configurable Subsystem to Variant Subsystem

Learn how to convert configurable subsystems to variant subsystems and their behavior on loading.

Control Active Choice of Locked Custom Library Variant Subsystem Using Mask Parameter

Control active choice of Variant Subsystem that belongs to a locked custom library.

Automatic Mask Icon Promotion in Variant Subsystems

This example demonstrates how Simulink® automatically displays the mask icon of the active variant block on the parent Variant Subsystem block.

Variant Function-Call Signals on Variant Subsystem Outport

This example shows how the Variant Subsystem block allows function-call signals from its choice blocks to be merged on its outports.

Inline Variants

Define and Configure Variant Sources and Sinks

Represent variant choices using Inline Variants.

Visualize Variant Implementations in a Single Layer

View the variant choices in a model containing Inline Variants.

Variant Source and Variant Sink Blocks

Define variant choice in Variant Source and Sink blocks.

Variant Condition Propagation with Variant Sources and Sinks

Propagate variant conditions from the Variant Source and Variant Sink blocks.

Propagate Variant Conditions from Variant Source Blocks to Subsystem Blocks

Understand variant condition propagation to virtual and non-virtual subsystems.

Propagate Variant Conditions from Variant Source Blocks to Conditionally Executed Subsystems

Learn about variant condition propagation from Variant Source blocks to conditional subsystems .

Control Variant Condition Propagation

Control propagation of variant conditions upstream and downstream.

Variant Elements within Buses

Understand how to create variant bus, generate code, and variant condition propagation with bus.

Use Variant Source Block to Receive or Output Function-Call Signals for Simulation and Code Generation

This example shows how a Variant Source block receives function-call signals at its inports and conditionally merges the signals at its outport.

Code Generation

Prepare Variant-Containing Model for Code Generation

Configure and generate code for a variant model.

Variant Manager

Variant Manager Overview

Use a central tool to manage variation points of a variants model.

Create and Validate Variant Configurations

Create variant configuration for a model and validate their accuracy.

Import Control Variables to Variant Configuration

Import control variables associated with a model.

Define Constraints

Define constraints across models.

Export, Save, Refresh, and Load a Variant Configuration Data Object

This example shows how to export, save, and load a variant configuration data object for a Simulink® model using Variant Manager.

Reduce Models Containing Variant Blocks

Generate models with a subset of variant configurations.

Analyze Variant Configurations in Models Containing Variant Blocks

Analyze model references and libraries for each variant configuration in a model containing variant blocks.

Variant Parameters

Use Variant Parameters to Reuse Block Parameters with Different Values

Design one model for many systems that differ in block parameter values.

Create a Simple Variant Parameter Model

This example shows you how to create simple model with variant parameters.

Variant Controls in Variant Parameters

Learn how to control variant parameters.

Change Active Values and Activation Time of Variant Parameters

This example shows how to change the active values and activation time of variant parameters in a Simulink® model.

Example Models

Variants Example Models

A set of concept examples that illustrate some of the Simulink variants capabilities.

Featured Examples