メインコンテンツ

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

この例では、カバレッジ フィルターを使用してカバレッジ解析からモデル要素を除外し、レポート内で未達カバレッジを正当化する方法を示します。

カバレッジ フィルター

検証プロセス中に、フル モデル カバレッジの妨げになる構成がモデルにいくつか含まれていることがあります。たとえば、テストされておらず、検証プロセスには関係のないコントローラー用のドライバーが含まれているサブシステムなどです。このサブシステムはカバレッジ結果から除外できます。

また、特定の判定点への到達など、ブロックの一部の特性を実行しなければならないテスト基準がある可能性があります。このブロックに対するカバレッジの結果をすべて達成するのは不可能であり、これらの未達成の結果をテストで実行する必要がなかった場合、未達カバレッジを正当化できます。

これらの構成を除外または正当化してカバレッジ結果でフィルター処理することにより、テスト可能でテストが必要な未達カバレッジの他の要素に集中できます。

カバレッジ フィルターは CVF ファイルに保存されます。各フィルターは、特定のモデル オブジェクトまたは個別のカバレッジ オブジェクティブ結果を除外または正当化する規則で構成されます。複数のフィルター ファイルをモデルのカバレッジ結果に適用できます。また、複数のモデルで同じフィルター ファイルを使用できます。

モデルのシミュレーションの前後どちらでも、カバレッジ フィルターを作成して適用できます。

モデルを開く

この例では、slvnvdemo_covfilt モデルを使用します。このモデルには、モデル カバレッジの完成を妨げる構成がいくつか含まれています。これらの構成にフィルターを適用してカバレッジ結果から除外することにより、実行中のテストにおける関連性がより高い未達カバレッジ要素に集中できます。

open_system('slvnvdemo_covfilt');

シミュレーション前にカバレッジ結果から除外する項目を指定する

ライブラリ ブロック slvnvdemo_covfilt_lib/protected division はゼロ除算を防止します。このコンテキストでこのブロックのすべてのインスタンスをテストにて完全に網羅する必要がないか目的としていないと判断した場合は、このブロックをカバレッジ結果から除外できます。

コンテキスト メニューからカバレッジ設定を変更するには、まずカバレッジ アナライザー アプリを開く必要があります。[アプリ] タブで、[カバレッジ アナライザー] をクリックします。モデルで protected division ライブラリ ブロックを右クリックし、[ライブラリ参照: slvnvdemo_covfilt_lib/protected division の排除] をクリックして、ライブラリへのすべての参照をフィルターで除外します。コンテキスト メニューの各ボタンには、実行内容を説明するツールヒントが表示されます。

Simulink context menu with mouse cursor pointing to the "Exclude referenced library" button

"カバレッジの結果エクスプローラー"[フィルター エディター] ペインが開きます。"カバレッジの結果エクスプローラー" によって新規フィルター ファイル (既定では、名前は Untitled) が作成され、ライブラリ ブロックへのすべての参照を除外するフィルターの規則が追加されます。

Filter Editor pane with one exclusion rule populated in the Filter Rules table

[名前] および [説明] フィールドを使用して、新規フィルター ファイルの名前と説明を指定します。表で、新しい規則の [根拠] フィールドをダブルクリックし、このブロックを除外する理由を説明するテキスト (「division by zero protection」など) を入力します。[適用] をクリックし、フィルター ファイルを保存します。ファイル ダイアログにより、このファイルの保存場所を指定するように求められます。

Filter Editor pane with the filter name, description fields and filter rule rationale set

既存のフィルター ファイルの再利用

類似の構成を含むモデルがある場合、1 つのフィルター ファイルを複数のモデルで使用できます。

たとえば、フィルター ファイル Filter_Tick.cvf は Stateflow® の時相イベント tick をカバレッジ結果から除外します。このイベントが false になることはないため、Stateflow でイベントベースの時相論理に tick を使用するどのモデルにおいても、条件および MCDC のフル カバレッジが妨げられます。

slvnvdemo_covfilt/Mode Logic にはこの構成が含まれているため、フィルター ファイル Filter_Tick.cvf をモデルに適用できます。

この既存のフィルター ファイルを適用するには、"カバレッジの結果エクスプローラー"[適用済みのフィルター] ノードを右クリックし、[フィルターの読み込み] を選択します。ファイル ダイアログで、Filter_Tick.cvf を選択して [開く] をクリックします。

