ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

モデル カバレッジの種類

Simulink® Verification and Validation™ ソフトウェアでは、複数の種類のカバレッジ解析を実行できます。

循環的複雑度

循環的複雑度は、モデルの構造的複雑度の測定値です。この値は、モデルから生成されたコードの McCabe の複雑度の近似値です。モデル カバレッジ解析ではエラー チェックが考慮されないため、生成されたコードでは McCabe の複雑度の測定値は若干高くなります。

モデル カバレッジでは、オブジェクト (ブロック、チャート、ステートなど) の循環的複雑度の計算に次の公式を使用します。

c=1N(on1)

N はオブジェクトが表す判定点の数、on は n 番目の判定点の結果の数です。Atomic サブシステムと Stateflow® チャートに対しては、複雑度の値に 1 が加算されます。

モデル カバレッジ レポートの循環的複雑度の例については、循環的複雑度を参照してください。

条件カバレッジ (CC)

条件カバレッジでは、入力の論理組み合わせを出力するブロック (Logical Operator ブロックなど) と Stateflow 遷移を解析します。テスト ケースで完全なカバレッジが得られるのは、モデル内で論理ブロックの各インスタンスへの入力と遷移での各条件が、シミュレーション中に少なくとも 1 回 true になり、かつシミュレーション中に少なくとも 1 回 false になる場合です。条件カバレッジ解析では、モデル内のブロックごとに、テスト ケースが当該のブロックを完全に網羅しているかどうかがレポートされます。

モデルのカバレッジを収集した結果、条件カバレッジが 100% にならない場合があります。たとえば、[カバレッジの設定] ダイアログ ボックスで [Simulink 論理ブロックをショートサーキットして扱う] を選択して、論理ブロックをショートサーキットするよう指定した場合、そのブロックの条件カバレッジが 100% にならないことがあります。詳細は、Simulink 論理ブロックをショートサーキットとして扱うを参照してください。

モデル カバレッジ レポートの条件カバレッジ データの例については、条件解析を参照してください。

判定カバレッジ (DC)

判定カバレッジでは、モデルの判定点を表す要素 (Switch ブロックや Stateflow ステートなど) を解析します。それぞれの項目について、判定カバレッジはその項目で実際に通過したシミュレーション パス数の割合を特定します。

モデル カバレッジ レポートの判定カバレッジ データの例については、判定解析を参照してください。

ルックアップ テーブル カバレッジ

ルックアップ テーブル カバレッジ (LUT) では、1-D Lookup Table ブロックなど、入出力のテーブルの入力情報を出力し、テーブルのエントリ間を内挿するか、テーブルのエントリから外挿するブロックを調査します。ルックアップ テーブル カバレッジは、テーブル ルックアップがそれぞれの内挿間隔を使用する頻度を記録します。テスト ケースで各内挿および外挿間隔が少なくとも 1 回実行された場合、テスト ケースのカバレッジは完全になります。カバレッジ レポートでは、モデル内の各ルックアップ テーブル ブロックごとに、ルックアップ テーブルの色付きマップが表示され、各内挿が示されます。n-D Lookup Table ブロックのブレークポイントの総数が 1,500,000 を超える場合、そのブロックのカバレッジは記録されません。

モデル カバレッジ レポートのルックアップ テーブル カバレッジ データの例については、n 次元ルックアップ テーブルを参照してください。

    メモ:   ルックアップ テーブル カバレッジの設定はシミュレーションの開始時にのみ行います。ルックアップ テーブル カバレッジに影響するパラメーターを実行時に調整しても、該当するブロックのカバレッジ設定は更新されません。

修正条件判定カバレッジ (MCDC)

Simulink Verification and Validation ソフトウェアの修正条件判定カバレッジ解析は、判定カバレッジ機能と条件カバレッジ機能を拡張したものです。入力の論理組み合わせを出力するブロックと Stateflow 遷移の解析により、論理ブロック入力と遷移条件の独立性をテスト ケースがどの程度テストしているかを判定します。

  • ブロックの場合、他のどの入力にも依存していない、いずれかの入力の変化によりブロックの出力も変化する場合、テスト ケースのカバレッジが完全になります。

  • Stateflow 遷移の場合、どの条件でも、条件の変化による遷移が少なくとも 1 回発生していれば、テスト ケースのカバレッジが完全になります。

