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

Embedded Coder によって生成されたコードに対する Polyspace 解析の実行

Embedded Coder® または TargetLink® を使用して Simulink® モデルからコードを生成する場合、生成されたコードのバグやランタイム エラーの解析を、Simulink 環境から Polyspace® を使用して実行できます。Polyspace プロジェクトを手動で設定する必要はありません。

このトピックでは、コード生成に Embedded Coder を使用します。TargetLink で生成したコードの解析については、TargetLink によって生成されたコードに対する Polyspace 解析の実行を参照してください。

特定のモデルを含むチュートリアルは、Simulink サブシステムから生成されたコードの解析を参照してください。

前提条件

Simulink から Polyspace を実行する前に、Polyspace インストールと MATLAB® インストールをリンクしなければなりません。MATLAB や Simulink との Polyspace の統合を参照してください。

コードの生成と解析

コード生成の設定とコードの生成

コード生成を設定してモデルやサブシステムからコードを生成するには、次のいずれかを行います。

  • [コード][C/C++][Embedded Coder クイック スタート] を選択します。画面の指示に従います。

  • Simulink コンフィギュレーション パラメーターでコード生成を設定します。設定する主なパラメーターは、以下のとおりです。

    • タイプ (Simulink): [固定ステップ] を選択します。

    • ソルバー (Simulink): [自動 (ソルバーの自動選択)] または [離散 (連続状態なし)] を選択します。

    • システム ターゲット ファイル (Simulink Coder): ert.tlc または autosar.tlc と入力します。ターゲット ファイルを ert.tlc から派生させる場合、それを指定することもできます。

    • コードからモデルに (Simulink Coder): コードからモデルへのリンクを有効にするには、このオプションを選択します。

    設定するすべてのパラメーターのリストは、Polyspace 解析で推奨されるモデル コンフィギュレーション パラメーターを参照してください。

    あるいは、[Polyspace] オブジェクティブを使用してコード生成アドバイザーを実行し、必要なパラメーターが既に設定されているかどうかを確認します。Configure Model for Code Generation Objectives by Using Code Generation Advisor (Embedded Coder)を参照してください。

    コードを生成するには、[コード][C/C++][モデルのビルド] を選択します。サブシステムからコードを生成する同等のオプションがあります。

コード解析の設定

[コード][Polyspace][オプション] を選択します。必要に応じて、これらのオプションの既定値を変更します。

  • 製品モード: Code Prover または Bug Finder を選択します。

  • 検証設定: プロジェクト コンフィギュレーションで指定されている既定のチェックに加え、MISRA® コーディング ルールのチェックを有効にします。既定の Bug Finder チェックではバグを調査します。既定の Code Prover チェックではランタイム エラーを調査します。

  • 入力調整可能なパラメーター、および 出力: Code Prover 解析の精度を上げるために、入力、調整可能なパラメーター、または出力を制約します。

  • 出力フォルダー: 結果用に専用のフォルダーを指定します。既定の解析では、検証結果は現在の作業フォルダー内の results_modelName フォルダーに保存されます。

  • 検証後に結果を自動的に開く

設定するすべてのオプションのリストは、Simulink での Polyspace 解析を参照してください。

コードの解析

コードを解析するには、[コード][Polyspace][次を対象とした生成コードの検証][モデル] を選択します。サブシステムにも同等のオプションがあります。

MATLAB コマンド ウィンドウで解析の進行状況を確認できます。

明示的に無効にしない限り、検証結果が自動的に開きます。既定では、検証結果は現在のフォルダー内の results_ModelName フォルダーに保存されます。新しく実行するたびに前の検証結果は上書きされます。既定のフォルダーを変更したり、検証結果を Simulink プロジェクトに保存したりすることができます。これらの変更を行うには、[コード][Polyspace][オプション] を選択します。

検証結果を閉じていて、後で開く場合は、[コード][Polyspace][結果を開く][生成コードについて] を選択します。

解析結果のレビュー

コードでの検証結果のレビュー

検証結果は Polyspace ユーザー インターフェイスの [検証結果のリスト] ペインに表示されます。各検証結果をクリックすると、[ソース] ペインにソース コードが表示され、[検証結果の詳細] ペインに詳細が表示されます。参考:

コードからモデルへの移動

コード コメントのリンクには、後続のコード行を生成するブロックが表示されます。モデル内のブロックを確認するには、リンクのブロック名をクリックします。問題が発生した場合は、コードからモデルへの移動のトラブルシューティングを参照してください。

あるいは、変数名を右クリックして [モデルに移動] を選択することもできます。このオプションはすべての変数に対して使用できるわけではありません。

問題の修正

コードの問題がモデルの設計上の欠陥に関連しているかどうかを調べます。

モデルの設計上の欠陥は、生成されたコードで問題を引き起こす可能性があります。次に例を示します。

  • 生成されたコードでは、特定の範囲のブロック パラメーターにのみ特定のランタイム エラーがない場合があります。この問題を修正するには、そのブロック パラメーターのストレージ クラスを変更するか、コンフィギュレーション パラメーター調整可能なパラメーターを使用して、解析にキャリブレーション データを使用します。

  • 生成されたコードでは、特定の範囲の入力にのみ特定のランタイム エラーがない場合があります。このエラーがない範囲を特定するには、Inport ブロックの信号の最小値と最大値を指定します。Polyspace 解析では、この制約範囲を使用します。信号範囲の指定 (Simulink)を参照してください。

  • Stateflow® チャートの特定の遷移が到達不能である場合があります。

S-Function ブロックに手書きの C/C++ コードを含める場合、Polyspace 解析によって、手書きのコードと生成されたコード間の統合の問題を明らかにすることができます。また、手書きのコードを単独で解析することもできます。S-Function コードの解析を参照してください。

ブロックに注釈を付けることによる問題の正当化

Polyspace 検証結果に応じて変更を行わない場合は、関連するブロックに注釈を付けます。ブロックに注釈を付けたら、そのブロックから生成されるコード操作によって、コメントが入力された検証結果が表示されます。ブロックに注釈を付けるには、ブロックを右クリックして [Polyspace][選択したブロックに注釈を付ける][編集] を選択します。以下を入力します。

生成されたコードでの操作が、Code Prover のオレンジ チェックの原因であると知られている場合があります。ある操作がオーバーフローする可能性があると知られているとします。生成されたコードでは、操作の後に飽和させることでオーバーフローを防止します。Polyspace では、依然として潜在的なオーバーフローにオレンジ チェックのフラグが付けられます。このようなチェックをコード コメントによって自動的に正当化するには、コンフィギュレーション パラメーター演算子の注釈 (Simulink Coder)を指定します。

関連するトピック