Main Content

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

cvtest

创建模型覆盖率测试规范对象

说明

使用 cvtest 创建一个存储模型覆盖率设置的测试规范对象。将 cvtest 对象传递给 cvsim 函数,根据您的设置执行覆盖率分析。

创建对象

描述

cvto = cvtest(root) 使用默认覆盖率设置创建 cvtest 对象。root 可以是模型的名称或模型的句柄。root 也可以是模型内子系统的名称或句柄,在这种情况下,只对指定的子系统及其后代进行覆盖率分析。

示例

cvto = cvtest(root,label) 使用指定的 label 创建 cvtest 对象。

cvto = cvtest(root,label,setupCmd) 使用设置命令 setupCmd 创建 cvtest 对象。在运行覆盖率分析之前,在基础 MATLAB® 工作区中执行设置命令。

注意

cvtest 对象中指定的覆盖率度量设置将覆盖模型配置参数中设置的覆盖率度量设置。

输入参量

全部展开

模型名称或句柄,或子系统的路径,指定为字符数组或字符串数组。

属性

全部展开

此属性是只读的。

内部模型 ID,以标量形式返回。

此属性是只读的。

内部覆盖率配置 ID,以标量形式返回。

此属性是只读的。

您指定要分析的系统的名称,以字符数组或字符串数组的形式返回。

数据类型: char | string

测试标签,指定为字符数组或字符串数组。该标签作为测试名称出现在覆盖率报告中。

数据类型: char | string

仿真之前在基础 MATLAB 工作区中执行的命令,指定为字符数组或字符串数组。

每次仿真之前都会执行设置命令。

数据类型: char | string

要收集的覆盖率类型,指定为结构体。

settings 包括以下字段:

属性

描述

settings.decision

启用决策覆盖率数据。

1(默认值)| 0

settings.condition

启用条件覆盖率数据。

1 | 0(默认值)

settings.mcdc

启用修正条件决策覆盖率(MCDC) 数据。

如果启用了 settings.mcdc,您还可以选择与 options.mcdcmode 属性一起使用的 MCDC 定义。

1 | 0(默认值)

settings.designverifier

启用来自 Simulink® Design Verifier™ 模块的覆盖率数据。

1 | 0(默认值)

settings.tableExec

启用查找表的覆盖率数据。

1 | 0(默认值)

settings.sigrange

启用信号范围数据。

1 | 0(默认值)

settings.sigsize

启用信号大小数据。

1 | 0(默认值)

settings.overflowsaturation

启用整数溢出覆盖率数据饱和度。

1 | 0(默认值)

settings.relationalop

启用关系边界覆盖率数据。

使用 options.covBoundaryRelToloptions.covBoundaryAbsTol 来指定此类覆盖率的容差。

有关详细信息,请参阅关系边界覆盖率

1 | 0(默认值)

高级覆盖率选项,指定为结构体。

options 包括以下字段:

属性

描述

options.covBoundaryRelTol

关系边界覆盖率的相对容差。

有关更多信息,请参阅关系边界覆盖率

0.01(默认值)| scalar

options.CovBoundaryAbsTol

关系边界覆盖率的绝对容差。

有关更多信息,请参阅关系边界覆盖率

1e-5(默认值)| scalar

options.useTimeInterval

是否将模型覆盖率记录限制在指定的仿真时间区间。

使用 options.intervalStartTimeoptions.intervalStopTime 指定时间区间。

有关详细信息,请参阅指定覆盖率选项

1 | 0(默认值)

options.intervalStartTime

何时开始录制覆盖率。

如果启用了 options.useTimeInterval,请指定此属性。

0(默认值)| scalar

options.intervalStopTime

何时停止录制覆盖率。

如果启用了 options.useTimeInterval,请指定此属性。

0(默认值值)| scalar

options.forceBlockReduction

