Main Content

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

Embedded Coder のチェック

Embedded Coder のチェックの概要

コード生成用にモデルを構成するには、Embedded Coder® のモデル アドバイザー チェックを使用します。

参考

C/C++ 量産コード展開に推奨されないブロックがないかチェック

チェック ID: mathworks.codegen.PCGSupport

コード生成でサポートされていないか、C/C++ 量産コード展開に推奨されないブロックを特定します。

説明

このチェックで、C/C++ 量産コード生成に適していないモデル構成を部分的に特定します。Simulink® Coder™ および Embedded Coder の場合、Simulink ブロック サポートのテーブルにこのようなモデル構成の情報が示されています。

一部のインスタンスでは、このチェックはコード生成でサポートされているブロックにフラグを付けます。これらのブロックについては、サポート メモで提供される脚注情報を確認し、モデル アドバイザーで提供される推奨アクションに従う必要があります。

このチェックの推奨事項に従うと、CERT C 標準、CWE 標準、ISO/IEC TS 17961 標準に準拠するコードが生成される可能性が高くなります。

Embedded Coder および Simulink Check™ で使用できます。

結果と推奨アクション

条件推奨アクション
モデルまたはサブシステムに量産コード展開に使用されるべきではないブロックが含まれている。結果にリストされるブロックを置き換えることを検討してください。状態を特定するには、問題のある項目のリストの要素をクリックします。
モデルまたはサブシステムに量産コード生成でサポートされるが推奨されないブロックが含まれている。サポート メモを確認し、モデル アドバイザーで提供される推奨アクションに従います。

機能および制限事項

次のことが可能です。

  • このチェックはライブラリ モデルで実行できます。

  • ライブラリにリンクされたブロックの内容を解析します。

  • マスク サブシステムの内容を解析します。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートを除外できます。

編集時チェック

このチェックは編集時チェックでサポートされます。

参考

非効率的な飽和コードを生成するコンフィギュレーション パラメーターをチェック

チェック ID: mathworks.codegen.EfficientTunableParamExpr

コードの効率を向上させることができる最適化設定のモデル コンフィギュレーションをチェックします。

説明

このチェックで、C/C++ 量産コード生成に推奨されるモデル コンフィギュレーション パラメーターを特定します。Embedded Coder では、これらのモデル コンフィギュレーション パラメーターによってコード効率が向上します。

Embedded Coder で使用できます。

結果と推奨アクション

条件推奨アクション
最適化によって、選択した調整可能なパラメーター式の整数オーバーフローを防止するコード生成が抑制される。飽和コードの除去を選択する。Embedded Coder を保有し、ERT ベースのシステム ターゲット ファイルを使用している場合、コンフィギュレーション パラメーターRemove Code from Tunable Parameter Expressions That Saturate Out-of-Range Valuesを選択するか、パラメーター EfficientTunableParamExpron に設定します。
最適化によって、NaN 値に対して浮動小数点から整数への変換結果を処理するコード生成が抑制される。変換コードの除去を選択する。Embedded Coder を保有し、ERT ベースのシステム ターゲット ファイルを使用している場合、コンフィギュレーション パラメーター浮動小数点から整数への変換で NaN が 0 にマッピングされて飽和したコードを削除を選択するか、パラメーター EfficientMapNaN2IntZeroon に設定します。

アクション結果

[設定の変更] をクリックすると、コード生成の効率に影響を与える可能性があるモデル最適化設定が構成されます。次の場合は安全上の懸念はありません。

  • [調整可能なパラメーター式から範囲外の値を飽和させるコードを削除] パラメーター。調整可能な式の項であるパラメーターに対して、シミュレーションに全範囲の値が含まれるが、Simulink は飽和に関する警告を生成しない場合。

  • [浮動小数点から整数への変換で NaN が 0 にマッピングされて飽和したコードを削除] パラメーター。モデル シミュレーションに NaN 入力値が含まれていない場合。

機能および制限事項

  • ライブラリ モデルでは実行されません。

  • ブロックまたはチャートの対象外指定は許可されません。

参考

計算量が多い範囲外のチェック コードを生成する Lookup Table ブロックを識別

チェック ID: mathworks.codegen.LUTRangeCheckCode

ブレークポイントまたはインデックス値に対する範囲外の入力を防止するコードを生成する Lookup Table ブロックを特定します。

説明

このチェックにより、有効なブレークポイント値の範囲外になる入力を防止するコードが次のブロックで生成されないことが検証されます。

また、このチェックにより、有効なインデックス値の範囲外になる入力を防止するコードが Interpolation Using Prelookup ブロックで生成されないことも検証されます。

推奨アクションに従うことで、生成コードの実行効率性と ROM 効率性の両方が向上します。

Embedded Coder で使用できます。

結果と推奨アクション

条件推奨アクション

Lookup Table ブロックが範囲外のチェック コードを生成する。

ブロック ダイアログ ボックスの設定を変更し、範囲外のチェック コードが生成されないようにします。

  • 1-D Lookup Table ブロック、2-D Lookup Table ブロック、n-D Lookup Table ブロック、Direct Lookup Table ブロック、Prelookup ブロックの場合、[生成コードの範囲外入力に対する保護を削除する] のチェック ボックスをオンにします。

  • Interpolation Using Prelookup ブロックの場合、[生成コードの範囲外インデックスに対する保護を削除] のチェック ボックスをオンにします。

機能および制限事項

次のことが可能です。

  • このチェックはライブラリ モデルで実行できます。

  • AUTOSAR 用には使用できません。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

アクション結果

[変更] をクリックすると、Lookup Table ブロックで範囲外のチェック コードが生成されなくなり、生成コードが効率的になります。

編集時チェック

このチェックは編集時チェックでサポートされます。

参考

論理ブロックの出力タイプをチェック

チェック ID: mathworks.codegen.LogicBlockUseNonBooleanOutput

出力データ型に boolean を使用しない論理ブロックを特定します。

説明

このチェックにより、次のブロックの出力データ型が boolean であることが検証されます。

  • Compare To Constant

  • Compare To Zero

  • Detect Change

  • Detect Decrease

  • Detect Fall Negative

  • Detect Fall Nonpositive

  • Detect Increase

  • Detect Rise Nonnegative

  • Detect Rise Positive

  • Interval Test

  • Interval Test Dynamic

  • Logical Operator

  • Relational Operator

出力データ型に boolean を使用すると生成コードの実行効率性が向上します。

Embedded Coder で使用できます。

結果と推奨アクション

条件推奨アクション
論理ブロックの出力データ型が boolean でない。 ブロックのダイアログ ボックスで、[出力データ型]boolean に設定します。

機能および制限事項

次のことが可能です。

  • このチェックはライブラリ モデルで実行できます。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

参考

アクション結果

[変更] をクリックすると、論理ブロックで boolean が出力データ型として使用されるようになります。論理ブロックで出力型に uint8 が使用される場合、[変更] をクリックすると出力型が boolean に変更されます。

ハードウェア実行をチェック

チェック ID: mathworks.codegen.HWImplementation

不整合があるか、条件が不足しているハードウェア実行設定を特定します。

説明

Simulink および Simulink Coder ソフトウェアには、ターゲットの仕様が 2 セット必要です。1 つ目のセットは最終的な目的の量産ターゲットを記述します。2 つ目のセットは現在選択中のターゲットを記述します。この構成が一致しないと、コード ジェネレーターは量産ターゲットの動作をエミュレートするために追加のコードを作成します。ハードウェア属性の不整合または指定不足は、ターゲット ハードウェアのコード生成が非効率または不適切になる原因となる可能性があります。

Embedded Coder で使用できます。

結果と推奨アクション

条件推奨アクション
ハードウェア実行パラメーターが推奨値に設定されていない。

