ドキュメンテーション

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

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

Model ブロックのカバレッジについて

Model ブロックはカバレッジの直接の対象にはなりません。Model ブロックのシミュレーション モードを [ノーマル] に設定すると、Simulink® Verification and Validation™ ソフトウェアは Model ブロックが参照しているモデルのカバレッジを記録します。Model ブロックのシミュレーション モードが [ノーマル] 以外の場合、参照モデルのカバレッジは記録されません。

Simulink モデルでは、シミュレーション モードが [ノーマル] に設定されている複数の Model ブロックが同じモデルを参照することができます。カバレッジの記録時に、参照モデルの各インスタンスをそれぞれ異なる入力やパラメーターを使用して実行することができます。この場合、参照モデルのカバレッジが追加されることがあります。

Simulink Verification and Validation ソフトウェアは、シミュレーション モードが [ノーマル] に設定されている参照モデルのすべてのインスタンスに対するカバレッジを記録し、その参照モデルのカバレッジ データを結合して最終結果を生成します。

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

この機能を確認するには、モデルのシミュレーションを 2 回実行します。1 回目は、1 つの Model ブロックに対するカバレッジを [ノーマル] シミュレーション モードで記録します。2 回目は、2 つの Model ブロックに対するカバレッジを [ノーマル] シミュレーション モードで記録します。どちらの Model ブロックも同じモデルを参照します。

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

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

  1. 最上位モデルを開きます。この例では、以下のモデルを使用します。

    このモデルには、sldemo_mdlref_counter_datamngt モデル例を参照する Model ブロックが 3 つあります。各 Model ブロックの角は、[シミュレーション モード] パラメーターの値を示しています。

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

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

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

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

    1. モデル ウィンドウで、[解析][カバレッジ][設定] を選択します。

    2. [カバレッジ] タブで、次のオプションを選択します。

      • このモデルに対するカバレッジ

      • 参照モデルに対するカバレッジ

    3. [参照モデルに対するカバレッジ][モデルを選択] をクリックします。[カバレッジ解析用のモデルを選択] ダイアログ ボックスでは、シミュレーション モードが [ノーマル] の参照モデルしか選択できません。この例では、sldemo_mdlref_counter_datamngt を参照している最初の Model ブロックのみをカバレッジの記録に使用できます。

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

    5. [カバレッジの設定] ダイアログ ボックスの [レポート] タブで、[最後の実行] を選択します。これにより、連続シミュレーションの累積カバレッジではなく、個々のシミュレーションのカバレッジ データを比較できるようになります。

  3. [OK] をクリックしてカバレッジ設定を保存し、[カバレッジの設定] ダイアログ ボックスを終了します。

  4. モデルのシミュレーションを実行します。

    シミュレーションが完了すると、HTML カバレッジ レポートが開きます。この例では、参照モデル sldemo_mdlref_counter_datamngt のカバレッジ データが表示され、このモデルのカバレッジが 69% であることがわかります。

  5. レポート内で参照モデルへのハイパーリンクをクリックします。

    参照モデルの詳細なカバレッジ レポートが開きます。また、参照モデルが表示され、カバレッジ結果が強調表示されます。

    この例では、Range Check サブシステムのカバレッジについて、次の点に注意してください。

    • Saturate Count ブロックが 100 回実行されています。このブロックには 4 つの boolean 判定があります。4 つの判定のうち 2 つは記録されなかったため、判定カバレッジは 50% です。

      • 判定 input > lower limit は 1 回も false になっていません。

      • 判定 input >= upper limit は 1 回も true になっていません。

    • 関数 DetectOverflow は 50 回実行されています。このスクリプトには 5 つの判定があります。DetectOverflow スクリプトの 5 つの判定のうち 2 つが記録されなかったため、カバレッジは 60% です。

      • count >= CounterParams.UpperLimit は 1 回も true になっていません。

      • count > CounterParams.LowerLimit は 1 回も false になっていません。

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

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

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

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

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

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

    Model ブロックの角が次の例のように変わり、このブロックのシミュレーション モードが [ノーマル] であることを示します。

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

    1. [解析][カバレッジ][設定] を選択します。

    2. [カバレッジ] ペインの [参照モデルに対するカバレッジ] で、[モデルを選択] をクリックします。

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

      参照モデルの複数のインスタンスが [ノーマル] モードである場合、当該のインスタンスすべてのカバレッジを記録するように設定することも、いずれも記録しないように設定することもできます。

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

  5. モデルのシミュレーションを再度実行します。

  6. シミュレーションが完了すると、HTML カバレッジ レポートが開きます。

    この例では、参照モデルのカバレッジは 85% です。Range Check サブシステムのカバレッジ データについて、次の点に注意してください。

    • Saturate Count ブロックが 179 回実行されています。Counter2 ブロックのシミュレーションにより Saturate Count ブロックが追加で 79 回実行されているため、合計の実行回数が 179 回となっています。

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

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

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

この情報は役に立ちましたか?