メインコンテンツ

S-Function コードに対する Polyspace 解析の実行

S-Function コードのバグやエラーをチェックする場合、Polyspace® を Simulink® の S-Function ブロックから直接実行できます。

前提条件

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

S-Function の解析のワークフロー

S-Function を Polyspace で検証するには、この推奨ワークフローに従います。

  1. Polyspace との互換性をもつように S-Function をコンパイルします。

  2. Polyspace のオプションを選択します。

  3. 2 つの解析モードのいずれかを使用して Polyspace Bug Finder™ 解析または Polyspace Code Prover™ 検証を実行します。

    • この出現場所 — S-Function の指定した出現箇所をそのブロックに対する入力で解析します。

    • すべての出現場所 — S-Function を S-Function のすべての出現箇所からの入力値で解析します。

  4. Polyspace インターフェイスで結果をレビューします。

Polyspace との互換性をもつように S-Function をコンパイル

S-Function を Polyspace で解析する前に、次のいずれかのツールで S-Function をコンパイルしなければなりません。

  • レガシ コード ツール。def.Options.supportCoverageAndDesignVerifiertrue に設定します。legacy_code (Simulink) を参照してください。

  • S-Function Builder ブロック。[S-Function Builder] ダイアログ ボックスの [ビルド情報] タブで [Design Verifier のサポートを有効にする] を選択します。

  • Simulink Coverage™ 関数 slcovmex (Simulink Coverage)。オプション -sldv を指定します。

S-Function の解析の例

この例では、S-Functions を Polyspace で解析するワークフローを示します。モデル psdemo_model_link_sl と S-Function Command_Strategy を使用します。

  1. モデルを開き、レガシ コード ツールを使用して S-Function Command_Strategy をコンパイルします。

    % Open Model
    psdemo_model_link_sl
    
    % Compile S-function Command_Strategy
    def = legacy_code('initialize');
    def.SourceFiles = { 'command_strategy_file.c' };
    def.HeaderFiles = { 'command_strategy_file.h' };
    def.SFunctionName = 'Command_Strategy';
    def.OutputFcnSpec = 'int16 y1 = command_strategy(uint16 u1, uint16 u2)';
    def.IncPaths = { fullfile(polyspaceroot, ...
      'toolbox','polyspace','pslink','pslinkdemos','psdemo_model_link_sl') };
    def.SrcPaths = def.IncPaths;
    def.Options.supportCoverageAndDesignVerifier = true;
    legacy_code('compile',def);
  2. モデル psdemo_model_link_sl/controller を開きます。

  3. コード解析オプションを指定します。[アプリ] タブで [Polyspace コード検証] を選択します。次に、[Polyspace] タブで次を行います。

    • 実行する製品を次から選択します。[Bug Finder] または [Code Prover]。Code Prover 解析ではランタイム エラーが検出される一方、Bug Finder 解析ではコーディングの欠陥とコーディング ルール違反が検出されます。

    • [設定] を選択します。[コンフィギュレーション パラメーター] ダイアログ ボックスで、次のパラメーターが設定されていることを確認します。

      • 検証設定[プロジェクト構成] を選択します。このドロップダウン メニューの他の値を使用して別のコーディング ルールをチェックするには、[モード] として [Bug Finder] を使用する必要があります。

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

    設定を適用し、[コンフィギュレーション パラメーター] を閉じます。

  4. Command_Strategy ブロックを右クリックし、[Polyspace][S-Function の検証][この出現場所] を選択します。

  5. MATLAB コマンド ウィンドウで解析の進行状況を確認します。解析が完了すると、Polyspace インターフェイスで結果が開きます。

参考

トピック