メインコンテンツ

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

pslinkrunCrossRelease

R2020b 以降のバージョンの Embedded Coder で生成された C/C++ コードを、Simulink バージョンよりも新しい、異なるバージョンの Polyspace を使用して解析する

R2021a 以降

説明

pslinkrunCrossRelease は、以前のリリースの Simulink® に含まれる Embedded Coder® を使用してモデルまたはサブシステムから生成されたコードの Polyspace® 解析を実行します。

[polyspaceFolder, resultsFolder] = pslinkrunCrossRelease(ModelOrSubsystem) は、以前のリリースの Simulink に含まれる Embedded Coder を使用して ModelOrSubsystem から生成されたコードの Polyspace 解析を実行します。

[polyspaceFolder, resultsFolder] = pslinkrunCrossRelease(ModelOrSubsystem,psOpt) は、以前のリリースの Simulink を使用して ModelOrSubsystem から生成されたコードの Polyspace 解析を実行します。この解析では、pslinkoptions オブジェクト psOpt で指定されたモデル 構成オプションを使用します。

[polyspaceFolder, resultsFolder] = pslinkrunCrossRelease(ModelOrSubsystem,psOpt,asModelRef) は、以前のリリースの Simulink を使用して ModelOrSubsystem からのモデル参照として生成されたコードの Polyspace 解析を実行します。この解析では asModelRef を使用して解析対象の生成コードのタイプ (スタンドアロン コードまたはモデル参照コード) を指定します。

[polyspaceFolder, resultsFolder] = pslinkrunCrossRelease(ModelOrSubsystem,psOpt,asModelRef,OptionsFile) は、以前のリリースの Simulink を使用して ModelOrSubsystem から生成されたコードの Polyspace 解析を実行します。この解析では、オプション ファイル OptionsFile で指定された Polyspace 解析オプションを使用します。

すべて折りたたむ

以前のリリースの Simulink を使用して生成されたコードの Polyspace 解析を実行するには、関数 pslinkrunCrossRelease を使用します。この解析では、ModelOrSubsystem に関連付けられた構成オプションを使用します。Simulink のリリースは R2020b 以降でなければなりません。解析を実行する前に、Polyspace に Simulink を統合しなければなりません。Polyspace より前のリリースの MATLABを参照してください。

  1. Simulink モデル polyspace_controller_demo を開いて、コードを生成するためのモデルを構成します。

    cd(matlabroot);
    mdlName = 'polyspace_controller_demo';
    openExample('polyspace_code_prover/OpenSimulinkModelForPolyspaceAnalysisExample', ...
    'supportingFile',mdlName);
    mkdir TempDir;
    load_system(mdlName);
    cd TempDir;
    configSet = getActiveConfigSet(model);
    set_param(configSet,'Solver','FixedStepDiscrete');
    set_param(configSet, 'SystemTargetFile', 'ert.tlc');

  2. アーカイブへの生成されたコードのパッキングを有効にするには、オプション PackageGeneratedCodeAndArtifactstrue に設定します。

    set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true)
    

  3. モデルからコードを生成する。

    slbuild(model);
    

  4. Polyspace 解析を開始します。

    % Run Polyspace analysis
    [~,resultsFolder] = pslinkrunCrossRelease(model);
    bdclose(model);
    
    文字ベクトル resultsFolder に、結果フォルダーへの絶対パスが含まれています。

