ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

最適化ペイン: 一般

[最適化][一般] ペインには以下のパラメーターが表示されます。

最適化ペイン: [一般] タブの概要

モデルのアクティブなコンフィギュレーション セット用に最適化を設定します。最適化は、シミュレーションとコード生成の両方に対して設定されます。

ヒント

  • [最適化] ペインを開くには、Simulink® エディターで、[シミュレーション][モデル コンフィギュレーション パラメーター][最適化] を選択します。

  • Simulink Coder™ の最適化は、Simulink Coder 製品がシステムにインストールされている場合にのみ表示されます。GRT ベースまたは ERT ベースのシステム ターゲット ファイルを選択すると、利用可能なオプションが切り替わります。ERT ベースのターゲットの最適化には、コード生成時に Embedded Coder® ライセンスが必要です。各パラメーターのライセンス情報の詳細は、後述する「依存関係」のセクションを参照してください。

参考

アプリケーションのライフスパン (日)

経過時間または絶対時間に基づき、ブロックを含むアプリケーションがタイマーのオーバーフローになるまで実行できる期間 (日数) を指定します。

設定

既定の設定: inf
最小値:ゼロより大きくなければならない
最大値: inf

正 (非零) のスカラー値 (0.5 など) または inf を入力します。

Embedded Coder 製品のライセンスを与えられており、ERT ターゲットをモデルに選択している場合、[アプリケーションのライフスパン (日)] の既定値は 1 です。

エクスターナル モードでモデルを実行している場合、[MAT ファイルのログ] が有効になっている場合、または連続サンプル時間を使用している場合は、64 ビット タイマーが必要となるため、このパラメーターは無視されます。

ヒント

  • シミュレーション ステップ サイズと共にライフスパンを指定すると、絶対時間値を格納するためにブロックが使用するデータ型が決定します。

  • シミュレーションの場合は、このパラメーターをシミュレーション時間より大きい値に設定することにより、時間のオーバーフローを確実に防ぐことができます。

  • Simulink ソフトウェアは、このパラメーターをまずモデルのワークスペースと照合して評価します。これでパラメーターを解決できない場合は、次にベース ワークスペースに対する照合が行われます。

  • アプリケーションのライフスパンは、生成されたコードでタイマーによって使用されるワード サイズも決定するため、RAM の使用量を削減できる可能性があります。詳細については、Simulink Coder ドキュメンテーションの「時間カウンターに対するメモリの割り当ての制御」を参照してください。

  • アプリケーションのライフスパンを各タスクのステップ サイズと組み合わせると、各タスクの整数絶対時間に使用されるデータ型が次のように決まります。

    • モデルに絶対時間が必要とならない場合、このオプションはシミュレーションと生成コードのいずれにも影響しません。

    • モデルに絶対時間が必要な場合、このオプションは、生成コードに整数絶対時間を格納するために使用されるワード サイズを最適化します。これにより、指定したライフスパン内でタイマーがオーバーフローするのを防ぐことができます。[アプリケーションのライフスパン][inf] に設定した場合は、uint32 の単語が 2 つ使用されます。

    • 絶対時間を必要とする固定小数点ブロックがモデルに含まれている場合、このオプションはシミュレーションと生成コードの両方に影響します。

    たとえば、64 ビットを使用してタイミング データを格納すると、ステップ サイズが 0.001 マイクロ秒 (10E-09 秒) のモデルを 500 年を超えて実行できるようになります (これが必要となることはめったにありません)。ステップ サイズが 1 ミリ秒 (0.001 秒) のモデルを 1 日実行するには、32 ビット タイマーが必要です (49 日間続けて実行することが可能です)。

  • inf を指定した場合は、64 ビットのメモリがタイマーによって割り当てられます。

  • タイマー カウンターによって使用される RAM の量を最小限に抑えるには、ライフスパンを必要以上に長く設定しないでください。

  • コード生成の場合は、親モデルと参照モデルが同じでなければなりません。シミュレーションの場合は、この設定が親モデルと参照モデルを別個にすることもできます。

  • 絶対時間と経過時間を計算するために使用されるカウンターのサイズを最適化します。

コマンド ライン情報

パラメーター: LifeSpan
タイプ: 文字列
値: 正 (非零) のスカラー値または inf
既定の設定: 'inf'

推奨設定

アプリケーション設定
デバッグ影響なし
トレーサビリティ影響なし
効率性有限値
安全対策inf

参考

固定小数点の正味勾配計算に除算を使用

Fixed-Point Designer™ ソフトウェアは、単純で正確な条件を満たす場合、正味勾配を扱うために除算を使って正味勾配計算を実行します。

