Main Content

Simulink の最適化とモデル カバレッジ

[コンフィギュレーション パラメーター] ダイアログ ボックスには、モデル カバレッジ データに影響する 3 種類の Simulink® 最適化パラメーターがあります。

インライン パラメーター

調整可能なモデル パラメーターをコード生成用の定数値に変換するには、[コンフィギュレーション パラメーター] ダイアログ ボックスの [数学とデータ型] ペインで [既定のパラメーター動作][インライン] に設定します。

パラメーターが定数に変換されると、Simulink でモデル内の一部の判定が消去される場合があります。判定の消去によってカバレッジが収集されないため、カバレッジ レポートではこの判定のカバレッジは 0/0 と表示されます。

ブロック削減

モデル シミュレーションと生成されたコードでの実行速度を向上させるには、[コンフィギュレーション パラメーター] ダイアログ ボックスで [ブロック削減] パラメーターを選択します。Simulink によって特定のブロック グループがより効率的な 1 つのブロックに縮約されるか、完全に削除されます。

モデル カバレッジ オプションのうち、[ブロック削減を強制オフ] を選択すると、モデル カバレッジの収集時に [ブロック削減] パラメーターが無視されます。

[ブロック削減] パラメーターが選択されていない場合や、[ブロック削減を強制オフ] が選択されている場合、Simulink Coverage™ では、カバレッジを収集するモデル上のすべてのブロックについてカバレッジ データを収集します。

[ブロック削減] パラメーターが選択されていて [ブロック削減を強制オフ] が設定されていない場合、カバレッジ レポートには、カバレッジを収集する可能性のあった削減済みのブロックが表示されます。

条件付き入力分岐実行

[条件付き入力分岐実行] パラメーターによって、予想よりも Simulink Coverage の結果が低くなる場合があります。

ケース 1: 上流にある Switch ブロックが最適化で完全に除外される

Model image shows a step source block connected to the condition port of Switch block one. Output from Switch block one connects to true port of switch block 2. A boolean false block connects to the condition port of Switch block 2, causing Switch block 2 to be false for the entire simulation.

false に設定された Constant ブロックが C_Switch2 で制御入力に接続されているため、C_Switch2true のケースが発生しません。その結果、[条件付き入力分岐実行] で最適化から C_Switch1 が除外されます。Simulink CoverageC_Switch1 について 0% カバレッジをレポートします。

C_Switch1 ブロックはデッド ロジックであるため、カバレッジ レポートは、[カバレッジ解析から削除されたブロック] セクションを生成します。

Model coverage report section titled "Blocks Eliminated from Coverage Analysis" displays a message saying that C_Switch1 might not be executed because of Conditional input branch optimization.

ケース 2: 上流にある Switch ブロックが最適化で部分的に除外される

Boolean データ型に変換される Step ブロックは、ステップ時間の前後にそれぞれ falsetrue を出力します。

Step source input connects to the condition port of two switch blocks. The output signal of A_Switch1 connects to the true port of A_Switch2.

[条件付き入力分岐実行] を無効にすると、フル カバレッジが提供されます。[条件付き入力分岐実行] を有効にすると、A_Switch1 に部分カバレッジが提供されます。これは、A_Switch2 で true ケースが識別されるのと同時に A_Switch1 では false ケースが識別されないためです。つまり、両方の Switch ブロックが true であるか、両方が false のどちらかになります。A_Switch1 の false ケースはモデルに影響しません。カバレッジ レポートは A_Switch1 について 50% のカバレッジを正しくレポートします。

不完全なカバレッジの対応

[条件付き入力分岐実行] パラメーターが選択されているモデルでは、次のように不完全なカバレッジに対応できます。

  • モデル設計の変更。[条件付き入力分岐実行] が原因で不完全なカバレッジはモデル設計エラーを示す可能性があります。

  • モデルのアクセス不能なロジックが意図的な場合の、未達カバレッジの正当化。

  • スイッチの判定すべてにアクセス可能な、さらにロバストなテスト ケースの提供。

  • [条件付き入力分岐実行] のクリア。これにより、不完全な Switch カバレッジの問題は排除されますが、アクセス不能なロジックには対応しません。

詳細については、Conditional input branch executionを参照してください。

制限

条件付き入力分岐実行は Stateflow® チャートには適用されません。