这个例子显示了如何配置与遗留代码工具生成的S-功能可与兼容的覆盖。该模型覆盖工具支持S-功能是:万博1manbetx
与遗留代码工具生成的,与def.Options.万博1manbetxsupportCoverage
设置为真正
,
使用SFunctionBuilder生成启用覆盖支持万博1manbetx选择在建立信息选项卡,或
编译的slcovmex
函数。
模型的例子sldemo_lct_bus包含用遗留代码工具生成的s函数。s函数具有接收决策、条件和MCDC覆盖的构造。
文件中的遗留源代码counterbus.h和counterbus.c实现与in相同的算法sldemo_lct_bus / slCounter。遗留代码工具数据结构定义如下:
load_system (“sldemo_lct_bus”);open_system ('sldemo_lct_bus / TestCounter');DEF = legacy_code('初始化');def.SFunctionName =“sldemo_sfun_counterbus”;def.OutputFcnSpec =" counterbusFcn(COUNTERBUS u1[1], int32 u2, COUNTERBUS y1[1], int32 y2[1]) ";def.HeaderFiles = {'counterbus.h'};def.SourceFiles = {“counterbus.c”};
要使s功能与模型覆盖兼容,请启用以下选项:
def.Options.万博1manbetxsupportCoverage= true;
生成和使用编译S-功能legacy_code
功能:
legacy_code (“generate_for_sim”def);
###开始编译sldemo_sfun_counterbus mex -I/tmp/Bdoc20a_1326390_179339/tp7005ef03/ex71096464 -c /tmp/ bdoc20a_1326390_1793a0 /tp53ed1d6e_2de3_49ac_be4c_0bab936844a0/counterbus.c -outdir /tmp/ bdoc20a_1326390_1793a0 / tpadaec2b6_3efb_4e48_9a8a_979b4e79c Building with 'gcc'。墨西哥人成功完成。mex -I/tmp/Bdoc20a_1326390_179339/tp7005ef03/ex71096464 /tmp/Bdoc20a_1326390_179339/ tp53ed1d6e_2de3_49ac_be4c_0bab9368a0 /tp6ee7719c_c39d_44c0_9283_d7efd727e36a.c /tmp/Bdoc20a_1326390_179339/ tpadaec2b6_3efb_4e48_9a8a_979ba7e79c /counterbus。o -L/mathworks/devel/bat/Bdoc20a/build/matlab/bin/glnxa64 -lmwsl_sfcn_cov_bridge -output sldemo_sfun_counterbus Building with 'gcc'墨西哥人成功完成。mex -I/tmp/Bdoc20a_1326390_179339/tp7005ef03/ex71096464 -c /tmp/Bdoc20a_1326390_179339/ tmp/ tmp/Bdoc20a_1326390_179339/tpadaec2b6_3efb_4e48_9a8a_979ba7b4e79c Building with 'gcc'。墨西哥人成功完成。墨西哥人- i / tmp / Bdoc20a_1326390_179339 / tp7005ef03 ex71096464 / tmp / Bdoc20a_1326390_179339 / tp53ed1d6e_2de3_49ac_be4c_0bab936844a0 sldemo_sfun_counterbus.c / tmp / Bdoc20a_1326390_179339 / tp53ed1d6e_2de3_49ac_be4c_0bab936844a0 tp3caec973_c3a4_46e7_ab3d_c274143a0594.c / tmp / Bdoc20a_1326390_179339 / tp53ed1d6e_2de3_49ac_be4c_0bab936844a0 tp1f506600_c591_49be_87f6_ba0b57dbd28c.c / tmp / Bdoc20a_1326390_179339 / tpadaec2b6_3efb_4e48_9a8a_979ba7b4e79c / counterbus。o -L/mathworks/devel/bat/Bdoc20a/build/matlab/bin/glnxa64 -lmwsl_sfcn_cov_bridge -output sldemo_sfun_counterbus Building with 'gcc'墨西哥人成功完成。完成编译sldemo_sfun_counterbus,退出
要启用覆盖集合S-功能,请选择C / C ++ S-功能在里面配置参数的覆盖面板对话框。可替代地,设置通过命令行选项:
set_param(“sldemo_lct_bus”,…“CovMetricSettings”,“电路倍增设备”,…“RecordCoverage”,“上”,…“CovHtmlReporting”,“上”,…'CovSFcnEnable',“上”…);
一旦您启用了覆盖率数据收集,当您模拟模型时,覆盖率信息将被自动记录下来。在模拟结束时,模型覆盖工具生成覆盖信息的HTML报告,该报告显示在内置的MATLAB®web浏览器中。
sim卡(“sldemo_lct_bus”,“StopTime”,“20”);
的cvdata
对象可以被用于提取S-功能覆盖信息,就像任何其他支持的模型元素。万博1manbetx例如,decisioninfo
命令从块路径或块句柄中提取覆盖率信息。输出是一个向量,包含单个模型对象的满意结果和总结果。
x = decisioninfo (covdata,'sldemo_lct_bus / TestCounter / sldemo_sfun_counterbus')
4
然后您使用这个覆盖率信息来计算被覆盖模型对象的百分比:
percentCov = 100 *(COV(1)/ COV(2))
percentCov = 75
s功能覆盖与模型覆盖命令完全兼容,例如decisioninfo
,conditioninfo
和mcdcinfo
。