Main Content

本页采用了机器翻译。点击此处可查看英文原文。

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++ 代码的代码覆盖率:

  1. 在配置参数的仿真目标窗格上,选择导入自定义代码

  2. 在配置参数的仿真目标窗格上,选择启用自定义代码分析

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

  1. 使用代表遗留代码工具属性的字段初始化 MATLAB® 结构体。

    def = legacy_code('initialize')

  2. 要启用模型覆盖率,请打开选项 def.Options.supportCoverage

    def.Options.supportCoverageAndDesignVerifier = true;
  3. 以通常的方式使用结构体 def 来生成 S-Function。有关示例,请参阅S-Function 的覆盖率

使用 S-Function Builder 的 S-Function

  1. 将库浏览器中的用户定义的函数库中的 S-Function Builder 模块实例复制到您的模型中。

  2. 双击该模块以打开 S-Function Builder 对话框。

  3. 编译信息选项卡上,选择启用对覆盖率的支持

使用 mex 函数的 S-Function.  如果您使用 mex 函数来编译和链接源文件,请改用 slcovmex 函数。slcovmex 函数编译您的源代码并使其与覆盖率兼容。

该函数具有与 mex 函数相同的语法并采用相同的选项。此外,您还可以提供一些与模型覆盖率相关的选项。有关更多信息,请参阅 slcovmex

生成 S-Function 的覆盖率报告

  1. 在 Simulink 编辑器中,选择建模选项卡上的模型设置

  2. 在配置参数对话框的覆盖率窗格中,在包括在分析中下,选择 C/C++ S-Function

当您运行仿真时,覆盖率报告包含模型中 C/C++ S-Function 模块的覆盖率度量。对于每个 S-Function 模块,该报告链接到该模块中 C/C++ 代码的详细覆盖率报告。

相关示例

详细信息