Simulink 模型中自定义 C/C++ 代码的覆盖率
当您为包含受支持的 C/C++ S-Function、调用外部 C/C++ 代码的 MATLAB Function 模块、带有 C/C++ 代码的 C Caller 模块或集成自定义 C/C++ 代码进行仿真的 Stateflow® 图记录覆盖率时,将记录 C/C++ S-Function、MATLAB Function 模块或 Stateflow 图中的 C/C++ 代码的覆盖率。自定义代码的覆盖率结果可以与模型其余部分在同一报告中查看。对于每个 S-Function 模块、MATLAB Function 模块或 Stateflow 图,报告链接到该模块中 C/C++ 代码的详细覆盖率报告。
在 MATLAB Function 模块、C Caller 模块和 Stateflow 图中启用自定义 C/C++ 代码的代码覆盖率
要在您的 Simulink® 模型中启用自定义 C/C++ 代码的代码覆盖率:
在配置参数的仿真目标窗格上,选择导入自定义代码。
在配置参数的仿真目标窗格上,选择启用自定义代码分析。
Simulink Coverage™ 记录 MATLAB Function 模块、C Caller 模块和 Stateflow 图中自定义 C/C++ 代码的代码覆盖率。
S-Function 的代码覆盖率
使 S-Function 与模型覆盖率兼容
如果您使用 legacy_code
函数、S-Function Builder 模块或 mex
函数来创建 S-Function,请适当调整您的方法以使 S-Function 与模型覆盖率兼容。
有关这三种方法的更多信息,请参阅使用 C MEX S-Function 创建模块。
使用 legacy_code
函数的 S-Function
使用代表遗留代码工具属性的字段初始化 MATLAB® 结构体。
def = legacy_code('initialize')
要启用模型覆盖率,请打开选项
def.Options.supportCoverage
。def.Options.supportCoverageAndDesignVerifier = true;
以通常的方式使用结构体
def
来生成 S-Function。有关示例,请参阅S-Function 的覆盖率。
使用 S-Function Builder 的 S-Function
将库浏览器中的用户定义的函数库中的 S-Function Builder 模块实例复制到您的模型中。
双击该模块以打开 S-Function Builder 对话框。
在编译信息选项卡上,选择启用对覆盖率的支持。
使用 mex
函数的 S-Function. 如果您使用 mex
函数来编译和链接源文件,请改用 slcovmex
函数。slcovmex
函数编译您的源代码并使其与覆盖率兼容。
该函数具有与 mex
函数相同的语法并采用相同的选项。此外,您还可以提供一些与模型覆盖率相关的选项。有关更多信息,请参阅 slcovmex
。
生成 S-Function 的覆盖率报告
在 Simulink 编辑器中,选择建模选项卡上的模型设置。
在配置参数对话框的覆盖率窗格中,在包括在分析中下,选择 C/C++ S-Function。
当您运行仿真时,覆盖率报告包含模型中 C/C++ S-Function 模块的覆盖率度量。对于每个 S-Function 模块,该报告链接到该模块中 C/C++ 代码的详细覆盖率报告。