[コンフィギュレーション パラメーター] ダイアログ ボックスの [ハードウェア実行] ペインで、次のパラメーターを指定します。

  • バイト順 (ProdEndianess)

  • 製品ハードウェアの符号付き整数の除算の丸め (ProdIntDivRoundTo)

[コンフィギュレーション パラメーター] ダイアログ ボックスで、次のパラメーターを指定します。

  • テスト ハードウェアでのバイト順 (TargetEndianess)

  • テスト ハードウェアの符号付き整数の除算の丸め (TargetIntDivRoundTo)

ハードウェア実行の [製品ハードウェア] 設定が [テスト ハードウェア] 設定と一致しない。[コンフィギュレーション パラメーター] ダイアログ ボックスで、[テスト ハードウェアを製品ハードウェアと同じにする] (ProdEqTarget) チェック ボックスをオンにすることを検討するか、一致するように設定を変更します。

参考

ターゲット プラットフォーム デバイスのカスタマイズ

問題のあるソフトウェア環境仕様を特定

チェック ID: mathworks.codegen.SWEnvironmentSpec

問題のあるソフトウェア環境設定を特定します。

説明

  • いくつかのソフトウェア環境設定に対するサポートは、非効率なコード生成や最適でない結果につながる場合があります。

  • ISO® や MISRA™ のような C の業界標準規格は、識別子が最初の 31 文字以内で一意であることを要求しています。

  • 弱い Simulink I/O データ型の Stateflow® チャートは非効率なコードにつながります。

Embedded Coder で使用できます。

結果と推奨アクション

条件推奨アクション
識別子の最大の長さが C の業界標準規格に準拠していない。[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成][識別子] ペインで、[識別子の最大の長さ] パラメーターを 31 文字に設定します。
[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成][インターフェイス] ペインのパラメーターが推奨値に設定されていない。

[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成][インターフェイス] ペインで、次のパラメーターをオフにします。

  • サポート: 連続時間

  • サポート: 非有限数

[コンフィギュレーション パラメーター] ダイアログ ボックスで、[インラインでない S-Function のサポート] をオフにします。

[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成][識別子] ペインのパラメーターが推奨値に設定されていない。[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成][識別子] ペインで、[スカラーのインライン パラメーターの生成] パラメーターを [リテラル] に設定します。
[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成][インターフェイス] ペインで、[サポート: 可変サイズの信号] が選択されている。これにより、コードが非効率になる可能性があります。可変サイズ信号をサポートしない場合は、[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成][インターフェイス] ペインで、[サポート: 可変サイズの信号] をオフにします。
モデルに弱い Simulink I/O データ型の指定をもつ Stateflow チャートが含まれている。

Stateflow チャートのプロパティ [Simulink I/O で厳密な型指定] を選択します。このプロパティを選択した後、モデル内でデータ型を調整しなければならない場合があります。

メモ

R2022a 以降では、チャートのプロパティ [Simulink I/O で厳密な型指定] を無効にできません。詳細については、Use strong data typing with Simulink I/O chart property has been removed (Stateflow)を参照してください。

制限

Stateflow チャートを使用する場合は Stateflow ライセンスが必要です。

参考

Stateflow チャートのプロパティの指定 (Stateflow)

問題のあるコード インストルメンテーション (データ I/O) を特定

チェック ID: mathworks.codegen.CodeInstrumentation

問題のあるコード インストルメンテーションを特定します。

説明

  • 生成コードのインストルメンテーションにより、最適でない結果を引き起こす可能性があります。

  • テスト ポイントにはグローバル メモリが必要であり、量産コードの生成には適していません。

Embedded Coder で使用できます。

結果と推奨アクション

条件推奨アクション
インターフェイス パラメーターが推奨値に設定されていない。[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成][インターフェイス] ペインで、パラメーターを推奨値に設定します。
ブロックがアサーション コードを生成する。[コンフィギュレーション パラメーター] ダイアログ ボックスで、ブロック単位またはグローバルに [Model Verification ブロックを有効にする][すべて無効] に設定します。
ブロックの出力信号に 1 つ以上のテスト ポイントがあり、Embedded Coder ライセンスがある場合に、[コンフィギュレーション パラメーター] ダイアログ ボックスで [テスト ポイント信号を無視] チェック ボックスがオフになっている。

指定したブロック出力信号からテスト ポイントを削除します。各信号について、[信号プロパティ] ダイアログ ボックスで [テスト ポイント] チェック ボックスをオフにします。

または、モデルで ERT ベースのシステム ターゲット ファイルを使用している場合は、[コンフィギュレーション パラメーター] ダイアログ ボックスで [テスト ポイント信号を無視] チェック ボックスをオンにし、コード生成中にテスト ポイントを無視します。

機能および制限事項

Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

参考

非効率なアルゴリズムを生成するブロックを特定

チェック ID: mathworks.codegen.UseRowMajorAlgorithm

非効率なアルゴリズムを生成するブロックを特定します。

説明

このチェックは、モデルの配列レイアウトに基づいて、生成コードで非効率なアルゴリズムを生成するブロックを特定します。

Embedded Coder で使用できます。

結果と推奨アクション

条件推奨アクション
列優先のコード生成に対して、コンフィギュレーション パラメーター [配列のレイアウト][列優先] に設定されている。コンフィギュレーション パラメーター [行優先の配列レイアウトに最適化されたアルゴリズムを使用] を無効にします。
行優先のコード生成に対して、コンフィギュレーション パラメーター [配列のレイアウト][行優先] に設定されている。コンフィギュレーション パラメーター [行優先の配列レイアウトに最適化されたアルゴリズムを使用] を選択します。

機能および制限事項

  • マスク サブシステムの内容を解析します。

参考

MISRA C:2012 のコンフィギュレーション パラメーターをチェック

チェック ID: mathworks.misra.CodeGenSettings

MISRA C:2012 準拠のコード生成に影響を与える可能性のあるコンフィギュレーション パラメーターを特定します。

説明

このチェックの推奨事項に従うと、組み込みアプリケーションに対して MISRA C:2012 準拠コードが生成される可能性が高くなります。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション
数学とデータ型
コンフィギュレーション パラメーター [固定小数点の正味勾配計算に除算を使用][オン] または [整数の逆数の場合にのみ除算を使用] に設定されていない。[固定小数点の正味勾配計算に除算を使用][オン] または [整数の逆数の場合にのみ除算を使用] に設定します。

コンフィギュレーション パラメーター [Inf または NaN のブロックの出力][なし] または [エラー] に設定され、[非有限数のサポート][オン] に設定されている。

コンフィギュレーション パラメーター [Inf または NaN のブロックの出力][なし] に設定され、[非有限数のサポート][オフ] に設定されている。

[非有限数のサポート] に応じて次のようにします。

  • [オン] の場合、[Inf または NaN のブロックの出力][警告] に設定します。

  • [オフ] の場合、[Inf または NaN のブロックの出力][警告] または [エラー] に設定します。

コンフィギュレーション パラメーター [Model Verification ブロックを有効にする][ローカル設定を使用] または [すべて有効] に設定されている。[Model Verification ブロックを有効にする][すべて無効] に設定します。
コンフィギュレーション パラメーター [指示のないイベント ブロードキャスト][なし] または [警告] に設定されている。[指示のないイベント ブロードキャスト][エラー] に設定します。
コンフィギュレーション パラメーター [オーバーフロー時にラップ][なし] に設定されている。コンフィギュレーション パラメーター [オーバーフロー時にラップ][警告] または [エラー] に設定します。
ハードウェア実行
コンフィギュレーション パラメーター [製品ハードウェアの符号付き整数の除算の丸め][未定義] に設定されている。[製品ハードウェアの符号付き整数の除算の丸め][ゼロ方向] または [負方向] に設定します。
コンフィギュレーション パラメーター [算術シフトとして符号付き整数を右にシフト] が選択されている。[算術シフトとして符号付き整数を右にシフト] をオフにします。
シミュレーション ターゲット
コンフィギュレーション パラメーター [コンパイル時の MATLAB 関数の再帰限界値]0 以外の値に設定されている。[コンパイル時の MATLAB 関数の再帰限界値]0 に設定します。
コンフィギュレーション パラメーター [MATLAB 関数での動的メモリ割り当て] が選択されている。[MATLAB 関数での動的メモリ割り当て] をオフにします。
コンフィギュレーション パラメーター [MATLAB 関数の実行時再帰を有効にする] が選択されている。[MATLAB 関数の実行時再帰を有効にする] をオフにします。
コード生成

