メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

参照モデルの複数のインスタンスに対するモデル カバレッジ

Model ブロックは、ブロック実行カバレッジの対象にしかなりません。Model ブロックのシミュレーション モードを [ノーマル][ソフトウェアインザループ (SIL)]、または [プロセッサインザループ (PIL)] に設定すると、Simulink® Coverage™Model ブロックが参照しているモデルのカバレッジを解析します。

Simulink モデルでは、同じシミュレーション モードに設定されている複数の Model ブロックが同じモデルを参照することができます。カバレッジの解析時に、参照モデルの各インスタンスにそれぞれ異なる入力やパラメーターを指定できます。このアプローチを使用して、参照モデルの追加のカバレッジ オブジェクティブを達成できます。

Simulink Coverage は、同じシミュレーション モードに設定されている参照モデルのすべてのインスタンスに対するカバレッジを解析し、その参照モデルのカバレッジ データを結合して最終結果を生成します。

参照モデルの複数のインスタンスがカバレッジでどのように扱われるかを確認するには、モデルのシミュレーションを 2 回実行します。1 回目は、1 つの Model ブロックに対するカバレッジを [ノーマル] シミュレーション モードで記録します。2 回目は、2 つの Model ブロックに対するカバレッジを [ノーマル] シミュレーション モードで記録します。どちらの Model ブロックも同じモデルを参照します。複数のシミュレーション モードのカバレッジを 1 回のシミュレーションで収集することはできないため、どちらのシミュレーションでも、ノーマル シミュレーション モードのモデル参照のインスタンスに対するカバレッジ結果のみが表示されます。

参照モデルの最初のインスタンスに対するカバレッジの記録

1 つの Model ブロックのカバレッジを記録します。

  1. 最上位モデルを開きます。たとえば、このモデルには sldemo_mdlref_counter_datamngt モデルを参照する Model ブロックが 3 つあります。

    各 Model ブロックの角は、[シミュレーション モード] パラメーターの値を示しています。

    • Counter1 — シミュレーション モード: [ノーマル]

    • Counter2 — シミュレーション モード: [アクセラレータ]

    • Counter3 — シミュレーション モード: [アクセラレータ]

  2. モデルがシミュレーション時にカバレッジを記録するよう設定します。

    1. Simulink エディターの [モデル化] タブで [モデル設定] を選択します。

    2. [コンフィギュレーション パラメーター] ダイアログ ボックスで、左側のペインにある [カバレッジ] をクリックします。

    3. [カバレッジ] ペインで、[カバレッジ解析を有効にする] を選択し、[参照モデル] ラジオ ボタンを選択します。

    4. [モデルを選択] をクリックします。[カバレッジ解析用のモデルを選択] ダイアログ ボックスでは、シミュレーション モードが [ノーマル][SIL] または [PIL] の参照モデルしか選択できません。ダイアログ ボックスには、シミュレーション モードごとにモデルが 1 回表示されます。この例では、sldemo_mdlref_counter_datamngt を参照している最初の Model ブロックのみを選択できます。そのブロックがノーマル シミュレーション モードを使用するモデルのインスタンスを表しているからです。

      Model reference selection dialog shows three models referenced by the top model. One of the referenced models has a check box to select, and the other two do not.

    5. [OK] をクリックして、[カバレッジ解析用のモデルを選択] ダイアログ ボックスを終了します。

  3. [OK] をクリックしてカバレッジ設定を保存し、[コンフィギュレーション パラメーター] ダイアログ ボックスを終了します。

  4. [実行 (カバレッジ)] ボタンをクリックしてモデルをシミュレートします。

    シミュレーションが完了すると [カバレッジの詳細] ペインが開き、カバレッジ レポートが表示されます。この場合は、参照モデル sldemo_mdlref_counter_datamngt のカバレッジ データが表示され、このモデルのカバレッジが 85% であることがわかります。

  5. 参照モデルの内容を確認するには、Model ブロックの左下隅にある矢印をクリックします。[カバレッジの詳細] ペインに参照モデルのカバレッジ レポートが表示され、カバレッジ結果の表示対象のブロックが強調表示されます。

    この例の Range Check サブシステムは次のようになります。

    • Saturate Count ブロックは 50 回実行されます。このブロックには 4 つの判定結果があります。4 つの判定結果のうち 2 つは達成されないため、判定カバレッジは 50% です。

      • 判定 input >= lower limit は 1 回も false になりません。

      • 判定 input > upper limit は 1 回も true になりません。

      Coverage results for the Saturate Count block report that the block receives 50% decision coverage (2 out of 4 decision outcomes satisfied).

    • DetectOverflow 関数は 50 回実行されます。このスクリプトには 5 つの判定があります。5 つの判定結果のうち 2 つは達成されないため、DetectOverflow スクリプトのカバレッジは 60% です。式 count >= CounterParams.UpperLimit は 1 回も true にならず、式 count > CounterParams.LowerLimit は 1 回も false になりません。

      Coverage results for the MATLAB function DetectOverflow report that the function receives 80% decision coverage (4 out of 5 decision outcomes satisfied).

