Main Content

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

デッド ロジックの検出

モデルをシミュレートする前に、デッド ロジックの検出を使用して、デッド ロジックについてモデルを解析します。Simulink® Design Verifier™ におけるデッド ロジックの設計エラー検出には、次の 2 つの解析方法があります。

  • デッド ロジック (一部):このオプションを選択した場合、Simulink Design Verifier は、浮動小数点の有理近似などの近似を行わずに、またはループの近似中にモデルを解析します。詳細については、Role of 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 個のオブジェクティブ中 10 個がデッド ロジックであることが示されています。

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

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

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

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

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

    デッド ロジック

    詳細な解析結果は、Simulink Design Verifier データ ファイルの管理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');

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

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

slicerObj.terminate;

関連するトピック