主要内容

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 对象时,请将 Adjustable 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';

要收集决策覆盖率和整数溢出饱和覆盖率,请在 testObj 对象中启用 decisionoverflowsaturation,启用方法是将这两个属性设置为 true1

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

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

cvdo = cvsim(testObj);

限制

  • cvtest 对象不支持快速重启。如果您带多个 cvtest 对象调用 cvsim,并且您的模型启用了快速重启,则 cvsim 会忽略第一个对象之后的 cvtest 对象的配置。要对多次运行进行覆盖率分析,请禁用快速重启或使用 sim 函数。有关使用 sim 函数分析覆盖率的详细信息,请参阅对覆盖率数据执行操作

版本历史记录

在 R2006a 之前推出