ドキュメンテーション

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

カバレッジ フィルターの作成と使用

この例では、Simulink® Coverage™ のモデル カバレッジ フィルターを使用してカバレッジの記録からモデル項目を除外し、レポート内で未達カバレッジを正当化する方法を示します。

カバレッジ フィルター

検証プロセスでは、フル モデル カバレッジの妨げになる構成がモデルにいくつか含まれていることがあります。たとえば、テストされておらず、検証プロセスには関係のないコントローラー用のドライバーが含まれているサブシステムなどです。これらの構成をカバレッジの記録やレポートからフィルター処理すると、テスト可能でテストが必要な未達カバレッジの他の要素に集中できます。

カバレッジ フィルターは .cvf ファイルに保存されます。フィルター ファイルは複数のモデルにまたがることができます。各フィルターは、カバレッジ結果で除外または正当化されるモデル オブジェクトを定義する規則で構成されています。カバレッジの対象となる、またはサブシステムなど他の項目を含むモデル オブジェクトなら何でもフィルター処理できます。

カバレッジ フィルターは、モデルのシミュレーションの前後どちらでも作成して適用できます。この例では、両方のワークフローを説明します。

モデルを開く

この例では、モデル slvnvdemo_covfilt を使用します。このモデルは、カバレッジの記録およびレポートからのフィルター処理が必要になる可能性のある一般的なパターンをいくつか示します。

モデルを開いて開始します。

シミュレーション前に特定のブロックをフィルター処理

slvnvdemo_covfilt モデルでは、Saturation ブロックの下限は 0、上限は 200 となっています。このブロックへの入力は rate 信号で、これは 0 以下になることはありません。Saturation ブロックの下限が完全に実行されないため、これは未達カバレッジにつながります。したがって、Saturation ブロックをカバレッジから排除します。

Simulink エディターで、Saturation ブロックを右クリックして [カバレッジ]、[このブロックの排除] を選択します。

現在のフィルター規則のリストが、カバレッジの結果エクスプローラーに表示されます。新しい規則の [根拠] フィールド内をクリックして、このブロックを排除する理由を説明するテキスト ("Input never <= lower limit (0)" など) を入力します。終了したら、[適用] をクリックします。

ライブラリ参照に基づくフィルター処理

ライブラリ ブロック slvnvdemo_covfilt_lib/protected division は、ゼロ除算に対する保護であり、カバレッジ レポートには関係がない場合があります。このブロックを右クリックして表示されるコンテキスト メニューには、ライブラリまたはこのライブラリに対するすべての参照の特定のインスタンスをフィルター処理するオプションが含まれています。[ライブラリ参照: slvnvdemo_covfilt_lib/protected division の排除] を選択します。

カバレッジの結果エクスプローラーの [フィルター] タブで、この規則の [根拠]"division by zero protection" などを入力します。終了したら、[適用] をクリックします。

Stateflow® でのイベントのフィルター処理

一般的に、フィルター規則は、ブロックまたは Stateflow® オブジェクト全体をカバレッジ記録から除外します。Stateflow® のイベントは例外で、遷移の一部に関してはカバレッジを除外し、残りの遷移に関してはカバレッジを記録することができます。

この例では、false になることがない時相イベント tick を定義する遷移があり、条件および MCDC のフル カバレッジを妨げています。

時相イベント tick を排除するには、この遷移を右クリックして表示されるコンテキスト メニューで [カバレッジ]、[時相イベント 'tick' の排除] を選択します。

カバレッジの結果エクスプローラーの [フィルター] タブで、この規則の [根拠]"tick" などを入力します。終了したら、[適用] をクリックします。

フィルター処理されたカバレッジ結果のシミュレーションと確認

モデルをシミュレートします。シミュレーションが完了すると、カバレッジの結果エクスプローラーが開きます。[レポートの生成] リンクをクリックして、この実行のカバレッジ レポートを作成して開きます。

カバレッジ レポートには、[カバレッジ解析からフィルター処理されたオブジェクト] というタイトルの節が表示され、排除された各要素および対応する根拠がリストされます。カバレッジ結果はこれらの要素を排除します。

シミュレーション後のサブシステムのフィルター処理

場合によっては、モデル内の特定の項目がフル カバレッジを達成しないと予測されることがあります。その場合は、カバレッジ用にシミュレートする前に、この例のここまでの節で行ったように、該当する項目をフィルター処理します。シミュレーション後にフィルターを作成してカバレッジ結果に適用することもできます。こうすると、シミュレーションを再実行することなく、カバレッジ結果を確認し、必要に応じてフィルターを作成または調整し、そのフィルターを使用して新しいカバレッジ レポートを生成できます。

