Main Content

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

overflowsaturationinfo

cvdata 对象检索整数溢出覆盖率的饱和度

说明

示例

coverage = overflowsaturationinfo(covdata, object) 返回 cvdata 对象 covdataobject 及其后代指定的模型对象的整数溢出覆盖率饱和度结果。

coverage = overflowsaturationinfo(covdata,object,ignoreDescendants) 返回 cvdata 对象 covdataobject 指定的模型对象的整数溢出覆盖率结果的饱和度,并且取决于 ignoreDescendants 的值,返回后代对象。

示例

[coverage, description] = overflowsaturationinfo(covdata, object) 返回 cvdata 对象 covdataobject 指定的模型对象的整数溢出覆盖率结果的饱和度,以及每个覆盖率结果的文本描述。

示例

全部折叠

此示例显示如何使用 overflowsaturationinfocvdata 对象中提取 MinMax 模块的整数溢出饱和数据。

生成覆盖率数据

打开模型并设置覆盖率设置。

load_system('slcoverage_fuelsys');

创建一个 Simulink.SimulationInput 对象来改变配置参数而不修改模型。

covSet = Simulink.SimulationInput('slcoverage_fuelsys');

打开覆盖率分析并配置 Simulink®以将覆盖率数据保存在工作区中单独的 cvdata 对象中。

covSet = covSet.setModelParameter('CovEnable','on');
covSet = covSet.setModelParameter('CovSaveSingleToWorkspaceVar','on');
covSet = covSet.setModelParameter('CovSaveName','covData');
covSet = covSet.setModelParameter('CovScope','EntireSystem');

启用整数溢出饱和度收集覆盖率并通过调用 sim 并以 SimulationInput 对象作为输入来仿真模型。

covSet = covSet.setModelParameter('CovMetricSaturateOnIntegerOverflow','on');
simOut = sim(covSet);

提取整数溢出结果的饱和度

使用 get_param 获取 MinMax 模块的模块句柄,然后获取整数溢出饱和结果。

blockHandle = get_param(['slcoverage_fuelsys/',...
    'Engine Gas Dynamics/Mixing & Combustion/MinMax'],'Handle');
saturationResults = overflowsaturationinfo(covData,blockHandle)
percentSaturationCoverage = 100 * saturationResults(1)/saturationResults(2)
saturationResults =

     1     2


percentSaturationCoverage =

    50

对于 Mixing & Combustion 子系统中的 MinMax 模块,两个整数溢出饱和决策结果中的一个得到满足,因此它获得了 50% 的整数溢出饱和覆盖率。

此示例显示如何使用 overflowsaturationinfo 来确定模型中的模块是否发生整数溢出。

生成覆盖率数据

加载 slvnvdemo_saturation_on_overflow_coverage 示例模型。

load_system('slvnvdemo_saturation_on_overflow_coverage');

使用 Simulink.SimulationInput 对象设置覆盖率设置。打开覆盖率并配置 Simulink® 以将 cvdata 对象输出到工作区。

covSet = Simulink.SimulationInput('slvnvdemo_saturation_on_overflow_coverage');
covSet = covSet.setModelParameter('CovEnable','on');
covSet = covSet.setModelParameter('CovSaveSingleToWorkspaceVar','on');
covSet = covSet.setModelParameter('CovSaveName','covData');
covSet = covSet.setModelParameter('CovScope','EntireSystem');

提取整数溢出结果的饱和度

检索 Test Unit 子系统的 Controller 子系统中 Sum 模块的整数溢出覆盖率饱和度结果和描述。

covSet = covSet.setModelParameter('CovMetricSaturateOnIntegerOverflow','on');
simOut = sim(covSet);
[covResults, covDesc] = overflowsaturationinfo(covData, ...
		['slvnvdemo_saturation_on_overflow_coverage/Test Unit /' ...
		'Controller/Sum'])
percentSaturation = 100 * covResults(1)/covResults(2)
covResults =

     1     2


covDesc = 

  struct with fields:

           isFiltered: 0
          isJustified: 0
    justifiedCoverage: 0
      filterRationale: ''
             decision: [1x1 struct]


percentSaturation =

    50

对于 Sum 模块来说,两个整数溢出饱和决策结果中有一个得到满足,因此它获得了 50% 的整数溢出饱和覆盖率。

检查仿真中 Sum 模块对每个整数溢出饱和结果进行求值的次数。

outcome1 = covDesc.decision.outcome(1)
outcome2 = covDesc.decision.outcome(2)
outcome1 = 

  struct with fields:

          execCount: 3
     executionCount: 3
               text: 'false'
         isFiltered: 0
        isJustified: 0
    filterRationale: ''
         executedIn: []


outcome2 = 

  struct with fields:

          execCount: 0
     executionCount: 0
               text: 'true'
         isFiltered: 0
        isJustified: 0
    filterRationale: ''
         executedIn: []

在仿真中,Sum 模块中没有发生整数溢出,因为 'true' 结果的执行计数为 0

如果模型中的某个模块不可能发生整数溢出,请考虑清除整数溢出饱和模块参数,以优化生成的代码的效率。

输入参数

全部折叠

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

模型或模型组件,指定为完整路径、句柄或路径或句柄的数组。

对象设定描述

BlockPath

模型或模块的完整路径

BlockHandle

模型或模块

slObj

Simulink® API 对象的句柄

sfID

Stateflow® ID

sfObj

Stateflow API 对象的句柄

{BlockPath, sfID}

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

{BlockPath, sfObj}

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

{BlockHandle, sfID}

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

示例: 'slvnvdemo_saturation_on_overflow_coverage'

示例: get_param('slvnvdemo_cv_small_controller/Saturation', 'Handle')

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

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

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

数据类型: single | double | logical

输出参量

全部折叠

溢出覆盖率饱和结果,存储在 [covered_outcomes total_outcomes] 形式的二元素向量中。这两个要素是:

covered_outcomesobject 满足的整数溢出结果的饱和度数量
total_outcomesobject 整数溢出结果的饱和总数

数据类型: double

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

isFiltered

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

decision.text'Saturate on integer overflow'
decision.outcome

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

executionCountobject 整数溢出饱和的次数进行求值以得出 text 所描述结果。
text'true''false'

整数溢出饱和有两种可能的结果,'true''false'

decision.isFiltered

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

decision.filterRationale

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

数据类型: struct

版本历史记录

在 R2013a 中推出