変更済みモデル構成を使用して Polyspace 解析を実行するには、pslinkoptions オブジェクトを使用します。変更可能な Polyspace 関連のモデル構成のリストについては、このページに記載されている、pslinkrunCrossRelease でサポートされている Polyspace コンフィギュレーション パラメーターの表を参照してください。解析を実行する前に、Polyspace に Simulink を統合しなければなりません。Polyspace より前のリリースの MATLABを参照してください。

  1. Simulink モデル polyspace_controller_demo を開いて、コードを生成するためのモデルを構成します。

    cd(matlabroot);
    mdlName = 'polyspace_controller_demo';
    openExample('polyspace_code_prover/OpenSimulinkModelForPolyspaceAnalysisExample', ...
    'supportingFile',mdlName);
    mkdir TempDir;
    load_system(mdlName);
    cd TempDir;
    configSet = getActiveConfigSet(model);
    set_param(configSet,'Solver','FixedStepDiscrete');
    set_param(configSet, 'SystemTargetFile', 'ert.tlc');

  2. アーカイブへの生成されたコードのパッキングを有効にするには、オプション PackageGeneratedCodeAndArtifactstrue に設定します。

    set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true)
    

  3. モデルからコードを生成する。

    slbuild(model);
    

  4. Polyspace 解析のモデル構成を指定するには、pslinkoptions オブジェクトを使用します。関数 pslinkoptions を使用することによって、このオブジェクトを作成します。Bug Finder 解析を実行するには、psOpt.VerificationMode'BugFinder' に設定します。ブロック内で定義された範囲をその入力変数に対してアサートするには、psOpts.InputRangeMode'DesignMinMax' として指定します。

    % Create a Polyspace options object from the model. 
    psOpts = pslinkoptions(model);
    
    % Set model configurtion for the Polyspace analysis.
    psOpts.VerificationMode = 'BugFinder';
    psOpts.InputRangeMode = 'DesignMinMax';
    
    

  5. Polyspace 解析を開始します。Polyspace 解析のモデル構成を指定するには、pslinkrunCrossRelease のオプションの 2 番目の引数として psOpt オブジェクトを設定します。

    % Run Polyspace analysis
    [~,resultsFolder] = pslinkrunCrossRelease(model,psOpt);
    bdclose(model);
    
    文字ベクトル resultsFolder に、結果フォルダーへの絶対パスが含まれています。

モデル シミュレーションを高速化するには、参照先の Simulink モデルをシミュレーション ターゲットとして呼び出します。Simulink モデルからモデル参照シミュレーション ターゲットを生成するには、ModelReferenceCoderTarget として指定されたビルド プロセスで slbuild を使用して ModelOrSubsystem からコードを生成します。生成されたコードを、packNGo (Embedded Coder) を使用してパッケージ化します。その後、リリース間の Polyspace 解析を実行することによって、生成されたコードを解析します。解析を実行する前に、Polyspace に Simulink を統合しなければなりません。Polyspace より前のリリースの MATLABを参照してください。

  1. Simulink モデル polyspace_controller_demo を開いて、コードを生成するためのモデルを構成します。

    cd(matlabroot);
    mdlName = 'polyspace_controller_demo';
    openExample('polyspace_code_prover/OpenSimulinkModelForPolyspaceAnalysisExample', ...
    'supportingFile',mdlName);
    mkdir TempDir;
    load_system(mdlName);
    cd TempDir;
    configSet = getActiveConfigSet(model);
    set_param(configSet,'Solver','FixedStepDiscrete');
    set_param(configSet, 'SystemTargetFile', 'ert.tlc');
    set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true)

  2. モデルからコードを生成する。オプション ModelReferenceCoderTarget を指定します。slbuild (Simulink) を参照してください。

    slbuild(model,'ModelReferenceCoderTarget');
    生成されたコードは、slprj フォルダーに保存されます。

  3. モデル参照として生成されたコードをパッケージ化するには、関数 packNGo を使用します。<working folder>/slprj/ert/polyspace_controller_demo にファイル buildinfo.mat を配置して、そのファイルへの絶対パスを packNGo への入力として使用します。このコマンドは、生成されたコードとオブジェクト buildinfo.mat を含むアーカイブを生成します。packNGo (Embedded Coder) を参照してください。

    % Locate buildinfo and generate code archive
    buildinfo = fullfile(pwd,'slprj','ert',model,'buildinfo.mat');
    packNGo(buildinfo)

  4. Polyspace 解析オプションを指定するには、pslinkoptions オブジェクトを使用します。関数 pslinkoptions を使用することによって、このオブジェクトを作成します。Bug Finder 解析を実行するには、psOpt.VerificationMode'BugFinder' に設定します。

    % Create a Polyspace options object from the model. 
    psOpts = pslinkoptions(model);
    
    % Set properties that define the Polyspace analysis.
    psOpts.VerificationMode = 'BugFinder';
    psOpts.InputRangeMode = 'DesignMinMax';
    
    

  5. Polyspace 解析を開始します。Polyspace 解析オプションを指定するには、pslinkrunCrossRelease のオプションの 2 番目の引数として psOpt オブジェクトを設定します。コードをモデル参照コードとして解析するには、オプションの 3 番目の引数 asModelRef を true に設定します。

    % Run Polyspace analysis
    [~,resultsFolder] = pslinkrunCrossRelease(model,psOpt,true);
    bdclose(model);
    
    文字ベクトル resultsFolder に、結果フォルダーへの絶対パスが含まれています。

  1. Simulink モデル polyspace_controller_demo を開いて、コードを生成するためのモデルを構成します。

    cd(matlabroot);
    mdlName = 'polyspace_controller_demo';
    openExample('polyspace_code_prover/OpenSimulinkModelForPolyspaceAnalysisExample', ...
    'supportingFile',mdlName);
    mkdir TempDir;
    load_system(mdlName);
    cd TempDir;
    configSet = getActiveConfigSet(model);
    set_param(configSet,'Solver','FixedStepDiscrete');
    set_param(configSet, 'SystemTargetFile', 'ert.tlc');

  2. アーカイブへの生成されたコードのパッキングを有効にするには、オプション PackageGeneratedCodeAndArtifactstrue に設定します。

    set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true)
    

  3. モデルからコードを生成する。

    slbuild(model);
    

  4. Polyspace 解析のモデル構成を指定するには、pslinkoptions オブジェクトを使用します。関数 pslinkoptions を使用することによって、このオブジェクトを作成します。Bug Finder 解析を実行するには、psOpt.VerificationMode'BugFinder' に設定します。

    % Create a Polyspace options object from the model. 
    psOpts = pslinkoptions(model);
    
    % Set properties that define the Polyspace analysis.
    psOpts.VerificationMode = 'BugFinder';
    psOpts.InputRangeMode = 'DesignMinMax';
    

  5. Polyspace 解析オプションを指定するには、オプション ファイルを作成します。オプション ファイルは、Polyspace の各オプションを 1 行に入れたフラット リストを含むテキスト ファイルです。たとえば、すべての Bug Finder チェッカーと AUTOSAR C++14 コーディング ルールを有効にするには、OptionFile.txt という名前のテキスト ファイルを作成します。このテキスト ファイルに以下を入力します。

    -checkers all
    -autosarcpp14 all
    オプション ファイルを保存します。上記のオプションは、既定の作業フォルダー内にある Options.txt という名前のオプション ファイルに保存できます。

    Polyspace Bug Finder 解析エンジンのすべてのオプションのリストを参照してください。

  6. Polyspace 解析を開始します。

    • Polyspace 解析実行のためのモデル構成を指定するには、pslinkrunCrossRelease のオプションの 2 番目の引数としてオブジェクト psOpt を設定します。

    • コードはスタンドアロン コードとして生成されるので、3 番目の引数 asModelReffalse に設定します。

    • Polyspace 解析オプションを指定するには、作成したオプション ファイルへの相対パスを 4 番目の引数として指定します。

    %  Locate options file
    optionsPath = fullfile(userpath,'Options.txt');
    % Run Polyspace analysis
    [~,resultsFolder] = pslinkrunCrossRelease(model,psOpts,false,optionsPath);
    bdclose(model);
    
    文字ベクトル resultsFolder に、結果フォルダーへの絶対パスが含まれています。