たとえば、サブシステム Switchable config について考えます。定数値を使用して、モデル コンフィギュレーションを変更するためのサブシステムのイネーブル端子を駆動することが、設計における一般的なパターンですが、イネーブル ロジックとサブシステムの内容により、未達カバレッジとなる場合があります。このコンフィギュレーションはこのモデルでは使用しないため、Switchable config サブシステムをカバレッジ フィルターに追加します。

Simulink エディターで、Switchable config サブシステムを右クリックして、[カバレッジ]、[サブシステムとすべての子孫の排除] を選択します。

カバレッジの結果エクスプローラーの [フィルター] タブで、この規則の [根拠]"unused config" などを入力します。終了したら、[適用] をクリックします。

カバレッジ レポートからの Stateflow® 遷移のフィルター処理

カバレッジ レポートで、チャート Mode Logic の下にある Stateflow® の [ジャンクション #0 から "off" への遷移 "[!on]"] の詳細な結果に移動します。この遷移が false になることはありません。これは [ジャンクション #0 から "on" への遷移 "[on]"] が false のときのみに評価するからです。

モデルに戻って右クリックのコンテキスト メニューでこの遷移をフィルター処理する代わりに、レポートから直接この項目をフィルター処理できます。

この遷移の詳細結果にある [正当化または排除] リンクをクリックします。

カバレッジの結果エクスプローラーの [フィルター] タブが開き、この遷移をフィルター処理する規則が追加されます。

この規則のフィルター処理の [モード][正当化済み] に変更し、[根拠]"expression can't be false" などの説明を入力します。終了したら、[適用] をクリックします。

カバレッジ レポートの個々のオブジェクティブ結果の正当化

ここまでの例では、指定したモデル オブジェクトに関連するすべてのオブジェクティブがフィルター処理されました。個々のカバレッジ オブジェクティブの結果をレポートから直接正当化することもできます。これにより、正当化規則をより細かく定義できます。

カバレッジ レポートで、チャート Mode Logic の下にある Stateflow® の [ジャンクション #3 からジャンクション #4 への遷移 "[high]"] の詳細な結果に移動します。この遷移は現時点では実行されることがないので、判定カバレッジ オブジェクティブの結果は falsetrue も達成されていません。

この個別のオブジェクティブ結果を正当化するには、false 結果の横にある [正当化規則を追加] アイコンをクリックします。

カバレッジの結果エクスプローラーの [フィルター] タブが開き、このオブジェクティブの結果をフィルター処理する規則が追加されます。

[根拠]"justify false outcome only" などの説明を入力します。終了したら、[適用] をクリックします。

更新されたカバレッジ レポートの生成

[適用] をクリック後、[レポートの生成] リンクがダイアログの下部に表示されます。このリンクをクリックして、更新されたカバレッジ フィルターでレポートを再生成します。

新しいカバレッジ レポートの [カバレッジ解析からフィルター処理されたオブジェクト] には、シミュレーション後にフィルター処理された要素も含めて、排除された要素と正当化された要素がすべて表示されます。[根拠] 列のリンクをクリックすると、カバレッジの結果エクスプローラーの [フィルター] タブの対応する規則に移動します。また、正当化されたモデル オブジェクトは先頭に識別子が付きます (たとえば、下記のレポートの J6 および J7)。それぞれが、正当化されたモデル オブジェクトまたはオブジェクティブ結果の詳細な結果にリンクします。

カバレッジ率をレポートする際、正当化されたオブジェクティブは薄い青で表示され、達成されたものとして扱われます。

[ジャンクション #0 から "off" への遷移 "[!on]"] の詳細な結果は、この遷移の未達カバレッジが正当化されたことを示しています。リンク [正当化済み J6] をクリックすると、レポートの [カバレッジ解析からフィルター処理されたオブジェクト] 節の対応する正当化規則に移動します。

同様に、[ジャンクション #3 からジャンクション #4 への遷移 "[high]"] の詳細な結果は、false 判定結果の未達カバレッジが正当化されたことを示しています。ただし、この個別の結果のみに対して正当化規則が作成されているため、true 判定結果は引き続き非達成としてレポートされます。false 判定結果の横に表示されているリンク J7 をクリックすると、レポートの [カバレッジ解析からフィルター処理されたオブジェクト] 節の対応する正当化規則に移動します。

クリーン アップ

例を完了するには、モデルを閉じます