Main Content

パッケージ化されたオプション ファイルを使用した、生成されたコードに対する Polyspace 解析の実行

Simulink® ツールストリップから直接 Polyspace® 解析を開始する場合、その解析では、設計の範囲などのモデル固有のコンテキストが考慮されます。Simulink 外部から Polyspace 解析を実行する場合、オプション ファイルを使用してモデル固有の情報を指定しなければなりません。これらのオプション ファイルを作成する代わりに、関数 polyspacePackNGo によって生成されパッケージ化されたオプション ファイルを使用します。

Simulink 外部から Polyspace 解析を実行する際に Simulink モデル コンテキスト情報を保持することは、さまざまな状況において有用となる可能性があります。次に例を示します。

  • 分散ワークフローでは次のようになります。Simulink ユーザーは、モデルからコードを生成して、そのコードを別の開発環境に送ります。この環境で、Simulink を保有していない可能性のある Polyspace ユーザーが、生成されたコードを別個に解析します。パッケージ化されたオプション ファイルを使用することで、設計範囲や他のモデル固有の情報が Polyspace 解析で保持されます。

  • Simulink で使用できない解析オプションには次のものがあります。Polyspace の一部の解析オプションは、Polyspace 解析が Simulink とは別に実行される場合にのみ使用可能です。パッケージ化されたオプション ファイルを使用して、モデル固有の情報を保持したまま Polyspace 解析を別個に実行します。たとえば、パッケージ化されたオプション ファイルを使用して、生成されたコードで Polyspace 解析を実行して、生成されたコード内の同時スレッドを解析します。

polyspacePackNGo を実行するには Simulink がなければなりません。Simulink モデルからオプション ファイルを生成するのに Polyspace は必要ありません。関数 polyspacePackNGo は、Embedded Coder® および TargetLink® で生成されたコードをサポートします。polyspacePackNGo の使用に関するチュートリアルについては、分散ワークフローでスタンドアロン コードとして生成されたコードの解析を参照してください。

Polyspace オプション ファイルの生成とパッケージ化

Simulink モデルから生成されたコードの解析用の Polyspace オプション ファイルを生成してパッケージ化するには、polyspacePackNGo を使用します。

  1. Simulink エディターで [コンフィギュレーション パラメーター] ダイアログ ボックスを開いて、コード生成のためにモデルを構成します。

  2. Polyspace との互換性があるようにモデルを構成するには、[システム ターゲット ファイル] として ert.tlc を選択します。

  3. コード アーカイブの生成を有効にするには、オプション [コードとアーティファクトのパッケージ化] を選択します。オプションで、フィールド [Zip ファイル名] にオプション パッケージの名前を入力します。コードにカスタム コード ブロックが含まれている場合は、[コード生成]、[カスタム コード] ペインで [シミュレーション ターゲットと同じカスタム コードの設定を使用] を選択します。

    または、MATLAB® コマンド ウィンドウで次のように入力します。

    % Configure the Simulink model mdlName for code generation
    configSet = getActiveConfigSet(mdlName);
    set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true);
    set_param(configSet, 'PackageName', 'CodeArchive.zip');
    set_param(configSet, 'SystemTargetFile', 'ert.tlc');
    set_param(configSet,'RTWUseSimCustomCode','on');

  4. コード アーカイブを生成します。

    • 最上位モデルからスタンドアロンの生成コードのアーカイブを生成するには、関数 slbuild を使用します。

    • モデル参照としてコードを生成するには、関数 slbuild を使用します。モデル参照としてコードを生成した後、関数 packNGo (Embedded Coder) を使用してコード アーカイブを作成します。

    • または、TargetLink を使用してコードを生成できます。生成されたコードを zip ファイルにアーカイブしてコード アーカイブを作成します。

  5. Polyspace オプション ファイルを生成してパッケージ化するには、MATLAB コマンド ウィンドウで関数 polyspacePackNGo を使用します。

    zipFile = polyspacePackNGo(mdlName);
    Polyspace オプション ファイルの生成とパッケージ化を参照してください。

    TargetLink を使用してコードを生成する場合は、TargetLink サブシステム名を polyspacepacknGo の入力引数として使用します。

  6. オプションで、pslinkoptions オブジェクトを 2 番目の引数として使用して、Polyspace 解析の既定のモデル コンフィギュレーションを変更できます。pslinkoptions オブジェクトを作成して、モデル コンフィギュレーションを変更し、アーカイブを作成する際のオブジェクトを指定します。

    psOpt = pslinkoptions(mdlName);
    psOpt.InputRangeMode = 'FullRange';
    psOpt.ParamRangeMode = 'DesignMinMax';
    zipFile = polyspacePackNGo(mdlName,psOpt);
    
    特定の Polyspace 解析オプションをもつ Polyspace オプション ファイルのパッケージ化を参照してください。

  7. オプションの 3 番目の引数を使用して、モデル参照として生成されたコード向けの Polyspace オプション ファイルを生成してパッケージ化するかどうかを指定します。関数 slbuild を使用してモデル参照としてコードを生成したとします。そのコード向けの Polyspace オプションを生成してパッケージ化するには、MATLAB コマンド ウィンドウで次のように入力します。

    zipFile = polyspacePackNGo(mdlName,[],true);
    モデル参照として生成されたコードの Polyspace オプション ファイルのパッケージ化を参照してください。

    関数 polyspacepackNGo は、オプション ファイルを含むアーカイブの絶対パスを返します。ファイルはアーカイブ フォルダー階層内の polyspace フォルダーにあります。polyspace フォルダーの内容は関数 polyspacePackNGo の入力によって変わります。

    • オプションの 2 番目と 3 番目の引数を指定しない場合、フォルダー polyspace は次のオプション ファイルをフラットな階層で含んでいます。

      • optionsFile.txt:このファイルは、生成されたコードの Polyspace を使用した解析に必要なソース ファイル、インクルード ファイル、データの範囲の指定、および解析オプションを指定します。コードにカスタム C コードが含まれている場合、このファイルはカスタム ソース ファイルとヘッダー ファイルの相対パスを指定します。

      • modelname_drs.xml:このファイルはモデルの設計範囲指定を指定します。

      • linksData.xml:このファイルは生成されたコードをモデルのコンポーネントにリンクします。

    • psOpts.ModelbyModelRef = true を指定する場合、対応するオプション ファイルがすべての参照モデルについて生成されます。これらのオプション ファイルは、コード アーカイブ内の polyspace_<referenced model name> という名前の別個のフォルダーに格納されます。フォルダー polyspace には最上位モデルのオプション ファイルが含まれます。

