Main Content

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

データ ストアのアクセス違反の検出

Simulink® Design Verifier™ の設計エラー検出解析では、シミュレーション中に発生するデータ ストアの読み取りと書き込みの意図しない順序が検出されます。解析により、次のデータ ストアのアクセス違反が検出されます。

  • 書き込み前の読み取り

  • 読み取り後の書き込み

  • 書き込み後の書き込み

モデルでデータ ストアのアクセス違反を検出するには、次のようにします。

  1. [Design Verifier] タブの [モード] セクションで、[設計エラー検出] を選択します。

  2. [エラー検出の設定] をクリックします。

  3. [コンフィギュレーション パラメーター] ダイアログ ボックスの [設計エラー検出] ペインで、データ ストアのアクセス違反を選択します。[OK] をクリックします。

  4. [設計エラーの検出] をクリックします。

解析が完了すると、モデルが解析結果と共に強調表示され、[結果の概要] ウィンドウに解析の概要が表示されます。

モデルでのデータ ストアのアクセス違反の検出

この例では、データ ストア アクセスにおける違反を検出し、解析結果を確認する方法を説明します。sldvexDataStoreAccessViolations のモデル例は、alpha データ ストアと beta データ ストアを定義する Data Store Memory ブロックから構成されます。モデル例では、Write Subsystem は Data Store Write ブロックを使用してデータをデータ ストアに書き込み、Read Subsystem は Data Store Read ブロックを使用してデータをデータ ストアから読み取ります。

手順 1: モデルを開く

コマンド プロンプトで、次を入力します。

open_system('sldvexDataStoreAccessViolations');

手順 2: データ ストアのアクセス違反の検出のための解析オプションの設定

モデルはあらかじめ、[データ ストアのアクセス違反] パラメーターが On に設計されています。

手順 3: 設計エラー検出解析の実行

[Design Verifier] タブで [設計エラーの検出] をクリックします。Simulink Design Verifier は、データ ストアのアクセス違反についてモデルを解析します。解析が完了すると、[結果の概要] ウィンドウに 1 つのオブジェクティブが反証されたことが表示されます。

手順 4: 解析結果のレビュー

解析結果に基づいてモデルが強調表示されます。

(1) Read Subsystem を開き、赤で強調表示されている Data Store Read1 ブロックをクリックします。結果インスペクター ウィンドウには、データ ストア アクセス順序に違反する書き込み前の読み取りオブジェクティブが表示されます。

(2) エラーを再現するテスト ケースを表示するには、[テスト ケースを表示] をクリックします。テスト ケースを表示するハーネス モデルおよび Signal Builder ブロックが開きます。

(3) テスト ケースのシミュレーションを実行するには、[Signal Builder] ダイアログ ボックスで [シミュレーションの開始] をクリックします。シミュレーションが完了すると、[診断ビューアー] ウィンドウに次の警告メッセージが表示されます。

The block 'sldvexDataStoreAccessViolations_harness/Test Unit (copied from sldvexDataStoreAccessViolations)/Read Subsystem/Data Store Read1' is reading from the data store 'sldvexDataStoreAccessViolations_harness/Test Unit (copied from sldvexDataStoreAccessViolations)/Data Store Memory1' before any blocks have written to this entire region of memory at time 0.0. For performance reasons, occurrences of this diagnostic for this memory at other simulation time steps will be suppressed.

手順 5: データ ストアのアクセス違反エラーの修正

読み取り操作が実行されるまではブロックが beta データ ストアに書き込まれていないため、書き込み前の読み取りオブジェクティブはエラーとなります。

Write Subsystem を開き、Write "alpha" をダブルクリックします。Write "alpha" サブシステムでは、alpha データ ストアのみが定数で書き込まれます。そのため、書き込み前の読み取りのデータ ストア アクセス違反が "ベータ" Data Store Read ブロックで発生します。

エラーを修正するには、Write "alpha" サブシステムで Constant ブロックを追加し、その値を (次の図で強調表示されている) Data Store Write ブロックを使用して beta データ ストアに書き込みます。

[Design Verifier] タブで [設計エラーの検出] をクリックします。解析の完了後に、すべてのオブジェクティブが有効であることがレポートされます。

参考

制限

データ ストアに対する初期化ロジックによる読み取りと書き込みについては、違反はチェックされません。

たとえば、初期化関数による初期化ロジックはデータ ストアのアクセス違反のチェックで無視されます。

初期化の内外で呼び出されるあらゆるタイプのロジックについて、初期化に関連しない動作が解析されます。

関連するトピック