自动化模型覆盖任务
您可以使用 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);
生成覆盖率报告
您可以生成 HTML 报告来查看您的仿真使用 cvhtml
生成的覆盖率数据。第一个输入是将保存在当前目录中的覆盖率报告的名称。第二个输入是根据模型参数 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™ 许可证,则可以使用测试管理器来收集覆盖率数据。欲了解更多信息,请访问 Run a Test Case and Collect Coverage (Simulink Test)。
另请参阅
sim
| Simulink.SimulationInput
| cvsim
| cvtest
| cvhtml