このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
参照モデルの複数のインスタンスに対するモデル カバレッジ
Model ブロックは、ブロック実行カバレッジの対象にしかなりません。Model ブロックのシミュレーション モードを [ノーマル]
、[ソフトウェアインザループ (SIL)]
、または [プロセッサインザループ (PIL)]
に設定すると、Simulink® Coverage™ は Model ブロックが参照しているモデルのカバレッジを解析します。
Simulink モデルでは、同じシミュレーション モードに設定されている複数の Model ブロックが同じモデルを参照することができます。カバレッジの解析時に、参照モデルの各インスタンスにそれぞれ異なる入力やパラメーターを指定できます。このアプローチを使用して、参照モデルの追加のカバレッジ オブジェクティブを達成できます。
Simulink Coverage は、同じシミュレーション モードに設定されている参照モデルのすべてのインスタンスに対するカバレッジを解析し、その参照モデルのカバレッジ データを結合して最終結果を生成します。
参照モデルの複数のインスタンスがカバレッジでどのように扱われるかを確認するには、モデルのシミュレーションを 2 回実行します。1 回目は、1 つの Model ブロックに対するカバレッジを [ノーマル]
シミュレーション モードで記録します。2 回目は、2 つの Model ブロックに対するカバレッジを [ノーマル]
シミュレーション モードで記録します。どちらの Model ブロックも同じモデルを参照します。複数のシミュレーション モードのカバレッジを 1 回のシミュレーションで収集することはできないため、どちらのシミュレーションでも、ノーマル シミュレーション モードのモデル参照のインスタンスに対するカバレッジ結果のみが表示されます。
参照モデルの最初のインスタンスに対するカバレッジの記録
1 つの Model ブロックのカバレッジを記録します。
最上位モデルを開きます。たとえば、このモデルには
sldemo_mdlref_counter_datamngt
モデルを参照する Model ブロックが 3 つあります。各 Model ブロックの角は、[シミュレーション モード] パラメーターの値を示しています。
Counter1 — シミュレーション モード:
[ノーマル]
Counter2 — シミュレーション モード:
[アクセラレータ]
Counter3 — シミュレーション モード:
[アクセラレータ]
モデルがシミュレーション時にカバレッジを記録するよう設定します。
Simulink エディターの [モデル化] タブで [モデル設定] を選択します。
[コンフィギュレーション パラメーター] ダイアログ ボックスで、左側のペインにある [カバレッジ] をクリックします。
[カバレッジ] ペインで、[カバレッジ解析を有効にする] を選択し、[参照モデル] ラジオ ボタンを選択します。
[モデルを選択] をクリックします。[カバレッジ解析用のモデルを選択] ダイアログ ボックスでは、シミュレーション モードが
[ノーマル]
、[SIL]
または[PIL]
の参照モデルしか選択できません。ダイアログ ボックスには、シミュレーション モードごとにモデルが 1 回表示されます。この例では、sldemo_mdlref_counter_datamngt
を参照している最初の Model ブロックのみを選択できます。そのブロックがノーマル シミュレーション モードを使用するモデルのインスタンスを表しているからです。[OK] をクリックして、[カバレッジ解析用のモデルを選択] ダイアログ ボックスを終了します。
[OK] をクリックしてカバレッジ設定を保存し、[コンフィギュレーション パラメーター] ダイアログ ボックスを終了します。
[実行 (カバレッジ)] ボタンをクリックしてモデルをシミュレートします。
シミュレーションが完了すると [カバレッジの詳細] ペインが開き、カバレッジ レポートが表示されます。この場合は、参照モデル
sldemo_mdlref_counter_datamngt
のカバレッジ データが表示され、このモデルのカバレッジが 85% であることがわかります。参照モデルの内容を確認するには、Model ブロックの左下隅にある矢印をクリックします。[カバレッジの詳細] ペインに参照モデルのカバレッジ レポートが表示され、カバレッジ結果の表示対象のブロックが強調表示されます。
この例の
Range Check
サブシステムは次のようになります。Saturate Count ブロックは 50 回実行されます。このブロックには 4 つの判定結果があります。4 つの判定結果のうち 2 つは達成されないため、判定カバレッジは 50% です。
判定
input >= lower limit
は 1 回もfalse
になりません。判定
input > upper limit
は 1 回もtrue
になりません。
DetectOverflow
関数は 50 回実行されます。このスクリプトには 5 つの判定があります。5 つの判定結果のうち 2 つは達成されないため、DetectOverflow
スクリプトのカバレッジは 60% です。式count >= CounterParams.UpperLimit
は 1 回もtrue
にならず、式count > CounterParams.LowerLimit
は 1 回もfalse
になりません。
参照モデルの 2 番目のインスタンスに対するカバレッジの記録
2 つの Model ブロックのカバレッジを記録します。2 番目の Model ブロックのシミュレーション モードを [ノーマル]
に設定して、モデルのシミュレーションを実行します。この例では、両方の Model ブロックから参照されているモデルのカバレッジに Counter2
ブロックが追加されます。
Simulink エディターの最上位モデルで、2 番目の Model ブロックを右クリックして、[ブロック パラメーター (ModelReference)] を選択します。
[ブロック パラメーター] ダイアログ ボックスが開きます。
[シミュレーション モード] パラメーターを
[ノーマル]
に設定します。[OK] をクリックして変更を保存し、[ブロック パラメーター] ダイアログ ボックスを終了します。
Model ブロックの角が変わり、このブロックのシミュレーション モードが
[ノーマル]
であることが示されます。このモデルの両方のインスタンスのカバレッジを記録するには、次の手順に従います。
[モデル化] タブで、[モデル設定] を選択します。
[カバレッジ] ペインで、[カバレッジ解析を有効にする] を選択します。
[参照モデル] を選択して [モデルを選択] をクリックします。
[カバレッジ解析対象のモデルを選択] ダイアログ ボックスで、参照モデルが選択されていることを確認します。この例では、次のようなリストが表示されます。
[OK] をクリックして、[カバレッジ解析用のモデルを選択] ダイアログ ボックスを閉じます。
モデルを再度シミュレートします。
シミュレーションが完了すると、[カバレッジの詳細] ペインのカバレッジ レポートが追加のカバレッジ データで更新されます。
参照モデルのカバレッジは 85% です。
Range Check
サブシステム内は次のようになります。Saturate Count ブロックは 100 回実行されます。
Counter2
モデル ブロックのシミュレーションにより、Saturate Count ブロックが追加で 50 回実行されます。判定
input > upper limit
がtrue
になる回数は、最初のシミュレーションでは 0 回ですが、今回のシミュレーションでは 18 回です。今回も 4 番目の判定input > lower limit
は 1 回もfalse
になりません。4 つの判定のうち 3 つがシミュレーションで記録されるため、このブロックの判定カバレッジは 75% です。DetectOverflow
関数は 100 回実行されます。Counter2
ブロックのシミュレーションにより、DetectOverflow
関数が追加で 50 回実行されます。関数
DetectOverflow
には 5 つの判定があります。式count >= CounterParams.UpperLimit
がtrue
になる回数は、最初のシミュレーションでは 0 回ですが、今回のシミュレーションでは 21 回です。式count > CounterParams.LowerLimit
は 1 回もfalse
になりません。5 つの判定のうち 4 つがシミュレーションで記録されるため、DetectOverflow
関数の判定カバレッジは 80% です。