Main Content

Simulink Design Verifier データ ファイルの管理

Simulink® Design Verifier™ は解析の完了後にデータ ファイルを生成します。このデータ ファイルは、sldvData 構造体が含まれる MAT ファイルです。この構造体には、このソフトウェアが解析時に収集および生成するすべてのデータが格納されます。同じデータはハーネス モデルにはグラフィカルに、さらにレポートにも表示されますが、詳細なカスタム解析やカスタム レポートの生成にこのデータ ファイルを使用できます。

sldvData 構造体の生成

sldvData 構造体の内容を確認するには、以下の手順を実行します。

  1. sldvdemo_flipflop モデルのテスト ケースを生成します。

    openExample('sldv/FlipFlopTestGenerationExample', ...
    'supportingFile', 'sldvdemo_flipflop');
    sldvrun('sldvdemo_flipflop');
  2. sldvdemo_flipflop モデルの sldvData 構造体を MATLAB® ワークスペースに読み込みます。

    load('sldv_output\sldvdemo_flipflop\sldvdemo_flipflop_sldvdata.mat')
  3. 構造体内のフィールドの名前を表示します。

    sldvData = 
    
           ModelInformation: [1x1 struct]
        AnalysisInformation: [1x1 struct]
               ModelObjects: [1x2 struct]
                Constraints: []
                 Objectives: [1x12 struct]
                  TestCases: [1x4 struct]
                    Version: '2.1'

sldvData のモデル情報フィールド

以下の節では、sldvData 構造体のフィールドについて説明します。

モデル情報

ModelInformation フィールドには、Simulink Design Verifier で解析したモデルに関する情報が含まれます。次の表では、ModelInformation フィールドのサブフィールドについて説明します。

サブフィールド名説明
Name

モデル名。

Version

モデル番号。

Author

ユーザー名。

TimeStamp

最後に更新された日時。

SubsystemPath

解析されたサブシステムがある場合、その絶対パス名。

ExtractedModel

SubsystemPath にあるサブシステムを解析するために抽出されたモデルの名前。

ReplacementModel

ブロック置換が含まれているモデルの名前。

HarnessOwnerModel

解析された Simulink Test™ ハーネス モデルの所有者の名前。

解析情報

AnalysisInformation フィールドには、解析オプションと関連情報がリストされます。表では、AnalysisInformation フィールドについて説明します。

サブフィールド名説明
Status

解析のステータス。

AnalysisTime

解析の所要時間 (秒)

Options

解析時に使用される Simulink Design Verifier オプション オブジェクトのディープ コピー。

InputPortInfo

システムの最上位レベル内のすべての Inport ブロックに関する情報が含まれた構造体の cell 配列。

OutputPortInfo

システムの最上位レベル内のすべての Outport ブロックに関する情報が含まれた構造体の cell 配列。

SampleTimes

内部使用専用。

Parameters

内部使用専用。

AbstractedBlocks

内部使用専用。

Approximations

解析時に実行された近似について説明する構造体。詳細については、Role of Approximations During Model Analysisを参照してください。

ReplacementInfo

内部使用専用。

PreProcessingTime

モデル表現を作成または再利用する時間 (秒単位)。

ModelRepresentationInfo

解析に使用するモデル表現の日付と時刻。

モデル オブジェクト

ModelObjects フィールドには、モデルの項目とそれに関連付けられたオブジェクティブがリストされます。表では、ModelObjects フィールドについて説明します。

サブフィールド名説明
descr

Stateflow® チャートのオブジェクトなど、モデル オブジェクトの絶対パス。

typeDesc

モデル オブジェクトのタイプ。ステート オブジェクトの場合は S、遷移オブジェクトの場合は T として返されます。

slPath

Simulink モデル オブジェクトの絶対パス。

sfObjType

Stateflow オブジェクトのタイプ。例: ステートは S、遷移は T

sfObjNum

Stateflow オブジェクトの一意の識別子を表す整数。

sid

内部使用専用。

designSid

内部使用専用。

replacementSid

内部使用専用。

objectives

モデル オブジェクトに関連したオブジェクティブのインデックスを表す整数のベクトル。

制約

Constraints フィールドには、モデルの入力端子に指定された最小値および最大値がある場合、それに関する情報がリストされます。表では、Constraints フィールドについて説明します。

サブフィールド名説明
DesignMinMax

各入力端子の名前、最小値および最大値を含む構造体の cell 配列。

オブジェクティブ

Objectives フィールドには、タイプ、ステータス、説明など、それぞれのオブジェクティブに関する情報がリストされます。表では、Objectives フィールドについて説明します。

サブフィールド名説明
type

オブジェクティブのタイプ。

status

オブジェクティブのステータス。

descr

オブジェクティブに関連した説明。

label

オブジェクティブのラベル。

outcomeValue

オブジェクティブの結果を表す整数。

coveragePointIdx

オブジェクティブに関連したカバレッジ ポイントのインデックスを表す整数。

linkInfo

内部使用専用。

range

内部使用専用。

detectability

オブジェクティブの検出可能性ステータス。

このフィールドは、解析モード[テスト生成] に設定し、モデル カバレッジ オブジェクティブ[拡張 MCDC] に設定した場合に、データ ファイルに表示されます。

detectionSites

検出可能オブジェクティブの、検出サイトの Simulink 識別子 (SID) の配列。

このフィールドは、解析モード[テスト生成] に設定し、モデル カバレッジ オブジェクティブ[拡張 MCDC] に設定した場合に、データ ファイルに表示されます。