モデルに含まれるブロックが、異なる種類の論理演算子と 12 を超える条件を保有する式を定義している場合、MCDC カバレッジを記録することができません。

Simulink Verification and Validation の MCDC カバレッジでは、判定カバレッジや条件カバレッジが完全にならない場合があるため、判定カバレッジが 100% でなくても MCDC カバレッジを 100% 達成できるようになっています。

Simulink オブジェクトの一部は、MCDC カバレッジをサポートしますが、オブジェクトによっては条件カバレッジのみをサポートしたり、判定カバレッジのみをサポートしたりする場合があります。「カバレッジの対象となるモデル オブジェクト」の表は、どのオブジェクトがどの種類のモデル カバレッジの対象となるかを示しています。たとえば、Combinatorial Logic ブロックは判定カバレッジと条件カバレッジの対象になりますが、MCDC カバレッジの対象にはなりません。

モデルの MCDC カバレッジを 100% にするには、DO-178C/DO-331 標準の定義どおり、[カバレッジの設定] ダイアログ ボックスで次のすべてのカバレッジ メトリックに関するカバレッジを収集します。

  • 条件カバレッジ

  • 判定カバレッジ

  • MCDC カバレッジ

モデルのカバレッジを収集した結果、MCDC カバレッジが 100% にならない場合があります。たとえば、論理ブロックをショートサーキットするように指定した場合、そのブロックの MCDC カバレッジが 100% にならない可能性があります。

テスト ケースをそれぞれ独立して実行し、すべてのカバレッジ結果を累積すると、モデルが変更後の条件カバレッジおよび判定カバレッジの標準に準拠しているか確認することができます。DO-178C/DO-331 標準についての詳細は、「DO-178C/DO-331 Checks」を参照してください。

モデル カバレッジ レポートの MCDC カバレッジ データの例については、MCDC 解析を参照してください。累積されたカバレッジの結果の例については、累積カバレッジを参照してください。

関係演算子の境界カバレッジ

関係演算子の境界カバレッジは、明示的または暗黙的な関係演算を含むブロック、Stateflow グラフおよび MATLAB® Function ブロックを検証します。

  • Relational Operator および If などのブロックは明示的な関係演算を含みます。

  • Abs および Saturation などのブロックは暗黙的な関係演算を含みます。

これらのモデル オブジェクトでは、シミュレーションで次の値を使用して関係演算がテストされているかどうかメトリックによって記録されます。

  • 等しいオペランド値。

    関係演算子の境界カバレッジのこの部分は、両方のオペランドが整数または固定小数点数である場合のみに適用されます。

  • 特定の許容誤差によって異なるオペランド値。

    関係演算子の境界カバレッジのこの部分は、すべてのオペランドに適用されます。整数および固定小数点のオペランドの場合、許容誤差は固定されます。浮動小数点オペランドの場合は、事前定義された許容誤差を使用することも、独自の許容誤差を指定することもできます。

許容誤差値は、両方のオペランドのデータ型に応じて変更します。両方のオペランドのデータ型が同じ場合、許容誤差は次のルールに従います。

オペランドのデータ型許容誤差
singledouble などの浮動小数点max(absTol, relTol* max(|lhs|,|rhs|))
  • absTol は、指定する絶対許容差値です。既定値は 1e-05 です。

  • relTol は、指定する相対許容誤差です。既定値は 0.01 です。

  • lhs は左オペランドで、rhs は右オペランドです。

  • max(x,y) は、x または y の大きい方を返します。

固定小数点最下位ビットに対応する値。詳細は、「精度」を参照してください。精度値を検索するには、関数 lsb を使用します。
整数1
BooleanN/A
EnumN/A

2 つのオペランドの型が異なる場合、許容誤差はより厳格な型の規則に従います。オペランドの 1 つが boolean である場合、許容誤差は他のオペランドの規則に従います。厳格さは、次の順序で低くなっていきます。

  1. 浮動小数点

  2. 固定小数点

  3. 整数

両方のオペランドが固定小数点でも精度が異なる場合は、精度の値が小さい方のオペランドが許容誤差として使用されます。

詳細については、それぞれ以下を参照してください。

整数オーバーフローで飽和カバレッジ

整数オーバーフローで飽和カバレッジでは、Abs ブロックのように、[整数オーバーフローで飽和] パラメーターが選択されているブロックを調べます。このパラメーターが選択されているブロックのみが整数オーバーフローで飽和カバレッジの対象となります。

