Main Content

カバレッジの対象となるモデル オブジェクト

一部の Simulink® オブジェクトは、どの種類のモデル カバレッジにも対応します。その他の Simulink オブジェクトは、次の表のとおり、特定のカバレッジのみ対象になります。最初の列のリンクをクリックすると、特定のモデル オブジェクトのカバレッジの詳細情報を参照できます。

バーチャル ブロックと以下を除き、すべての Simulink オブジェクトは実行カバレッジの対象になります。

  • Merge ブロック

  • Scope ブロック

  • Width ブロック

  • Display ブロック

  • To Workspace ブロック

バーチャル ブロックの一覧については、非バーチャル ブロックとバーチャル ブロックを参照してください。

カバレッジの対象とならない Simulink オブジェクトの完全な一覧については、カバレッジの対象とならないモデル オブジェクトを参照してください。

Stateflow® ステート、イベントおよびステート時相論理判定については、モデル カバレッジでは判定カバレッジのみが行われます。Stateflow 遷移については、モデル カバレッジでは判定カバレッジ、条件カバレッジ、MCDC カバレッジが行われます。ステートおよび遷移の代入ステートメントの論理式については、モデル カバレッジでは条件カバレッジおよび MCDC カバレッジが行われます。詳細については、Stateflow チャートのモデル カバレッジを参照してください。

モデル オブジェクト

判定

条件

MCDC

Lookup Table

Simulink Design Verifier™

整数オーバーフローで飽和

関係演算子の境界

Abs

    

Bias

      

C Caller

   

Combinatorial Logic

     

Compare To Constant

     

Compare To Zero

     

Data Type Conversion

      

Dead Zone

    
Delay と Resettable Delay      

Direct Lookup Table (n-D)

      

Discrete Filter

     

Discrete FIR Filter

     

Discrete-Time Integrator (飽和制限が有効になっているか、リセットされている場合)

     

Discrete Transfer Fcn

     

Dot Product

      

Enabled Subsystem

    

Enabled and Triggered Subsystem

    

Fcn

    

For Iterator、For Iterator Subsystem

      

Gain

      

If、If Action Subsystem

   
Index Vector     

Interpolation Using Prelookup

     

ライブラリにリンクされたオブジェクト

  

Logical Operator

     

1-D Lookup Table

     

2-D Lookup Table

     

n-D Lookup Table

     

Math Function

      

MATLAB Function

   

MATLAB System

    
Message Send      

MinMax

     

モデル

Triggered Modelsも参照してください。

Multiport Switch

     

オブザーバー モデル

PID Controller、PID Controller (2 DOF)

      

Product

      

Proof Assumption

      

Proof Objective

      

Rate Limiter

(スルー レートに対して)

     

Relational Operator

     

Relay

     

Requirements Table

  

C/C++ S-Function

   

Saturation

     

Saturation Dynamic

      

Sign

     

MATLAB Function ブロックの Simulink Design Verifier 関数

      

Stateflow チャート

   

Stateflow 状態遷移表

   

Sqrt, Signed Sqrt, Reciprocal Sqrt

      

Sum, Add, Subtract, Sum of Elements

      

Switch

    

SwitchCase、SwitchCase Action Subsystem

      

Test Condition

      

Test Objective

      

Triggered Models

    

Triggered Subsystem

    

Trigonometric Function

     

Truth Table

    

Unary Minus

      
Variant Subsystem、Variant Model、Variant Source、Variant Sink       

Weighted Sample Time Math

      

While Iterator、While Iterator Subsystem

      

Abs

Abs ブロックは判定カバレッジと関係演算子の境界カバレッジの対象となります。判定カバレッジは以下に基づいています。

  • 0 未満となるブロックへの入力

  • 入力信号のデータ型

ブロックへの 0 未満の入力については、判定カバレッジにより次が測定されます。

  • ブロック入力が 0 未満であるタイム ステップの数 (真判定を表す)

  • ブロック入力が 0 未満でないタイム ステップの数 (偽判定を表す)

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、Abs ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。

Abs ブロックの入力データ型が符号なし整数の場合、Simulink Coverage™ はそのブロックについて判定カバレッジをレポートしません。Simulink はブロック出力をブロック入力と同じ値に設定し、判定は行いません。

Abs ブロックには、入力とゼロの暗黙的な比較が含まれます。したがって、[関係演算子の境界] カバレッジ メトリクスを選択すると、Abs ブロックは関係演算子の境界カバレッジの対象になります。詳細については、関係演算子の境界カバレッジを参照してください。

Bias

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、Bias ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。

C Caller

C Caller ブロックは、ブロック実行カバレッジの対象にしかなりません。C Caller ブロックが呼び出すコードはコード カバレッジの対象になります。Simulink Coverage は、C Caller ブロックによって呼び出された C コードのカバレッジ結果を表示するコード カバレッジ レポートを別に作成します。詳細については、コード カバレッジの種類を参照してください。

Combinatorial Logic

Combinatorial Logic ブロックは判定カバレッジと条件カバレッジの対象となります。判定カバレッジは、真理値表の各出力行に基づいて行われます。判定カバレッジでは、真理値表の各出力行がブロック出力に設定されているタイム ステップの数を測定します。

条件カバレッジでは、各入力が偽 (0) であるタイム ステップの数と、各入力が真 (0 以外) であるタイム ステップの数を測定します。Combinatorial Logic ブロックの入力要素が 1 つの場合、判定カバレッジと条件カバレッジは等しくなるため、Simulink Coverage ソフトウェアによって判定カバレッジのレポートのみが生成されます。

少なくとも 1 つのタイム ステップで真理値表の値がすべてブロック出力に設定されている場合、判定カバレッジは 100% となります。それ以外の場合は、カバレッジは少なくとも 1 つのタイム ステップで出力された真理値表の値の数を、真理値表の値の総数で除算した値となります。このブロックには少なくとも 1 つの出力値が真理値表にあるため、レポートに表示されるカバレッジの最小値は、1 を真理値表の値の総数で除算した値です。

少なくとも 1 つのタイム ステップですべてのブロック入力が偽となり、かつ少なくとも 1 つのタイム ステップですべてのブロック入力が真となる場合、条件カバレッジは 100% となります。それ以外の場合、少なくとも 1 つのタイム ステップで偽の値になったカバレッジと、少なくとも 1 つのタイム ステップで真の値になったカバレッジを加算します。その値は、2 を合計入力数で累乗した値 (2^number_of_inputs) によって除算されます。レポートに表示されるカバレッジの最小値は、2 を合計入力数で累乗した値で除算した値です。

Compare To Constant

Compare to Constant ブロックは条件カバレッジの対象となります。

条件カバレッジでは次が測定されます。

  • 入力と特定の定数の比較が真であった回数

  • 入力と特定の定数の比較が偽であった回数

Compare to Constant ブロックには、入力と定数との比較が含まれます。したがって、[関係演算子の境界] カバレッジ メトリクスを選択すると、Compare to Constant ブロックは関係演算子の境界カバレッジの対象になります。詳細については、関係演算子の境界カバレッジを参照してください。

Compare To Zero

Compare to Zero ブロックは条件カバレッジの対象となります。

条件カバレッジでは次が測定されます。

  • 入力と 0 の比較が真であった回数

  • 入力と 0 の比較が偽であった回数

Compare to Zero ブロックには、入力とゼロとの比較が含まれます。したがって、[関係演算子の境界] カバレッジ メトリクスを選択すると、Compare to Zero ブロックは関係演算子の境界カバレッジの対象になります。詳細については、関係演算子の境界カバレッジを参照してください。

Data Type Conversion

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、Data Type Conversion ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。

Dead Zone

Dead Zone ブロックは判定カバレッジの対象となります。Simulink Coverage ソフトウェアでは、以下のパラメーターの判定カバレッジがレポートされます。

  • 不感帯の下限

  • 不感帯の上限