次のパラメーターのいずれかが選択されている場合に、コンフィギュレーション パラメーター [ビットフィールド宣言子の型指定子]uchar_T に設定されている。

  • boolean データをビットフィールドにパッキング

  • ステート構成を保存するためにビットセットを使用

  • boolean データを保存するためにビットセットを使用

[ビットフィールド宣言子の型指定子]uint_T に設定します。
コンフィギュレーション パラメーター [キャスト モード][標準準拠] に設定されていない。[キャスト モード][標準準拠] に設定します。
コンフィギュレーション パラメーター [コード置換ライブラリ][なし] または [AUTOSAR 4.0] に設定されていない。

[コード置換ライブラリ][なし] または [AUTOSAR 4.0] に設定します。

コンフィギュレーション パラメーター [エクスターナル モード] が選択されている。[エクスターナル モード] をオフにします。
コンフィギュレーション パラメーター [共有定数の生成] が選択されている。[共有定数の生成] をオフにします。

コンフィギュレーション パラメーター [コメントを含める] がオフになっている。

[コメントを含める] を選択します。
コンフィギュレーション パラメーター [MAT ファイルのログ] が選択されている。

[MAT ファイルのログ] をオフにします。

ERT ベースのターゲット システムで、コンフィギュレーション パラメーター [MATLAB ユーザー コメント] がオフになっている。[MATLAB ユーザー コメント] を選択します。
コンフィギュレーション パラメーター [識別子の最大の長さ] の値が指定されていない。値を実装に応じた制限に設定します。既定の設定は 31 です。
コンフィギュレーション パラメーター [かっこのレベル][標準 (標準準拠のためのかっこ)] または [最大 (かっこで優先度を指定)] に設定されていない。[かっこのレベル][標準 (標準準拠のためのかっこ)] または [最大 (かっこで優先度を指定)] に設定します。

ERT ベースのターゲット システムで、[ファイル パッケージ化形式][コンパクト] または [コンパクト (別々のデータ ファイル)] に設定されている場合に、コンフィギュレーション パラメーター [関数宣言に static キーワードを保持] がオフになっている。

[関数宣言に static キーワードを保持] を選択します。
コンフィギュレーション パラメーター [2 のべき乗での乗算を符号付きのビット単位シフトに置換] が選択されている。[2 のべき乗での乗算を符号付きのビット単位シフトに置換] をオフにします。
コンフィギュレーション パラメーター [共有コードの配置][自動] に設定されている。

[共有コードの配置][共有場所] に設定します。

ERT ベースのターゲット システムで、コンフィギュレーション パラメーター [連続時間のサポート] が選択されている。 [連続時間のサポート] をオフにします。
ERT ベースのターゲット システムで、コンフィギュレーション パラメーター [インラインでない S-Function のサポート] が選択されている。 [インラインでない S-Function のサポート] をオフにします。
コンフィギュレーション パラメーター [到達不能な場合、switch ステートメントの default ケースを生成しない] がオンである。[到達不能な場合、switch ステートメントの default ケースを生成しない] をオフにします。
コンフィギュレーション パラメーター [システム生成の識別子][クラシック] に設定されている。[システム生成の識別子][短縮形] に設定します。
コンフィギュレーション パラメーター [システム ターゲット ファイル] が GRT ベースのターゲットに設定されている。[システム ターゲット ファイル] を ERT ベースのターゲットに設定します。
[コード インターフェイスのパッケージ化][再利用可能な関数] に設定されている場合に、コンフィギュレーション パラメーター [モデルの初期化に動的メモリ割り当てを使用] が選択されている。

[モデルの初期化に動的メモリ割り当てを使用] をオフにします。

メモ

[コード インターフェイスのパッケージ化][再利用可能な関数] に設定されている場合にのみ選択します。

アクション結果

[すべて変更] をクリックすると、パラメーター値が推奨値に変わります。

メモ

GRT ベースのターゲットが設定されたモデルに対して [すべて変更] をクリックした場合、モデル アドバイザーは [システム ターゲット ファイル] コンフィギュレーション パラメーターを ERT ベースのシステムに更新しません。

パラメーター サブチェックは、結果テーブルで "D" が付いたパラメーターの結果によって異なります。結果が "D-Warning" である場合、結果テーブルの [現在の値] 列にはそのサブチェックに対して "前提条件の制約を満たしていません" と示されます。パラメーターの変更後、チェックを再実行します。

メモ

一部のサブチェックは ERT ベース システムのコンフィギュレーション パラメーターに固有です。モデルを ERT ベース システムに変更しない限り、これらのパラメーターは [すべて変更] をクリックしても更新されません。

機能および制限事項

次のパラメーターの設定はチェックでは参考情報になります。

  • BooleansAsBitfields

  • CodeInterfacePackaging

  • ERTFilePackagingFormat

  • SupportNonFinite

このチェックでは参照モデルは確認されません。

参考

MISRA C:2012 で推奨されないブロックをチェック

チェック ID: mathworks.misra.BlkSupport

MISRA C:2012 準拠のコード生成でサポートまたは推奨されないブロックを特定します。

説明

このチェックの推奨事項に従うと、組み込みアプリケーションに対して MISRA C:2012 準拠コードが生成される可能性が高くなります。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション

3 次スプライン内挿法または外挿法を使用している Lookup Table ブロックがモデルまたはサブシステム内で見つかった。具体的には以下のブロックです。

Lookup Table ブロックに対して、他の内挿法および外挿法を検討してください。

推奨されない Lookup Table ブロックがモデルまたはサブシステム内で見つかった。具体的には以下のブロックです。

  • Lookup Table

  • Lookup Table (2-D)

推奨されない Lookup Table ブロックを置き換えることを検討してください。
S-Function Builder ブロックがモデルまたはサブシステム内で見つかった。S-Function Builder ブロックを量産に推奨されるブロックで置き換えることを検討してください。
From Workspace ブロックがモデルまたはサブシステム内で見つかったFrom Workspace ブロックを量産に推奨されるブロックで置き換えることを検討してください。

String ブロックがモデルまたはサブシステム内で見つかった。具体的には以下のブロックです。

String ブロックを量産に推奨されるブロックで置き換えることを検討してください。

機能および制限事項

次のことが可能です。

  • このチェックはライブラリ モデルで実行できます。

  • ライブラリにリンクされたブロックの内容を解析します。

  • マスク サブシステムの内容を解析します。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

編集時チェック.  このチェックは編集時チェックでサポートされます。

参考

サポートされていないブロック名のチェック

チェック ID: mathworks.misra.BlockNames

/ が含まれるブロック名を特定します。

説明

このチェックの推奨事項に従うと、組み込みアプリケーションに対して MISRA C:2012 準拠コードが生成される可能性が高くなります。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション
/ を含むブロック名がモデルまたはサブシステム内で見つかった。/ をブロック名から削除します。

機能および制限事項

  • ライブラリ モデルで実行されます。

  • ライブラリにリンクされたブロックの内容を解析します。

  • マスク サブシステムの内容を解析します。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートの対象外指定が許可されます。

編集時チェック.  このチェックは編集時チェックでサポートされます。

参考

Assignment ブロックの使用をチェック

チェック ID: mathworks.misra.AssignmentBlocks