整数オーバーフローで飽和カバレッジでは、ブロックが整数オーバーフローで飽和する回数を記録します。

ブロックが少なくとも 1 回整数オーバーフローで飽和し、かつ少なくとも 1 回飽和しない場合に、テスト ケースのカバレッジが完全になります。

モデル カバレッジ レポートの整数オーバーフローで飽和カバレッジ データの例については、整数オーバーフローで飽和についての解析を参照してください。

信号範囲カバレッジ

信号範囲カバレッジではモデル内の各ブロックでシミュレーション中に測定された信号値の最小値と最大値が記録されます。出力信号があるブロックのみが信号範囲カバレッジの対象となります。

このソフトウェアでは、制御信号 (あるブロックが別のブロックの実行を開始させるために使用する信号) の信号範囲カバレッジは記録されません。「制御信号」を参照してください。

モデル内の信号の総数が 65535 を超えた場合や、モデル内の信号の幅が 65535 を超える場合、信号範囲カバレッジは記録されません。

モデル カバレッジ レポートの信号範囲カバレッジ データの例については、信号範囲解析を参照してください。

信号サイズ カバレッジ

信号サイズ カバレッジでは、モデル内のすべての可変サイズ信号の最小サイズ、最大サイズ、割り当てサイズが記録されます。可変サイズの出力信号があるブロックのみがレポートの対象となります。

モデル内の信号の総数が 65535 を超えた場合や、幅が 65535 を超える信号がモデルにある場合には、信号サイズのカバレッジは記録されません。

モデル カバレッジ レポートの信号サイズ カバレッジ データの例については、可変次元信号の信号サイズ カバレッジを参照してください。

可変サイズ信号の詳細は、「可変サイズの信号の基礎」を参照してください。

Simulink Design Verifier カバレッジ

Simulink Verification and Validation ソフトウェアにより、次の Simulink Design Verifier™ ブロックとコード生成用 MATLAB 関数で使用するモデル カバレッジ データが収集されます。

Simulink Design Verifier ブロックコード生成用 MATLAB 関数
Test Conditionsldv.condition
Test Objectivesldv.test
Proof Assumptionsldv.assume
Proof Objectivesldv.prove

Simulink Design Verifier ライセンスを保有していない場合でも、これらのブロックや関数があるモデルのモデル カバレッジを収集することはできますが、Simulink Design Verifier ソフトウェアでモデルを解析することはできません。

モデルに 1 つまたは複数の Simulink Design Verifier ブロックまたは関数を追加すると、次のことができるようになります。

  • Simulink Design Verifier 解析の結果をチェックし、生成されたテスト ケースを実行し、ブロックを使用して結果を観察する。

  • Test Objective ブロックを使用してモデルの要求仕様を定義し、シミュレーション時に収集されたモデル カバレッジ データを使用して結果を検証する。

  • モデルを解析し、作成したテスト ハーネスを Test Objective ブロックでシミュレーションして、モデル カバレッジ データを収集する。

  • モデルを解析し、Proof Assumption ブロックを使用して Simulink Design Verifier により特定された反例を検証する。

Simulink Design Verifier のカバレッジを収集するように指定すると、以下のようになります。

  • Simulink Design Verifier ブロックおよび関数のカバレッジが収集されます。

  • Simulink Design Verifier ブロックにリンクする信号のデータ型がチェックされます。信号のデータ型が固定小数点型の場合、ブロック パラメーターも固定小数点型でなければなりません。信号のデータ型が固定小数点型でない場合、ブロック パラメーターのデータ型の変換が試行されます。ブロック パラメーターのデータ型を変換できない場合、エラーが報告されます。この場合、信号と一致するようにブロック パラメーターのデータ型を明示的に割り当てなければなりません。

  • モデルに Verification Subsystem ブロックがある場合、Verification Subsystem ブロックにある Simulink Design Verifier ブロックのカバレッジのみが記録されます。Verification Subsystem ブロック内のその他のブロックのカバレッジは記録されません。

Simulink Design Verifier のカバレッジ収集を指定していない場合、モデル内の Simulink Design Verifier ブロックのデータ型はチェックされず、カバレッジも収集されません。

モデル カバレッジ レポートの Simulink Design Verifier ブロックまたは関数のカバレッジ データの例については、Simulink Design Verifier カバレッジを参照してください。

この情報は役に立ちましたか?