設定

既定の設定: オフ

オフ

整数乗算とそれに続くシフトを使って正味勾配計算を実行します。

オン

正味勾配の有理近似を使って正味勾配計算を実行します。これは、単純で正確な条件を満たす場合、整数乗算および/または除算になります。

整数の逆数の場合にのみ除算を使用

正味勾配が整数の逆数で表現され、単純で正確な条件を満たす場合、除算を使って正味勾配計算を実行します。

ヒント

  • この最適化は、シミュレーションとコード生成の両方に影響します。

  • 固定小数点勾配の変化量が 2 のべき乗でない場合は、正味勾配計算が必要です。通常、正味勾配計算には、整数乗算とそれに続くシフトが使用されます。この新しい最適化を有効にすると、特定の単純で正確な条件下で、乗算とシフトが整数除算または整数乗算と除算に置き換えられます。

  • 除算を使った正味勾配計算が、乗算とそれに続くシフトを使用した正味勾配計算よりも常に効率的であるわけではありません。ターゲット ハードウェアが効率的な除算に対応していることを確認してください。

  • この最適化が確実に行われるようにするには、次の手順に従います。

    • ターゲット ハードウェアの long データ型を使用して除算を実行できるように、ブロックの語長を設定します。この設定により、マルチワード処理が使用されません。

    • [ハードウェア実行] ペインの [符号付き整数の除算の丸め] コンフィギュレーション パラメーターを [ゼロ方向] または [負方向] に設定します。このパラメーターを [未定義] に設定すると、最適化が行われません。

    • ブロックの [整数丸めモード] パラメーターを [シンプルな丸め] に設定するか、[ハードウェア実行] ペインの [符号付き整数の除算の丸め] コンフィギュレーション パラメーターの設定値に設定します。

依存関係

このパラメーターには Fixed-Point Designer のライセンスが必要です。

コマンド ライン情報

パラメーター: UseDivisionForNetSlopeComputation
タイプ: 文字列
値: 'off' | 'on' | 'UseDivisionForReciprocalsOfIntegersOnly'
既定の設定: 'off'

推奨設定

アプリケーション設定
デバッグ影響なし
トレーサビリティ影響なし
効率性オン (ターゲット ハードウェアが効率的な除算に対応している場合)
オフ (対応していない場合)
安全対策影響なし

参考

浮動小数点の乗算を使用して勾配設定を補正します

Fixed-Point Designer ソフトウェアでは、浮動小数点の乗算を使用して、浮動小数点から固定小数点へのキャストの正味勾配補正を実行します。

設定

既定の設定: オフ

オン

浮動小数点乗算を使用して、浮動小数点から固定小数点間のキャストへの正味勾配補正を実行します。

オフ

除算を使用して、浮動小数点から固定小数点へのキャストの正味勾配補正を実行します。

ヒント

  • この最適化は、シミュレーションとコード生成の両方に影響します。

  • 浮動小数点から固定小数点への変換の際、正味勾配が 2 のべき乗でない場合は、除算を使用した勾配補正によって精度が向上します。一部のプロセッサについては、乗算を使用するとコード効率が改善します。

依存関係

  • このパラメーターには Fixed-Point Designer のライセンスが必要です。

コマンド ライン情報

パラメーター: UseFloatMulNetSlope
タイプ: 文字列
値: 'on' | 'off'
既定の設定: 'off'

推奨設定

アプリケーション設定
デバッグ影響なし
トレーサビリティ影響なし
効率性オン (ターゲット ハードウェアが効率的な乗算に対応している場合)
オフ (対応していない場合)
安全対策非推奨

参考

指定不足のデータ型の既定値

データ型の伝播時に信号のデータ型を Simulink ソフトウェアによって推測できなかった場合に継承されたデータ型で使用する既定のデータ型を指定します。

設定

既定の設定: double

double

データ型の伝播中に指定不足のデータ型のデータ型を double に設定します。Simulink は double を継承されたデータ型のデータ型として使用します。

single

データ型の伝播中に指定不足のデータ型のデータ型を single に設定します。Simulink は single を継承されたデータ型のデータ型として使用します。

ヒント

  • この設定は、シミュレーションとコード生成の両方に影響します。

  • 単精度プロセッサをターゲットとする組み込み設計では、このパラメーターを single に設定して、double データ型が使用されるのを回避できます。

  • モデル アドバイザーの [厳密な単精度の設計に対して問題のある演算を特定] チェックを使用して、モデルの倍精度の使用方法を特定します。

コマンド ライン情報

パラメーター: DefaultUnderspecifiedDataType
タイプ: 文字列
値: 'double' | 'single'
既定の設定: 'double'