ブロック パラメーター [任意の出力要素が割り当てられない場合のアクション][エラー] または [警告] に設定されていない Assignment ブロックを特定します。

説明

このチェックは [Simulink][Math Operations] の Simulink ブロック ライブラリで使用可能な Assignment ブロックに適用されます。

このチェックの推奨事項に従うと、組み込みアプリケーション用の MISRA C:2012 準拠コードと、CERT C 標準、CWE 標準、ISO/IEC TS 17961 標準に準拠するコードが生成される可能性が高くなります。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション
モデルまたはサブシステム内に、ブロック パラメーター [任意の出力要素が割り当てられない場合のアクション][エラー] または [警告] に設定されていない、配列の初期化が完了していない Assignment ブロックが含まれている可能性がある。

ブロック パラメーター [任意の出力要素が割り当てられない場合のアクション] をいずれかの推奨値に設定します。

  • Assignment ブロックが Iterator subsystem 内にない場合は [エラー]

  • Assignment ブロックが Iterator subsystem 内にある場合は [警告]

機能および制限事項

  • ライブラリ モデルで実行されます。

  • ライブラリにリンクされたブロックの内容を解析します。

  • マスク サブシステムの内容を解析します。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートの対象外指定が許可されます。

編集時チェック.  このチェックは編集時チェックでサポートされます。ただし、編集時チェックでは Assignment ブロックが Iterator subsystem 内にあるかどうかを判断できないため、次のチェック条件はサポートされません。

ブロック パラメーター [任意の出力要素が割り当てられない場合のアクション] をいずれかの推奨値に設定します。

  • Assignment ブロックが Iterator subsystem 内にない場合は [エラー]

  • Assignment ブロックが Iterator subsystem 内にある場合は [警告]

参考

default ケースをもたない switch case 式のチェック

チェック ID: mathworks.misra.SwitchDefault

default ケースをもたない switch case 式を特定します。

説明

このチェックは、default ケースがなく switch case 式をもつモデル オブジェクトにフラグを付けます。

このチェックの推奨事項に従うと、組み込みアプリケーション用の MISRA C:2012 準拠コードと、CERT C 標準、CWE 標準、ISO/IEC TS 17961 標準に準拠するコードが生成される可能性が高くなります。

default ケースをもたないブロックが Polyspace® の注釈で正当化される場合、このチェックはフラグを付けません。チェックを実行すると、正当化情報のある default ケースをもたないブロックは、[正当化情報のあるブロック] テーブルにリストされます。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション

モデル オブジェクトに default ケースがない switch case 式が含まれている。

Switch Case ブロックの場合、ブロック パラメーター [default ケースを表示] を選択して default ケースを明示的に指定することを検討してください。

機能および制限事項

次のことが可能です。

  • このチェックはライブラリ モデルで実行できます。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

編集時チェック.  このチェックは編集時チェックでサポートされます。

参考

AUTOSAR 受信側インターフェイスの欠落しているエラー ポートをチェック

チェック ID: mathworks.misra.AutosarReceiverInterface

一致するエラー ポートのない AUTOSAR 受信側インターフェイスの入力端子を特定します。

説明

このチェックの推奨事項に従うと、組み込みアプリケーションに対して MISRA C:2012 準拠コードが生成される可能性が高くなります。このチェックは、エラー ポートが欠落している AUTOSAR 受信側インターフェイスの入力端子にフラグを付けます。次の表は、対応するエラー ポートが欠落している場合に、チェックによりフラグが付けられる受信側インターフェイス ポートの AUTOSAR データ アクセス モード タイプを示しています。

AUTOSAR データ アクセス モード タイプチェックによるフラグの有無
ImplicitReceiveあり
ExplicitReceiveあり
QueuedExplicitReceiveなし
ErrorStatusなし
ModeReceiveなし
IsUpdatedなし
EndToEndReadあり
ExplicitReceiveByValなし
otherwiseなし

欠落しているエラー ポートが Polyspace の注釈で正当化される場合、このチェックはフラグを付けません。チェックを実行すると、正当化情報のある欠落しているエラー ポートは、[正当化情報のあるブロック] テーブルにリストされます。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション

AUTOSAR 受信側インターフェイスの入力端子に一致するエラー ポートがない。

欠落しているエラー ポートを追加して、対応する AUTOSAR 受信側インターフェイスの入力端子にマッピングします。

データ アクセス モードが ImplicitReceiveExplicitReceive、または EndToEndRead の時に、AUTOSAR 受信側インターフェイス ポートに一致するエラー ポートがない。

欠落しているエラー ポートを追加して、対応する AUTOSAR 受信側インターフェイスの入力端子にマッピングします。

機能および制限事項

次のことが可能です。

  • トップ レイヤー/ルート レベル モデルを解析します。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

参考

バス要素の名前として使用されるバス オブジェクト名のチェック

チェック ID: mathworks.misra.BusElementNames

バス要素の名前として使用されるバス オブジェクト名を識別します。

説明

このチェックを使用すると、組み込みアプリケーションに対して MISRA C:2012 準拠コードが生成される可能性が高くなります。このチェックは、Simulink.Bus オブジェクト名が Simulink.Bus 要素名として使用されたインスタンスにフラグを付けます。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション
バス オブジェクト名がバス要素名として使用されている。フラグの付いたバス オブジェクト名またはバス要素名を変更して、同一にならないようにします。

参考

  • MISRA C:2012, Rule 5.6

  • MISRA AC AGC, Rule 5.3

  • MISRA C

セキュリティで保護されたコーディング標準のコンフィギュレーション パラメーターをチェック

チェック ID: mathworks.security.CodeGenSettings

セキュリティで保護されたコーディング標準への準拠性に影響を与える可能性のあるコンフィギュレーション パラメーターを特定します。

説明

このチェックの推奨事項に従うと、セキュリティで保護されたコーディング標準 CERT C、CWE、ISO/IEC TS 17961 に準拠するコードが生成される可能性が高くなります。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション
診断

コンフィギュレーション パラメーター [Inf または NaN のブロックの出力][なし] または [エラー] に設定され、[非有限数のサポート][オン] に設定されている。

コンフィギュレーション パラメーター [Inf または NaN のブロックの出力][なし] に設定され、[非有限数のサポート][オフ] に設定されている。

[非有限数のサポート] に応じて次のようにします。

  • [オン] の場合、[Inf または NaN のブロックの出力][警告] に設定します。

  • [オフ] の場合、[Inf または NaN のブロックの出力][警告] または [エラー] に設定します。

コンフィギュレーション パラメーター [Model Verification ブロックを有効にする][ローカル設定を使用] または [すべて有効] に設定されている。[Model Verification ブロックを有効にする][すべて無効] に設定します。
コンフィギュレーション パラメーター [指示のないイベント ブロードキャスト][なし] または [警告] に設定されている。[指示のないイベント ブロードキャスト][エラー] に設定します。
コンフィギュレーション パラメーター [オーバーフロー時にラップ][なし] に設定されている。[オーバーフロー時にラップ][警告] または [エラー] に設定します。
ハードウェア実行
コンフィギュレーション パラメーター [製品ハードウェアの符号付き整数の除算の丸め][未定義] に設定されている。[製品ハードウェアの符号付き整数の除算の丸め][ゼロ方向] または [負方向] に設定します。
コンフィギュレーション パラメーター [算術シフトとして符号付き整数を右にシフト] が選択されている。[算術シフトとして符号付き整数を右にシフト] をオフにします。
シミュレーション ターゲット
コンフィギュレーション パラメーター [コンパイル時の MATLAB 関数の再帰限界値]0 以外の値に設定されている。[コンパイル時の MATLAB 関数の再帰限界値]0 に設定します。
コンフィギュレーション パラメーター [MATLAB 関数での動的メモリ割り当て] が選択されている。[MATLAB 関数での動的メモリ割り当て] をオフにします。
コンフィギュレーション パラメーター [MATLAB 関数の実行時再帰を有効にする] が選択されている。[MATLAB 関数の実行時再帰を有効にする] をオフにします。
コード生成
コンフィギュレーション パラメーター [コード置換ライブラリ][なし] または [AUTOSAR 4.0] に設定されていない。[コード置換ライブラリ][なし] または [AUTOSAR 4.0] に設定します。
コンフィギュレーション パラメーター [エクスターナル モード] が選択されている。[エクスターナル モード] をオフにします。

