Main Content

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

relationalboundaryinfo

cvdata 对象检索关系边界覆盖率

说明

示例

covInfo = relationalboundaryinfo(cvdo,modelObject)cvdata 对象 cvdo 返回由 object 及其后代指定的模型对象的关系边界覆盖率结果。

covInfo = relationalboundaryinfo(cvdo,modelObject,simMode)cvdata 对象 cvdo 返回由 modelObject 及其后代指定的模型对象在仿真模式 simMode 下的关系边界覆盖率结果。

covInfo = relationalboundaryinfo(cvdo,modelObject,ignoreDescendants)cvdata 对象 cvdo 返回由 modelObject 指定的模型对象的关系边界覆盖率结果,并且取决于 ignoreDescendants 的值,返回后代对象。

[covInfo,description] = relationalboundaryinfo(cvdo,modelObject)cvdata 对象 cvdo 返回由 modelObject 指定的模型对象的关系边界覆盖率结果,以及每个覆盖率结果的文本描述。

示例

全部折叠

此示例显示如何收集模型中 Saturation 模块的关系边界覆盖率信息。有关关系边界覆盖率支持的模块的更多信息,请参阅接受覆盖的模型对象

打开 slvnvdemo_cv_small_controller 模型。为模型创建模型覆盖率测试规范对象。

open_system('slvnvdemo_cv_small_controller');
testObj = cvtest('slvnvdemo_cv_small_controller');

在模型覆盖率测试规范对象中,激活关系边界覆盖率。

testObj.settings.relationalop = 1;

仿真模型并在 cvdata 对象中收集覆盖率结果。

dataObj = cvsim(testObj);

获取 slvnvdemo_cv_small_controllerSaturation 模块的关系边界覆盖率结果。覆盖率结果存储在 [covered_outcomes total_outcomes] 形式的二元素向量中。

blockHandle = get_param('slvnvdemo_cv_small_controller/Saturation','Handle');
[covResults,covDesc] = relationalboundaryinfo(dataObj,blockHandle)
covResults =

     2     4


covDesc = 

    isFiltered: 0
      decision: [1x2 struct]

字段 decision 是一个 1 X 2 结构体。decision 的每一个元素对应模块中的一个关系运算。Saturation 模块包含两个比较。第一次比较与下限比较,第二次比较与上限比较。因此,decision 是一个二元素结构体。

查看接收关系边界覆盖率的模块中的第一个操作。对于 Saturation 模块,第一个关系运算是 input > lowerlimit

covDesc.decision(1)
ans = 

            outcome: [1x2 struct]
               text: 'input - lowerlimit'
         isFiltered: 0
    filterRationale: ''

text 字段显示两个操作数。如果该模块是从关系边界覆盖率中过滤出来的,则 isFiltered 字段设置为 1。有关更多信息,请参阅覆盖率过滤

查看模块中第一个关系运算的结果。

for(i=1:2)
  covDesc.decision(1).outcome(i)
end
ans = 

     isActive: 1
    execCount: 0
         text: '[-tol..0]'


ans = 

     isActive: 1
    execCount: 0
         text: '(0..tol]'

查看接收关系边界覆盖率的模块中的第二个操作。对于 Saturation 模块,第二个关系运算是 input < upperlimit

covDesc.decision(2)
ans = 

            outcome: [1x2 struct]
               text: 'input - upperlimit'
         isFiltered: 0
    filterRationale: ''

查看模块中第二个关系运算的结果。

for(i=1:2)
  covDesc.decision(2).outcome(i)
end
ans = 

     isActive: 1
    execCount: 1
         text: '[-tol..0)'


ans = 

     isActive: 1
    execCount: 2
         text: '[0..tol]'

输入参数

全部折叠

覆盖率数据,指定为 cvdata 对象。

数据类型: cvdata

模型对象,指定为字符数组、字符串数组、Simulink 句柄、Stateflow ID 或元胞数组。

要指定模型对象(例如模块或 Stateflow 图),请使用以下格式之一:

对象设定描述

BlockPath

模型或模块的完整路径

BlockHandle

模型或模块

slObj

Simulink API 对象的句柄

sfID

Stateflow ID

sfObj