推奨設定

アプリケーション設定
デバッグ影響なし
トレーサビリティ影響なし
効率性single (ターゲット ハードウェアが効率的な single の計算に対応している場合)
double (対応していない場合)
安全対策影響なし

参考

指定した最小値と最大値を使用した最適化

モデル内の信号とパラメーターに指定された最大値と最小値を使用して、生成されたコードを最適化します。

設定

既定の設定: オフ

オン

モデル内の信号とパラメーターに指定された最大値と最小値から範囲情報を取得し、それに基づいて生成コードを最適化します。

オフ

指定された最小値と最大値をコード生成時に無視します。

ヒント

  • コードを生成する前に指定された値をテストしておきます。これを行うには、[診断][データ有効性][シミュレーション範囲のチェック] コンフィギュレーション パラメーターを使用してシミュレーション範囲のチェックを有効にした状態で、モデルをシミュレーションします。エラーまたは警告が発生した場合は、問題を解決してからコードを生成します。そうしないと、最適化の際に数値がシミュレーションと合わなくなる可能性があります。

  • モデル内の以下の信号とパラメーターの最小値と最大値を指定します。

    • Inport ブロックと Outport ブロック。

    • ブロック出力。

    • ブロック入力。たとえば、 MATLAB Function ブロック、および Stateflow Chart ブロックの入力。

    • Simulink.Signal オブジェクト。

  • この最適化では以下の最小値と最大値は考慮されません。

    • Merge ブロック入力。この問題に対処するには、Merge ブロックの出力に対して Simulink.Signal オブジェクトを使用して、このオブジェクトに範囲を指定します。

    • バス要素。

    • 条件付き実行サブシステム (Triggered Subsystem など) のブロック出力で、Outport ブロックに直接接続されます。

      条件付き実行サブシステムの Outport ブロックは、システムがトリガーされない場合にのみの使用に指定された初期値をもつことができます。その場合、ブロックの初期値をカバーしない可能性があるため、ブロック出力の範囲は最適化で使用されません。

  • この最適化を使用して生成されたコードを検証するために Polyspace® Code Prover™ ソフトウェアを使用する場合は、以前は緑であったコードがオレンジでマークされる可能性があります。たとえば、分母係数の範囲にゼロが含まれていない除算を使うモデルでは、ゼロ除算を防ぐための処理が生成コードに適用されません。Polyspace Code Prover では、除算に対する入力に指定された最小値と最大値に関する情報がないため、このコードがオレンジとしてマークされる可能性があります。

    Polyspace Code Prover ソフトウェアは、Simulink.Signal オブジェクトや Simulink.Parameter オブジェクトの値など、MATLAB® ワークスペースで指定された一部の最小値と最大値を自動的に取り込みます。この例では、Polyspace Code Prover ソフトウェアに範囲情報を提供するため、除算の入力に対して Simulink.Signal オブジェクトを使用し、ゼロが含まれていない範囲を指定します。

    Polyspace Code Prover ソフトウェアは、これらの値をデータ範囲指定 (DRS) ファイルに格納します。ただし、Simulink モデルで指定された最小値と最大値がすべて取り込まれるわけではありません。DRS ファイルを手動で定義すると、追加の最小値/最大値情報を Polyspace Code Prover に提供できます。詳細は、Polyspace Code Prover ドキュメンテーションを参照してください。

  • 倍精度データ型を使用しており、[コード生成] [インターフェイス] [サポート: 非有限数] コンフィギュレーション パラメーターが選択されている場合、この最適化は行われません。

  • モデルに複数のインスタンスの再利用可能なサブシステムが含まれ、各インスタンスで使用される入力信号にそれぞれ異なる最小値と最大値が指定されている場合は、この最適化によってサブシステムごとに異なるコードが生成され、コードが再利用されないことがあります。この最適化を行わない場合、Simulink Coder ソフトウェアはサブシステムのコードを一度だけ生成し、そのコードをサブシステムの複数インスタンス間で共有します。

  • モデル アドバイザーの [安全性関連の最適化設定をチェックする] チェックは、このオプションが選択されている場合に警告を生成します。多くのセーフティ クリティカルなアプリケーションでは、デッド コードを自動的に削除することが許可されていないのが一般的です。これは、トレース可能なコードのない要求事項が生じるのを防ぐためです。詳細は、「安全性関連の最適化設定をチェックする」を参照してください。

  • この最適化を有効にすると、不要なユーティリティ関数と飽和コードを生成コードから除去する点において Fixed-Point Designer ソフトウェアの機能が向上します。

