Main Content

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

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

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

特定のモデルを含むチュートリアルは、Simulink モデルから生成されたコードに対する Polyspace 解析の実行を参照してください。

その他の手書きのコードで Simulink の外で生成したコードを解析することもできます。このワークフローでは、たとえば Windows コマンド ラインから Polyspace オプションを抽出して解析を実行します。パッケージ化オプション ファイルを使用した、生成コードに対する Polyspace 解析の実行を参照してください。それ以前のリリースの Polyspace では、生成されたコードからモデルに戻ることができます。モデルへ戻るを参照してください。

前提条件

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

コードの生成と解析

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

コード生成を設定してモデルからコードを生成するには、"次のいずれか" を行います。

  • [アプリ] タブで [Embedded Coder] を選択します。次に、[C コード] タブで [クイック スタート] を選択します。画面の指示に従います。

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

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

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

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

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

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

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

    モデルからコードを生成するには、[C コード] タブで [コード生成] を選択します。診断ビューアーでコード生成の進行状況を確認できます。

コード解析の設定

[アプリ] タブで [Polyspace コード検証] を選択します。[Polyspace] タブで、次を行います。

  1. 実行する製品を次から選択します。[Bug Finder] または [Code Prover]

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

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

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

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

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

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

コードの解析

モデルから生成されたコードを解析するには、キャンバスの任意の場所をクリックします。[次のコードの解析] フィールドにモデル名が表示されます。[解析の実行] を選択します。

Embedded Coder を使用している場合、Polyspace は [解析の実行] がクリックされたときに生成コードをチェックします。生成コードが存在しない場合、または最後の Polyspace 解析以降モデルが変更されている場合、Polyspace はコード生成プロセスを起動してから、解析を開始します。

現在のモデルが別のモデル内で参照されており、生成されたコードをモデルが参照されているコンテキストにおいて検証する場合は、[最上位モデルとして生成されたコード] の代わりに [モデル参照として生成されたコード] を使用します。後者の場合、生成コードがなくても Polyspace はコード生成を自動的に起動しません。[モデル参照として生成されたコード] を解析する場合、Polyspace 解析を実行する前にコードを生成してください。

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

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

検証結果を閉じていて、後で開く場合は、[Polyspace] タブで [解析結果] を選択します。最後の実行以前の検証結果を開くには、[以前の結果を開く] を選択して、以前の検証結果を含むフォルダーに移動します。

解析結果のレビュー

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

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

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

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

あるいは、変数名を右クリックして [モデルに移動] を選択することもできます。このオプションはすべての変数に対して使用できるわけではありません。Simulink ブロックに直接トレースできるのはソース コード変数のサブセットのみです。このような変数では [モデルに移動] オプションを使用できます。生成されたコードで直接 Simulink ブロックにトレースできる変数の詳細については、Trace Simulink Model Elements in Generated Code (Embedded Coder)を参照してください。

問題の修正

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

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

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

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

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

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

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

コードやモデルを変更せずに、Polyspace の検証結果を正当化することがあります。Polyspace ユーザー インターフェイスまたはSimulink エディターで Simulink ブロックに注釈を付けます。Simulink ブロックに注釈を付けて Polyspace 検証結果に対処を参照してください。

関連するトピック