[不感帯の下限] パラメーターは不感帯の下限を指定します。[不感帯の下限] パラメーターの判定カバレッジでは、以下の内容が測定されます。

  • ブロック入力が下限以上であるタイム ステップの数 (真判定を表す)

  • ブロック入力が下限未満であるタイム ステップの数 (偽判定を表す)

[不感帯の上限] パラメーターは不感帯の上限を指定します。[不感帯の上限] パラメーターの判定カバレッジでは、以下の内容が測定されます。

  • ブロック入力が上限を超えるタイム ステップの数 (真判定を表す)

  • ブロック入力が上限以下であるタイム ステップの数 (偽判定を表す)

上限が真である場合、そのタイム ステップの [不感帯の下限] カバレッジは測定されません。そのため、[不感帯の下限] 判定の総数は、[不感帯の上限] が偽であるタイム ステップの数と等しくなります。

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、Dead Zone ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。

Dead Zone ブロックには、入力と上限値および下限値との暗黙的な比較が含まれます。したがって、[関係演算子の境界] カバレッジ メトリクスを選択すると、Dead Zone ブロックは関係演算子の境界カバレッジの対象になります。詳細については、関係演算子の境界カバレッジを参照してください。

Delay と Resettable Delay

Delay ブロックと Resettable Delay ブロックは、[外部リセット] ブロック パラメーターを [なし] 以外のオプションに設定した場合、または [イネーブル端子の表示] ブロック パラメーターを選択した場合に判定カバレッジの対象となります。モデルで State Control (HDL Coder) ブロックを使用している場合、[状態制御] パラメーターが [同期] のときは外部リセットおよびイネーブル端子のカバレッジを収集できません。

[外部リセット] ブロック パラメーターの判定カバレッジでは、ブロックがリセットされるタイム ステップの真の結果と、ブロックがリセットされないタイム ステップの偽の結果が測定されます。100% の判定カバレッジとなるには、ブロックは少なくとも 1 つのタイム ステップでリセットされ、かつ少なくとも 1 つのタイム ステップでリセットされない必要があります。

[イネーブル端子の表示] ブロック パラメーターの判定カバレッジでは、ブロックがイネーブルであるタイム ステップの真の結果と、ブロックがイネーブルでないタイム ステップの偽の結果が測定されます。100% の判定カバレッジとなるには、ブロックは少なくとも 1 つのタイム ステップでイネーブルであり、かつ少なくとも 1 つのタイム ステップでイネーブルでない必要があります。

Direct Lookup Table (n-D)

Direct Lookup Table (n-D) ブロックはルックアップ テーブル カバレッジの対象となります。n 次元ルックアップ テーブルでは、出力ブレークポイントの数は、テーブルの各次元のブレークポイント数の積です。

ルックアップ テーブル カバレッジでは以下の内容が測定されます。

  • シミュレーション時に、次元の入力値のそれぞれの組み合わせが各ブレークポイントの間であった回数。

  • シミュレーション時に、次元の入力値のそれぞれの組み合わせが、テーブルの各次元の最低のブレークポイントを下回った回数と最高のブレークポイントを上回った回数。

n 次元ルックアップ テーブルのカバレッジ ポイントの総数は、テーブルの各次元のブレークポイントの数の積に 1 を加算した値です。カバレッジ レポート内の白から緑に変化するカラー スケールには、0 から始まり 6 等分されているデータ範囲が設定されており、それぞれ内挿点または外挿点が測定されるタイム ステップの数を示しています。

ソフトウェアで全体のカバレッジ率を判定するには、1 つのブレーク ポイントまたは終点を超えたシミュレーション中に、少なくとも 1 つのタイム ステップで計測された内挿点および外挿点の合計を測定します。

Discrete Filter

Discrete Filter ブロックは、[外部リセット] ブロック パラメーターを [なし] 以外のオプションに設定した場合に判定カバレッジの対象となります。モデルで State Control (HDL Coder) ブロックを使用している場合、[状態制御] パラメーターが [同期] のときは外部リセットのカバレッジを収集できません。

判定カバレッジでは、ブロックがリセットされるタイム ステップの真の結果と、ブロックがリセットされないタイム ステップの偽の結果が測定されます。100% の判定カバレッジとなるには、ブロックは少なくとも 1 つのタイム ステップでリセットされ、かつ少なくとも 1 つのタイム ステップでリセットされない必要があります。

[整数オーバーフローで飽和] カバレッジ パラメーターを選択すると、Discrete Filter ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。

Discrete FIR Filter

Discrete FIR Filter ブロックは、[外部リセット] ブロック パラメーターを [なし] 以外のオプションに設定した場合、または [イネーブル端子の表示] ブロック パラメーターを選択した場合に判定カバレッジの対象となります。モデルで State Control (HDL Coder) ブロックを使用している場合、[状態制御] パラメーターが [同期] のときは外部リセットおよびイネーブル端子のカバレッジを収集できません。

[外部リセット] ブロック パラメーターの判定カバレッジでは、ブロックがリセットされるタイム ステップの真の結果と、ブロックがリセットされないタイム ステップの偽の結果が測定されます。100% の判定カバレッジとなるには、ブロックは少なくとも 1 つのタイム ステップでリセットされ、かつ少なくとも 1 つのタイム ステップでリセットされない必要があります。

[イネーブル端子の表示] ブロック パラメーターの判定カバレッジでは、ブロックがイネーブルであるタイム ステップの真の結果と、ブロックがイネーブルでないタイム ステップの偽の結果が測定されます。100% の判定カバレッジとなるには、ブロックは少なくとも 1 つのタイム ステップでイネーブルであり、かつ少なくとも 1 つのタイム ステップでイネーブルでない必要があります。

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、Discrete FIR Filter ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。

Discrete-Time Integrator

Discrete-Time Integrator ブロックは判定カバレッジの対象となります。Simulink Coverage では、以下のパラメーターの判定カバレッジがレポートされます。

  • 外部リセット

  • 出力を制限する

[外部リセット][なし] に設定した場合、Simulink Coverage ではリセットされた判定の判定カバレッジのレポートは生成されません。モデルで State Control (HDL Coder) ブロックを使用している場合、[状態制御] パラメーターが [同期] のときは外部リセットのカバレッジを収集できません。それ以外の場合、判定カバレッジでは以下の内容が測定されます。

  • ブロック出力がリセットされたタイム ステップの数 (真判定を表す)

  • ブロック出力がリセットされていないタイム ステップの数 (偽判定を表す)

[出力を制限する] が選択されていない場合、Simulink Coverage ではその判定の判定カバレッジのレポートは生成されません。それ以外の場合、Simulink Coverage では [飽和の下限][飽和の上限] の判定カバレッジが記録されます。

[飽和の上限] の判定カバレッジでは、以下の内容が測定されます。

  • 積分結果が上限を超えているタイム ステップの数 (真判定を表す)。

  • 積分結果が上限以下であるタイム ステップの数 (偽判定を表す)。

[飽和の下限] の判定カバレッジでは、以下の内容が測定されます。

  • 積分結果が下限を下回っているタイム ステップの数 (真判定を表す)。

  • 積分結果が下限以上のタイム ステップの数 (偽判定を表す)。

上限の判定が真であるタイム ステップについては、Simulink Coverage では [飽和の下限] は解析されません。そのため、下限判定の総数は、上限が偽であるタイム ステップの数と等しくなります。

判定結果の総数は、ブロックで設定した積分手法によって異なります。各加算演算には飽和イベントが含まれる可能性があります。結果として、台形法では他の積分手法に比べて 2 倍の数の判定結果が得られます。詳細については、Integration and Accumulation Methods を参照してください。

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、Discrete-Time Integrator ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。

Discrete Transfer Fcn