コンフィギュレーション パラメーター [コメントを含める] がオフになっている。

[コメントを含める] を選択します。
コンフィギュレーション パラメーター [MAT ファイルのログ] が選択されている。[MAT ファイルのログ] をオフにします。
ERT ベースのターゲット システムで、コンフィギュレーション パラメーター [MATLAB ユーザー コメント] がオフになっている。[MATLAB ユーザー コメント] を選択します。
コンフィギュレーション パラメーター [2 のべき乗での乗算を符号付きのビット単位シフトに置換] が選択されている。[2 のべき乗での乗算を符号付きのビット単位シフトに置換] をオフにします。
ERT ベースのターゲット システムで、コンフィギュレーション パラメーター [連続時間のサポート] が選択されている。 [連続時間のサポート] をオフにします。
ERT ベースのターゲット システムで、コンフィギュレーション パラメーター [インラインでない S-Function のサポート] が選択されている。 [インラインでない S-Function のサポート] をオフにします。
コンフィギュレーション パラメーター [システム ターゲット ファイル] が GRT ベースのターゲットに設定されている。[システム ターゲット ファイル] を ERT ベースのターゲットに設定します。
コンフィギュレーション パラメーター [モデルの初期化に動的メモリ割り当てを使用] が選択されている。[モデルの初期化に動的メモリ割り当てを使用] をオフにします。

メモ

[コード インターフェイスのパッケージ化][再利用可能な関数] に設定されている場合にのみ選択します。

アクション結果

[すべて変更] をクリックすると、パラメーター値が推奨値に変わります。

メモ

GRT ベースのターゲットが設定されたモデルに対して [すべて変更] をクリックした場合、モデル アドバイザーは [システム ターゲット ファイル] コンフィギュレーション パラメーターを ERT ベースのシステムに更新しません。

パラメーター サブチェックは、結果テーブルで "D" が付いたパラメーターの結果によって異なります。結果が "D-Warning" である場合、結果テーブルの [現在の値] 列にはそのサブチェックに対して "前提条件の制約を満たしていません" と示されます。パラメーターの変更後、チェックを再実行します。

メモ

一部のサブチェックは ERT ベース システムのコンフィギュレーション パラメーターに固有です。モデルを ERT ベース システムに変更しない限り、これらのパラメーターは [すべて変更] をクリックしても更新されません。

参考

MISRA C

セキュリティで保護されたコーディング標準に推奨されないブロックをチェック

チェック ID: mathworks.security.BlockSupport

セキュリティで保護されたコーディング標準への準拠で推奨されないブロックを特定します。

説明

このチェックの推奨事項に従うと、セキュリティで保護されたコーディング標準 CERT C、CWE、ISO/IEC TS 17961 に準拠するコードが生成される可能性が高くなります。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション

3 次スプライン内挿法または外挿法を使用している Lookup Table ブロックがモデルまたはサブシステム内で見つかった。具体的には以下のブロックです。

Lookup Table ブロックに対して、他の内挿法および外挿法を検討してください。

推奨されない Lookup Table ブロックがモデルまたはサブシステム内で見つかった。具体的には以下のブロックです。

  • Lookup Table

  • Lookup Table (2-D)

推奨されない Lookup Table ブロックを置き換えることを検討してください。
S-Function Builder ブロックがモデルまたはサブシステム内で見つかった。S-Function Builder ブロックを量産に推奨されるブロックで置き換えることを検討してください。
From Workspace ブロックがモデルまたはサブシステム内で見つかったFrom Workspace ブロックを量産に推奨されるブロックで置き換えることを検討してください。

String ブロックがモデルまたはサブシステム内で見つかった。具体的には以下のブロックです。

String ブロックを量産に推奨されるブロックで置き換えることを検討してください。

機能および制限事項

次のことが可能です。

  • このチェックはライブラリ モデルで実行できます。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

編集時チェック.  このチェックは編集時チェックでサポートされます。

参考

問題のあるサブシステムの設定を特定

チェック ID: mathworks.codegen.QuestionableSubsysSetting

問題のある Subsystem ブロックの設定を特定します。

説明

生成コードで void-void 関数として実装された Subsystem ブロックはグローバル メモリを使用してサブシステムの I/O を保存します。

Embedded Coder で使用できます。

結果と推奨アクション

条件推奨アクション
Subsystem ブロックの Subsystem パラメーター[関数のパッケージ化] オプションが [再利用できない関数] に設定されている。Subsystem パラメーター[関数のパッケージ化] パラメーターを [自動] に設定します。
Subsystem ブロックの Subsystem パラメーター[関数のパッケージ化] オプションが [再利用可能な関数] に設定されている。Subsystem パラメーター[関数のパッケージ化] パラメーターを [自動] に設定します。

機能および制限事項

Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

参考

'long long' データ型の使用法をチェック

チェック ID: mathworks.codegen.EnableLongLong

計算量の多いマルチワード型が検出された場合に、long long データ型の使用法をチェックします。

説明

このチェックでは、Simulink モデルに含まれる信号または端子のデータ型の語長が long データ型の語長を超えている場合に、コンフィギュレーション パラメーター [long long のサポート] (ProdLongLongMode または TargetLongLongMode) が有効になっていないとフラグを付けます。

Embedded Coder で使用できます。

結果と推奨アクション

条件推奨アクション
モデルに含まれる信号または端子のデータ型の語長が long データ型の語長を超えており、[long long のサポート] パラメーターが有効になっておらず、コンパイラで C long long データ型がサポートされている。[long long のサポート] パラメーターを有効にします。

機能および制限事項

  • このチェックでは、long データ型の語長を超えるデータ型が信号および端子で明示的に使用されている場合にのみフラグが付けられます。演算の出力などで暗黙的に使用されている場合、このチェックではフラグは付けられません。

編集時チェック

このチェックは編集時チェックでサポートされます。編集時チェックには Simulink Check のライセンスが必要です。

参考

行優先のコード生成でサポートされないブロックをチェック

チェック ID: mathworks.codegen.RowMajorCodeGenSupport

行優先のコード生成でサポートされないブロックをチェックします。

説明

このチェックは、行優先のコード生成でサポートされないブロックを特定します。

Embedded Coder で使用できます。

結果と推奨アクション

条件推奨アクション
モデルに行優先の配列レイアウトである外部データとのインターフェイスがある。コンフィギュレーション パラメーター [配列のレイアウト][行優先] に設定します。

機能および制限事項

  • マスク サブシステムの内容を解析します。

参考

配列のレイアウトが未設定の TLC S-Function を特定

チェック ID: mathworks.codegen.RowMajorUnsetSFunction

配列のレイアウトが未設定の TLC S-Function を特定します。

説明

このチェックは、SSArrayLayoutSS_UNSET に設定されている S-Function を特定します。既定では、SSArrayLayout プロパティはすべての S-Function で SS_UNSET に設定されています。この設定により、行優先のコード生成で S-Function が無効になります。コンフィギュレーション パラメーター [配列のレイアウト][行優先] に設定されている場合、Embedded Coder はエラーを報告します。エラーをオフにするには、[行優先コード生成の外部関数互換性][警告] または [なし] に変更します。

Embedded Coder で使用できます。

結果と推奨アクション

