Main Content

コード生成の仮定のチェック

コード ジェネレーターは、モデルのハードウェア実装設定などに依存する仮定を実装します。仮定がターゲット ハードウェアに対して有効であることをチェックすることが重要です。関数 buildStandaloneCoderAssumptions を使用して、ターゲット ハードウェアで仮定のチェックを実行するアプリケーションを作成します。

モデルを構成する場合は、ターゲット ハードウェアに一致するハードウェア実装とビルド構成設定を指定してください。次に、ターゲット ハードウェアに対するコード ジェネレーターの仮定をチェックするには、次のワークフローを使用します。

  1. GenerateReport'on' に設定して、モデルをビルド (Ctrl+B) します。

  2. チェックできるコード ジェネレーターの仮定のリストを表示するには、コード生成レポートを開き、[Coder Assumptions] リンクをクリックします。

    詳細については、コーダー仮定リストを参照してください。

  3. buildStandaloneCoderAssumptions を実行します。これにより、ビルド フォルダーで生成されたコードを使用して、コード生成の仮定のチェックを実行するアプリケーションが作成されます。

  4. アプリケーションをターゲット ハードウェアまたはターゲット環境にダウンロードしてから、アプリケーションを実行します。

  5. アプリケーションを実行中に、デバッグ ツールを使用して、データ構造体内のチェック結果を表示します。

開発用コンピューターに対するコード ジェネレーターの仮定のチェック

ターゲット ハードウェアが、たとえば Windows® 開発用コンピューターである場合は、Microsoft® Visual Studio® を使用してアプリケーションを実行およびデバッグできます。

  1. モデルを開くには、コマンド ウィンドウで次のように入力します。

    openExample('ecoder/SILPILVerificationExample', ...
                 supportingFile='SILTopModel.slx')

  2. [モデル コンフィギュレーション パラメーター] ダイアログ ボックスの [ハードウェア実行] ペインで、ターゲット ハードウェアに合う設定を指定します。たとえば、64 ビットの Windows コンピューターでは、以下のパラメーター設定を指定します。

    • デバイス ベンダー –– Intel

    • デバイス タイプ –– x86-64 (Windows 64)

  3. モデル コンフィギュレーション パラメーター [移植可能なワード サイズを有効にする] をオフにします。

  4. モデルをビルド (Ctrl+B) します。

  5. コード ジェネレーターの仮定のリストを表示するには、コード生成レポートを開き、[コード生成の前提] リンクをクリックします。

  6. コマンド ウィンドウから、作業フォルダーで、以下を実行します。

    buildStandaloneCoderAssumptions('SILTopModel_ert_rtw')
    ビルド フォルダーには、関数によって、ターゲット アプリケーション SILTopModel_ca を含む coderassumptions\standalone サブフォルダーが作成されます。

  7. Microsoft Visual Studio を開き、[ファイル][開く][プロジェクト/ソリューション] を選択します。

  8. [プロジェクトを開く] ダイアログ ボックスで、coderassumptions\standalone サブフォルダーに移動し、SILTopModel_ca を選択します。次に、[開く] をクリックします。

  9. [ファイル][開く][ファイル] を選択します。[ファイルを開く] ダイアログ ボックスを使用して、coderassumptions\standalone\SILTopModel_ca.c を選択します。

  10. return ステートメントに、ブレークポイントを挿入します。

  11. [デバッグ][Start Debugging] を選択します。

  12. コード ジェネレーターの仮定を検証するには、監視ウィンドウを使用して Results データ構造体を検証します。

    1. SILTopModel_ca.c コードで、Results を右クリックします。

    2. コンテキスト メニューから [Add Watch] を選択します。

データ構造体の変数には次が含まれます。

  • チェックの結果 (TestResults)

  • ターゲット ハードウェアの真理値 (ActualValues)

  • コード ジェネレーターの仮定 (ExpectedValues)

たとえば、bitsPerChar のコード ジェネレーターの仮定が正確な場合、変数 statusCA_PASS 値が表示されます。

コーダー仮定リスト

コード生成レポートの目次セクションには、[Coder Assumptions] ページへのリンクがあります。このページには、以下のリストがあります。

  • チェックできるコード生成の仮定

  • 予想された仮定チェックの結果

以下の表はリストに表示されるラベルの説明です。

カテゴリラベルチェックできる仮定
ターゲット ハードウェアまたは開発用コンピューターの C/C++ 言語構成

BitPerChar

char あたりのビット数 (ProdBitPerChar)

BitPerShort

short あたりのビット数 (ProdBitPerShort)

BitPerInt

int あたりのビット数 (ProdBitPerInt)

BitPerLong

long あたりのビット数 (ProdBitPerLong)

BitPerFloat

float のサイズ (PurelyIntegerCode 'off' の場合のみ)

BitPerDouble

double のサイズ (PurelyIntegerCode‘off’ の場合のみ)

BitPerPointer

pointer あたりのビット数 (ProdBitPerPointer)

BitPerSizeT

size_t あたりのビット数 (ProdBitPerSizeT)

BitPerPtrDiffT

ptrdiff_t あたりのビット数 (ProdBitPerPtrDiffT)

Endianess

バイト順 (ProdEndianess)

Shift right for signed integer is arithmetic shift

符号ビットの動作 (ProdShiftRightIntArith)

Signed integer division rounds to

整数除算の丸め動作 (ProdIntDivRoundTo)

C/C++ 言語規格

Initial value of a global integer variable and dynamically allocated memory is zero

メモリのゼロ初期化 (ZeroExternalMemoryAtStartupZeroInternalMemoryAtStartup、および GenerateAllocFcn)

浮動小数点数

Flush-to-zero computed subnormal values (FTZ)

flush-to-zero 非正規数処理

Flush-to-zero incoming subnormal values (DAZ)

denormals-are-zero 非正規数処理

参考

関連するトピック