Discrete Transfer Fcn ブロックは、[外部リセット] ブロック パラメーターを [なし] 以外のオプションに設定した場合に判定カバレッジの対象となります。モデルで State Control (HDL Coder) ブロックを使用している場合、[状態制御] パラメーターが [同期] のときは外部リセットのカバレッジを収集できません。判定カバレッジでは、ブロックがリセットされるタイム ステップの真の結果と、ブロックがリセットされないタイム ステップの偽の結果が測定されます。100% の判定カバレッジとなるには、ブロックは少なくとも 1 つのタイム ステップでリセットされ、かつ少なくとも 1 つのタイム ステップでリセットされない必要があります。

[整数オーバーフローで飽和] カバレッジ パラメーターを選択すると、Discrete Transfer Fcn ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。

Dot Product

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、Dot Product ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。

Enabled Subsystem

Enabled Subsystem ブロックは判定カバレッジ、条件カバレッジ、MCDC カバレッジの対象となります。

判定カバレッジでは以下の内容が測定されます。

  • ブロック出力がイネーブルであるタイム ステップの数 (真判定を表す)

  • ブロック出力がディセーブルであるタイム ステップの数 (偽判定を表す)

少なくとも 1 つのタイム ステップが真で、かつ少なくとも 1 つのタイム ステップが偽の場合、判定カバレッジは 100% となります。どのタイム ステップも真ではない場合や、どのタイム ステップも偽ではない場合には、判定カバレッジは 50% となります。

Simulink Coverage によるイネーブル入力の条件カバレッジの測定は、イネーブル入力がベクトルの場合のみ行われます。イネーブル入力について条件カバレッジで測定されるのは、イネーブル入力の各要素が真であるタイム ステップの数と、イネーブル入力の各要素が偽であるタイム ステップの数です。条件カバレッジは想定される条件の総数と、そのうち少なくとも 1 つのタイム ステップで真である条件の数および少なくとも 1 つのタイム ステップで偽である条件の数に基づいて計算されます。

Simulink Coverage によるイネーブル入力の MCDC カバレッジの測定は、イネーブル入力がベクトルの場合のみ行われます。サブシステムの Enable はベクトル入力の OR なので、少なくとも 1 つのタイム ステップの間で各ベクトル イネーブル入力が完全に真であり、さらに少なくとも 1 つのタイム ステップの間ですべてのイネーブル入力が偽である場合、MCDC カバレッジは 100% となります。MCDC カバレッジ測定では、ベクトルの各要素が独立した条件として扱われます。

Enabled and Triggered Subsystem

Enabled and Triggered Subsystem ブロックは判定カバレッジ、条件カバレッジ、MCDC カバレッジの対象となります。判定カバレッジでは以下の内容が測定されます。

  • ブロックがイネーブルである状態でトリガー エッジが発生したタイム ステップの数 (真判定を表す)

  • ブロックがイネーブルである状態でトリガー エッジが発生していないか、ブロックがディセーブルになっているタイム ステップの数 (偽判定を表す)

少なくとも 1 つのタイム ステップが真で、かつ少なくとも 1 つのタイム ステップが偽の場合、判定カバレッジは 100% となります。どのタイム ステップも真ではない場合や、どのタイム ステップも偽ではない場合には、判定カバレッジは 50% となります。

イネーブル入力の条件カバレッジとトリガー入力の条件カバレッジは個別に測定されます。

  • イネーブル入力について条件カバレッジで測定されるのは、イネーブル入力が真であるタイム ステップの数と、イネーブル入力が偽であるタイム ステップの数です。

  • トリガー入力について条件カバレッジで測定されるのは、トリガー エッジが発生するタイム ステップの数 (真を表します) と、トリガー エッジが発生しないタイム ステップの数 (偽を表します) です。

条件カバレッジは想定される条件の総数と、そのうち少なくとも 1 つのタイム ステップで真である条件の数および少なくとも 1 つのタイム ステップで偽である条件の数に基づいて計算されます。各ベクトル要素は、それぞれ独立した条件カバレッジ測定として処理されます。

イネーブル入力の MCDC カバレッジとトリガー入力の MCDC カバレッジは組み合わせて測定されます。サブシステムのイネーブル入力は 2 つの入力の AND なので、次のすべての条件を満たした場合に MCDC カバレッジは 100% となります。

  • 少なくとも 1 つのタイム ステップで、両方の入力が真となる。

  • 少なくとも 1 つのタイム ステップで、イネーブル入力が真となり、かつトリガー エッジが偽となる。

  • 少なくとも 1 つのタイム ステップで、イネーブル入力が偽となり、かつトリガー エッジが真となる。

各ベクトル要素は、それぞれ独立した MCDC カバレッジ測定として処理されます。各トリガー エッジ要素は各イネーブル入力要素と比較して測定されます。ただし、トリガー入力とイネーブル入力の両方の要素の数が 12 を超える場合、MCDC カバレッジのレポートは生成されません。

Fcn

Fcn ブロックは条件カバレッジと MCDC カバレッジの対象となります。Simulink Coverage ソフトウェアが Fcn ブロックの条件カバレッジや MCDC カバレッジのレポートを生成するのは、最上位演算子が論理演算子 (&&||! のいずれか) である場合に限られます。

条件カバレッジは、ブロック内の論理演算子への入力である入力値または演算式に基づいています。条件カバレッジでは以下の内容が測定されます。

  • 論理演算子への各入力が真である (0 でない) タイム ステップの数

  • 論理演算子への各入力が偽である (0 である) タイム ステップの数

少なくとも 1 つのタイム ステップですべての論理演算子入力が偽となり、かつ少なくとも 1 つのタイム ステップですべての論理演算子入力が真となる場合、条件カバレッジは 100% となります。それ以外の場合は、条件カバレッジは想定される条件の総数と、そのうち少なくとも 1 つのタイム ステップで真である条件の数および少なくとも 1 つのタイム ステップで偽である条件の数に基づいて計算されます。

このソフトウェアでは、Fcn ブロック内の論理式の MCDC カバレッジが測定されます。少なくとも 1 つのタイム ステップで各条件がそれぞれ独立して式の出力を真に設定し、かつ少なくとも 1 つのタイム ステップで各条件がそれぞれ独立して式の出力を偽に設定した場合、MCDC カバレッジは 100% になります。それ以外の場合は、MCDC カバレッジは想定される条件の総数と、少なくとも 1 つのタイム ステップで各条件がそれぞれ独立して出力を真に設定した回数および少なくとも 1 つのタイム ステップで各条件がそれぞれ独立して出力を偽に設定した回数に基づいて計算されます。

Fcn ブロックに関係演算が含まれ、[関係演算子の境界] カバレッジ メトリクスを選択している場合、Fcn ブロックは関係演算子の境界カバレッジの対象になります。詳細については、関係演算子の境界カバレッジを参照してください。

For Iterator、For Iterator Subsystem

For Iterator ブロックと For Iterator Subsystem は判定カバレッジの対象となります。Simulink Coverage ソフトウェアではループ条件値の判定カバレッジが測定されます。この条件値は次のいずれかにより決定されます。

  • 反復制限以下の反復値 (真を示す)。

  • 反復制限を超える反復値 (偽を示す)。

各ループ条件が真または偽として評価された回数の合計がレポートされます。ループ条件が少なくとも 1 回真として評価され、かつ少なくとも 1 回偽として評価されていれば、判定カバレッジは 100% になります。どのループ条件も真ではない場合や、どのループ条件も偽ではない場合には、判定カバレッジは 50% となります。

Gain

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、Gain ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。

If、If Action Subsystem

If Action Subsystem を実行させる If ブロックは条件カバレッジ、判定カバレッジ、MCDC カバレッジの対象となります。

  • このソフトウェアでは、If ブロックで定義された if 条件とすべての elseif 条件の判定カバレッジが測定されます。

  • if 条件またはいずれかの elseif 条件に、複数の条件がある論理式 (u1 & u2 & u3 など) がある場合、式の各条件 (この例では u1u2u3) の条件カバレッジと MCDC カバレッジも測定されます。