条件推奨アクション
列優先のコード生成に対して、コンフィギュレーション パラメーター [配列のレイアウト][列優先] に設定されている。SSArrayLayout プロパティを Column-major に設定します。
行優先のコード生成に対して、コンフィギュレーション パラメーター [配列のレイアウト][行優先] に設定されている。SSArrayLayout プロパティを Row-major に設定します。

機能および制限事項

  • すべてのマスク サブシステムの内容を解析します。

参考

計算量の多い固定小数点および飽和のコードを生成するブロックを特定

チェック ID: mathworks.codegen.BlockSpecificQuestionableFxptOperations

最適でない結果を引き起こす可能性のある固定小数点演算を特定します。

説明

特定のブロック設定により、計算量の多い固定小数点および飽和のコードが生成される可能性があります。

結果と推奨アクション

条件推奨アクション
ブロックが計算量の多い飽和コードを生成する。[Function ブロック パラメーター][信号属性][整数オーバーフローで飽和] の設定がアプリケーションに必要かどうかをチェックします。そうでない場合は、生成されたコード内のブロックが最も効率的に実装されるように [整数オーバーフローで飽和] パラメーターをオフにします。
Product ブロックが不適切な勾配調整係数で信号を乗算している。正味勾配計算では乗算とそれに続くシフトを使用しているが、一部のターゲット ハードウェアで非効率になる。

[最適化][固定小数点の正味勾配計算に除算を使用] パラメーターを [オン] に設定するか、正味勾配を分数で近似可能であり、ターゲット ハードウェアにおいて乗算とシフトよりも除算が効率的である場合は、[整数の逆数の場合にのみ除算を使用] に設定します。

メモ

この最適化は特定の単純性と正確性の条件が満たされている場合にのみ実行されます。詳細については、正味勾配計算の処理 (Fixed-Point Designer)を参照してください。

Product ブロックが最初の入力に対しては除算演算、2 番目の入力に対しては乗算演算で設定されている。 乗算演算が最初に実行され、除算演算が 2 番目に実行されるように入力を反転します。
Product ブロックが複数の乗算演算を行うように設定されている。すべての分母の項を乗算してから、カスケード Product ブロックを使用して除算を 1 回行います。
Product ブロックが多数の乗算演算または除算演算を行うように設定されている。複数のブロックに演算を分割し、ブロックごとに 1 つの乗算演算または 1 つの除算演算を行います。
除算演算の一部として生成された防止コードが冗長である。モデルで除算演算の例外処理が発生しないことを検証し、[コンフィギュレーション パラメーター] ダイアログ ボックスで [最適化][除算演算の例外処理を防止するコードを削除] パラメーターを設定して冗長な防止コードを削除します。
Sum ブロックの入力のデータ型範囲が出力のデータ型範囲を超えており、オーバーフローまたは飽和が発生する可能性がある。

出力およびアキュムレータのデータ型を変更し、その範囲がすべての入力範囲以上になるようにします。

たとえば、モデルに 2 つの入力がある場合

  • int8 (-128 ~ 127)

  • uint8 (0 ~ 255)

出力およびアキュムレータのデータ型範囲は -128 ~ 255 と等しいかそれを超えるようにしなければなりません。int16 (-32768 ~ 32767) データ型はこの条件を満たしています。

Sum ブロックに出力の勾配調整係数と異なる勾配調整係数をもつ入力が含まれている。入力、出力、アキュムレータが同じ勾配調整係数をもつようにデータ型を変更します。
Sum ブロックの入力バイアスの正味合計が出力のバイアスと異なる。 正味のバイアスの調整が 0 になるように出力スケーリングのバイアスを変更します。
MinMax ブロックの入力と出力のデータ型が異なる。入力または出力のデータ型を変更します。
MinMax ブロックの入力の勾配調整係数が出力と異なる。 入力または出力のスケーリングを変更します。
Discrete-Time Integrator ブロックの初期条件が状態と出力の両方を初期化するために使用されている。 [Function ブロック パラメーター][初期条件設定] パラメーターを [状態 (最も効率的)] に設定します。
パラメーターのオーバーフローが Compare to Zero ブロックにおいて発生した。このブロックでは入力データ型を使用して 0 を表している。入力データ型が正確に 0 を表すことができないため、入力値は 0 に最も近い表現可能な値と比較された。0 を表現できる入力データ型を選択します。
パラメーターのオーバーフローが次の Compare to Constant ブロックにおいて発生した。このブロックでは入力データ型を使用して [定数値] パラメーターを表している。[定数値] パラメーターは入力データ型が表現可能な範囲内にない。入力信号は [定数値] パラメーターに最も近い表現可能な値と比較された。[定数値] パラメーターを表現できる入力データ型を選択するか、入力データ型と一致するように [定数値] パラメーターを変更します。

機能および制限事項

  • 固定小数点コードの生成には Fixed-Point Designer™ ライセンスが必要です。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

参考

モデル関数内の欠落している const 修飾子をチェック

チェック ID: mathworks.misra.ModelFunctionInterface

入力データのポインター内で欠落している const 修飾子を特定します。

説明

このチェックの推奨事項に従うと、組み込みアプリケーションに対して MISRA C:2012 準拠コードが生成される可能性が高くなります。このチェックは、const 修飾子をもたない入力データのポインターにフラグを付けます。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション
const 修飾子が入力データのポインターに定義されていない。const 修飾子を入力データのポインターに追加することを検討してください。

参考

問題のある固定小数点演算を特定

チェック ID: mathworks.codegen.QuestionableFxptOperations

最適でない結果を引き起こす可能性のある固定小数点演算を特定します。

説明

乗算と除算の煩雑な演算を生成するブロック、計算量の多い変換コード、非効率な Lookup Table ブロック、および計算量の多い比較コードが原因で、効率の低いコードが生成される可能性があります。

結果と推奨アクション

条件推奨アクション
整数除算の生成コードが大きい。[コンフィギュレーション パラメーター] ダイアログ ボックスの [ハードウェア実行] ペインで、[製品ハードウェアの符号付き整数の除算の丸め] パラメーターを推奨値に設定します。
ルックアップ テーブルの入力値のベクトルが等間隔でない。ブレークポイント データが調整不可能な場合、データの間隔が等間隔で 2 のべき乗になるように調整します。fixpt_look1_func_approx を参照してください。
量子化時のルックアップ テーブルの入力値のベクトルが等間隔でないが、等間隔に非常に近い状態である。ブレークポイント データが調整不可能な場合、データの間隔が等間隔で 2 のべき乗になるように調整します。fixpt_evenspace_cleanup を参照してください。
ルックアップ テーブルの入力値のベクトルが等間隔であるが、間隔が 2 のべき乗でない。ブレークポイント データが調整不可能な場合、データの間隔が等間隔で 2 のべき乗になるように調整します。fixpt_look1_func_approx を参照してください。
Prelookup ブロックまたは n-D Lookup Table ブロックの [インデックス検索法][等間隔のポイント] である。ブレークポイント データの間隔が 2 のべき乗でない。ブレークポイント データが調整不可能な場合、データの間隔が等間隔で 2 のべき乗になるように調整します。それ以外の場合は、[ブロック パラメーター] ダイアログ ボックスで別の [インデックス検索法] を指定すると時間のかかる除算演算を回避できます。
n-D Lookup Table ブレークポイント データが等間隔でなく、[インデックス検索法][等間隔のポイント] でない。ブレークポイント データが調整不可能な場合、データの間隔が等間隔で 2 のべき乗になるように調整し、[インデックス検索法][等間隔のポイント] に設定します。
n-D Lookup Table ブレークポイント データが等間隔であり、[インデックス検索法][等間隔のポイント] である。しかし、間隔が 2 のべき乗でない。ブレークポイント データが調整不可能な場合、データの間隔が等間隔で 2 のべき乗になるように調整します。fixpt_look1_func_approx を参照してください。
n-D Lookup Table ブレークポイント データが等間隔であるが、間隔が 2 のべき乗でない。また、[インデックス検索法][等間隔のポイント] でない。[インデックス検索法][等間隔のポイント] に設定します。また、データが調整不可能な場合は、2 のべき乗の等間隔にすることを検討してください。
n-D Lookup Table ブレークポイント データが等間隔であり、間隔が 2 のべき乗である。しかし、[インデックス検索法][等間隔のポイント] でない。[インデックス検索法][等間隔のポイント] に設定します。
ブロックに生成コードでのマルチワード処理が必要である。処理の入力の語長がプロセッサの最大ワード サイズを超えないように調整します。詳細については、生成されたコード内の固定小数点マルチワード処理 (Fixed-Point Designer)を参照してください。
ブロックに煩雑な乗算が必要である。