Context menu for the Applied filters selection displays two options: New filter and Load filter

[適用済みのフィルター]Filter_DivBy0Filter_Tick の両方がリストされることに注目してください。

Coverage Results Explorer with two filter files listed

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

[実行 (カバレッジ)] ボタンをクリックしてモデルのシミュレーションを行い、カバレッジを記録します。シミュレーションが完了すると、Simulink® Coverage™ でカバレッジ結果を含むモデルが強調表示され、[カバレッジの詳細] ペインが開きます。

Simulink window after coverage analysis. The Coverage Details pane displays the Objects Filtered from Coverage Analysis section of the coverage report.

protected division ライブラリ ブロックへの参照がどちらも破線の境界線で囲まれたグレーになり、除外規則により Simulink Coverage でこれらが解析されなかったことが示されます。

[カバレッジの詳細] ペインの [カバレッジ解析からフィルターで除外されたオブジェクト] セクションに、除外された各要素とそれぞれに対応する根拠がリストされます。Filter_DivBy0Filter_Tick の両方がここに表示されています。

新規フィルター ファイルの作成

このモデルにのみ関連するフィルターの規則を取得する別のフィルター ファイルを作成します。

"カバレッジの結果エクスプローラー" で、[適用済みのフィルター] ノードを右クリックし、[新規フィルター] を選択します。

Context menu for Applied filters, with New filter selected

このフィルター ファイルの名前と説明を入力します。この例では、名前を slvnvdemo_covfilt_Filter、説明を Filter rules specific to slvnvdemo_covfilt model に設定します。[適用] をクリックし、ファイルの保存場所を指定します。

Filter Editor pane with a new unsaved filter file that does not contain any filter rules

シミュレーション後のカバレッジ結果からの項目の除外

フィルターの規則を作成して、シミュレーション後にカバレッジ結果に適用することもできます。これにより、シミュレーションを再実行することなく、カバレッジ結果を確認し、フィルターを作成または調整し、新しいカバレッジ レポートを生成できます。

たとえば、Switchable config サブシステムを考えます。これは、定数値を使用して、サブシステムのイネーブル端子を駆動し、モデル構成を変更する一般的な設計パターンをモデル化します。しかし、イネーブル ロジックとサブシステムの内容により、未達カバレッジとなる場合があります。このモデルではこの構成を使用しないため、カバレッジ解析から除外できます。

[カバレッジの詳細] ペインから新しいフィルター規則を追加すると、Simulink Coverage はその新しいフィルター規則を、現在選択しているフィルター ファイルに追加します。新しいフィルター規則を作成するには、まず [適用済みのフィルター] をクリックします。

After clicking Applied filters, the right pane displays the Filter Editor, which contains links to create a new filter file, load a filter file, or use Simulink Design Verifier to create filter rules for dead logic

Simulink エディターで、Switchable config サブシステムをクリックします。[カバレッジの詳細] ペインに、このサブシステムのカバレッジの詳細が表示されます。[正当化または排除] リンクをクリックします。[カバレッジ フィルターの選択] ダイアログ ボックスが開くので、[<新規フィルター ファイルの作成>] をクリックします。

Select Coverage Filter dialog box with 'Create new filter file' selected

Coverage Details pane displaying the subsystem block Switchable config and the Justify or Exclude link

新しいフィルター ファイルの名前と説明を入力します。[フィルター規則] セクションに、この規則の根拠を入力します (unused config など)。

Filter Editor pane with a third filter file applied, slvnvdemo_covfilt_Filter. This filter file contains one rule that excludes the switchable config subsystem.

[適用] をクリックして、フィルター ファイルに変更を保存し、カバレッジ結果を更新します。

Simulink window showing the highlighted model and coverage results. The Switchable config subsystem is excluded.

Switchable config サブシステムが、実線の境界線で囲まれた赤色ではなく、破線の境界線で囲まれたグレーになり、フィルターによってカバレッジ結果から除外されたことが示されます。

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

Simulink エディターで、Saturation という名前の Saturation ブロックをクリックし、[カバレッジの詳細] ペインでカバレッジ結果を確認します。Saturation ブロックの下限が 0、上限が 200 となっているため、2 つの判定結果が達成されていません。ただし、このブロックへの入力は rate 信号で、これは 0 以下になることはありません。したがって、Saturation ブロックの下限は完全には実行されないため、対応する判定結果を正当化できます。

