主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

管理 Simulink Design Verifier 数据文件

Simulink® Design Verifier™ 完成分析后生成数据文件。数据文件是包含 sldvData 结构体的 MAT 文件。该结构体存储了软件在分析过程中收集和产生的所有数据。尽管软件框架模型和报告中以图形方式显示相同的数据,但您可以使用数据文件进行进一步的自定义分析或生成自定义报告。

生成 sldvData 结构

完成以下步骤来探索 sldvData 结构体的内容。

  1. sldvdemo_flipflop 模型生成测试用例。

    openExample('sldv/FlipFlopTestGenerationExample', ...
    'supportingFile', 'sldvdemo_flipflop');
    sldvrun('sldvdemo_flipflop');
  2. sldvData 模型的 sldvdemo_flipflop 结构体加载到 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 模块的信息的结构体元胞数组。

OutputPortInfo

包含有关系统顶层每个 Outport 模块的信息的结构体元胞数组。

SampleTimes

仅限内部使用。

Parameters

仅限内部使用。

AbstractedBlocks

仅限内部使用。

Approximations

描述分析过程中执行的近似值的结构。有关详细信息,请参阅 近似值在模型分析中的作用

ReplacementInfo

仅限内部使用。

PreProcessingTime

构建或重用模型表示的时间(以秒为单位)。

ModelRepresentationInfo

分析中使用的模型表示的日期和时间。

模型对象

ModelObjects 字段列出了模型项目及其相关目标。该表描述了 ModelObjects 字段。

子字段名称描述
descr

模型对象的完整路径,包括 Stateflow® 图中的对象。

typeDesc

模型对象的类型,对于状态对象返回 S,对于转移对象返回 T。

slPath

  • 模型对象的完整路径。

  • 由于模块替换而引入新模块时,替换模块中模型对象的完整路径。

sfObjType

Stateflow 对象的类型。例如:S 表示状态,T 表示转移。

sfObjNum

表示 Stateflow 对象的唯一标识符的整数。

sid

仅限内部使用。

designSid

仅限内部使用。

replacementSid

仅限内部使用。

objectives

表示与模型对象相关的目标索引的整数向量。

约束

Constraints 字段列出了有关模型中输入端口上指定的最小值和最大值(如果有)的信息。该表描述了 Constraints 字段。

子字段名称描述
DesignMinMax

包含每个输入端口的名称以及最小值和最大值的结构体元胞数组。

目标

Objectives 字段列出了有关每个目标的信息,例如其类型、状态和描述。该表描述了 Objectives 字段。

子字段名称描述
type

目标类型。

status

目标状态。

descr

与目标相关的描述。

label

目标标签。

outcomeValue

表示目标结果的整数。

coveragePointIdx

表示与目标相关的覆盖率点索引的整数。

linkInfo

仅限内部使用。

range

仅限内部使用。

detectability

目标的可检测状态。

当您将分析 模式 设置为测试生成并将 模型覆盖率目标 设置为增强的 MCDC 时,此字段会出现在数据文件中。

detectionSites

Simulink 可检测目标的检测站点标识符 (SID)数组。

当您将分析 模式 设置为测试生成并将 模型覆盖率目标 设置为增强的 MCDC 时,此字段会出现在数据文件中。

modelObjectIdx

表示与目标相关的模型对象的索引的整数。

analysistime

目标的分析时间。

testCaseIdx

表示目标中解决的测试用例或反例的索引的整数。

测试用例或反例

该字段名称取决于检查的类型:

  • 如果将 Mode 参数设置为设计错误检测,则 CounterExamples 字段将提供导致整数溢出或除以零错误的每个测试用例的信息。

  • 如果将 Mode 参数设置为测试生成,则 TestCases 字段会列出有关每个测试用例的信息,例如其信号值和测试目标。

  • 如果将 Mode 参数设置为属性证明,则 CounterExamples 字段会列出有关每个反例及其证伪的证明目标的信息。

该表描述了 TestCasesCounterExamples 字段。

子字段名称描述
timeValues

与测试用例或反例中的信号相关的时间值向量。

dataValues

与测试用例或反例中的信号相关的数据值向量。

paramValues

表示与测试用例或反例相关的参数详细信息的结构,包含以下字段:

name - 参数名称。

value - 参数值。

noEffect - 逻辑地表示参数值是否影响目标。

stepValues

指定测试用例或反例中组成信号的时间步数的向量。

objectives

指定测试用例或反例要解决的目标的结构。其字段包括:

objectiveIdx - 表示测试用例实现的目标或反例证伪的目标的索引的整数。

atTime - 测试用例实现目标或反例证伪目标的时间值。

atStep - 测试用例实现目标或反例证伪目标的时间步。

dataNoEffect

逻辑向量元胞数组,指定信号的数据值是否影响目标。该向量使用 1 来指示信号的数据值不影响目标;否则,它使用 0

expectedOutput

向量元胞数组,指定使用测试用例信号仿真模型所产生的输出值。每个单元格代表与顶层系统中不同 Outport 模块相关的输出值。如果您选择包括预期输出值,则会填充此子字段。

Version 字段

Version 字段列出了分析中使用的 Simulink Design Verifier 版本。

死逻辑字段

如果您使用 运行部分检查以检测死逻辑 选项分析模型中的死逻辑,则 DeadLogic 结构体中的 sldvData 字段会列出有关每个死逻辑目标的信息。

该表描述了 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 函数使用数据文件中的第二个测试用例仿真 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

另请参阅

| |