Main Content

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

モデル スライサーを使用した整数オーバーフロー設計エラー検出のデバッグ

この例では、モデル スライサーを使用して、Simulink® モデルで整数オーバーフロー設計エラーをデバッグする方法を説明します。

必要条件

この例では、次の製品を使用して、設計エラー検出違反のデバッグを説明します。

  • Simulink Design Verifier™

  • Simulink Check™ (モデル スライサー)

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

open_system('sldvdemo_design_error_detection');

2.[アプリ][Design Verifier] をクリックして、Simulink Design Verifier を開きます。

3.[Design Verifier] タブで [設計エラーの検出] をクリックします。Simulink Design Verifier はモデルを解析し、[結果の概要] ウィンドウに結果を表示します。

モデルで、不合格となったオブジェクティブがあるサブシステムが強調表示されます。

4.Controller サブシステムを開き、赤色で強調表示されたブロックのいずれかを選択します。

5.[結果] ウィンドウで、[デバッグ] をクリックして、モデル スライサーを使用して違反をデバッグします。または、[Design Verifier] タブで [結果の確認][スライサーを使用したデバッグ] をクリックして、モデル スライサーを使用して違反をデバッグします。

いずれかのエントリ ポイントをデバッグのためクリックすると、モデルに対して以下のセットアップが実行されます。

  • 選択された不合格のオブジェクティブのあるブロックが、モデル スライサーの開始点として追加されます。

  • 不合格となるオブジェクティブの原因となっているスライスについて、モデルが強調表示されます。

  • 設計モデルがシミュレートされ、違反の時点で一時停止します。

6.端子ラベルを検査して、モデルをデバッグし解析します。

ヒント:Sum ブロックの出力信号線をクリックして、ブロックの端子の値のラベルを有効にします。

入力変数の合計が結果として非ゼロの数になることが観察できます。

7.Sum ブロックの入力と出力のデータ型を調べます。

ここで、データ型変換の結果、整数オーバーフローが生じています。入力のデータ型は ufix16_En8 で、最大値は 255.9961 です。一方、出力ブロックのデータ型は sfix16_En8 で、最大値は 127.9961 です。反例では、値はこれら 2 つの値の間です。オーバーフローは、Sum ブロック (飽和なし) が最初に入力値をその出力型にキャストした後、算術演算を実行したときに発生します。

検証

整数オーバーフローが解決されたことを確認するには、[Design Verifier] タブで [設計エラーの検出] をクリックします。解析の完了後に、すべてのオブジェクティブが有効であることがレポートされます。

追加の機能

この例で示しているワークフローを使用して、モデル スライサーを使用して他の設計エラー検出違反をデバッグできます。サポートされている設計エラーを次に示します。

  • ゼロ除算

  • 整数のオーバーフロー

  • 非有限で NaN (非数値) の浮動小数点値

  • 指定された最小値と最大値の違反

  • データストアのアクセス違反

  • 指定したブロック入力範囲違反