参照モデルの 2 番目のインスタンスに対するカバレッジの記録

2 つの Model ブロックのカバレッジを記録します。2 番目の Model ブロックのシミュレーション モードを [ノーマル] に設定して、モデルのシミュレーションを実行します。この例では、両方の Model ブロックから参照されているモデルのカバレッジに Counter2 ブロックが追加されます。

  1. Simulink エディターの最上位モデルで、2 番目の Model ブロックを右クリックして、[ブロック パラメーター (ModelReference)] を選択します。

    [ブロック パラメーター] ダイアログ ボックスが開きます。

  2. [シミュレーション モード] パラメーターを [ノーマル] に設定します。

  3. [OK] をクリックして変更を保存し、[ブロック パラメーター] ダイアログ ボックスを終了します。

    Model ブロックの角が変わり、このブロックのシミュレーション モードが [ノーマル] であることが示されます。

  4. このモデルの両方のインスタンスのカバレッジを記録するには、次の手順に従います。

    1. [モデル化] タブで、[モデル設定] を選択します。

    2. [カバレッジ] ペインで、[カバレッジ解析を有効にする] を選択します。

    3. [参照モデル] を選択して [モデルを選択] をクリックします。

      [カバレッジ解析対象のモデルを選択] ダイアログ ボックスで、参照モデルが選択されていることを確認します。この例では、次のようなリストが表示されます。

      Model reference selection dialog shows three entries. The first line is the top model which is not selected for coverage analysis. The second selection is the referenced model in normal mode and the third entry is the referenced model in accelerator mode.

    4. [OK] をクリックして、[カバレッジ解析用のモデルを選択] ダイアログ ボックスを閉じます。

  5. モデルを再度シミュレートします。

  6. シミュレーションが完了すると、[カバレッジの詳細] ペインのカバレッジ レポートが追加のカバレッジ データで更新されます。

    参照モデルのカバレッジは 85% です。Range Check サブシステム内は次のようになります。

    • Saturate Count ブロックは 100 回実行されます。Counter2 モデル ブロックのシミュレーションにより、Saturate Count ブロックが追加で 50 回実行されます。

      判定 input > upper limittrue になる回数は、最初のシミュレーションでは 0 回ですが、今回のシミュレーションでは 18 回です。今回も 4 番目の判定 input > lower limit は 1 回も false になりません。4 つの判定のうち 3 つがシミュレーションで記録されるため、このブロックの判定カバレッジは 75% です。

      Coverage results for the Saturate Count block report that the block receives 75% decision coverage (3 out of 4 decision outcomes satisfied).

    • DetectOverflow 関数は 100 回実行されます。Counter2 ブロックのシミュレーションにより、DetectOverflow 関数が追加で 50 回実行されます。

      関数 DetectOverflow には 5 つの判定があります。式 count >= CounterParams.UpperLimittrue になる回数は、最初のシミュレーションでは 0 回ですが、今回のシミュレーションでは 21 回です。式 count > CounterParams.LowerLimit は 1 回も false になりません。5 つの判定のうち 4 つがシミュレーションで記録されるため、DetectOverflow 関数の判定カバレッジは 80% です。

      Coverage results for the DetectOverflow function report that the function receives 80% decision coverage (4 out of 5 decision outcomes satisfied).

参考

トピック