主要内容

覆盖S-Functions

这个例子展示了如何配置用遗留代码工具生成的S-Function,使之与覆盖率兼容。模型覆盖工具支持以下s -函数:金宝app

  • 使用遗留代码工具生成,使用def.Options.金宝appsupportCoverage调成真正的

  • 使用SF功能统智事单生成启用覆盖支持金宝app在这方面选择构建信息“SF功能统入”对话框的选项卡,或

  • 汇编了Slcovmex.功能。

打开示例模型

示例模型sldemo_lct_bus.包含使用遗留代码工具生成的S函数。S函数具有接收决策,条件和MCDC覆盖的构造。

打开sldemo_lct_bus.

配置S-函数与模型覆盖范围兼容

文件中的传统源代码counterbus.h,counterbus.c实现与相同的算法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 ='void countbusfcn(CounterBus U1 [1],Int32 U2,CounterBus Y1 [1],Int32 Y2 [1])';def.HeaderFiles = {“counterbus.h”};def.sourcefiles = {'counterbus.c'};

要使此功能与模型覆盖兼容,请启用以下选项:

def.options.金宝appsupportcoverage = true;

属性生成并编译s函数lefacy_code.功能:

lefacy_code('generate_for_sim',def);
###开始编译sldemo_sfun_counterbus MEX -I / tmp目录/ Bdoc21a_1606923_254975 / tp12935558 / ex71096464 -c /tmp/Bdoc21a_1606923_254975/tp0de1d6f6_d6dd_4b9e_b518_75cd228df323/counterbus.c -outdir的/ tmp / Bdoc21a_1606923_254975 / tp03626b13_2e5e_456b_bea8_00aac26e8d86楼内有 '海湾合作委员会'。MEX成功完成。MEX -I / tmp目录/ Bdoc21a_1606923_254975 / tp12935558 / ex71096464 /tmp/Bdoc21a_1606923_254975/tp0de1d6f6_d6dd_4b9e_b518_75cd228df323/tp8c0dfd65_c1ab_440a_ae24_1362c36137b9.c /tmp/Bdoc21a_1606923_254975/tp03626b13_2e5e_456b_bea8_00aac26e8d86/counterbus.o -L / MathWorks公司/ devel的/蝙蝠/ Bdoc21a /编译/ MATLAB /斌/ glnxa64  -lmwsl_sfcn_cov_bridge -output sldemo_sfun_counterbus构建与'gcc'。MEX成功完成。MEX -I / tmp目录/ Bdoc21a_1606923_254975 / tp12935558 / ex71096464 -c /tmp/Bdoc21a_1606923_254975/tp12935558/ex71096464/counterbus.c -outdir的/ tmp / Bdoc21a_1606923_254975 / tp03626b13_2e5e_456b_bea8_00aac26e8d86楼内有 '海湾合作委员会'。MEX成功完成。MEX -I / TMP / Bdoc21a_1606923_254975 / tp12935558 / ex71096464 /tmp/Bdoc21a_1606923_254975/tp0de1d6f6_d6dd_4b9e_b518_75cd228df323/sldemo_sfun_counterbus.c /tmp/Bdoc21a_1606923_254975/tp0de1d6f6_d6dd_4b9e_b518_75cd228df323/tpe15ddd76_3adf_4647_926c_396f2cb91e6f.c /tmp/Bdoc21a_1606923_254975/tp0de1d6f6_d6dd_4b9e_b518_75cd228df323/tp66a20eaa_91c8_4e87_94eb_a62b42b20075.c / TMP / Bdoc21a_1606923_254975 / tp03626b13_2e5e_456b_bea8_00aac26e8d86 / counterbus。O -L / MATHWORKS / DEVEL / BAT / BDOC21A / BUILD / MATLAB / BIN / GLNXA64 -LMWSL_SFCN_COV_BRIDGE -OUTPUT SLDEMO_SFUN_COUDTERBUS BUILDAY与“GCC”。MEX成功完成。###完成编译sldemo_sfun_counterbus ###退出

使功能覆盖率

要启用S-Functions的覆盖率收集,请选择C / c++ S-Functions配置参数的覆盖窗格对话框。或者,通过命令行设置该选项:

set_param ('sldemo_lct_bus'......“CovMetricStructuralLevel”'mcdc'......'recordcoverage''上'......“CovSFcnEnable”'上'......);

运行模拟并产生覆盖报告

启用覆盖数据收集后,模拟模型时会自动记录覆盖信息。在模拟结束时,您可以生成覆盖信息的HTML报告,该信息显示在内置MATLAB®Web浏览器中。

SIM('sldemo_lct_bus''停止''20');cvhtml('coverageresults',covdata);

从覆盖数据对象中提取信息

cvdata.对象可以用来提取s - function的覆盖信息,就像任何其他受支持的模型元素一样。金宝app例如,决策情况命令从块路径或块句柄中提取覆盖信息。输出是包含单个模型对象的满意和总结果的向量。

COV = DemantminInfo(Covdata,“sldemo_lct_bus / TestCounter / sldemo_sfun_counterbus”
COV = 3 4

然后,您使用此覆盖范围信息来计算涵盖模型对象的百分比:

percentCov = 100 * (cov(1)/cov(2))
percentCov = 75

S函数覆盖率与模型覆盖命令完全兼容,例如决策情况conditioninfo,麦克唐霉素