入力引数

すべて折りたたむ

解析のターゲットは、モデルまたはシステムを一重引用符で囲んだ文字ベクトルとして指定します。既定値は bdroot (Simulink) で返されるシステムです。

例: resultsDir = pslinkrunCrossRelease('polyspace_controller_demo')。ここで polyspace_controller_demo はモデルの名前です。

データ型: char

pslinkoptions オブジェクトを使用して、Polyspace 解析のモデル構成を指定します。特定の解析オプションを変更するには、psOpt を変更します。これは、個々のフィールドがモデル構成オプションを表すオブジェクトです。変更可能なオプションの完全なリストについては、以下の表を参照してください。

pslinkrunCrossRelease でサポートされている Polyspace コンフィギュレーション パラメーター

プロパティ説明説明
EnableAdditionalFileList解析する追加のファイル リストを有効にします。true または false で指定します。AdditionalFileList オプションと共に使用します。 truePolyspace は、AdditionalFileList オプションで指定された追加のファイルを検証します。
false (既定の設定)Polyspace は、追加のファイルを検証しません。
AdditionalFileList解析する追加ファイルのリスト。ファイルの cell 配列として指定します。これらのファイルを解析に追加するには、EnableAdditionalFileList オプションを使用します。cell 配列Polyspace は、列挙されたファイルを検証で考慮します。
VerificationModePolyspace 解析モード。Bug Finder 解析では 'BugFinder'、Code Prover 検証では 'CodeProver' として指定します。'BugFinder'Polyspace は Bug Finder 解析を実行します。
'CodeProver' (既定)Polyspace は Code Prover 解析を実行します。
InputRangeMode入力変数の範囲を指定します。'DesignMinMax' (既定の設定)Polyspace は、ワークスペースまたはブロック内で定義された入力範囲を使用します。
'Fullrange'Polyspace は、全範囲の入力を使用します。
ParamRangeMode定数パラメーターの範囲を指定します。'DesignMinmax'Polyspace は、ワークスペースまたはブロック内で定義された定数パラメーター範囲を使用します。
'None' (既定の設定)Polyspace は、コード内で指定されたパラメーターの値を使用します。
OutputRangeMode出力アサーションを指定します。'DesignMinMax'Polyspace は、ブロックまたはワークスペース内で定義された範囲を使用することによって出力にアサーションを適用します。
'None' (既定の設定)Polyspace は、出力変数にアサーションを適用しません。
ModelRefVerifDepth現在のモデルから参照されるモデルを解析する深さを指定します。'Current model Only' (既定の設定)Polyspace は、参照モデルを解析せずに最上位モデルのみを解析します。このオプションは、ライブラリ モデルなどの解析する必要のないモデルを参照する場合に使用します。
'1'|'2'|'3'Polyspace は、参照階層の指定された深さまでの参照モデルを解析します。最上位モデルから参照されるモデルを解析するには、プロパティ ModelRefVerifDepth'1' として指定します。最初の参照レベルから参照されるモデルを解析するには、このプロパティを '2' として指定します。
'All'Polyspace は、すべての参照モデルを検証します。
ModelRefByModelRefVerif参照モデルをまとめて解析するのか、個別に解析するのかを指定します。truePolyspace は、最上位モデルと参照モデルをまとめて解析します。このオプションは、統合またはスケーリング問題をチェックするために使用します。
false (既定の設定)Polyspace は、最上位モデルと参照モデルを個別に解析します。
AutoStubLUTルックアップ テーブルの使用方法を指定します。true (既定の設定)Polyspace は、ルックアップ テーブルをスタブし、ルックアップ テーブル コードを解析せずにモデルを検証します。
falsePolyspace は、解析にルックアップ テーブル コードを組み込みます。
CheckConfigBeforeAnalysisPolyspace 解析が開始される前に実施する構成チェックのレベルを指定します。'Off'Polyspace は、エラーのみをチェックします。エラーが検出されると解析が停止します。
'OnWarn' (既定の設定)Polyspace は、エラーが検出されたときに解析を停止し、警告が検出されたときにメッセージを表示します。
'OnHalt'Polyspace は、エラーと警告のどちらかが検出されたときに解析を停止します。