パッケージ化されたオプション ファイルを使用した Polyspace 解析の実行

コード アーカイブと Polyspace オプション ファイルが生成されると、そのアーカイブを使用して、Simulink のない別の開発環境で生成されたコードに対して Polyspace 解析を実行できます。

  1. コード アーカイブを解凍して polyspace フォルダーを見つけます。

  2. Windows® または Linux® のコマンド ラインで次を実行します。productname -options-file optionsFile.txt -results-dir resultdir

    • productname は次のいずれかに対応します。polyspace-bug-finder、polyspace-code-prover、polyspace-bug-finder-server、または polyspace-code-prover-server。

    • resultdir は Polyspace の結果の場所に対応します。この引数はオプションです。

    生成コードを Simulink モデルとリンクするには、ファイル linksData.xml が必要です。ファイル linksData.xml がオプション ファイル アーカイブに生成されていない場合は、Polyspace デスクトップのユーザー インターフェイスでオプション [コード ジェネレーターのサポート] を使用して、コードのどのコメントが Simulink モデルへのリンクとして動作するかを指定します。Polyspace デスクトップのユーザー インターフェイスで [ツール][基本設定] を選択し、[その他] タブを見つけます。コンテキスト メニュー [コードからモデルへのリンクとして機能するコード コメント] から使用したコード ジェネレーターを選択します。[ユーザー定義] を選択する場合は、[コメントを開始] フィールドに接頭辞を指定することで、コードからモデルへのリンクとして機能するコメントを指定します。たとえば、接頭辞を //Link_to_model として指定する場合、Polyspace は //Link_to_model で始まるコメントをモデルへのリンクとして解釈します。

    Polyspace Access を使用して結果を表示する場合は、Polyspace の結果と同じフォルダーにファイル linksData.xml をアップロードします。ファイル linksData.xml がない場合や Polyspace の結果フォルダー外にファイルをアップロードした場合、コードを Simulink モデルとリンクすることはできません。

  3. 結果を確認するには、Polyspace Access にアップロードして、結果を Web ブラウザーで表示します。または、Polyspace デスクトップ製品のユーザー インターフェイスを使用して結果を表示します。

参考

| | (Embedded Coder)

関連するトピック