メインコンテンツ

Embedded Coder ルックアップ テーブル用スタブの生成 (-stub-embedded-coder-lookup-table-functions)

自動生成されルックアップ テーブルを使用する関数のスタブ化と精度の高いモデル化

説明

このオプションは、モデル生成コードに対してのみ使用できます。このオプションは、MathWorks® のコード生成製品を使用するルックアップ テーブル ブロックを使用する Simulink® モデルからコードを生成する場合にのみ関係します。

自動生成された、本体で特定の種類のルックアップ テーブルを使用する関数を、検証でスタブ化しなければならないことを指定します。Polyspace® は、線形内挿を使用し、線形外挿を許可しないルックアップ テーブル関数のスタブ化をサポートしています。つまり、ルックアップ テーブルを使用した結果は、必ずテーブルの下限と上限の間に収まらなければなりません。

オプションの設定

Simulink から検証を実行している場合は、Simulink の [コンフィギュレーション パラメーター] のオプション ルックアップ テーブルのスタブ化を使用して、同じタスクを実行します。

それ以外の場合は、以下のいずれかの方法を使用してオプションを設定します。

  • Polyspace ユーザー インターフェイス (デスクトップ製品のみ): プロジェクト構成で [入力およびスタブ] ノードを選択してから、このオプションを選択します。

  • コマンド ラインとオプション ファイル: オプション -stub-embedded-coder-lookup-table-functions を使用します。コマンド ライン情報を参照してください。

このオプションを使用する理由

このオプションを使用すると、検証精度が上がり、オレンジ チェックの数が少なくなります。一般に、ルックアップ テーブル関数の検証精度はあまり高くありません。本ソフトウェアでは、このような関数について一定の仮定を行わなければなりません。ランタイム エラーを見落とさないように、検証ではルックアップ テーブルの使用結果が結果のデータ型によって許容される全範囲になると仮定されます。この仮定により、ルックアップ テーブル関数が呼び出されていると、未証明の結果 (オレンジ チェック) が数多く生じる可能性があります。このオプションを使用することで、この仮定を絞り込みます。線形内挿あり、外挿なしのルックアップ テーブルを使用する関数の場合、結果は少なくともテーブルの範囲内に収まります。

このオプションは、モデルに Lookup Table ブロックが含まれる場合のみ影響します。生成後のコードでは、Lookup Table ブロックに対応する関数もルックアップ テーブルを使用します。関数名は特定の規則に従います。検証では命名規則が使用され、関数内のルックアップ テーブルが線形内挿あり、外挿なしを使用するかどうかが特定されます。その後、検証ではこのような関数をスタブに置き換え、より正確な検証が行われます。

設定

オン (既定の設定)

自動生成された関数で線形内挿あり、外挿なしのルックアップ テーブルが使用される場合、検証では以下を行います。

  • 関数本体内でのランタイム エラーはチェックしません。

  • 関数の呼び出し側では、実際の関数ではなく関数スタブを呼び出します。このスタブでは、ルックアップ テーブルの使用結果がテーブルの範囲内に収まるようにします。Polyspace は、次のルックアップ テーブル関数をスタブ化します。

    • 線形内挿ルックアップ テーブル関数

    • 出力をクリップする外挿ルックアップ テーブル関数

関数内のルックアップ テーブルを特定するために、検証では関数名が使用されます。解析結果には、その関数が解析されなかったことが示されます。関数名にカーソルを置くと、次のメッセージが表示されます。

    Function has been recognized as an Embedded Coder Lookup-Table function.
    It was stubbed by Polyspace to increase precision.
    Unset the -stub-embedded-coder-lookup-table-functions option to analyze the code below.

オフ

検証では、自動生成され、ルックアップ テーブルを使用する関数がスタブ化されません。

ヒント

  • このオプションは自動生成された関数にのみ適用されます。ルックアップ テーブルを使用する独自の C/C++ S-Function をモデルに組み込む場合、こうした関数は自動生成された関数の命名規則に従いません。このような関数は、このオプションによってスタブ化されることはありません。独自に作成したルックアップ テーブル関数の動作を自動生成された関数と同じにする場合は、オプション -code-behavior-specifications を使用して、独自に作成した関数を関数 __ps_lookup_table_clip にマップします。

  • Simulink から検証を実行する場合、このオプションは既定でオンになります。認証のために検証ツールとコード生成ツールを切り離す場合は、このオプションをオフにします。

  • このオプションは、線形外挿を使用するルックアップ テーブルをスタブ化しません。

コマンド ライン情報

パラメーター: -stub-embedded-coder-lookup-table-functions
既定値: オン
例 (Code Prover): polyspace-code-prover -sources file_name -stub-embedded-coder-lookup-table-functions
例 (Code Prover Server): polyspace-code-prover-server -sources file_name -stub-embedded-coder-lookup-table-functions

バージョン履歴

R2016b で導入