依存関係

  • このパラメーターは ERT ベースのターゲットの場合にのみ表示されます。

  • このパラメーターには、コード生成時に Embedded Coder のライセンスが必要です。

コマンド ライン情報

パラメーター: UseSpecifiedMinMax
タイプ: 文字列
値: 'on' | 'off'
既定の設定: 'off'

推奨設定

アプリケーション設定
デバッグオフ
トレーサビリティオフ
効率性オン
安全対策非推奨

参考

内部データの 0 の初期化を削除

ゼロに設定されたルート レベル Inport と Outport の初期化コードを生成するかどうかを指定します。

設定

既定の設定: オフ (GUI)、'on' (コマンド ライン)

オン

ゼロに設定されたルート レベル Inport と Outport の初期化コードを生成しません。

オフ

すべてのルート レベル Inport と Outport の初期化コードを生成します。既定の設定を使用するには、

  • C MEX S-Function ラッパーに割り当てられたメモリをゼロに初期化します。

  • すべての内部および外部データをゼロに初期化します。

    メモ:   コンフィギュレーション パラメーターの設定に関係なく、生成されたコードは、ImportedExtern ストレージ クラスまたは ImportedExternPointer ストレージ クラスのデータを初期化しません。

依存関係

  • このパラメーターは ERT ベースのターゲットの場合にのみ表示されます。

  • このパラメーターには、コード生成時に Embedded Coder のライセンスが必要です。

コマンド ライン情報

パラメーター: ZeroExternalMemoryAtStartup
タイプ: 文字列
値: 'off' | 'on'
既定の設定: 'on'

    メモ:   コマンド ラインの値は、設定値の逆です。したがって、コマンド ラインの 'on' は「設定」の節の [オフ] の説明に相当し、コマンド ラインの 'off' は「設定」の節の [オン] の説明に相当します。

推奨設定

アプリケーション設定
デバッグ影響なし
トレーサビリティ影響なし
効率性オン (GUI)、off (コマンド ライン) (実行、ROM)、影響なし (RAM)
安全対策オフ (GUI)、on (コマンド ライン)

参考

内部データの 0 の初期化を削除

ブロック状態やブロック出力などの内部の作業構造体の初期化コードをゼロとして生成するかどうかを指定します。

設定

既定の設定: オフ (GUI)、'on' (コマンド ライン)

オン

内部の作業構造体をゼロに初期化するコードを生成しません。このパラメーターは、ウォーム ブート (完全なシステム再初期化を伴わない再起動) 時の設計の動作をテストする場合などに選択します。

このパラメーターを選択しても、生成コードによって実行が開始されるたびにメモリが既知の状態になることが保証されるわけではありません。モデルまたは生成された S-Function を 2 回以上実行すると、モデル初期化関数を呼び出してメモリのリセットを試みた場合でも、実行のたびに異なる解が生成されます。

生成された S-Function から実行のたびに同じ解を取得するには、実行する前に MATLAB のコマンド ウィンドウでコマンド clear SFcnNam または clear mex を入力してください。

オフ

内部の作業構造体をゼロに初期化するコードを生成します。次の場合は既定の設定を使用する必要があります。

  • C MEX S-Function ラッパーに割り当てられたメモリをゼロに初期化する必要がある場合

  • 内部と外部のすべてのデータをゼロに初期化する必要があるセーフティ クリティカルなアプリケーションの場合

依存関係

  • このパラメーターは ERT ベースのターゲットの場合にのみ表示されます。

  • このパラメーターには、コード生成時に Embedded Coder のライセンスが必要です。

コマンド ライン情報

パラメーター: ZeroInternalMemoryAtStartup
タイプ: 文字列
値: 'off' | 'on'
既定の設定: 'on'

    メモ:   コマンド ラインの値は、設定値の逆です。したがって、コマンド ラインの 'on' は「設定」の節の [オフ] の説明に相当し、コマンド ラインの 'off' は「設定」の節の [オン] の説明に相当します。

推奨設定

アプリケーション設定
デバッグ影響なし
トレーサビリティ影響なし
効率性オン (GUI)、off (コマンド ライン)、(実行、ROM)、影響なし (RAM)
安全対策オフ (GUI)、on (コマンド ライン)

参考

モデル参照用の初期化コードを最適化

状態をもつブロックの初期化コードを生成するかどうかを指定します。

設定

既定の設定: オン

オン

状態をもつブロックが状態を自動的にリセットできるシステム (Enabled サブシステムなど) に含まれている場合を除き、これらのブロックの初期化コードの生成を抑制します。このオプションを選択すると、コードが効率化します。

オフ

