主要内容

verify

评估逻辑表达式并记录结果

描述

verify(expression) 将标量逻辑 expression 计算为 truefalse

示例

verify(expression,errorMessage) 在标量逻辑表达式失败时返回指定的错误消息。如果您在测试管理器中运行测试,则错误消息显示在仿真日志中。如果您在测试管理器外运行测试,则错误消息显示在诊断查看器中。将 errorMessage 指定为字符数组,该字符数组可以使用 sprintf 进行格式化。在 Stateflow® 图中,无法在字符串或字符数组中使用 sprintf 格式化语法。

注意

在实时环境中,verify 语句失败后不会产生警告。如果您在测试管理器中运行实时测试用例,验证语句部分会显示测试用例结果中的失败项。您也可以使用 getVerifyRuns 访问有关 verify 运行的信息。

如果您在快速重启仿真模式下运行测试迭代,验证语句不会向诊断查看器、测试管理器的日志部分或测试报告中输出信息、错误或警告。

示例

verify(expression,identifier,errorMessage) 使用 identifier 作为测试结果的标签。如果您在测试管理器中运行测试,则 identifier 会用作测试结果的信号标签。如果您在测试管理器外运行测试,则标签会显示在仿真数据检查器中,若失败则显示在诊断查看器中。将 identifier 指定为字符数组,该字符数组中需包含至少两个以冒号分隔的 MATLAB® 标识符。

示例

示例

全部展开

verify 语句计算两个表达式:

verify(x > y && z > 10)

如果此 verify 语句失败,系统会返回一条错误消息,列出 xyz 的值。

verify(x > y && z > 10,'x, y, and z are %d,%d,%d',x,y,z)

verify 语句的结果以标签 TestReq1:bothGreater 为前缀,如果测试失败,还会显示错误消息。

verify(x > y && z > 10,'TestReq1:bothGreater',...
   'x, y, and z are %d,%d,%d',x,y,z)

要仅在语句满足多个条件时计算逻辑表达式,可使用 if 语句定义 verify 语句。

if u1 == false && u2 == false
  verify(x1 == false && x2 == false)

此 Stateflow 图的 Scenario1 状态的第二步验证目标值是否等于 60。

Stateflow chart with verify statement

限制

  • 以下对象中无法使用 verify 语句:

    • 使用连续时间更新的 Test Sequence 模块。Test Sequence 模块数据可能依赖于求解器步长时间等因素。连续时间更新可能导致模块数据与 verify 语句的更新时间存在差异,进而导致 verify 语句产生意外结果。如果您的模型使用连续时间并且您在 Test Sequence 模块或 Test Assessment 模块中使用 verify 语句,请考虑显式设置离散模块采样时间。

    • 摩尔图、米利图、离散事件图或连续图

    • 使用 C 语言作为动作语言的图

    • 图中的绑定动作

    • 图中的转移动作或条件动作

    • 图中的 MATLAB 函数、图形函数或真值表

    • MATLAB Function 或 Truth Table 模块

    • 快速加速模式下的仿真

    • Simulink® Real-Time™ 和 HDL Verifier™ 之外的代码生成目标

    • 独立 Stateflow 图

  • When 分解中,无法在 when 之后立即将 verify 用作条件,因为 verify 语句不产生输出。可以在 When 分解步骤中将 verify 语句用作动作。请参阅通过 when 分解验证模型仿真

  • 如果使用并行测试执行运行测试并且在测试中使用 verify 语句,则无法使用测试管理器中的在模型中突出显示按钮。

提示

  • 可以在 Test Sequence 模块和 Test Assessment 模块以及 Stateflow 图中使用 verify 语句。使用图需要 Stateflow 许可证。图中的 verify 语句支持的使用位置、执行模式和代码生成目标与 Test Sequence 模块相同。

  • 使用 verify 语句时有或没有测试用例均可。如果模型不包含测试用例,则结果显示在仿真数据检查器中。如果模型包含测试用例,则结果显示在测试管理器中。

  • 要在单个时间步中验证多个表达式,可在相同测试步骤中定义 verify 语句,或者添加子步骤并为每个子步骤添加 verify 语句。请参阅管理测试步骤

  • verify 语句中比较浮点数据时,需考虑与浮点数关联的精度限制。如果您需要使用浮点数据,请为验证定义容差。例如,请不要使用 verify(x == 5),而是在 0.001 的容差内验证 x

    verify(abs(x-5) < 0.001)
    有关详细信息,请参阅浮点数

  • 在目标硬件上仿真模型时,为了减少数据传输,可以选择仅记录已测试的 verify 语句结果,并仅在测试管理器和仿真数据检查器中显示 passfail 结果。

    要仅记录 passfail verify 结果,请在测试框架选项卡的测试用例部分中,点击隐藏未经测试的结果。您也可以使用 set_paramlogOnlyTestedVerifyResults 参数设置为 'on'。例如,仅记录模型 myModeltested 验证语句结果:

    set_param(myModel,'logOnlyTestedVerifyResults','on')
    选择此选项时,该设置将应用于模型中的所有 Test Sequence 模块或 Chart 模块。使用 HDL Verifier 时,该设置不适用。

版本历史记录

在 R2016a 中推出

全部展开