判定 input > lower limit に対する偽の結果の横にある [正当化規則を追加] アイコン をクリックします。

Coverage Details pane displaying the block details for the Saturation block and the 'Add justification rule' icon

"カバレッジの結果エクスプローラー" により、新しいフィルターの規則が [フィルター エディター] ペインで現在選択されているフィルター ファイルに追加されます。正当化の根拠を指定します (rate > 0)。

[適用] をクリックして、フィルター ファイルを保存し、カバレッジ結果を更新します。

The Filter Editor pane displays the filter slvnvdemo_covfilt_Filter, which includes the exclusion rule for the switchable config subsystem, and the justification rule for the False outcome of the Saturation block decision input > lower limit

[カバレッジの詳細] ペインでは、Saturation ブロックの正当化された結果が薄い青で表示され、根拠へリンクされることに注目してください。判定 input >= upper limit の真の結果をフィルターで除外しておらず、解析がこの結果を実行するのに不十分であるため、Saturation ブロックにはまだ未達カバレッジがあり赤色のままになります。

Simulink window showing the highlighted model and coverage results. The Coverage Details pane shows the justified decision outcome. The model shows the block, which is missing coverage.

Simulink Design Verifier を使用したデッド ロジックのフィルター規則の生成

場合によっては、デッド ロジックで、関連付けられたカバレッジ オブジェクティブが非達成であるために未達カバレッジが発生することがあります。このロジックがモデルから削除すべきでない要素を対象としている場合、これらの未達カバレッジ結果を正当化できます。

Simulink Design Verifier™ ライセンスがある場合、デッド ロジックに対する正当化フィルター規則を自動的に作成できます。

カバレッジの結果エクスプローラーで、[適用済みのフィルター] ノードを選択します。[フィルター エディター] ペインで、[デッド ロジックに対する正当化フィルター規則を作成 (Simulink Design Verifier を使用)] を選択します。

After clicking Applied filters, the Filter Editor displays links to create a new filter file, load a filter file, make justification rules for dead logic using Simulink Design Verifier or using Polyspace Code Prover

このオプションは Simulink Design Verifier™ を使用してデッド ロジックについてモデルを解析します。Simulink Design Verifier により新規フィルターが作成され、正当化規則が対応するそれぞれのカバレッジ結果に追加されます。

The Coverage Results Explorer shows four applied filters. Simulink Design Verifier creates a new filter file and creates justification rules for the dead logic that it detects in the model.

Simulink Design Verifier は 2 つの条件結果、7 つの判定結果、1 つの MCDC 結果についてデッド ロジックを検出し、正当化します。

このフィルター ファイルの名前と説明を指定します。この例では、名前を slvnvdemo_covfilt_DeadLogic、説明を Justify dead logic in slvnvdemo_covfilt model に設定し、[適用] をクリックします。ファイル ダイアログで、このフィルター ファイルの保存場所を指定します。

"Simulink Design Verifier の結果" ウィンドウを閉じます。

R2026a では、カバレッジ レポートからデッド ロジックの検出解析を開始することもできます。詳細については、Identify and Resolve Missing Coverage Caused by Dead Logicを参照してください。

フィルター処理されたカバレッジ結果の確認

Simulink エディターの [カバレッジ] タブの [結果の確認] セクションで、[カバレッジの強調表示] を選択します。

Simulink window displaying the highlighted model, coverage results, and the filters applied to the results

この例の 4 つのフィルターを適用すると、シミュレーションはこのモデルに対して 100% の条件カバレッジ、63% の判定カバレッジ、75% の実行カバレッジを達成します。カバレッジ結果には MCDC の対象となるモデル オブジェクトが含まれなくなるため、カバレッジ レポートにはこのメトリクスはリストされません。カバレッジ フィルター Filter_Tick にはレポートから結果を除外する除外規則が含まれているため、デッド ロジック解析で除外された MCDC の結果はカバレッジ レポートに表示されません。

Summary section of the model coverage report. The first column displays the model and its children, and the other columns display each coverage metric selected for the model.

Mode Logic チャート、time capture サブシステム、および Saturation ブロックにおける残りの未達カバレッジは不適切なテストを示しています。このタイプの未解決のカバレッジは、テストを拡張してこれらのモデル要素をより徹底して実行することで対処できます。

参考

|

トピック