来自单独实例化的 Stateflow 图的 Stateflow API 对象的句柄

{BlockPath, sfID}

包含 Stateflow 图或原子子图的路径以及该图或子图中包含的对象的 ID 的元胞数组

{BlockPath, sfObj}

包含 Stateflow 图或子图的路径以及该图或子图中包含的 Stateflow 对象 API 句柄的元胞数组

{BlockHandle, sfID}

带有 Stateflow 图或原子子图句柄的元胞数组以及该图或子图中包含的对象的 ID

要指定 S-Function 模块或其内容,请使用以下格式之一:

对象设定描述

{BlockPath, fName}

包含 S-Function 模块路径和源文件名称的元胞数组

{BlockHandle, fName}

具有 S-Function 模块句柄和源文件名称的元胞数组

{BlockPath, fName, funName}

包含 S-Function 模块的路径、源文件的名称和函数名称的元胞数组

{BlockHandle, fName, funName}

带有 S-Function 模块句柄、源文件的名称和函数名称的元胞数组

要指定代码覆盖率结果,例如在软件在环(SIL) 或处理器在环(PIL) 分析期间收集的覆盖率数据,请使用以下格式之一:

对象设定描述

{fileName, funName}

包含源文件名称和函数名称的元胞数组

{Model, fileName}

具有模型名称或模型句柄和源文件名称的元胞数组

{Model, fileName, funName}

具有模型名称或模型句柄、源文件的名称和函数名称的元胞数组

数据类型: char | string | cell | Stateflow.State | Stateflow.Transition

覆盖率分析期间的仿真模式,指定为以下选项之一:

对象设定描述

"Normal"

普通仿真模式下的模型。

"SIL" or "PIL"

软件在环 (SIL) 或处理器在环 (PIL) 仿真模式下的模型。

"ModelRefSIL" or "ModelRefPIL"

SIL 或 PIL 仿真模式下的模型参考。

"ModelRefTopSIL" or "ModelRefTopPIL"

在 SIL 或 PIL 仿真模式下的模型引用,代码接口设置为顶层模型。

数据类型: char | string

是否忽略覆盖率结果中的后代,指定为数字或逻辑 1 (true)0 (false),其中:

  • 0 (false) 包括后代对象的覆盖率结果。

  • 1 (true) 忽略后代对象的覆盖率结果。

数据类型: single | double | logical

输出参量

全部折叠

覆盖信息,如果 cvdo 包含关系边界覆盖率数据,则返回为 [covered_outcomes, total_outcomes] 形式的双元素数组,如果不包含,则返回空数组。

covered_outcomes满足 object 的关系边界结果的数量
total_outcomesobject 的关系边界结果总数

数据类型: double

object 指定的模型组件的覆盖率结果的文本描述,以结构体数组的形式返回。根据收集的模型覆盖率类型,结构体数组可以有不同的字段。如果仅收集关系边界覆盖率,则结构体数组包含以下字段:

isFiltered

如果 object 指定的模型组件未从覆盖率记录中排除,则为 0。如果 object 指定的模型组件从覆盖率记录中排除,则为 1。有关从覆盖率中排除对象的详细信息,请参阅覆盖率过滤

decision.text

字符向量或字符串形式:

op_1-op_2

  • op_1 是关系运算中的左操作数。

  • op_2 是关系运算中的右操作数。

decision.outcome

包含每个覆盖率结果两个字段的结构数组:

isActive布尔变量。如果这个变量是 false,则表示由于信号大小可变,在仿真中未评估决策。
execCountop_1-op_2 落入 text 所述范围的次数
text考虑覆盖率的关系边界周围的范围。有关更多信息,请参阅关系边界

decision.isFiltered

如果 object 指定的模型组件未从覆盖率记录中排除,则为 0。如果 object 指定的模型组件从覆盖率记录中排除,则为 1。有关从覆盖率中排除对象的详细信息,请参阅覆盖率过滤

decision.filterRationale

如果 object 被排除在覆盖率之外并且指定了理由,则过滤 object 指定的模型组件的理由。有关从覆盖率中排除对象的详细信息,请参阅覆盖率过滤

数据类型: struct

版本历史记录

在 R2014b 中推出