メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

verify

論理式を評価して結果を記録

説明

verify(expression) は、スカラーの論理式 expressiontrue または false として評価します。

verify(expression,errorMessage) は、スカラーの論理式が失敗した場合に、指定されたエラー メッセージを返します。テスト マネージャーでテストを実行している場合、シミュレーション ログにエラー メッセージが表示されます。テスト マネージャーの外部でテストを実行している場合、診断ビューアーにメッセージが表示されます。errorMessage は文字配列として指定します。sprintf を使用して書式を設定できます。Stateflow® チャートの string または文字配列では、sprintf による書式設定は使用できません。

メモ

リアルタイム環境では、verify ステートメントの失敗時に警告は生成されません。テスト マネージャーでリアルタイム テスト ケースを実行している場合は、[verify ステートメント] セクションにテスト ケース結果の失敗が表示されます。getVerifyRuns を使用して verify の実行に関する情報にアクセスすることもできます。

高速リスタート シミュレーション モードでテスト反復を実行している場合、診断ビューアー、テスト マネージャーの [ログ] セクション、テスト レポートに verify ステートメントからの情報、エラー、警告は出力されません。

verify(expression,identifier,errorMessage) は、identifier をテスト結果のラベルとして使用します。テスト マネージャーでテストを実行している場合、信号ラベルのテスト結果として identifier が使用されます。テスト マネージャーの外部でテストを実行している場合は、シミュレーション データ インスペクターや診断ビューアー (失敗時) にラベルが表示されます。identifier は、コロンで区切られた少なくとも 2 つの MATLAB® 識別子をもつ文字配列として指定します。

すべて展開する

次の verify ステートメントでは、2 つの式が評価されます。

verify(x > y && z > 10)

次の verify ステートメントでは、失敗した場合に xy、および z の値をリストしたエラー メッセージが返されます。

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 ステートの 2 番目のステップでターゲットが 60 に等しいことを検証しています。

Stateflow chart with verify statement

制限

  • verify ステートメントは以下では使用できません。

    • 連続時間更新を使用する Test Sequence ブロック。Test Sequence ブロックのデータは、ソルバーのステップ時間などの要因に依存することがあります。連続時間更新の場合、ブロックのデータと verify ステートメントが更新されるタイミングに差が生じ、verify ステートメントの結果が予期しない結果になる可能性があります。モデルで連続時間を使用している場合に Test Sequence ブロックまたは Test Assessment ブロックで verify ステートメントを使用する際は、離散ブロックのサンプル時間を明示的に設定することを検討してください。

    • Moore チャート、Mealy チャート、離散イベント チャート、または連続チャート

    • C をアクション言語として使用するチャート

    • チャート内のバインド アクション

    • チャート内の遷移アクションまたは条件アクション

    • チャート内の MATLAB 関数、グラフィカル関数、または真理値表

    • MATLAB Function ブロックまたは Truth Table ブロック

    • ラピッド アクセラレータ モードのシミュレーション

    • Simulink® Real-Time™ および HDL Verifier™ 以外のコード生成ターゲット

    • スタンドアロンの Stateflow チャート

  • verify ステートメントは出力を生成しないため、When 分解構造の when の直後に verify を条件として使用することはできません。When 分解構造ステップのアクションとしては verify ステートメントを使用できます。Verify Model Simulation by Using when Decompositionを参照してください。

  • 並列テスト実行を使用してテストを実行し、テストで verify ステートメントを使用している場合、テスト マネージャーで [モデル内で強調表示] ボタンは使用できません。

ヒント

  • verify ステートメントは、Test Sequence ブロック、Test Assessment ブロック、および Stateflow チャートで使用できます。チャートを使用するには Stateflow のライセンスが必要です。チャートでも、Test Sequence ブロックと同じ場所および実行モードで、同じコード生成ターゲットに対して verify ステートメントがサポートされます。

  • verify ステートメントはテスト ケースの有無に関係なく使用できます。モデルにテスト ケースが含まれていない場合、シミュレーション データ インスペクターに結果が表示されます。モデルにテスト ケースが含まれている場合、テスト マネージャーに結果が表示されます。

  • 単一のタイム ステップで複数の式を検証するには、同じテスト ステップで verify ステートメントを定義するか、サブステップを追加して各サブステップに verify ステートメントを追加します。テスト ステップの管理を参照してください。

  • verify ステートメントで浮動小数点データを比較するときは、浮動小数点数に関する精度の制限を考慮してください。浮動小数点データを使用する必要がある場合は、検証の許容誤差を定義します。たとえば、verify(x == 5) の代わりに、0.001 の許容誤差内で x を検証します。

    verify(abs(x-5) < 0.001)
    詳細については、浮動小数点数を参照してください。

  • ターゲット ハードウェアでモデルをシミュレートするときのデータ転送を減らすには、テストされた verify ステートメントの結果のみをログに記録し、テスト マネージャーとシミュレーション データ インスペクターに passfail の結果のみを表示するように選択できます。

    verifypassfail の結果のみをログに記録するには、[テスト] タブまたは [ハーネス] タブの [テスト ケース] セクションで [Suppress Untested Results] をクリックします。あるいは、set_param を使用して logOnlyTestedVerifyResults パラメーターを 'on' に設定できます。たとえば、モデル myModel について、verify ステートメントの tested の結果のみをログに記録するには次のようにします。

    set_param(myModel,'logOnlyTestedVerifyResults','on')
    このオプションを選択すると、モデル内のすべての Test Sequence ブロックまたは Chart ブロックに設定が適用されます。HDL Verifier を使用している場合、設定は適用されません。

バージョン履歴

R2016a で導入

すべて展開する