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 |
例 (Code Prover Server): polyspace-code-prover-server -sources |
バージョン履歴
R2016b で導入