状態をもつすべてのブロックの初期化コードを生成します。状態を自動的にリセットするサブシステム (Enabled サブシステムなど) に現在のモデルが含まれている場合は、このオプションを無効にしてください。現在のモデルは、Model ブロック内の別のブロックから参照されます。

ヒント

[モデル参照用の初期化コードを最適化] パラメーターの使用には次の制約が適用されます。ただし、関数呼び出しモデルを参照する Model ブロックには適用されません。

  • 状態を自動的にリセットするサブシステムには、このパラメーターが on に設定されたモデルを参照している Model ブロックを含めないでください。たとえば、[イネーブル時の状態] ブロック パラメーターが reset に設定されている Enabled サブシステムには、[モデル参照用の初期化コードを最適化] パラメーターが on に設定されたモデルを参照している Model ブロックを含めないでください。

  • モデルを直接的に参照している Model ブロックが含まれたモデルで [モデル参照用の初期化コードを最適化] パラメーターを off に設定した場合は、参照モデルの [モデル参照用の初期化コードを最適化] パラメーターを on に設定しないでください。

依存関係

  • このパラメーターは ERT ベースのターゲットの場合にのみ表示されます。

  • このパラメーターには、コード生成時に Embedded Coder のライセンスが必要です。

コマンド ライン情報

パラメーター: OptimizeModelRefInitCode
タイプ: 文字列
値: 'on' | 'off'
既定の設定: 'on'

推奨設定

アプリケーション設定
デバッグ影響なし
トレーサビリティ影響なし
効率性オン (実行、ROM)、影響なし (RAM)
安全対策影響なし

参考

浮動小数点から範囲外の値を含む整数変換へのコードを削除

整数変換結果への範囲外の浮動小数点を処理するラッピング コードを削除します。

設定

既定の設定: オフ

オン

範囲外変換が起きた場合にコードを削除します。コードの効率性がアプリケーションにとって重要であり、次の条件がモデル内の少なくとも 1 つのブロックに当てはまる場合は、このチェック ボックスをオンにしてください。

  • ブロックの出力またはパラメーターを計算するために、浮動小数点データを整数データまたは固定小数点データに変換する必要がある。

  • [ブロック パラメーター] ダイアログ ボックスの [整数オーバーフローで飽和] チェック ボックスが選択解除されている。

    注意:   生成されたコードを実行しても、シミュレーションと同じ結果が得られるとは限りません。

オフ

範囲外変換が起きたときに、生成されたコードのシミュレーションと実行の結果が一致します。このチェック ボックスをオンにすると、生成されたコードのサイズが大きくなります。

ヒント

  • このチェック ボックスをオンにすると、生成されたコードのサイズが縮小し、処理が高速化しますが、範囲外の値がある場合の結果がシミュレーションと一致しなくなる可能性があります。

  • このチェック ボックスをオンにしても、影響を受けるのは範囲外の値のコード生成結果だけであり、範囲内の値のコード生成結果がシミュレーションの結果と異なることはありません。

依存関係

このパラメーターには Simulink Coder のライセンスが必要です。

コマンド ライン情報

パラメーター: EfficientFloat2IntCast
タイプ: 文字列
値: 'on' | 'off'
既定の設定: 'off'

推奨設定

アプリケーション設定
デバッグオフ
トレーサビリティオフ
効率性オン (実行、ROM)、影響なし (RAM)
安全対策非推奨

参考

除算演算の例外処理に対して保護されたコードの削除

整数データおよび固定小数点データのゼロ除算および INT_MIN/-1 演算を防ぐコードを生成するかどうかを指定します。

除算演算の例外処理の詳細については、「Division Arithmetic Exceptions in Generated Code」を参照してください。

設定

既定の設定: オン

オン

整数データおよび固定小数点データのゼロ除算および INT_MIN/-1 演算を防ぐコードを生成しません。シミュレーション結果と生成されたコードの結果の間のビットトゥルーを一致させたままにするには、商をそのデータ型で表すことができないゼロ除算または INT_MIN/-1 演算がモデルで一切発生しないことを確認します。

オフ

整数データおよび固定小数点データのゼロ除算および INT_MIN/-1 演算を防ぐコードを生成します。

依存関係

  • このパラメーターは ERT ベースのターゲットの場合にのみ表示されます。

  • このパラメーターには、コード生成時に Embedded Coder のライセンスが必要です。

コマンド ライン情報

パラメーター: NoFixptDivByZeroProtection
タイプ: 文字列
値: 'on' | 'off'
既定の設定: 'on'

推奨設定

アプリケーション設定
デバッグ影響なし
トレーサビリティ影響なし
効率性オン
安全対策オフ

参考

この情報は役に立ちましたか?