模块简化
描述
通过折叠或删除模块组来减少执行时间。
类别:仿真目标
设置
默认值:On
- on
Simulink® 软件搜索并简化以下模块模式:
冗余的类型转换 - 不必要的类型转换模块,例如
int
类型转换模块,其输入和输出类型为int
死代码 - 未使用的代码路径中的模块或信号
单任务系统中将速率从快变慢的 RRate Transition 模块 - 输入频率比输出频率更快的 Rate Transition 模块
- off
Simulink 软件不搜索可优化的模块模式。也不会对仿真和生成代码进行优化。
提示
当您选择模块简化时,Simulink 软件会将某些模块组折叠成单个更高效的模块,或者完全删除这些模块。这种简化可加快模型的仿真速度和生成代码的执行速度。
模块简化不会更改源模型的外观。
可调参数不会阻止通过消除死代码来简化模块。
一旦发生模块简化,Simulink 软件将不再显示已删除模块的排序顺序。
您可以通过查询模型的
ReducedNonVirtualBlockList
参数来获得被简化模块的模块句柄的向量,从而以编程方式确定模型中简化了哪些模块。ReducedBlockHandlesVector = get_param(ModelName,'ReducedNonVirtualBlockList');
如果您有 Simulink Coder™ 许可证,模块简化仅用于删除表示模块执行的生成代码。而其他支持数据(如采样时间和数据类型的定义),则可能继续保留在生成的代码中。
死代码消除
未使用的代码路径中的任何模块或信号都会从生成的代码中消除。
满足以下条件的模块会被视为是未使用的代码路径的一部分:
模块的所有信号路径最后连接到一个不执行的模块。不执行的模块示例包括 Terminator 模块、禁用的 Assertion 模块、为模块简化配置的 S-Function 模块以及当对代码生成禁用 MAT 文件记录时的 To Workspace 模块。
模块的任何信号路径都不包括该模块下游的全局信号存储。
可调参数不会阻止通过消除死代码来简化模块。
请参考模块图中的信号路径。
如果您选中模块简化,Simulink Coder 软件将对每个信号路径作出如下响应:
对于信号路径... Simulink Coder 软件将... In1 到 Out1 生成代码,因为不满足死代码消除条件。 In2 到 Terminator 不生成代码,因为满足死代码消除条件。 In3 到 Scope 如果 MAT 文件记录已启用,则生成代码;如果 MAT 文件记录已禁用,则消除代码。
突出显示简化的模块
当选择模块简化时,您可以突出显示在模型仿真和代码生成过程中为减少执行时间而删除的非虚拟模块。要突出显示这些模块,请在 Simulink 工具条上,转至调试选项卡。从叠加信息菜单中,选择简化的模块。
注意
如果没有要突出显示的简化模块,则简化的模块选项处于禁用状态。
简化的模块会在画布上突出显示。更新或仿真模型后,普通仿真期间简化的模块会突出显示。编译模型后,在代码生成过程中简化的模块会突出显示。
要取消突出显示,请点击画布右上角的 ,或从叠加信息菜单中清除简化的模块选项。
命令行信息
参数:BlockReduction |
值:'on' | 'off' |
默认值:'on' |
推荐的设置
应用场景 | 设置 |
---|---|
调试 | 对于仿真或开发过程,为 Off 对生产代码的生成没有影响 |
可追溯性 | Off |
效率 | On |
安全预警 | 无影响 |
相关主题
- Eliminate Dead Code Paths in Generated Code (Simulink Coder)
- 基于时间的调度 (Simulink Coder)
- 代码效率 (Simulink Coder)
- 模型配置参数:仿真目标