主要内容

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

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 SequenceTest Assessment 模块中使用 verify 语句,请考虑明确设置离散模块采样时间。

    • Moore、Mealy、离散事件或连续图

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

    • 在图中绑定操作

    • 图中的转移或条件操作

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

    • MATLAB 函数或 Truth Table 模块

    • 快速加速器模式下的仿真

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

    • 独立的 Stateflow 图

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

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

提示

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

  • 您可以使用 verify 语句,无论是否带有测试用例。如果模型中未包含测试用例,结果将显示在“仿真数据检查器”中。如果模型包含测试用例,结果将显示在测试管理器中。

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

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

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

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

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

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

版本历史记录

在 R2016a 中推出

全部展开