else 条件は直接には測定されません。elseif 条件がない場合、else 条件が if 条件を直接補完するか、else 条件が最後の elseif 条件を直接補完します。

if 条件および elseif 条件が真および偽として評価されたタイム ステップの合計数がレポートされます。if 条件または elseif 条件が少なくとも 1 回真として評価され、かつ少なくとも 1 回偽として評価されていれば、判定カバレッジは 100% になります。どの if 条件や elseif 条件も真ではない場合や、どの if 条件や elseif 条件も偽ではない場合には、判定カバレッジは 50% となります。前にある if 条件や elseif 条件が偽として評価されない場合、elseif 条件の判定カバレッジは 0% になることがあります。

If ブロックには、その入力間の比較が含まれます。したがって、[関係演算子の境界] カバレッジ メトリクスを選択すると、If ブロックは関係演算子の境界カバレッジの対象になります。詳細については、関係演算子の境界カバレッジを参照してください。

Index Vector

Index Vector ブロックは、ベクトルの信号入力の各要素がブロックの出力に渡されることで、判定カバレッジを取得します。

各ベクトル インデックスが少なくとも 1 タイム ステップでブロック出力に渡されると、判定カバレッジは 100% となります。それ以外の場合、Simulink Coverage は、出力に渡された入力信号でベクトル インデックスの合計数の割合としてカバレッジをレポートします。

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、Index Vector ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。

Interpolation Using Prelookup

Interpolation Using Prelookup ブロックはルックアップ テーブル カバレッジの対象となります。n 次元ルックアップ テーブルでは、出力ブレークポイントの数は、テーブルの各次元のブレークポイント数の積です。ルックアップ テーブル カバレッジでは以下の内容が測定されます。

  • シミュレーション時に、次元の入力値のそれぞれの組み合わせが各ブレークポイントの間であった回数。

  • シミュレーション時に、次元の入力値のそれぞれの組み合わせが、テーブルの各次元の最低のブレークポイントを下回った回数と最高のブレークポイントを上回った回数。

n 次元ルックアップ テーブルのカバレッジ ポイントの総数は、テーブルの各次元のブレークポイントの数の積に 1 を加算した値です。カバレッジ レポート内の白から緑に変化するカラー スケールには、0 から始まり 6 等分されているデータ範囲が設定されており、それぞれ内挿点または外挿点が測定されるタイム ステップの数を示しています。

ソフトウェアで全体のカバレッジ率を判定するには、1 つのブレーク ポイントまたは終点を超えたシミュレーション中に、少なくとも 1 つのタイム ステップで計測された内挿点および外挿点の合計を測定します。

[整数オーバーフローで飽和] を選択すると、Interpolation Using Prelookup ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。ベクトルまたは行列の各要素は、それぞれ独立したカバレッジ測定として処理されます。

ライブラリにリンクされたオブジェクト

ライブラリ オブジェクトにリンクしている Simulink ブロックと Stateflow チャートに対して計算されるカバレッジは、ライブラリ オブジェクトにリンクしていない場合と同じです。Simulink Coverage ソフトウェアでは、モデルのライブラリ オブジェクトごとに個別にカバレッジが記録されます。モデルに同じライブラリ オブジェクトのインスタンスが複数ある場合は、各インスタンスに対して個別のカバレッジ データが生成されます。

Logical Operator

Logical Operator ブロックは条件カバレッジと MCDC カバレッジの対象となります。Simulink Coverage では、ブロックへの入力ごとに条件カバレッジが測定されます。条件カバレッジでは以下の内容が測定されます。

  • 各入力が真である (0 でない) タイム ステップの数

  • 各入力が偽である (0 である) タイム ステップの数

少なくとも 1 つのタイム ステップですべてのブロック入力が偽となり、かつ少なくとも 1 つのタイム ステップですべてのブロック入力が真となる場合、条件カバレッジは 100% となります。それ以外の場合は、条件カバレッジは想定される条件の総数と、そのうち少なくとも 1 つのタイム ステップで真である条件の数および少なくとも 1 つのタイム ステップで偽である条件の数に基づいて計算されます。

SimulinkCoverage では、ブロックへのすべての入力の MCDC カバレッジが測定されます。少なくとも 1 つのタイム ステップで各条件がそれぞれ独立してブロックの出力を真に設定し、かつ少なくとも 1 つのタイム ステップで各条件がそれぞれ独立してブロックの出力を偽に設定した場合、MCDC カバレッジは 100% になります。それ以外の場合、Simulink Coverage では、MCDC カバレッジは想定される条件の総数と、少なくとも 1 つのタイム ステップで各条件がそれぞれ独立して出力を真に設定した回数および少なくとも 1 つのタイム ステップで各条件がそれぞれ独立して出力を偽に設定した回数に基づいて計算されます。

ロジック カスケードの一部として MCDC の対象となる Logical Operator ブロックの場合は、以下のすべての条件を満たされなければなりません。

  • ブロックの入出力信号がすべてスカラーであること

  • 論理ブロックの演算が XOR/NXOR でないこと

  • 論理ブロックに複数の入力信号があること (その演算が NOT でない場合)

論理カスケードの詳細については、Logical Operator のカスケード パターンを参照してください。

1-D Lookup Table

1-D Lookup Table ブロックはルックアップ テーブル カバレッジの対象となります。1 次元ルックアップ テーブルの場合、入力ブレークポイントと出力ブレークポイントの数は等しくなります。ルックアップ テーブル カバレッジでは以下の内容が測定されます。

  • シミュレーション時に、入力値と出力値が各ブレークポイントの間であった回数

  • シミュレーション時に、入力値と出力値が最低のブレークポイントを下回った回数と最高のブレークポイントを上回った回数

1 次元ルックアップ テーブルのカバレッジ ポイントの合計は、テーブル内のブレークポイントの数に 1 を加算した値です。カバレッジ レポート内の白から緑に変化するカラー スケールには、0 から始まり 6 等分されているデータ範囲が設定されており、それぞれ内挿点または外挿点が測定されるタイム ステップの数を示しています。

ソフトウェアで全体のカバレッジ率を判定するには、1 つのブレーク ポイントまたは終点を超えたシミュレーション中に、少なくとも 1 つのタイム ステップで計測された内挿点および外挿点の合計を測定します。

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、1-D Lookup Table ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。ベクトルまたは行列の各要素は、それぞれ独立したカバレッジ測定として処理されます。

2-D Lookup Table

2-D Lookup Table ブロックはルックアップ テーブル カバレッジの対象となります。2 次元ルックアップ テーブルでは、出力ブレークポイントの数は、行のブレークポイントの数に列の入力の数を乗算した値です。ルックアップ テーブル カバレッジでは以下の内容が測定されます。

  • シミュレーション時に、行の入力値と列の入力値のそれぞれの組み合わせが各ブレークポイントの間であった回数

  • シミュレーション時に、行の入力値と列の入力値のそれぞれの組み合わせが、各行および列の最低のブレークポイントを下回った回数と最高のブレークポイントを上回った回数

2 次元ルックアップ テーブルのカバレッジ ポイントの合計は (テーブル内の行のブレークポイント数 + 1) × (テーブル内の列のブレークポイント数 + 1) です。カバレッジ レポート内の白から緑に変化するカラー スケールには、0 から始まり 6 等分されているデータ範囲が設定されており、それぞれ内挿点または外挿点が測定されるタイム ステップの数を示しています。

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、2-D Lookup Table ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。ベクトルまたは行列の各要素は、それぞれ独立したカバレッジ測定として処理されます。

n-D Lookup Table

