Main Content

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

モデル解析のボトムアップ アプローチ

大規模モデルの解析において、Simulink® Design Verifier™ ソフトウェアはボトムアップ アプローチを使用することで最も効果的に機能します。このアプローチでは、まず小さなモデル コンポーネントが解析されます。これは既定の Auto test suite optimization を使用するより高速に実行できます。

ボトムアップ アプローチには、いくつかの利点があります。

  • 制御環境下におけるエラー検出、テスト生成またはプロパティ証明の速度低下の問題が解決できます。

  • モデル全体を解析する前に小さなモデル コンポーネントで問題を解決する方が効率的です。特に、そのモデルのコンテキストでしか見つけることができないモデル内の到達不可能なコンポーネントがある場合は効果が顕著です。

  • 問題を見つけてはそれを修正し、別の問題を見つけてはそれを修正していくというように、より迅速に処理を反復できます。

  • あるモデル コンポーネントに、たとえば、あるコンポーネントがシミュレーションで到達不可能である、という問題があるとします。その場合、大規模モデルでは、このソフトウェアは "すべての" オブジェクティブについてテストを生成できません。

大規模モデルで次のワークフローを試してください。

  1. テスト生成アドバイザーを使用して解析可能なモデル コンポーネントを特定し、それらのコンポーネントのテストを生成します。詳細は、テスト生成アドバイザーによる解析可能コンポーネントの特定を参照してください。

  2. 問題があれば、制約を追加するかブロック置換を指定してそれを修正します。

  3. 小さなコンポーネントの解析後、必要な制約および置換を元のモデルに再度適用します。モデル全体を解析します。

    ボトムアップ解析の終了時には、Simulink Design Verifier が高速で解析できる最上位モデルができています。

サブシステムからの解析結果のシステム レベルでの再利用

この節では、ユニット レベルで実行された Simulink Design Verifier の結果がシステム レベルにどのように一般化されるかについて説明します。これを使用する状況としては、システム レベルで Simulink Design Verifier を実行する際に代わりに使用する場合や、システム レベルで実行する必要があるチェックを限定する場合が考えられます。

Simulink Design Verifier でユニット レベルの結果をシステム レベルに一般化する際のポイントを次に示します。

  • 設計エラーが有効であると証明された場合やユニット レベルでデッド ロジックが見つかった場合、統合レベルでも同じ結果が有効 (またはデッド ロジック) であると見なされます。システム コンテキストがなければ、ユニット レベルの解析を使用することで、システム レベルでユニットを実行する場合よりも動作の制約のセットを少なくすることができます。言い換えると、制約がない設定で設計エラーが有効であれば、それより制約が多い設定でも有効になります。

  • ユニット レベルで設計エラーがある場合やデッド ロジックがない場合、統合レベルでは異なる結果になることがあります。この場合、それらのオブジェクティブを統合レベルで再解析する必要があります。

制限

サブシステムからの解析結果をシステム レベルで再利用する際の制限事項を次に示します。

  • コンフィギュレーション パラメーターの値がユニット レベルとシステム レベルで異なる場合、システム レベルでは Simulink Design Verifier の結果が変わる可能性があります。

  • 浮動小数点の Inf/NaN のチェックをユニット レベルで実行する場合、ユニットへの入力は有限であると仮定されます。同様に、非正規のチェックをユニット レベルで実行する場合、ユニットへの入力は正規であると仮定されます。Inf/NaN および非正規をユニット レベルへの入力として考慮する必要がある場合は、それらのチェックを無効にするか、統合レベルで解析することを検討してください。詳細については、前提条件と制限を参照してください。

  • 解析用にユニットを抽出するために関数 sldvextract を使用する場合、状況によっては、Simulink Design Verifier により、Data Store Memory ブロックと Data Store Read ブロックまたは Data Store Write ブロック (あるいはその両方) が挿入されます。詳細については、グローバル データ ストレージから読み取られたサブシステムの解析を参照してください。これにより、ユニット レベルのシミュレーション動作に違いが生じます。また、データ ストアのアクセス違反のチェックで異なる結果になる可能性があります。