バリアント ブロックのモデル カバレッジ
Simulink® Coverage™ では、Variant Source ブロックや Variant Subsystem ブロックなどのバリアント ブロックを含むモデルのカバレッジ データを解析およびレポートできます。カバレッジが有効化された 1 つ以上のバリアント ブロックを含むモデルをシミュレートすると、Simulink Coverage では、バリアント ブロックのタイプと [バリアントのアクティベーションのタイミング] パラメーターに応じて、カバレッジの結果がレポートされます。
Variant Source ブロックと Variant Sink ブロックの場合、Simulink Coverage では、バリアント選択の上流のブロックと下流のブロックがそれぞれ解析されます。Variant Source ブロックと Variant Sink ブロックそのものはカバレッジの対象になりません。Variant Subsystem ブロックと Variant Model ブロックの場合、Simulink Coverage では、選択したメトリクスについてサブシステムまたは Model ブロックの内容が解析されます。
更新時とコンパイル時のバリアント
バリアント ブロックの [バリアントのアクティベーションのタイミング] パラメーターを [ブロック線図の更新]、[ブロック線図の更新時にすべての選択肢を解析]、または [コードのコンパイル] に設定すると、Simulink Coverage では、シミュレーション中にアクティブなバリアント選択に対してのみカバレッジがレポートされます。
ヒント
更新時またはコンパイル時のバリアントの場合、アクティブで異なるバリアント選択をもつシミュレーションについては、カバレッジを集計できません。非アクティブなバリアント選択をテストする場合は、[バリアントのアクティベーションのタイミング] を [起動] または [ランタイム] に設定します。
たとえば、2 つのバリアント選択をもつ Variant Subsystem ブロックを含むモデルがあるとします。Variant Subsystem ブロックの [バリアントのアクティベーションのタイミング] パラメーターは [ブロック線図の更新] に設定されています。

Subsystem1 がシミュレーションでアクティブな場合、Subsystem1 のカバレッジの結果は示されますが、Subsystem2 の結果は示されません。

カバレッジの結果で、Subsystem1 は赤色になり、不完全なカバレッジであったことを示します。Subsystem2 は解析されなかったことを示すグレーになります。さらに、カバレッジ レポートの概要では、アクティブではなかったバリアント選択は省略されます。

バリアント ブロックの [バリアントのアクティベーションのタイミング] パラメーターを [ブロック線図の更新]、[ブロック線図の更新時にすべての選択肢を解析]、または [コードのコンパイル] に設定している場合、アクティブなバリアントの変更は、モデルに対する構造的変更です。モデルのカバレッジ データが有効なのは、モデルが変更されていないか、開いてる場合に限られるため、異なるアクティブなバリアントでシミュレートされた同じモデルのカバレッジは集計できません。複数のアクティブなバリアントをテストし、それらのカバレッジを集計するには、[バリアントのアクティベーションのタイミング] パラメーターを [起動] または [ランタイム] に変更します。
起動とランタイムのバリアント
バリアント ブロックの [バリアントのアクティベーションのタイミング] パラメーターを [起動] または [ランタイム] に設定すると、Simulink Coverage では、シミュレーション中にバリアント選択がアクティブではなかった場合でも、すべてのバリアント選択に対してカバレッジがレポートされます。アクティブなバリアント選択が異なるシミュレーションでもカバレッジを集計できます。
たとえば、前の例のモデルを変更し、[バリアントのアクティベーションのタイミング] を [起動] に設定して、Subsystem1 がシミュレーションでアクティブな場合は、更新時のバリアントをもつケースと同じカバレッジを Subsystem1 に対して取得します。ただし、Simulink Coverage では、非アクティブなバリアント Subsystem2 もレポートされます。

カバレッジの結果で、Subsystem1 と Subsystem2 はどちらも、不完全なカバレッジを示す赤色になります。カバレッジ レポートの概要には、両方のバリアント選択が含まれます。

非アクティブなバリアントは、シミュレーション時に実行されていなかったため、カバレッジは 0% になります。Variant_Subsystem についてレポートされたカバレッジを拡大するには、アクティブなバリアントとして Subsystem2 を含むモデルをもう一度シミュレートして、カバレッジの結果を集計できます。

バリアントを含むモデルのカバレッジ レポートのカスタマイズ
バリアント ブロックを使用するモデルのカバレッジ レポートを作成する場合、複数のシミュレーションからカバレッジ データを集計できます。起動のバリアントについては、非アクティブなバリアントを含めるか除外するかを指定できます。
カバレッジ レポートから非アクティブなバリアントを除外する
更新時とコンパイル時の Simulink バリアントの非アクティブな構成はカバレッジ レポートから除外されます。
[バリアントのアクティベーションのタイミング] パラメーターが [起動] または [ランタイム] に設定された Simulink バリアント ブロックと Stateflow® チャートのバリアント構成の場合、カバレッジ レポートには非アクティブなバリアントの選択肢が既定で含まれています。起動のバリアントについては、[バリアントの非アクティブな選択肢を除外] パラメーターを選択して、カバレッジ レポートから非アクティブなバリアントの選択肢を除外するよう選択できます。
[コンフィギュレーション パラメーター] ウィンドウで、左側のペインにある [カバレッジ] をクリックします。
[詳細設定パラメーター] を展開して、[バリアントの非アクティブな選択肢を除外] を選択します。
以下を入力することにより、このパラメーターはプログラムでも設定できます。
set_param(modelName,'CovExcludeInactiveVariants',1)メモ
ランタイムのバリアントでは [バリアントの非アクティブな選択肢を除外] パラメーターの値は無視され、非アクティブなバリアント構成のカバレッジがレポートされます。
シミュレーション完了後に以下のいずれかの方法を使用して Simulink 起動バリアントと Stateflow チャートのバリアント構成のレポート動作を変更することもできます。
カバレッジの結果エクスプローラーで、[バリアントの非アクティブな選択肢を除外] をオンまたはオフにします。
カバレッジ レポートを生成する前に
cvdataオブジェクトでexcludeInactiveVariantsプロパティの値を変更します。Simulink Test でテスト マネージャーを使用している場合は、テスト ブラウザーの結果の概要レベルで [カバレッジの結果の集計] の下にある [非アクティブなバリアントを除外] を選択します。
バリアントを含むモデルのカバレッジ データの集計
Simulink バリアントおよび Stateflow チャートのバリアント構成を含むモデルのカバレッジ データを集計するには、次の 2 つの方法があります。
[コンフィギュレーション パラメーター] ダイアログ ボックスで [カバレッジ] をクリックし、[詳細設定パラメーター] を展開して [累積データをカバレッジ レポートに含める] パラメーターを選択します。このパラメーターが選択されている状態で 2 つ以上のシミュレーションを実行すると、[カバレッジの詳細] にこれらのシミュレーションに対するカバレッジの結果の集計が表示されます。
カバレッジ解析をプログラムにより実行し、
+演算子を使用してcvdataオブジェクトを集計する。
+ 演算子を使用するか [バリアントの非アクティブな選択肢を除外] パラメーターを変更することにより、excludeInactiveVariants プロパティの値が異なる 2 つの cvdata オブジェクトを集計すると、結果として得られる集計された cvdata オブジェクトでは、このプロパティが値 0 に設定されます。その結果、1 つのシミュレーションに対して [バリアントの非アクティブな選択肢を除外] パラメーターが選択されていた場合でも、このパラメーターが選択されていないかのようにカバレッジ レポートの集計に非アクティブなバリアントが表示されます。