n-D Lookup Table ブロックはルックアップ テーブル カバレッジの対象となります。n 次元ルックアップ テーブルでは、出力ブレークポイントの数は、テーブルの各次元のブレークポイント数の積です。ルックアップ テーブル カバレッジでは以下の内容が測定されます。

  • シミュレーション時に、次元の入力値のそれぞれの組み合わせが各ブレークポイントの間であった回数。

  • シミュレーション時に、次元の出力値のそれぞれの組み合わせが、テーブルの各次元の最低のブレークポイントを下回った回数と最高のブレークポイントを上回った回数。

n 次元ルックアップ テーブルのカバレッジ ポイントの総数は、テーブルの各次元のブレークポイントの数の積に 1 を加算した値です。カバレッジ レポート内の白から緑に変化するカラー スケールには、0 から始まり 6 等分されているデータ範囲が設定されており、それぞれ内挿点または外挿点が測定されるタイム ステップの数を示しています。

ソフトウェアで全体のカバレッジ率を判定するには、1 つのブレーク ポイントまたは終点を超えたシミュレーション中に、少なくとも 1 つのタイム ステップで計測された内挿点および外挿点の合計を測定します。

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、n-D Lookup Table ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。ベクトルまたは行列の各要素は、それぞれ独立したカバレッジ測定として処理されます。

Math Function

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、Math Function ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。ベクトルまたは行列の各要素は、それぞれ独立したカバレッジ測定として処理されます。

MATLAB Function

Simulink Coverage で MATLAB® Function ブロックに対してレポートできるカバレッジの種類の詳細については、MATLAB 関数のモデル カバレッジを参照してください。

MATLAB System

MATLAB System ブロック パラメーターの [シミュレーション実行方法][コード生成] に設定した場合、Simulink CoverageMATLAB System ブロックについて判定カバレッジ、条件カバレッジ、MCDC カバレッジを記録します。

MATLAB System ブロックの代入ステートメントの論理式は解析されません。

Message Send

Message Send ブロックは、[イネーブル端子の表示] ブロック パラメーターを選択した場合に判定カバレッジの対象となります。モデルで State Control (HDL Coder) ブロックを使用している場合、[状態制御] パラメーターが [同期] のときはイネーブル端子のカバレッジを収集できません。判定カバレッジでは、ブロックがイネーブルであるタイム ステップの真の結果と、ブロックがイネーブルでないタイム ステップの偽の結果が測定されます。100% の判定カバレッジとなるには、ブロックは少なくとも 1 つのタイム ステップでイネーブルであり、かつ少なくとも 1 つのタイム ステップでイネーブルでない必要があります。

MinMax

MinMax ブロックは、ブロックの各入力が出力に渡されることで、判定カバレッジを取得します。

各入力をブロックの出力に渡すことにより計算される判定カバレッジでは、シミュレーションにより各入力がブロックの出力に渡されているタイム ステップの数が Simulink Coverage で測定されます。判定点の数は、ブロックへの入力の数と、入力の種類 (スカラー、ベクトル、行列) によって決まります。

少なくとも 1 つのタイム ステップですべての入力がブロックの出力に渡されている場合、Simulink Coverage では判定カバレッジが 100% であるとレポートされます。それ以外の場合は、Simulink Coverage はカバレッジを、少なくとも 1 つのタイム ステップで出力に渡された入力の数を入力の総数で除算した値として報告します。

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、MinMax ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。ベクトルまたは行列の各要素は、それぞれ独立したカバレッジ測定として処理されます。

[関係演算子の境界] カバレッジ メトリクスを選択すると、MinMax ブロックは関係演算子の境界カバレッジの対象になります。カバレッジ レポートに表示される [Relational boundary analyzed] の表の合計行数は、入力データ型によって異なります。たとえば、MinMax の入力が浮動小数点値で、ブロックの [関数] パラメーターが [最小値] に設定されている場合、レポートの [Relational boundary analyzed] の表には 2 行が含まれます。各入力 "i" に対して、input i - min(inputs before input i) 用に表内に 1 行、input i - min(inputs after input i) 用に表内に 1 行があります。ブロックの最初と最後の入力については、1 行だけです。入力がベクトルの場合は、ベクトル入力の要素ごとに追加の行セットがあります。関係演算子の境界カバレッジの詳細については、関係演算子の境界カバレッジを参照してください。MinMax ブロックの関係演算子の境界カバレッジを示す例については、Collect Relational Boundary Coverage for MinMax Blockを参照してください。

また、MinMax ブロックのカバレッジを収集することもできます。このブロックは、[適用範囲] ブロック パラメーターを選択したときに入力信号を 1 つしか受信しません。

メモ

ブロック入力が可変サイズの信号のときに [適用範囲] ブロック パラメーターを選択した場合、関係演算子の境界カバレッジは MinMax ブロックではサポートされません。

モデル

Model ブロックは直接にはカバレッジの対象とはなりませんが、このブロックが参照するモデルはカバレッジの対象となります。参照モデルのシミュレーション モードが [ノーマル] に設定されている場合、Simulink Coverage は参照モデル内のオブジェクトのうちカバレッジの対象となるすべてのオブジェクトについてカバレッジをレポートします。参照モデルのシミュレーション モードが [SIL] または [PIL] に設定されていて、Embedded Coder® をインストールしている場合、Simulink Coverage はモデルから生成されたコードのカバレッジをレポートします。シミュレーション モードが [ノーマル][SIL] または [PIL] 以外の値に設定されている場合、Simulink Coverage は参照モデルのカバレッジを測定しません。

[コンフィギュレーション パラメーター] ダイアログ ボックスの [カバレッジ] ペインで、カバレッジ レポートの対象となる参照モデルを選択します。Simulink Coverage は、選択した各参照モデルのカバレッジ レポートを生成します。

モデルに同じ参照モデルのインスタンスが複数ある場合、Model ブロックのシミュレーション モードが [ノーマル] に設定されていれば、Simulink Coverage はそのモデルのすべてのインスタンスのカバレッジを記録します。その参照モデルのカバレッジ レポートでは、モデルにあるノーマル モードのすべてのインスタンスのカバレッジ データが結合されます。

モデル参照階層内の解析されたモデルのカバレッジ レポートは、概要レポートからリンクされています。

メモ

カバレッジのレポートを生成するために参照モデルを選択する方法については、参照モデルを参照してください。

Multiport Switch

Multiport Switch ブロックは、ブロックの最初の制御入力を除外した各入力が、出力に渡されたかどうかに基づいて判定カバレッジの対象になります。

各入力 (最初の制御入力を除く) をブロックの出力に渡すことにより計算される判定カバレッジでは、各入力がブロックの出力に渡されているタイム ステップの数が測定されます。判定点の数は、ブロックへの入力の数と、制御入力の種類 (スカラー、ベクトル) によって決まります。

最初の制御入力を除くすべての入力が少なくとも 1 つのタイム ステップでブロック出力に渡されている場合、判定カバレッジは 100% となります。それ以外の場合は、Simulink Coverage ソフトウェアでレポートされるカバレッジは、少なくとも 1 つのタイム ステップで出力に渡された入力の数を、入力の総数から 1 を引いた数で除算した値となります。

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、Multiport Switch ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。ベクトルまたは行列の各要素は、それぞれ独立したカバレッジ測定として処理されます。

オブザーバー モデル

Observer Reference ブロックは直接にはカバレッジの対象とはなりませんが、このブロックが参照するオブザーバー モデルは、そのモデル内のブロックに対してカバレッジ メトリクスの対象となります。[ノーマル] モードのオブザーバー モデルのみがカバレッジ用に解析されます。

カバレッジ用のオブザーバー モデルは、参照モデルの選択と同様の方法で選択できます。解析するモデルの選択の詳細については、参照モデルを参照してください。

最上位モデルから参照するオブザーバー モデルのみがシミュレーション中にアクティブであり、カバレッジの対象となることができます。オブザーバー モデル内にある Terminate Function ブロックは、カバレッジの対象とはなりません。