乗算演算を次のように制限します。

  • 積の整数サイズがターゲットの整数サイズより大きくならないようにする。

  • 推奨サイズにする。

Product ブロックが不適切な勾配調整係数で信号を乗算している。出力勾配調整係数が入力勾配調整係数の積になるように出力のスケーリングを変更します。
ブロックが非ゼロのバイアスをもつ信号を乗算している。乗算演算が含まれるブロックの前後に Data Type Conversion ブロックを挿入します。
Relational Operator ブロックの入力のデータ型が異なる。
  • 不変入力のデータ型とスケーリングを他の入力と一致するように変更します。

  • Relational Operator ブロックの前に Data Type Conversion ブロックを挿入し、両方の入力を共通のデータ型に変換します。

Relational Operator ブロックの入力の勾配調整係数が異なる。いずれかの入力のスケーリングを変更します。
Relational Operator ブロックの出力が定数である。その結果、デッド コードとなって Simulink Coder で除去される可能性がある。モデル設計を確認し、Relational Operator ブロックを削除するか定数と置き換えます。

機能および制限事項

  • 固定小数点コードの生成には Fixed-Point Designer ライセンスが必要です。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

参考

計算量の多い丸めコードを生成するブロックを特定

チェック ID: mathworks.codegen.ExpensiveSaturationRoundingCode

余分な丸めコードを生成するブロックをチェックします。

説明

[整数丸めモード] パラメーターの設定が原因で非効率な丸めコードが生成されます。

Embedded Coder で使用できます。

結果と推奨アクション

条件推奨アクション
生成されたコードが非効率である。[Function ブロック パラメーター][整数丸めモード] パラメーターを推奨値に設定します。

機能および制限事項

Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

参考

符号付き整数のビット演算のチェック

チェック ID: mathworks.misra.CompliantCGIRConstructions

符号付き整数のビット演算を含む Simulink ブロックを特定します。

説明

このチェックの推奨事項に従うと、組み込みアプリケーション用の MISRA C:2012 準拠コードと、CERT C 標準および CWE 標準に準拠するコードが生成される可能性が高くなります。

Embedded Coder および Simulink Check で使用できます。

メモ

モデルに Stateflow の要素が含まれている場合、Stateflow ライセンスが必要です。

結果と推奨アクション

条件推奨アクション
モデルに符号付き整数のビット演算を含むブロックがある。符号なし整数のビット演算を使用することを検討してください。

機能および制限事項

次のことが可能です。

  • このチェックでは、モデル全体に対してコードが生成されることを想定しています。サブシステムのビルドまたはエクスポート関数によってコードが生成される場合、チェックで出力される結果が正しくないことがあります。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

参考

再帰関数の呼び出しのチェック

チェック ID: mathworks.misra.RecursionCompliance

Stateflow チャートで再帰関数呼び出しを特定します。

説明

このチェックの推奨事項に従うと、組み込みアプリケーションに対して MISRA C:2012 準拠コードが生成される可能性が高くなります。このチェックは再帰関数呼び出しをもつチャートにフラグを付けます。

Embedded Coder および Simulink Check で使用できます。

メモ

モデルに Stateflow の要素が含まれている場合、Stateflow ライセンスが必要です。

結果と推奨アクション

条件推奨アクション

チャートに再帰関数呼び出しがある。

再帰関数呼び出しを削除します。

参考

浮動小数点値の等式演算と不等式演算のチェック

チェック ID: mathworks.misra.CompareFloatEquality

浮動小数点値の等式演算と不等式演算を特定します。

説明

このチェックは浮動小数点値の等式演算または不等式演算の原因となるソースにフラグを付けます。

このチェックの推奨事項に従うと、組み込みアプリケーション用の MISRA C:2012 準拠コードと、CERT C 標準および CWE 標準に準拠するコードが生成される可能性が高くなります。

浮動小数点値の等式演算または不等式演算を含むブロックが Polyspace の注釈で正当化される場合、このチェックはフラグを付けません。チェックを実行すると、正当化情報のある等式演算または不等式演算を含むブロックは、[正当化情報のあるブロック] テーブルにリストされます。

Embedded Coder および Simulink Check で使用できます。

メモ

モデルに Stateflow の要素が含まれている場合、Stateflow ライセンスが必要です。

結果と推奨アクション

条件推奨アクション

モデル オブジェクトに浮動小数点値の等式演算または不等式演算がある。

等式演算と不等式演算には浮動小数点ではない値を使用することを検討してください。

機能および制限事項

次のことが可能です。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

参考

整数の語長をチェック

チェック ID: mathworks.misra.IntegerWordLengths

ハードウェア実行設定に準拠していない整数の語長を特定します。

説明

このチェックはハードウェア実行設定で許容されているビット数を超える語長の整数にフラグを付けます。

このチェックの推奨事項に従うと、組み込みアプリケーション用の MISRA C:2012 準拠コードと、CERT C 標準および CWE 標準に準拠するコードが生成される可能性が高くなります。

Embedded Coder および Simulink Check で使用できます。

メモ

モデルに Stateflow の要素が含まれている場合、Stateflow ライセンスが必要です。

結果と推奨アクション

条件推奨アクション

モデル オブジェクトにハードウェア実行設定に準拠していない整数の語長が含まれている。

長さが許容されているビット数を超えないように整数を更新します。許容されているビット数は [コンフィギュレーション パラメーター] ダイアログ ボックスの [ハードウェア実行][デバイスの詳細] ペインで確認できます。

機能および制限事項

次のことが可能です。

  • Simulink Check ライセンスをお持ちの場合は、ブロックおよびチャートをこのチェックから除外できます。

参考

ブロック名をチェック

チェック ID: mathworks.codegen.BlockNames

[コード パースペクティブ] ペイン内のブロック名に無効な文字が含まれていないかどうかをチェックします。

説明

この編集時チェックは、[コード パースペクティブ] ペイン内のブロック名を評価します。このチェックでは、以下を除くブロックの名前に含まれる無効な文字をレポートします。

チェックでは、ブロック名が次のガイドラインに準拠していることを検証します。

形式:

名前:

  • 数字で開始しない

  • ブロック名の先頭にスペースが含まれていない

  • 全角文字を使用していない

  • キャリッジ リターンは可

使用可能な文字:

名前:

a b c d e f g h i j k l m n o p q r s t u v w x y z

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

0 1 2 3 4 5 6 7 8 9 _

結果と推奨アクション

条件推奨アクション

[コード パースペクティブ] ペイン内のブロック名がガイドラインに準拠していない。

ガイドラインに準拠するようにブロック名を更新します。

機能および制限事項

  • ライブラリ モデルで実行されます。

  • ライブラリにリンクされたブロックのコンテンツを解析します。

  • マスク サブシステムの内容を解析します。

  • ブロックとチャートの対象外指定を許可します。

参考

コンポーネント展開用モデリング スタイルのチェック

チェック ID: mathworks.codegen.cgsl_0401

説明

このチェックは、サービス インターフェイスで構成されたコンポーネント モデルの展開にモデリング スタイルが対応していることを確認するために使用します。

Embedded Coder で使用できます。

結果と推奨アクション