modelObjectIdx

オブジェクティブに関連したモデル オブジェクトのインデックスを表す整数。

analysistime

オブジェクティブの解析時間。

testCaseIdx

オブジェクティブで解決されたテスト ケースまたは反例のインデックスを表す整数。

テスト ケースまたは反例

このフィールド名はチェックのタイプによって異なります。

  • [モード] パラメーターを [設計エラー検出] に設定すると、CounterExamples フィールドに整数オーバーフローまたはゼロ除算エラーとなる各テスト ケースに関する情報が示されます。

  • [モード] パラメーターを [テスト生成] に設定すると、TestCases フィールドにその信号値やテスト オブジェクティブなど、各テスト ケースに関する情報がリストされます。

  • [モード] パラメーターを [プロパティ証明] に設定すると、CounterExamples フィールドに反例とそれによって反証される証明オブジェクティブの情報が個々にリストされます。

表では TestCases フィールドおよび CounterExamples フィールドについて説明します。

サブフィールド名説明
timeValues

テスト ケースまたは反例の信号に関連付けられた時間の値のベクトル。

dataValues

テスト ケースまたは反例の信号に関連付けられたデータの値のベクトル。

paramValues

以下のフィールドが含まれている、テスト ケースまたは反例に関連したパラメーターの詳細を表す構造体:

name — パラメーター名。

value — パラメーター値。

noEffect — パラメーター値がオブジェクティブに影響するかどうかを示す論理値。

stepValues

テスト ケースまたは反例の信号を構成するタイム ステップ数を示すベクトル。

objectives

テスト ケースまたは反例で扱われるオブジェクティブを示す構造体。この構造体には以下のフィールドがあります。

objectiveIdx — テスト ケースが達成するオブジェクティブまたは反例が反証するオブジェクティブのインデックスを表す整数。

atTime — テスト ケースがオブジェクティブを達成するとき、あるいは反例がオブジェクティブを反証するときの時間値。

atStep — テスト ケースがオブジェクティブを達成するとき、あるいは反例がオブジェクティブを反証するときのタイム ステップ。

dataNoEffect

信号のデータ値がオブジェクティブに影響するかどうかを示す logical ベクトルの cell 配列。ベクトルは信号のデータ値がオブジェクティブに影響しないことを 1 により示し、それ以外には 0 を使用します。

expectedOutput

テスト ケースの信号を使用したモデルのシミュレーションから得られた出力値を示すベクトルの cell 配列。それぞれのセルは、最上位システムの個々の Outport ブロックに関連付けられた出力値を表します。[期待される出力値を含める] が選択されている場合、このサブフィールドにデータが格納されます。

Version フィールド

Version フィールドは、解析で使用された Simulink Design Verifier バージョンのリストを示します。

デッド ロジック フィールド

デッド ロジックの部分チェックを実行オプションを使用してモデルのデッド ロジックを解析すると、sldvData 構造体の DeadLogic フィールドに、デッド ロジックとなった各オブジェクティブについての情報がリストされます。

次の表では、DeadLogic フィールドの各サブフィールドについて説明します。

サブフィールド名説明
label

デッド ロジックとなったオブジェクティブの説明。

descr

Stateflow チャートのオブジェクトなど、モデル オブジェクトの絶対パス。

modelObjIdx

オブジェクティブに関連したモデル オブジェクトのインデックスを表す整数。

coverageType

カバレッジ オブジェクティブのタイプ。

coverageIdx

オブジェクティブに関連付けられているカバレッジ ポイントのインデックスを表す整数。

ObjectiveIdx

モデル オブジェクトに関連付けられているオブジェクティブのインデックスを表す整数。

データ ファイルを使用したモデルのシミュレーション

関数 sldvruntest を使用して、Simulink Design Verifier データ ファイル内のテスト ケースまたは反例を使用してモデルをシミュレートできます。データ ファイルのテスト ケースを使用して sldvdemo_flipflop モデルをシミュレートするには、以下の手順を実行します。

  1. sldvdemo_flipflop モデルをシミュレートし、テスト ケースを生成します。

    openExample('sldv/FlipFlopTestGenerationExample', ...
    'supportingFile', 'sldvdemo_flipflop');
    sldvrun('sldvdemo_flipflop');
  2. モデルを解析した後に Simulink Design Verifier が生成するデータ ファイルの位置を保存します。

    sldvDataFile = 'sldv_output\sldvdemo_flipflop\sldvdemo_flipflop_sldvdata.mat'
  3. 関数 sldvruntest を使用して、データ ファイルの 2 番目のテスト ケースで sldvdemo_flipflop モデルをシミュレートします。

    [ outdata ] = sldvruntest('sldvdemo_flipflop', sldvDataFile, 2)

    sldvruntest の出力は、Simulink.SimulationOutput オブジェクトの配列です。

  4. Simulink.SimulationOutput オブジェクトを使用して、最初のテスト ケースの出力データを調べます。

    tout_sldvruntest = outdata(1).find('tout_sldvruntest');
    xout_sldvruntest = outdata(1).find('xout_sldvruntest');
    yout_sldvruntest = outdata(1).find('yout_sldvruntest');
    logsout_sldvruntest = outdata(1).find('logsout_sldvruntest');

データ ファイルからの結果の読み込み

モデルの以前の解析の結果をデータ ファイルから読み込むことができます。詳細は以前の結果の読み込みsldvloadresults を参照してください。

参考

| |