各オブザーバー モデルのカバレッジの結果は、別々の cvdata オブジェクト内で取得されます。オブザーバー モデルから参照される各モデルはオブザーバー モデルと見なされ、独自の cvdata オブジェクトをもちます。モデル参照階層で複数のモデルのカバレッジを記録する場合、結果は cv.cvdatagroup オブジェクト内で収集されます。概要レポートは、階層内の解析されたすべてのモデルのカバレッジ レポートにリンクします。

PID Controller、PID Controller (2 DOF)

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、PID Controller および PID Controller (2 DOF) ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。ベクトルまたは行列の各要素は、それぞれ独立したカバレッジ測定として処理されます。

Product

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、Product ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。ベクトルまたは行列の各要素は、それぞれ独立したカバレッジ測定として処理されます。

Proof Assumption

Proof Assumption ブロックは Simulink Design Verifier カバレッジの対象になります。Simulink Design Verifier カバレッジは、ブロックのダイアログ ボックスで定義されている点と間隔に基づいています。Simulink Design Verifier カバレッジでは、ブロック内で定義されている各点または間隔が満たされるタイム ステップの数が測定されます。オブジェクティブの結果の合計値は、Proof Assumption ブロックで定義された点や間隔の数に基づいています。

少なくとも 1 つのタイム ステップで、ブロックで定義されたすべての点と間隔が満たされている場合、Simulink Design Verifier カバレッジは 100% になります。それ以外の場合、Simulink Coverage ソフトウェアでレポートされるカバレッジは、少なくとも 1 つのタイム ステップで満たされた点および間隔の数を、ブロックで定義された点と間隔の総数で除算した値となります。

Proof Objective

Proof Objective ブロックは Simulink Design Verifier カバレッジの対象になります。Simulink Design Verifier カバレッジは、ブロック ダイアログ ボックスで定義されている点と間隔に基づいています。Simulink Design Verifier カバレッジでは、ブロック内で定義されている各点または間隔が満たされるタイム ステップの数が測定されます。オブジェクティブの結果の合計値は、Proof Objective ブロックで定義された点や間隔の数に基づいています。

少なくとも 1 つのタイム ステップで、ブロックで定義されたすべての点と間隔が満たされている場合、Simulink Design Verifier カバレッジは 100% になります。それ以外の場合、Simulink Coverage ソフトウェアでレポートされるカバレッジは、少なくとも 1 つのタイム ステップで満たされた点および間隔の数を、ブロックで定義された点と間隔の総数で除算した値となります。

Rate Limiter

Rate Limiter ブロックは判定カバレッジの対象となります。Simulink Coverage ソフトウェアでは、[スルーレートの立ち上がり] および [スルーレートの立ち下り] パラメーターの判定カバレッジがレポートされます。

[スルーレートの立ち上がり] の判定カバレッジでは、以下の内容が測定されます。

  • ブロック入力の変化が立ち上がり速度以上であるタイム ステップの数 (真判定を表す)

  • ブロック入力の変化が立ち上がり速度未満であるタイム ステップの数 (偽判定を表す)

[スルーレートの立ち下り] の判定カバレッジでは、以下の内容が測定されます。

  • ブロック入力の変化が立ち下り速度以下であるタイム ステップの数 (真判定を表す)

  • ブロック入力の変化が立ち下り速度を超えるタイム ステップの数 (偽判定を表す)

[スルーレートの立ち上がり] が真である場合、タイム ステップの [スルーレートの立ち下り] のカバレッジは測定されません。そのため、[スルーレートの立ち下り] 判定の総数は、[スルーレートの立ち上がり] が偽であるタイム ステップの数と等しくなります。

少なくとも 1 つのタイム ステップが真で、かつ少なくとも 1 つのタイム ステップが偽の場合、ブロックの 2 つの判定のそれぞれで判定カバレッジは 100% となります。どのタイム ステップも真ではない場合や、どのタイム ステップも偽ではない場合には、判定カバレッジは 50% となります。ベクトルまたは行列の各要素は、それぞれ独立したカバレッジ測定として処理されます。

Rate Limiter ブロックは、入力信号の導関数を上限値および下限値と暗黙的に比較します。したがって、[関係演算子の境界] カバレッジ メトリクスを選択すると、Rate Limiter ブロックは関係演算子の境界カバレッジの対象になります。詳細については、関係演算子の境界カバレッジを参照してください。

Relational Operator

Relational Operator ブロックは条件カバレッジの対象となります。

条件カバレッジでは次が測定されます。

  • 指定された関係演算が真だった回数

  • 指定された関係演算が偽だった回数

Relational Operator ブロックには、その入力間の比較が含まれます。したがって、[関係演算子の境界] カバレッジ メトリクスを選択すると、Relational Operator ブロックは関係演算子の境界カバレッジの対象になります。詳細については、関係演算子の境界カバレッジを参照してください。

Relay

Relay ブロックは判定カバレッジの対象となります。Simulink Coverage では、[スイッチオン ポイント] パラメーターと [スイッチオフ ポイント] パラメーターの判定カバレッジがレポートされます。

[スイッチオン ポイント] の判定カバレッジでは、以下の内容が測定されます。

  • ブロック入力が [スイッチオン ポイント] 以上である連続タイム ステップの数 (真判定を表す)

  • ブロック入力が [スイッチオン ポイント] 未満である連続タイム ステップの数 (偽判定を表す)

[スイッチオフ ポイント] の判定カバレッジでは、以下の内容が測定されます。

  • ブロック入力が [スイッチオフ ポイント] 以下である連続タイム ステップの数 (真判定を表す)

  • ブロック入力が [スイッチオフ ポイント] を超える連続タイム ステップの数 (偽判定を表す)

スイッチ オンのしきい値が真である場合、タイム ステップの [スイッチオフ ポイント] のカバレッジは測定されません。そのため、[スイッチオフ ポイント] 判定の総数は、[スイッチオン ポイント] が偽であるタイム ステップの数と等しくなります。

少なくとも 1 つのタイム ステップが真で、かつ少なくとも 1 つのタイム ステップが偽の場合、ブロックの 2 つの判定のそれぞれで判定カバレッジは 100% となります。どのタイム ステップも真ではない場合や、どのタイム ステップも偽ではない場合には、判定カバレッジは 50% となります。ベクトルまたは行列の各要素は、それぞれ独立したカバレッジ測定として処理されます。

Relay ブロックには、2 つ目の入力としきい値との暗黙的な比較が含まれます。したがって、[関係演算子の境界] カバレッジ メトリクスを選択すると、Relay ブロックは関係演算子の境界カバレッジの対象になります。詳細については、関係演算子の境界カバレッジを参照してください。

Requirements Table

Requirements Table ブロックは、[要件テーブル] タブの各要件の [前提条件] 列に含まれているロジックに対する判定カバレッジ、条件カバレッジ、MCDC カバレッジ、関係演算子の境界カバレッジ、および整数オーバーフローで飽和カバレッジの対象となります。[事後条件] 列と [仮定テーブル] タブは、カバレッジの対象にはなりません。

Simulink Coverage では、Stateflow チャートまたは MATLAB Function ブロックの場合と同様に、[前提条件] 列のカバレッジがレポートされます。たとえば、前提条件で、A < C1 && B ~= C2 の場合に事後条件を満たす必要があると指定されている場合、Simulink Coverage ではこのステートメントのカバレッジ結果を解析およびレポートできます。

C/C++ S-Function

C/C++ S-Function にはモデル カバレッジがサポートされています。モデルのカバレッジ レポートには、モデル内の S-Function ブロックの各インスタンスについての結果が記載されます。S-Function ブロックの結果は、ブロック内の C/C++ コードに関する別のカバレッジ レポートにリンクされます。