是否记录用模块简化参数标记的模块的覆盖率。

  • 1(默认)- 如果启用,则覆盖 Simulink 模块简化参数。记录了模型中每个受支持模块的覆盖率。配置参数模块简化的值被忽略。

  • 0 - 使用配置参数模块简化的值。如果启用了模块简化,则不会记录由于模块简化而从模型中有效移除的模块的覆盖率。例如,由于死代码消除而减少的模块的覆盖率不会被记录。

有关详细信息,请参阅Block reduction

1(默认值)| 0

options.mcdcMode

将哪个 MCDC 定义应用于模型,指定为以下选项之一:

  • 'masking' - 使用 MCDC 覆盖率的 masking 定义。

  • 'unique cause' - 使用 MCDC 覆盖率的 unique cause 定义。

有关更多信息,请参阅Simulink Coverage 中的修改条件和决策覆盖 (MCDC) 定义

'masking'(默认值) | 'unique cause'

覆盖率过滤器,指定为结构体。

filter 有一个字段,filter.fileNamefilter.fileName 是应用于覆盖率分析的覆盖率过滤器文件的名称,指定为字符数组或字符串数组。

有关详细信息,请参阅覆盖率过滤规则和文件

模型参考设置,指定为结构体。

modelRefSettings 包括以下字段:

属性

描述

modelRefSettings.enable

模型参考覆盖率设置,指定为以下选项之一:

  • 'off' - 禁用引用模型的覆盖率。

  • 'all''on' - 为支持的引用模型启用覆盖率。

  • 'filtered' - 启用对除 excludedModels 字段中列出的模型之外的受支持的引用模型的覆盖率。

'off'(默认值)| 'on' | 'all' | 'filtered'

modelRefSettings.excludeTopModel

是否从覆盖率分析中排除顶层模型,指定为数字或逻辑 1 (true)0 (false)

1(默认值)| 0

modelRefSettings.excludedModels

要从覆盖率分析中排除的引用模型,指定为逗号分隔的模型名称的单个字符或字符串数组。

要使用此字段,请将 modelRefSettings.enable 设置为 'filtered'

char | string

是否收集模型中 MATLAB 函数调用的外部程序文件的覆盖率,指定为结构体。

emlSettings 有一个字段,emlSettings.enableExternal。如果要收集 MATLAB 函数调用的外部程序文件的覆盖率,则将 emlSettings.enableExternal 设置为 1;如果不想收集 MATLAB 函数调用的外部程序文件的覆盖率,则设置为 0

是否收集模型中 C/C++ S-Function 模块的覆盖率,指定为结构体。

sfcnSettings 有一个字段,sfcnSettings.enableSfcn。如果您想要收集模型中 S-Function 的覆盖率,请将 sfcnSettings.enableSfcn 设置为 1;如果您不想收集模型中 S-Function 的覆盖率,请将其设置为 0

有关更多信息,请参阅 S-Function

示例

全部折叠

此示例展示如何使用 cvtest 对象运行覆盖率分析。

打开 slvnvdemo_ratelim_harness 模型并使用 cvtest 定义测试对象。当您创建 cvtest 对象时,指定可调 Rate Limiter 模块作为要分析的模型对象。

load_system('slvnvdemo_ratelim_harness');
testObj = cvtest(['slvnvdemo_ratelim_harness', ...
		  '/Adjustable Rate Limiter']);
testObj.label = 'Gain within slew limits';

testObj 添加设置命令。在覆盖率分析之前,设置命令在基础 MATLAB 工作区中执行。在这种情况下,设置命令会将数据加载到仿真所需的工作区中。

testObj.setupCmd = ...
	'load within_lim.mat';

为了收集整数溢出覆盖率的决策覆盖率和饱和度,请通过将属性设置为 true1 来启用 testObj 对象中的 decisionoverflowsaturation 属性。

testObj.settings.decision = true;
testObj.settings.overflowsaturation = true;

最后,通过使用 testObj 调用 cvsim 来执行覆盖率分析。

cvdo = cvsim(testObj);

版本历史记录

在 R2006a 之前推出