变体模块的模型覆盖率
Simulink® Coverage™ 可以分析并报告包含变体模块(例如 Variant Source 或 Variant Subsystem 模块)的模型的覆盖率数据。当您仿真包含一个或多个启用了覆盖率的变体模块的模型时,Simulink Coverage 会根据变体模块的类型和变体激活时间参数报告覆盖率结果。
对于 Variant Source 和 Variant Sink 模块,Simulink Coverage 分别分析变体选择项的上游和下游模块。Variant Source 和 Variant Sink 模块本身不受覆盖率。对于 Variant Subsystem 和 Variant Model 模块,Simulink Coverage 分析所选度量的子系统或模型模块的内容。
更新时和编译时变体
如果将变体模块的变体激活时间参数设置为更新图、更新图时分析所有选择项或代码编译,则 Simulink Coverage 仅报告仿真期间处于活动状态的变体选择项的覆盖率。
提示
您无法聚合针对更新时或编译时变体的不同活动变体选择项的仿真覆盖率。如果您想测试非活动变体选择项,请将变体激活时间设置为启动或运行时。
例如,假设您有一个包含具有两个变体选择项的 Variant Subsystem 模块的模型。Variant Subsystem 模块的变体激活时间参数设置为更新图。

如果 Subsystem1 在仿真中处于活动,您将收到 Subsystem1 而不是 Subsystem2 的覆盖率结果。

在覆盖率结果中,Subsystem1 为红色,表示覆盖率不完整,Subsystem2 为灰色,表示未经分析。此外,覆盖率报告摘要省略了非活动的变体选择项。

当您将变体模块的变体激活时间参数设置为更新图、更新图时分析所有选择项或代码编译时,更改活动变体会对模型进行结构性更改。由于模型的覆盖率数据仅在模型未更改或关闭时才有效,因此您无法聚合使用不同活动变体仿真的同一模型的覆盖率。如果您想测试多个活动变体并汇总它们的覆盖率,请将变体激活时间参数更改为启动或运行时。
启动和运行时变体
如果将变体模块的变体激活时间参数设置为启动或运行时,Simulink Coverage 将报告所有变体选择项的覆盖率,即使它们在仿真期间不活跃。您还可以聚合具有不同活动变体选择项的仿真的覆盖率。
例如,如果您修改上例中的模型,并将变体激活时间设置为启动,且 Subsystem1 在仿真中处于活动状态,那么您将获得与更新时间变体相同的 Subsystem1 覆盖率。然而,Simulink Coverage 还报告了非活动变体 Subsystem2。

覆盖率结果中 Subsystem1 和 Subsystem2 都是红色,表示覆盖率不完整。覆盖率报告摘要包括两种变体选择项。

非活动变体的覆盖率为 0%,因为它们在仿真期间未执行。为了增加 Variant_Subsystem 的报告覆盖率,您可以使用 Subsystem2 作为活动变体再次仿真模型,然后聚合覆盖率结果。

自定义包含变体的模型的覆盖率报告
为使用变体模块的模型创建覆盖率报告时,您可以汇总来自多个仿真的覆盖率数据。对于启动变体,您可以指定是否包含或排除非活动变体。
从覆盖率报告中排除非活动变体
覆盖率报告不包括更新时和编译时 Simulink 变体的非活动配置。
对于将变体激活时间参数设置为启动或运行时的 Simulink 变体模块以及 Stateflow® 图中的变体配置,覆盖率报告默认包含非活动变体选择项。对于启动变体,您可以通过选择排除变体的非活动选择项参数来选择在覆盖率报告中排除非活动变体选择项:
在配置参数窗口的左侧窗格中,点击覆盖率。
展开高级参数然后选择排除变体的非活动选择项。
您还可以通过输入以下内容以编程方式设置此参数:
set_param(modelName,'CovExcludeInactiveVariants',1)注意
运行时变体忽略排除变体的非活动选择项参数的值并报告非活动变体配置的覆盖率。
您还可以在仿真完成后使用以下方法之一更改启动 Simulink 变体和 Stateflow 图中的变体配置的报告行为:
在覆盖率结果浏览器中,选择或清除选项排除变体的非活动选择项。
在生成覆盖率报告之前更改
cvdata对象中excludeInactiveVariants属性的值。如果您在 Simulink Test 中使用测试管理器,请在测试浏览器中,在结果摘要级别,在聚合覆盖率结果下,选择排除非活动变体。
聚合包含变体的模型的覆盖率数据
有两种方法可以聚合包含 Simulink 变体和 Stateflow 图中的变体配置的模型的覆盖率数据:
在配置参数对话框中,点击覆盖率,然后展开高级参数并选择在覆盖率报告中包括累积数据参数。当您选择此参数运行两个或更多个仿真时,覆盖率详细信息将显示这些仿真的聚合覆盖率结果。
以编程方式运行覆盖率分析并使用
+运算符聚合cvdata对象。
如果通过使用 + 运算符或更改排除变体的非活动选择项参数来聚合两个具有不同 excludeInactiveVariants 属性值的 cvdata 属性,则生成的聚合 cvdata 对象的此属性将设置为 0。结果是,聚合覆盖率报告显示非活动变体,就好像未选择排除变体的非活动选择项参数一样,即使在一次仿真中选择了该参数。