Main Content

本页采用了机器翻译。点击此处可查看英文原文。

变体模块的模型覆盖率

Simulink® Coverage™ 可以分析并报告包含变体模块(例如 Variant SourceVariant Subsystem 模块)的模型的覆盖率数据。当您仿真包含一个或多个启用了覆盖率的变体模块的模型时,Simulink Coverage 会根据变模块的类型和变体激活时间参数报告覆盖率结果。

对于 Variant SourceVariant Sink 模块,Simulink Coverage 分别分析变体选择的上游和下游模块。Variant SourceVariant Sink 模块本身不受覆盖率。对于 Variant SubsystemVariant Model 模块,Simulink Coverage 分析所选度量的子系统或模型模块的内容。

更新时和编译时变量

如果将变体模块的变体激活时间参数设置为更新图更新图时分析所有选择项代码编译,则 Simulink Coverage 仅报告仿真期间活动的变体选择的覆盖率。

提示

您无法聚合针对更新时或编译时变体的不同活动变体选择的仿真覆盖率。如果您想测试非活动变体选择,请将变体激活时间设置为启动

例如,假设您有一个包含具有两个变体选择的 Variant Subsystem 模块的模型。Variant Subsystem 模块的变体激活时间参数设置为更新图

Simulink model containing a variant subsystem. A graphic shows that the variant subsystem expands into two variant choices.

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

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

Coverage report summary showing Subsystem 1 has 50% decision and 100% block execution coverage. Subsystem 2 is omitted from the summary.

当您将变体模块的变体激活时间参数设置为更新图更新图时分析所有选择项代码编译时,更改活动变体会对模型进行结构性更改。由于模型的覆盖率数据仅在模型未更改或关闭时才有效,因此您无法聚合使用不同活动变体仿真的同一模型的覆盖率。如果您想测试多个活动变体并聚合它们的覆盖率,请将变体激活时间参数更改为启动

启动变体

如果将变体模块的变体激活时间参数设置为启动Simulink Coverage 将报告所有变体选择的覆盖率,即使它们在仿真期间不活动。您还可以聚合具有不同活动变体选择的仿真的覆盖率。

例如,如果您修改上例中的模型,并将变体激活时间设置为启动,且 Subsystem1 在仿真中处于活动,那么您将获得与更新时间变量相同的 Subsystem1 覆盖率。然而,Simulink Coverage 还报告了非活动变体 Subsystem2

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

Coverage report summary showing the top model has 30% decision coverage, the variant subsystem has 25% decision coverage, the variant child Subsystem 1 has 50% decision coverage, and the variant child Subsystem 2 has 0% decision coverage.

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

Aggregated Tests and Summary sections of the coverage report. Coverage results from two simulations aggregated together show the top model has 60% decision coverage, the variant subsystem has 50% decision coverage, the variant child Subsystem 1 has 50% decision coverage, and the variant child Subsystem 2 has 50% decision coverage.

自定义包含变体的模型的覆盖率报告

在为使用变体模块的模型创建覆盖率报告时,您可以聚合来自多个仿真的覆盖率数据,并指定是否包含或排除非活动变体。

从覆盖率报告中排除非活动变体

覆盖率报告不包括更新时和编译时 Simulink 变体的非活动配置。

对于将变体激活时间参数设置为启动的 Simulink 变体模块和 Stateflow® 图中的变体配置,覆盖率报告默认包含非活动变体选择。您可以通过选择排除变体的非活动选择项参数来选择在覆盖率报告中排除非活动变体选择:

  1. 在配置参数窗口的左侧窗格中,点击覆盖率

  2. 展开高级参数然后选择排除变体的非活动选择项

您还可以通过输入以下内容以编程方式设置此参数:

set_param(modelName,'CovExcludeInactiveVariants',1)
如果您在 Simulink Test™ 中使用测试管理器,则可以在测试文件级别的覆盖率设置中选择排除非活动变体。有关更多信息,请参阅Coverage Settings (Simulink Test)

您还可以在仿真完成后使用以下方法之一更改启动 Simulink 变体和 Stateflow 图中的变体配置的报告行为:

  • 在覆盖率结果资源管理器中,选择或清除选项排除变体的非活动选择项

  • 在生成覆盖率报告之前更改 cvdata 对象中 excludeInactiveVariants 属性的值。

  • 如果您在 Simulink Test 中使用测试管理器,请在测试浏览器中,在结果摘要级别,在聚合覆盖率结果下,选择排除非活动变体

聚合包含变体的模型的覆盖率数据

有两种方法可以聚合包含 Simulink 变体和 Stateflow 图中的变体配置的模型的覆盖率数据:

  • 在配置参数对话框中,点击覆盖率,然后展开高级参数并选择在覆盖率报告中包括累积数据参数。当您选择此参数运行两个或更多个仿真时,覆盖率详细信息将显示这些仿真的聚合覆盖率结果。

  • 以编程方式运行覆盖率分析并使用 + 运算符聚合 cvdata 对象。

如果通过使用 + 运算符或更改排除变体的非活动选择项参数来聚合两个具有不同 excludeInactiveVariants 属性值的 cvdata 属性,则生成的聚合 cvdata 对象的此属性将设置为 0。结果是,聚合覆盖率报告显示非活动变体,就好像未选择排除变体的非活动选择项参数一样,即使在一次仿真中选择了该参数。

相关主题

另请参阅

| | |