例: pslinkrunCrossRelease('polyspace_controller_demo', psOpt)。ここで、psOptpslinkoptions を呼び出すことによって作成されるオプション オブジェクトです。

モデル参照解析のインジケーター、true または false として指定されます。

  • asModelReffalse (既定) の場合は、関数がオプション ファイルを生成するため、Polyspace は生成されたコードをスタンドアロン コードとして解析します。

  • asModelReftrue の場合は、関数がオプション ファイルを生成するため、Polyspace は生成されたコードをモデル参照コードとして解析します。

例: pslinkrunCrossRelease('polyspace_controller_demo', psOpt,true)

データ型: logical

Polyspace 解析オプションのリストを含むテキスト ファイルの相対パスオプション ファイルでは、各オプションが個別の行に指定されていなければなりません。

例: pslinkrunCrossRelease('polyspace_controller_demo', psOpt,true,'OptionsFile.txt')

データ型: char

出力引数

すべて折りたたむ

Polyspace プロジェクトと結果を含むフォルダーの名前を文字ベクトルとして指定します。この変数の既定値は results_$ModelName$ です。

この値を変更する場合は、出力フォルダーを参照してください。

Polyspace 結果を含むサブフォルダーへの絶対パスを文字ベクトルとして指定します。

フォルダー results_$ModelName$ には、Polyspace プロジェクトと、解析結果を格納するサブフォルダー $ModelName$ が含まれます。この変数は、このサブフォルダーへの絶対パスを提供します。

親フォルダー results_$ModelName$ を変更する場合は、出力フォルダーを参照してください。

バージョン履歴

R2021a で導入