Main Content

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

非有限、NaN、および非正規の浮動小数点値の検出

モデル内に出現する非有限、NaN、および非正規の浮動小数点値を検出するには、次を行います。

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

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

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

    1. 非有限で NaN の浮動小数点値のチェック ボックスをオンにします。

    2. 非正規浮動小数点値のチェック ボックスをオンにします。

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

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

Simulink® Design Verifier™ は、非有限、NaN、および非正規の浮動小数点値の出現を検出するために、モデルを解析します。

解析が完了すると、

  • 解析結果に基づいてモデルが強調表示されます。

  • [結果の概要] ウィンドウに解析の概要が表示されます。

前提条件と制限

モデルを解析し、非有限で NaN の浮動小数点値を選択した場合、浮動小数点入力値および調整可能なパラメーター値は有限であると仮定されます。

モデルを解析し、非正規浮動小数点値を選択した場合、浮動小数点入力値および調整可能なパラメーター値は正規であると仮定されます。

倍精度浮動小数点信号を使用するモデルの解析には、単精度浮動小数点信号を使用する同様のモデルよりも時間がかかります。その結果、単精度浮動小数点信号を使用する同様のモデルの解析が完了しても、倍精度浮動小数点信号を使用するモデルはタイム アウトする可能性があります。解析のパフォーマンスを向上させるには、ルートレベルの Inport ブロックで環境の制約を再現する最小値および最大値を指定することを検討してください。

モデルに浮動小数点信号とマルチワードの固定小数点信号間のキャスト演算が含まれる場合、解析では、一部のオブジェクティブが判定できない可能性があります。

設計エラー検出解析の実行による浮動小数点エラーの検出

この例では、sldvexFloatingPointErrorChecks モデル例で非有限、NaN、および非正規の浮動小数点値を検出する方法を説明します。モデルは、エラーとなる浮動小数点の算術演算で構成されています。設計エラー検出解析を実行して、モデル内のこれらのエラーを検出します。

1.モデルを開く

このモデル例は、浮動小数点の計算を処理する Add ブロックと Divide ブロックで構成されています。設計エラー検出解析によってモデル内に出現する浮動小数点エラーが検出され、結果がレポートされます。

open_system('sldvexFloatingPointErrorChecks');

2.設計エラー検出解析の実行

モデルはあらかじめ、[非有限で NaN の浮動小数点値] および [非正規浮動小数点値] の各オプションが [オン] に設定されています。詳細については、Design Verifier ペイン: 設計エラー検出を参照してください。

設計エラー検出解析を実行するには、[Design Verifier] タブの [モード] セクションで、[設計エラー検出] を選択します。[設計エラーの検出] をクリックします。

浮動小数点エラーについてモデルが解析され、[結果の概要] ウィンドウに結果が表示されます。結果には、6 個のオブジェクティブ中 4 個が反証されたことが示されています。

3.解析結果のレビュー

a. [解析結果をモデル上で強調表示] をクリックします。浮動小数点エラーとなったモデル ブロックは赤で強調表示されます。

b. 赤で強調表示された Add ブロックをクリックします。結果インスペクターには、浮動小数点エラーとなったオブジェクティブの概要が表示されます。

c. 赤で強調表示された Division ブロックをクリックします。結果インスペクターには、浮動小数点エラーとなったオブジェクティブの概要が表示されます。

4.詳細な解析レポートの確認

[結果の概要] ウィンドウで [HTML] をクリックして、詳細な解析レポートを参照します。レポートには、モデル内に出現するすべての浮動小数点エラーの概要が表示されます。

5.クリーン アップ

この例を終了するには、モデルを閉じます。

close_system('sldvexFloatingPointErrorChecks', 0);

関連するトピック