S-Function のカバレッジ レポートを生成するには、次の手順に従います。

  1. S-Function を作成する際は、カバレッジのサポートを有効にします。詳細については、S-Function をモデル カバレッジ互換にするを参照してください。

  2. カバレッジ レポートを生成する際は、S-Function のサポートを有効にします。詳細については、S-Function のカバレッジ レポートの生成を参照してください。

S-Function について、以下のカバレッジ タイプがレポートされます。

S-Function ブロックのカバレッジ データは以下の方法で取得されます。

  • ブロックのカバレッジ結果は、ブロック内のすべてのファイルに対する結果の加重平均となります。

    たとえば、S-Function ブロックに file1.cfile2.c という 2 つのファイルがあるとします。file1.c の判定カバレッジが 75% (3/4 の結果がカバー) で、file2.c の判定カバレッジが 50% (10/20 の結果がカバー) である場合、ブロックの判定カバレッジは、13/24 ≈ 54 % となります。

  • 各ファイルのカバレッジ結果は、ファイル内のすべての関数に対する結果の加重平均となります。

  • 各関数のカバレッジ結果は、そのカバレッジの対象となる関数内のすべてのステートメントに対する結果の加重平均となります。

メモ

S-Function のモデル カバレッジには以下の制限があります。

  • レベル-2 の C/C++ S-Function のカバレッジのみサポートされます。レベル-2 の C S-Function の例は、Create a Basic C MEX S-Functionを参照してください。

  • C++ クラスのテンプレートはカバレッジ用にインストルメント化されていません。

Saturation

Simulink Coverage では、Saturation ブロックの [上限] パラメーターと [下限] パラメーターの判定カバレッジおよび Saturation ブロックの関係演算子の境界カバレッジがレポートされます。

[上限] の判定カバレッジでは、以下の内容が測定されます。

  • ブロック入力が上限を超えるタイム ステップの数。これは、ブロック出力が上限で飽和する真判定結果を表します。

  • ブロック入力が上限以下であるタイム ステップの数。これは偽判定結果を表します。

[下限] の判定カバレッジでは、以下の内容が測定されます。

  • ブロック入力が下限以上であるタイム ステップの数。これは真判定結果を表します。

  • ブロック入力が下限未満であるタイム ステップの数。これは、ブロック出力が下限で飽和する偽判定結果を表します。

Simulink Coverage では、上限が真である場合、タイム ステップでの [下限] 判定のカバレッジは測定されません。そのため、[下限] 判定評価の総数は、[上限] が偽であるタイム ステップの数と等しくなります。Simulink Coverage では、[上限] 判定がすべてのタイム ステップで真である場合、[下限] 判定に対して 0% カバレッジがレポートされます。

判定ごとに、Simulink Coverage では、少なくとも 1 つのタイム ステップで判定が真の結果を返し、かつ少なくとも 1 つのタイム ステップで判定が偽の結果を返した場合、100% カバレッジがレポートされます。判定に真の結果また偽の結果がない場合、Simulink Coverage では、その判定に対して 50% カバレッジがレポートされます。Saturation ブロックの判定カバレッジは、[上限] 判定および [下限] 判定のカバレッジの合計です。たとえば、Saturation ブロックが [上限] 判定に対して 100% カバレッジとなり、[下限] 判定に対して 50% カバレッジとなる場合、Saturation ブロックは合計で 75% の判定カバレッジとなり、4 つの判定結果のうち 3 つが達成されます。

Saturation ブロックへの入力信号がベクトルまたは行列の場合、各要素はそれぞれ独立したカバレッジ測定になります。たとえば、2 つの要素ベクトルである入力信号の場合、Saturation ブロック内の判定結果の合計数は 4 ではなく、8 になります。

Saturation ブロックには、入力と上限値および下限値との暗黙的な比較が含まれます。したがって、[コンフィギュレーション パラメーター] ウィンドウの [カバレッジ] ペインで [関係演算子の境界] カバレッジ メトリクスを選択すると、Saturation ブロックは関係演算子の境界カバレッジの対象になります。詳細については、関係演算子の境界カバレッジを参照してください。

Saturation Dynamic

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、Saturation Dynamic ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。ベクトルまたは行列の各要素は、それぞれ独立したカバレッジ測定として処理されます。

Sign

Sign ブロックは判定カバレッジと関係演算子の境界カバレッジの対象となります。

Sign ブロックは負の結果、正の結果、ゼロの結果用に 1 つずつ、3 つの判定結果をもちます。

Sign ブロックは入力をゼロと暗黙的に比較します。したがって、[関係演算子の境界] カバレッジ メトリクスを選択すると、Sign ブロックは関係演算子の境界カバレッジの対象になります。詳細については、関係演算子の境界カバレッジを参照してください。

MATLAB Function ブロックの Simulink Design Verifier 関数

MATLAB Function ブロックでは、以下の関数は Simulink Design Verifier カバレッジの対象となります。

これらの関数は、いずれも式 expr (sldv.test(expr) など) を評価します。expr は有効な MATLAB 論理式です。Simulink Design Verifier カバレッジでは、式 expr が真と評価されるタイム ステップの数が測定されます。

少なくとも 1 つのタイム ステップで expr が真であれば、その関数の Simulink Design Verifier カバレッジは 100% になります。それ以外の場合、Simulink Coverage ソフトウェアではその関数のカバレッジが 0% としてレポートされます。

Sqrt, Signed Sqrt, Reciprocal Sqrt

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、SqrtSigned Sqrt、および Reciprocal Sqrt ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。ベクトルまたは行列の各要素は、それぞれ独立したカバレッジ測定として処理されます。

Sum, Add, Subtract, Sum of Elements

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、SumAddSubtract および Sum of Elements ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。ベクトルまたは行列の各要素は、それぞれ独立したカバレッジ測定として処理されます。

Switch

Switch ブロックは、ブロックへの制御入力に基づく判定カバレッジの対象になります。判定カバレッジでは以下の内容が測定されます。

  • 制御入力が真と評価されるタイム ステップの数

  • 制御入力が偽と評価されるタイム ステップの数

判定点の数は、制御入力がスカラーかベクトルかに基づいています。

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、Switch ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。ベクトルまたは行列の各要素は、それぞれ独立したカバレッジ測定として処理されます。

Switch ブロックには、2 つ目の入力としきい値との暗黙的な比較が含まれます。したがって、[関係演算子の境界] カバレッジ メトリクスを選択すると、Switch ブロックは関係演算子の境界カバレッジの対象になります。詳細については、関係演算子の境界カバレッジを参照してください。

SwitchCaseSwitchCase Action Subsystem

SwitchCase ブロックと SwitchCase Action Subsystem は判定カバレッジの対象となります。Simulink Coverage ソフトウェアでは、ブロック内で定義された switch ケースごとに個別に判定カバレッジが測定され、さらに default ケースについても測定されます。判定結果の数は、Case 条件の数に、default ケースの条件 (定義されている場合) の数を加算した値です。

各ケースが真と評価されたタイム ステップの総数がレポートされます。default ケースを含む各ケースが少なくとも 1 回真と評価されると、判定カバレッジは 100% になります。判定カバレッジは、少なくとも 1 つのタイム ステップで真と評価されたケースの数をケースの総数で除算して計算されます。

SwitchCase ブロックに default ケースがない場合、どのケースも真と評価されていないタイム ステップの数に対する判定カバレッジが測定されます。カバレッジ レポートでは、このカバレッジは implicit-default と表記されます。

Test Condition

Test Condition ブロックは Simulink Design Verifier カバレッジの対象になります。Simulink Design Verifier カバレッジは、ブロック ダイアログ ボックスで定義されている点と間隔に基づいています。Simulink Design Verifier カバレッジでは、ブロック内で定義されている各点または間隔が満たされるタイム ステップの数が測定されます。オブジェクティブの結果の合計値は、Test Condition ブロックで定義された点や間隔の数に基づいています。

