使用SIL和PIL进行代码执行评测

您可以配置环中软件(SIL)或环中处理器(PIL)模拟生成生成代码中的任务和函数的执行时度量。该软件从添加到SIL或PIL应用程序或生成的测试代码中获得的数据计算执行时间。您可以使用执行时度量来确定生成的代码是否满足在目标硬件上进行实时部署的需求。

例如,可以执行以下分析:

  1. 确定需要最多时间的任务。任务是生成代码的主要入口点。例如,采样率的阶跃函数或模型_初始化函数。

  2. 在这些任务中,调查需要最多时间的代码部分。

  3. 确定执行时间随时间步长的变化。

如果您试图减少执行时间,分析结果将帮助您关注最关键的代码部分。要观察更新模型的性能变化,请重新运行SIL或PIL模拟,并将新指标与以前的指标进行比较。

请注意

执行时间度量在很大程度上取决于所使用的硬件。为了获得可靠的结果,使用您计划在其上部署生成代码的硬件收集执行时间指标,即运行在目标硬件上执行代码的PIL模拟。在主机上执行代码的SIL模拟可能不会产生具有代表性的指标。

当SIL或PIL模拟完成时,您可以:

  • 通过显示窗口或报告查看执行时间指标。

  • 使用仿真数据检查器查看和比较仿真过程中执行时间的变化。

  • 在MATLAB中分析测量结果®环境

配置代码执行概要分析

为SIL或PIL模拟配置代码执行分析:

  1. 在顶部模型中,打开“配置参数”对话框,然后选择代码生成>验证窗玻璃

  2. 选择测量任务执行时间复选框。

  3. 对于函数执行时间,从测量函数执行时间下拉列表中,选择以下选项之一:

    • 粗糙(仅参考模型和子系统)——如果你想分析主模型组件生成的函数代码。

    • 详细(所有函数调用站点)–如果要分析模型中所有模块的生成功能代码。

  4. 工作空间变量字段中,指定一个名称。运行模拟时,软件会在MATLAB基本工作区中生成一个具有此名称的变量。该变量包含执行时间测量值,并且是类型为的对象coder.profile.ExecutionTime

    如果数据导入/导出>单一的模拟输出复选框,则软件将在金宝app仿真软件。SimulationOutput指定的对象。

  5. 保存选项下拉列表中,选择以下选项之一:

    • 仅汇总数据-如果只想生成报告并减少内存使用,例如,在长时间模拟期间。

    • 所有数据-允许您生成报告并在基本工作区中存储执行时间配置文件。模拟完成后,可以使用coder.profile.ExecutionTimecoder.profile.ExecutionTimeSection类检索在模拟过程中发生的对每个被概要分析的代码段的每次调用的执行时度量。

    • 指标只–减少Simulink之间通信信道的带宽使用金宝app®和目标应用程序。在模拟过程中,软件会在目标硬件上存储最大执行时间、平均执行时间和调用数。模拟结束时,Simulink会将数据从目标硬件上载到开发计算机。金宝app

  6. 点击好啊

对于PIL模拟,您必须配置一个特定于硬件的定时器。在为目标设置连接性配置时,创建一个计时器对象。对于SIL模拟,此操作不是必需的。

如果您选择所有数据保存选项下拉列表、度量显示窗口和生成的报告显示仿真数据检查器图标. 单击其中一个图标时,软件会将仿真结果导入仿真数据检查器。然后,您可以绘制执行时间,并管理和比较各种模拟的曲线图。

控制分析粒度

您可以控制执行时概要分析的粒度,也就是说,防止向特定函数调用站点添加代码插装。通过控制分析粒度,可以:

  • 关注需要改进的模型组件的性能。例如,在初始运行之后,对需要很少处理时间的块禁用分析。此操作减少了分析报告显示的项的数量。

  • 减少代码检测开销。例如,对于简单函数,代码检测开销可能大于函数代码的执行时间。

仅为任务生成执行时度量,在代码生成>验证在“配置参数”对话框的窗格中,选择测量任务执行时间复选框和集合测量函数执行时间

为引用模型和顶部模型中的原子子系统生成函数执行数据代码生成>验证窗格中,选择测量任务执行时间复选框和集合测量函数执行时间粗糙(仅参考模型和子系统)

函数执行数据的生成需要在生成的代码中插入测量探针。只有在设置了函数包装字段(在代码生成选项卡中的)那种一次性的功能可重用函数. 如果字段设置为汽车,则探针的插入取决于包装选择的结果汽车设置。如果字段设置为内联,软件不插入探针。

请注意

在生成的代码中,软件使用测量探针包装每个函数调用,除非:

要为模型引用层次结构生成函数执行时间,请执行以下操作:

  1. 在顶部模型中,打开配置参数对话框,并选择代码生成>验证窗玻璃

  2. 选择测量任务执行时间复选框

  3. 为每一个模型要分析的块,请指定测量函数执行时间仅在需要函数执行时间的引用级别。

例如,考虑一个顶级模型模型块A,它依次包含模型B区。

如果要为模型B中的函数生成执行时间,请选择测量任务执行时间用于顶部模型,并指定测量函数执行时间B型的。

上面型号的这些参数覆盖了参考型号的相应参数:

  • 测量任务执行时间。如果对顶级模型禁用此参数,则也会对引用的模型禁用函数分析。

  • 工作空间变量

  • 保存选项

要控制模型中的一个块(例如,一个子系统块)的代码执行分析,请使用代码配置覆盖块参数:

  1. 在Simuli金宝appnk编辑器中,选择块。

  2. 在命令窗口中运行:

    设置参数(gcb,“CodeProfilingOverride”,blockParameterValue
    将这些值中的一个用于blockParameterValue:

    • “关”——禁用对块的分析。

    • “上”–如果为父模型启用了评测,则为块启用评测。

    • “继承”(默认)——应用父块的分析设置。

更改块分析配置不会导致重新生成生产代码。

如果您的顶级模型有PIL块,则适用于PIL块的执行分析设置是您用于创建PIL块的原始模型的设置。看到用子系统的模块进行仿真.你不能使用代码配置覆盖控制PIL区块的侧写。

另请参阅

|||

相关话题