条件推奨アクション
サービス インターフェイスで構成されたコンポーネント モデルを展開するための要件にモデリング スタイルが対応していない。エクスポート関数モデリング スタイル (シングルレート モデルとマルチレート モデル) またはレートベース モデリング スタイル (シングルレート モデル) を使用するようにモデルを更新します。

機能および制限事項

このモデル アドバイザー チェックについて、特に記すような機能や制限事項はありません。

バージョン履歴

R2022b で導入

参考

cgsl_0401: コンポーネント展開用のモデリング スタイル

Periodic and Aperiodic Function Interfaces

Create a Service Interface Configuration

エクスポート関数モデルの概要

エクスポート関数モデルの作成

Schedule Components to Avoid Data Dependency Issues

レートベース モデルの作成

信号インターフェイスのチェック

チェック ID: mathworks.codegen.cgsl_0402

説明

このチェックは、信号インターフェイスがコンポーネント モデルの展開をサポートする方法で使用されていることを確認するために使用します。

Embedded Coder で使用できます。

結果と推奨アクション

条件推奨アクション
In Bus Element ブロックと Inport ブロック、または Out Bus Element ブロックと Outport ブロックがモデルで使用されている。In Bus Element ブロックと Out Bus Element ブロック、または Inport ブロックと Outport ブロックを使用するようにモデルを更新します。
In Bus ElementOut Bus Element のブロック パラメーター [バスの仮想性] の設定が正しくない。

ブロック パラメーター [バスの仮想性]nonvirtual に設定します。

Outport ブロックと Inport ブロックの設定が正しくない。

ブロック パラメーター [親モデル内の非バーチャル バスとして出力] を選択して、出力端子のバスが親モデル内で非バーチャルであることを指定します。

Inport のブロック パラメーター [非バーチャル バスとして出力] を選択して、バス データの読み込みに使用される最上位の Inport ブロックの出力が非バーチャルであることを指定します。

非バーチャル バスに異なるサンプル時間が使用されている。 サンプル時間が同じになるように非バーチャル バスの信号を更新します。

機能および制限事項

このモデル アドバイザー チェックについて、特に記すような機能や制限事項はありません。

バージョン履歴

R2022b で導入

参考

cgsl_0402: コンポーネント展開用の信号インターフェイス

非バーチャル バスのサンプル時間の変更

サンプル時間の指定

サンプル時間情報の表示

起動およびシャットダウンのイベントのチェック

チェック ID: mathworks.codegen.cgsl_0404

説明

このチェックでは、起動およびシャットダウンの動作をモデル化する Initialize Function ブロックと Terminate Function ブロックがモデルに含まれていることを検証します。

このチェックには Embedded Coder が必要です。

結果と推奨アクション

条件推奨アクション
モデルが、起動動作のモデル化に Initialize Function ブロックを使用していない。コンポーネント (最上位) モデルに Initialize Function ブロックを追加します。
モデルに、シャットダウン動作をモデル化する Terminate Function ブロックが含まれていない。

シャットダウン イベントについて、次のいずれかのオプションを使用します。

  • コンポーネント (最上位) モデルに Terminate Function ブロックを追加します。

  • モデル コンフィギュレーション パラメーター [終了関数が必要] をオフにします。

機能および制限事項

  • エクスポート関数モデルでのみ実行されます。

  • モデルのルート レベルで実行されます。

  • Function-Call Subsystem は、エクスポート関数をモデル化するための関数コンポーネントとして許可されます。

  • ライブラリ モデルでは実行されません。

  • ライブラリにリンクされたブロックのコンテンツを解析します。

  • マスク サブシステムの内容を解析します。

バージョン履歴

R2023a で導入

参考

cgsl_0404: コンポーネント展開用の Initialize Function ブロックと Terminate Function ブロックを使用した起動イベントとシャットダウン イベントのモデル化

Startup, Reset, and Shutdown Function Interfaces

Periodic and Aperiodic Function Interfaces

部分データ送信の使用のチェック

チェック ID: mathworks.codegen.cgsl_0408

説明

このチェックでは、ブロックの使用法が部分データ送信をサポートしていることを検証します。

このチェックには Embedded Coder が必要です。

結果と推奨アクション

条件推奨アクション
モデルがエクスポート関数のモデリング ガイドラインに従っていない。エクスポート関数のモデリング スタイルを使用するようにモデルを更新します。
Merge ブロックのソースが、Function-Call Subsystem 内にない Assignment ブロックである。

すべてMerge ブロックのソースが Function-Call Subsystem 内の Assignment ブロックになるように、モデルを更新します。

Merge ブロックの接続先が、バーチャル ルートレベルの Outport ブロックではない。Merge ブロックの接続先が Function-Call Subsystem 内のルートレベルの Outport ブロックになるように、モデルを更新します。Outport ブロック パラメーター [出力端子がバーチャルであることを確認] がオンになっていることを確認します。
Merge ブロックが、Direct Access データ通信方法向けに構成されていない。Merge ブロックに接続しているルートレベルの Outport ブロック用に、Direct Access データ通信方法を使用します。

機能および制限事項

  • モデルのルート レベルで実行されます。

  • ライブラリにリンクされたブロックのコンテンツを解析します。

  • マスク サブシステムの内容を解析します。

バージョン履歴

R2023a で導入

参考

cgsl_0408: コンポーネント展開用の部分データ送信

cgsl_0401: コンポーネント展開用のモデリング スタイル

Data Communication Methods

コンポーネント展開に対するコンフィギュレーションのチェック

チェック ID: mathworks.codegen.cgsl_0414

説明

このチェックでは、コンポーネント モデルがサービス インターフェイスを使用して構成されていることを確認します。

このチェックには Embedded Coder が必要です。

結果と推奨アクション

条件推奨アクション
サービス インターフェイス用に構成された共有 Embedded Coder ディクショナリにモデルがリンクされていない

コンフィギュレーション パラメーター [コード生成][共有コーダー ディクショナリ] を使用して、サービス インターフェイスとして構成された共有ディクショナリを選択します。

新しい共有ディレクトリを設定するには、Embedded Coder アプリで [コード インターフェイス][共有 Embedded Coder ディクショナリの設定] を選択します。設定ダイアログ ボックスで新しいディクショナリを作成してモデルをリンクし、プロンプトが表示されたら [サービス インターフェイス] を選択します。

最上位モデルの展開タイプがサブコンポーネントになっている。 Embedded Coder アプリで、[展開タイプ] フィールドを使用して最上位モデルの展開タイプを [コンポーネント] に変更します。
参照モデルの展開タイプがコンポーネントになっている。 Embedded Coder アプリで、[展開タイプ] フィールドを使用して参照モデルの展開タイプを [サブコンポーネント] に変更します。

機能および制限事項

  • 保護モデルでは機能しません。

バージョン履歴

R2022b で導入

参考

cgsl_0414: コンポーネント モデル用のサービス インターフェイスの構成

Create a Service Interface Configuration

Embedded Coder ディクショナリ

Develop Deployable Code

既定の選択肢をもたないバリアント ブロックの確認

チェック ID: mathworks.misra.DefaultChoiceVariantChecks

[キャスト モード][標準準拠] に設定されている場合に、既定の選択肢をもたず、バリアントのアクティベーションのタイミングが指定されているバリアント ブロックを特定します。

説明

このチェックの推奨事項に従うと、組み込みアプリケーションに対して MISRA C:2012 準拠コードが生成される可能性が高くなります。

Embedded Coder および Simulink Check で使用できます。

結果と推奨アクション

条件推奨アクション

バリアント ブロックに既定の選択肢が含まれていないが、[キャスト モード][標準準拠] に設定されている。

バリアント ブロックの選択肢の 1 つとして既定の選択肢を追加します。

機能および制限事項

  • バリアント ブロックの内容を解析します。

編集時チェック

このチェックは編集時チェックでサポートされます。