メインコンテンツ

デッド ロジックの検出

R2026b

デッド ロジックは、シミュレーション中にアクティブにできないモデルの要素を表します。デッド ロジックの検出では、判定カバレッジと条件カバレッジの起こり得ない結果を特定します。場合によっては、設計内のエラーが原因でデッド ロジックが発生します。モデルのシミュレーションを実行する前に、デッド ロジックの検出を使用して、デッド ロジックについてモデルを解析します。Simulink® Design Verifier™ におけるデッド ロジックの設計エラー検出には、次の 2 つの解析方法があります。

  • デッド ロジック (一部):このオプションを選択した場合、Simulink Design Verifier は、浮動小数点の有理近似などの近似を行わずに、またはループの近似中にモデルを解析します。詳細については、Approximations During Model Analysisを参照してください。このオプションを使用すると、Simulink Design Verifier でアクティブ ロジックまたは未判定のオブジェクティブがレポートされず、モデルのデッド ロジックが特定されない場合があります。

    このオプションは次で使用できます。

  • 網羅的解析を実行:このオプションを使用すると、Simulink Design Verifier は、デッド ロジックと未判定のオブジェクティブに加えて、アクティブ ロジックをレポートします。このオプションにより、場合によっては追加のデッド ロジックが特定または検出される場合があります。解析では近似が使用され、それに応じてレポートされます。

    このオプションは、[コンフィギュレーション パラメーター] ダイアログ ボックスの [Design Verifier]、[設計エラー検出] ペインで使用できます。

デッド ロジックの部分チェックを実行

モデル アドバイザーを使用していない場合、デッド ロジックを検出するには、次を行います。

  1. [Design Verifier] タブの [モード] セクションで、[設計エラー検出] を選択します。

  2. [エラー検出の設定] をクリックします。

  3. [コンフィギュレーション パラメーター] ダイアログ ボックスの [Design Verifier]、[設計エラー検出] ペインで、次を行います。

    1. デッド ロジック (一部)オプションを有効にします。

    2. 網羅的解析を実行オプションが選択されている場合、オフにします。

    3. 解析するカバレッジ オブジェクティブを [MCDC] に設定します。ドロップダウン メニューから選択できるオプションは、[判定]、[条件判定]、および [MCDC] です。

  4. [OK] をクリックしてこれらの設定を適用し、[コンフィギュレーション パラメーター] ウィンドウを閉じます。

  5. [設計エラーの検出] をクリックします。

デッド ロジックの網羅的解析を実行

  1. [Design Verifier] タブの [モード] セクションで、[設計エラー検出] を選択します。

  2. [エラー検出の設定] をクリックします。

  3. [コンフィギュレーション パラメーター] ダイアログ ボックスの [Design Verifier]、[設計エラー検出] ペインで、次を行います。

    1. デッド ロジック (一部)オプションを有効にします。

    2. 網羅的解析を実行オプションを選択します。

    3. 解析するカバレッジ オブジェクティブを [MCDC] に設定します。ドロップダウン メニューから選択できるオプションは、[判定]、[条件判定]、および [MCDC] です。

  4. [OK] をクリックしてこれらの設定を適用し、[コンフィギュレーション パラメーター] ダイアログ ボックスを閉じます。

  5. [設計エラーの検出] をクリックします。

デッド ロジック解析の実行および結果の確認

この例では、sldvSlicerdemo_dead_logic モデル例でのデッド ロジックの検出方法を説明します。デッド ロジックの検出では、モデル要素が非アクティブで残される原因となる、モデル内の到達不可能なオブジェクティブを見つけます。

  1. sldvSlicerdemo_dead_logic モデルを開きます。

    openExample('slcheck/AnalyzeTheDeadLogicExample',...
    'supportingFile','sldvSlicerdemo_dead_logic');
  2. [Design Verifier] タブの [モード] セクションで、[設計エラー検出] を選択します。

  3. [エラー検出の設定] をクリックします。

  4. [コンフィギュレーション パラメーター] ダイアログ ボックスの [Design Verifier]、[設計エラー検出] ペインで、次を行います。

    1. デッド ロジック (一部)オプションを有効にします。

    2. 網羅的解析を実行オプションが選択されている場合、オフにします。

    3. 解析するカバレッジ オブジェクティブを [MCDC] に設定します。ドロップダウン メニューから選択できるオプションは、[判定]、[条件判定]、および [MCDC] です。

  5. [設計エラーの検出] をクリックします。

    デッド ロジックについてモデルが解析され、結果が [結果の概要] ウィンドウに表示されます。結果から、32 個のオブジェクティブ中 8 個がデッド ロジックであることがわかります。

  6. [解析結果をモデル上で強調表示] をクリックします。デッド ロジックのモデル要素は赤で強調表示されます。

  7. Controller subsystem を開き、赤で強調表示された OR ブロックをクリックします。結果インスペクターにはデッド ロジックの概要が表示されます。

    set 入力は 1 と等しいため、OR ブロックの input port 1 は [true のみ可能] となります。ステータスは、input port 1 の偽条件がデッド ロジックであることを示しています。同様に、オブジェクティブが実行されないため、input port 2 は unreachable であり、これはデッド ロジックです。

    Results dialog box showing results for OR block. It shows possible causes for dead logic and the dead logic occurred in the block along with the derived ranges for the block.

  8. [結果の概要] ウィンドウで [HTML] をクリックして、詳細な解析レポートを参照します。

    レポートには、モデル内でデッド ロジックとなるすべての結果の概要が表示されます。

    デッド ロジック

    Simulink Design Verifier report for dead logic in the model that shows the type of objective in one column, model item in the middle column, and description in the last column.

    詳細な解析結果は、データ ファイルの解析結果の表示と解釈の DeadLogic field に格納されます。このデータ ファイルは、結果のさらなる解析に使用できます。

提案:

次の手順を実行すると、モデル スライサーを使用して特定のブロックに影響を与える可能性のあるパラメーターを確認できます。

a. モデル スライサーを使用して SLSlicerAPI.ParameterDependence のオブジェクトを作成します。

slicerObj = slslicer('sldvSlicerdemo_dead_logic');
pd = slicerObj.parameterDependence;

b. Discrete-Time Integrator ブロックに影響を与えるパラメーターを見つけます。

param = parametersAffectingBlock(pd, 'sldvSlicerdemo_dead_logic/Controller/PI Controller/Discrete-Time Integrator');

Param variable with properties: Name, Source, SourceType, and Users.

上の図には、Discrete-Time Integrator ブロックに影響を与える関数 parametersAffectingBlock から返されたパラメーターが示されています。関数で返されるパラメーターは、調整用と考えることができます。

c. クリーンアップ操作を実行してモデルのコンパイル状態を終了します。

slicerObj.terminate;

参考

トピック