少なくとも 1 つのタイム ステップで、ブロックで定義されたすべての点と間隔が満たされている場合、Simulink Design Verifier カバレッジは 100% になります。それ以外の場合、Simulink Coverage ソフトウェアでレポートされるカバレッジは、少なくとも 1 つのタイム ステップで満たされた点および間隔の数を、ブロックで定義された点と間隔の総数で除算した値となります。

Test Objective

Test Objective ブロックは Simulink Design Verifier カバレッジの対象になります。Simulink Design Verifier カバレッジは、ブロック ダイアログ ボックスで定義されている点と間隔に基づいています。Simulink Design Verifier カバレッジでは、ブロック内で定義されている各点または間隔が満たされるタイム ステップの数が測定されます。オブジェクティブの結果の合計値は、Test Objective ブロックで定義された点や間隔の数に基づいています。

少なくとも 1 つのタイム ステップで、ブロックで定義されたすべての点と間隔が満たされている場合、Simulink Design Verifier カバレッジは 100% になります。それ以外の場合、Simulink Coverage ソフトウェアでレポートされるカバレッジは、少なくとも 1 つのタイム ステップで満たされた点および間隔の数を、ブロックで定義された点と間隔の総数で除算した値となります。

Triggered Models

Model ブロックは、ルート レベルにエッジベースのトリガー端子があるモデルを参照することができます。トリガー モデルは判定カバレッジ、条件カバレッジ、MCDC カバレッジの対象となります。

判定カバレッジでは以下の内容が測定されます。

  • 参照モデルがトリガーされたタイム ステップの数 (真判定を表す)

  • 参照モデルがトリガーされていないタイム ステップの数 (偽判定を表す)

少なくとも 1 つのタイム ステップが真で、かつ少なくとも 1 つのタイム ステップが偽の場合、トリガー モデルを参照している Model ブロックの判定カバレッジは 100% となります。どのタイム ステップも真ではない場合や、どのタイム ステップも偽ではない場合には、判定カバレッジは 50% となります。

トリガー入力がベクトルである場合に限り、Simulink Coverage ソフトウェアは参照モデルのトリガー端子の条件カバレッジを測定します。トリガー端子の条件カバレッジでは、以下の内容が測定されます。

  • トリガー端子の各要素が真であるタイム ステップの数

  • トリガー端子の各要素が偽であるタイム ステップの数

条件カバレッジは想定される条件の総数と、そのうち少なくとも 1 つのタイム ステップで真である条件の数および少なくとも 1 つのタイム ステップで偽である条件の数に基づいて計算されます。

トリガー端子がベクトルの場合、トリガー端子の MCDC カバレッジのみが測定されます。参照モデルのトリガー端子はベクトル入力の OR なので、少なくとも 1 つのタイム ステップの間で各ベクトル トリガー端子が完全に真であり、さらに少なくとも 1 つのタイム ステップの間ですべてのベクトル トリガー端子入力が偽である場合、MCDC カバレッジは 100% となります。各ベクトル要素は、MCDC カバレッジ測定の独立した条件として処理されます。

Triggered Subsystem

Triggered Subsystem ブロックは判定カバレッジ、条件カバレッジ、MCDC カバレッジの対象となります。

判定カバレッジでは以下の内容が測定されます。

  • ブロックがトリガーされたタイム ステップの数 (真判定を表す)

  • ブロックがトリガーされていないタイム ステップの数 (偽判定を表す)

少なくとも 1 つのタイム ステップが真で、かつ少なくとも 1 つのタイム ステップが偽の場合、判定カバレッジは 100% となります。どのタイム ステップも真ではない場合や、どのタイム ステップも偽ではない場合には、判定カバレッジは 50% となります。

Simulink Coverage ソフトウェアによるトリガー入力の条件カバレッジの測定は、トリガー入力がベクトルの場合のみ行われます。トリガー入力の条件カバレッジでは、以下の内容が測定されます。

  • トリガー エッジの各要素が真であるタイム ステップの数

  • トリガー エッジの各要素が偽であるタイム ステップの数

条件カバレッジは想定される条件の総数と、そのうち少なくとも 1 つのタイム ステップで真である条件の数および少なくとも 1 つのタイム ステップで偽である条件の数に基づいて計算されます。

トリガー入力がベクトルの場合、トリガー入力の MCDC カバレッジのみが測定されます。サブシステムのトリガー エッジはベクトル入力の OR なので、少なくとも 1 つのタイム ステップの間で各ベクトル トリガー エッジ入力が完全に真であり、さらに少なくとも 1 つのタイム ステップの間ですべてのベクトル トリガー エッジ入力が偽である場合、MCDC カバレッジは 100% となります。各ベクトル要素は、MCDC カバレッジ測定の独立した条件として処理されます。

Trigonometric Function

[関数] パラメーターを [asin] または [acos] に設定し、[範囲外入力に対する保護を削除する] パラメーターをクリアした場合、Trigonometric Function ブロックは判定カバレッジと関係演算子の境界カバレッジの対象になります。これらの設定を使用すると、Trigonometric Function ブロックは飽和動作を使用して -1 から 1 の入力のみを受け入れます。

判定カバレッジでは、Trigonometric Function ブロックの飽和判定ロジックが解析されます。カバレッジ レポートには、以下の 3 つの可能な結果をもつ 1 つの判定としてこのロジックが表示されます。

  • 入力が 1 より大きい

  • 入力が -1 ~ 1 の間

  • 入力が -1 より小さい

飽和動作には、入力と上限値および下限値との暗黙的な比較が含まれます。[コンフィギュレーション パラメーター] ダイアログ ボックスの [カバレッジ] ペインで [関係演算子の境界] カバレッジ メトリクスを選択すると、ブロックは関係演算子の境界カバレッジの対象になります。詳細については、関係演算子の境界カバレッジを参照してください。

[範囲外入力に対する保護を削除する] パラメーターを選択した場合、ブロックは実行カバレッジのみの対象になります。

Truth Table

Truth Table ブロックは、Simulink モデルで直接真理値表のロジックを使用できるようにするための Stateflow ブロックです。Truth Table ブロックは条件カバレッジ、判定カバレッジ、MCDC カバレッジの対象となります。Stateflow 真理値表を使用するモデル カバレッジの詳細については、Stateflow 真理値表のモデル カバレッジを参照してください。

Unary Minus

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、Unary Minus ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。ベクトルまたは行列の各要素は、それぞれ独立したカバレッジ測定として処理されます。

Weighted Sample Time Math

[整数オーバーフローで飽和] カバレッジ メトリクスを選択すると、Weighted Sample Time Math ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジを参照してください。ベクトルまたは行列の各要素は、それぞれ独立したカバレッジ測定として処理されます。

While Iterator、While Iterator Subsystem

While Iterator ブロックおよび While Iterator Subsystem は判定カバレッジの対象となります。判定カバレッジは while 条件値に対して測定されるもので、while 条件が満たされているか (真)、while 条件が満たされていないか (偽) に基づいています。Simulink Coverage ソフトウェアでは、各 while 条件の評価結果が真となる回数と偽となる回数の合計がレポートされます。while 条件が少なくとも 1 回真として評価され、かつ少なくとも 1 回偽として評価されていれば、while 条件の判定カバレッジは 100% になります。どの while 条件も真ではない場合や、どの while 条件も偽ではない場合には、判定カバレッジは 50% となります。

反復制限を超過している (真である) 場合や超過していない (偽である) 場合には、判定カバレッジは独立して測定されます。反復制限が少なくとも 1 回真として評価され、かつ少なくとも 1 回偽として評価されていれば、反復制限の判定カバレッジは 100% になります。どの反復制限も真ではない場合や、どの反復制限も偽ではない場合には、判定カバレッジは 50% となります。[最大反復回数]-1 (無制限) に設定されている場合、反復制限の判定カバレッジはすべての反復に対して真となり、反復回数が 0 の場合は偽となります。この場合、判定カバレッジは 50% となります。