模型覆盖率任务自动化
您可以通过使用 Simulink Coverage 函数和类在脚本中实现覆盖率分析的自动化。例如,您可能希望通过采用不同的模型参数对同一模型进行仿真来收集覆盖率数据。您无需手动更改参数,而是可以在循环中运行仿真并收集覆盖率数据。
使用脚本收集覆盖率数据
此示例说明如何使用 sim 收集覆盖率数据。
加载模型
首先,将您想要分析的模型和系统加载到内存中。
load_system('slvnvdemo_ratelim_harness');
设置覆盖率设置
使用 中描述的方法之一来设置覆盖率参数,例如仿真输入、参数结构体或名称-值对组。例如,为了使用参数结构体,需要设置一个结构体,其字段为配置参数的名称,其值为这些参数的对应值。sim
paramStruct.CovEnable = 'on'; paramStruct.CovMetricStructuralLevel = 'Decision'; paramStruct.CovSaveSingleToWorkspaceVar = 'on'; paramStruct.CovSaveName = 'covData'; paramStruct.CovScope = 'Subsystem'; paramStruct.CovPath = '/Adjustable Rate Limiter'; paramStruct.StartTime = '0.0'; paramStruct.StopTime = '2.0';
有关使用 Simulink.SimulationInput 对象的示例,请参阅使用 Parsim 在并行仿真中记录覆盖率。
设置测试并对模型进行仿真
示例模型使用在 MATLAB® 工作区中定义的输入值。此示例中使用的值在名为 within_lim.mat 的数据文件中定义。您可以使用 load 将该文件加载到工作区中。
load within_lim.mat;
使用 sim 并以 paramStruct 作为额外的输入来对模型进行仿真,以使用指定的参数收集覆盖率数据。
simOut = sim('slvnvdemo_ratelim_harness',paramStruct);
生成覆盖率报告
您可以使用 cvhtml 生成 HTML 报告,来查看仿真所生成的覆盖率数据。第一个输入是将要保存在当前目录中的覆盖率报告的名称。第二个输入是根据模型参数 CovSaveSingleToWorkspaceVar 和 CovSaveName 保存到工作区中的 cvdata 对象。
通过将标志 '-sRT=0' 用作 cvhtml 的第三个输入,您可以生成报告而不自动打开该报告。
cvhtml('covReport',covData,'-sRT=0');
保存覆盖率数据
使用 cvsave 保存覆盖率结果。第一个输入是覆盖率数据文件的名称,第二个输入是 cvdata 对象。
cvsave('covdata',covData);
关闭模型
使用 cvexit 退出覆盖率环境,并使用 close_system 关闭模型。第二个输入 0 表示您不想在关闭之前保存模型。
cvexit
close_system('slvnvdemo_ratelim_harness',0);
sim 与运行按钮的区别
当您使用运行按钮运行启用了覆盖率的仿真时,覆盖率报告会自动打开,并且覆盖率突出显示默认处于启用状态。当您使用 sim 以编程方式运行仿真时,覆盖率报告不会打开,并且不会启用覆盖率突出显示。
要查看使用模型突出显示功能显示的覆盖率结果,请使用
cvmodelview。要查看覆盖率报告,请使用
cvhtml。要打开结果浏览器,请在 Simulink® 中打开模型。在 App 选项卡中,点击覆盖率分析器。然后点击结果浏览器。
有关另一个详细示例,请参阅命令行验证教程。
使用 Simulink Test 收集覆盖率
如果您拥有 Simulink Test™ 许可证,则可以使用测试管理器来收集覆盖率数据。有关详细信息,请参阅运行测试用例并收集覆盖率 (Simulink Test)。
另请参阅
sim | Simulink.SimulationInput | cvsim | cvtest | cvhtml