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模块的信息的结构单元数组。

OutputPortInfo

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

SampleTimes

仅限内部使用。

Parameters

仅限内部使用。

AbstractedBlocks

仅限内部使用。

Approximations

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

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

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

目标

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 字段列出了分析中使用的 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函数使用数据文件中的第二个测试用例仿真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

另请参阅

| |