使用嵌入式编码器®Model Advisor检查以配置您的模型以生成代码。
检查身份证:mathworks.codegen.PCG金宝appSupport
识别代码生成不支持或不推荐用于C/ c+金宝app+产品代码部署的块。
这种检查部分地识别了不推荐用于C/ c++产品代码生成的模型构造。为金宝app®编码器™和Embedded Coder,这些模型构造标识出现在表中金宝appSimulink块支持金宝app.
在某些情况下,该检查标记代码生成支持的块。金宝app对于这些块,您应该查看支持说明中提供的脚注信息,并遵循Model Advisor提供的建议操作。金宝app
遵循此检查的建议可以增加生成符合CERT C、CWE和ISO/IEC TS 17961标准的代码的可能性。
可与嵌入式编码器和金宝app模型检查™.
条件 | 建议的行动 |
---|---|
模型或子系统包含不应该用于生产代码部署的块。 | 考虑替换结果中列出的块。单击可疑项列表中的元素以定位条件。 |
模型或子系统包含支持但不推荐用于生产代码生成的块。金宝app | 检查支持说明,并遵循M金宝appodel Advisor提供的建议操作。 |
您可以:
在您的库模型上运行此检查。
分析库链接块的内容。
分析屏蔽子系统中的内容。
排除块和图表,如果你有金宝app仿真软件检查许可证。
编辑时检查支持此检查。金宝app
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.codegen.EfficientTunableParamExpr
检查模型配置以获得可以提高代码效率的优化设置。
该检查确定了推荐用于C/ c++产品代码生成的模型配置参数。对于嵌入式编码器,这些模型配置参数提高了编码效率。
可与嵌入式编码器。
条件 | 建议的行动 |
---|---|
优化抑制代码生成,以防止所选可调参数表达式的整数溢出。选择饱和码消除。 | 如果您有嵌入式编码器,并且正在使用基于ert的系统目标文件,请选择配置参数从可调参数表达式中删除饱和超出范围值的代码或者设置参数EfficientTunableParamExpr 来在 . |
该优化抑制了处理浮点到整数转换结果的代码生成南 值。选择转换码消除。 |
如果您有嵌入式编码器,并且正在使用基于ert的系统目标文件,请选择配置参数删除将NaN映射为零的浮点到整数转换的饱和代码或者设置参数EfficientMapNaN2IntZero 来在 . |
点击修改设置配置模型优化设置会影响代码生成的效率。没有安全问题:
的从可调参数表达式中删除饱和超出范围值的代码参数,如果您的模拟包含作为可调表达式项的参数的整个值范围,并且Simulink不会生成饱和警告。金宝app
的删除将NaN映射为零的浮点到整数转换的饱和代码参数,如果您的模型模拟不包含NaN输入值。
不能在库模型上运行。
不允许排除块或图表。
检查身份证:mathworks.codegen.LUTRangeCheckCode
识别生成代码以防止断点或索引值超出范围输入的查找表块。
该检查验证以下块不会生成代码来防止落在有效断点值范围之外的输入:
这个检查也验证了这一点使用预查找的插值块不会生成代码来防止落在有效索引值范围之外的输入。
遵循建议的操作可以提高所生成代码的执行效率和ROM效率。
可与嵌入式编码器。
条件 | 建议的行动 |
---|---|
查找表块生成超出范围的检查代码。 |
更改块对话框上的设置,这样就不会生成超出范围的检查代码。
|
您可以:
在您的库模型上运行此检查。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
点击修改防止查找表块生成超出范围的检查代码,从而使生成的代码更有效。
编辑时检查支持此检查。金宝app
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.codegen.LogicBlockUseNonBooleanOutput
识别不使用的逻辑块布尔
为输出数据类型。
该检查验证以下块的输出数据类型为布尔
:
与常量比较
与零比较
检测变化
检测减少
检测跌落负
检测跌落非阳性
增加检测
检测上升非阴性
检测上升阳性
间隔测试
区间动态检验
逻辑运算符
关系操作符
使用输出数据类型布尔
提高所生成代码的执行效率。
可与嵌入式编码器。
条件 | 建议的行动 |
---|---|
逻辑块的输出数据类型不是布尔 . |
在块对话框中,设置输出数据类型来布尔 . |
您可以:
在您的库模型上运行此检查。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
模型顾问排除概述(金宝app仿真软件检查)
点击修改强制使用逻辑块布尔
作为输出数据类型。如果逻辑块使用uint8
对于输出类型,单击修改将输出类型更改为布尔
.
检查身份证:mathworks.codegen.HWImplementation
识别不一致或未指定的硬件实现设置
Simu金宝applink和金宝app仿真软件编码器软件需要两套目标规格。第一组描述最终的预期生产目标。第二组描述当前选择的目标。如果配置不匹配,代码生成器将创建额外的代码来模拟生产目标的行为。硬件属性的不一致或不规范可能导致目标硬件的代码生成效率低或不正确。
可与嵌入式编码器。
条件 | 建议的行动 |
---|---|
硬件实现参数未设置为推荐值。 | 在“配置参数”对话框的“硬件实现”窗格中,指定以下参数:
在“配置参数”对话框中,输入以下参数:
|
硬件实现生产硬件设置不匹配测试硬件设置。 | 在“配置参数”对话框中,考虑选择测试硬件与生产硬件相同(ProdEqTarget )复选框,或修改设置以匹配。 |
检查身份证:mathworks.codegen.SWEnvironmentSpec
识别有问题的软件环境设置。
金宝app对某些软件环境设置的支持可能导致低效的代码生成和非优化的结果。
行业标准为C,如ISO®和MISRA®,要求标识符在前31个字符内是唯一的。
Stateflow®具有弱Simulink I/O数据金宝app类型的图表会导致低效率的代码。
可与嵌入式编码器。
条件 | 建议的行动 |
---|---|
C.标识符的最大长度不符合行业标准。 | 在“配置参数”对话框中,在代码生成>标识符窗格中,设置最大标识符长度参数31 字符。 |
在“配置参数”对话框中,配置的参数代码生成>接口窗格未设置为推荐值。 | 在“配置参数”对话框中,在代码生成>接口窗格中,清除以下参数:
在“配置参数”对话框中清除金宝app支持非内联s函数. |
在“配置参数”对话框中,配置的参数代码生成>标识符窗格未设置为推荐值。 | 在“配置参数”对话框中,在代码生成>标识符窗格中,设置生成标量内联参数为参数文字 . |
在“配置参数”对话框中,在代码生成>接口窗格中,金宝app支持:可变大小信号被选中。这可能会导致代码效率低下。 | 如果您不打算支持可变大小的信号,请在“配置参数”金宝app对话框中,在代码生成>接口窗格中,清晰的金宝app支持:可变大小信号. |
该模型包含具有弱Simulink I/O数据类型规范的状态流程图。金宝app | 选择状态流程图属性使用Simulink I/O强数据类型金宝app.在选择属性之后,您可能需要调整模型中的数据类型。 |
在使用状态流程图时,需要获得状态流许可证。
使用Simulink输入和输出的强数据类型金宝app(Stateflow)
检查身份证:mathworks.codegen.CodeInstrumentation
识别有问题的代码插装。
对生成的代码进行插装可能导致非最佳结果。
测试点需要全局内存,并不是生产代码生成的最佳选择。
可与嵌入式编码器。
如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.codegen.UseRowMajorAlgorithm
识别产生低效算法的块。
该检查根据模型的数组布局确定在生成的代码中生成低效算法的块。
可与嵌入式编码器。
条件 | 建议的行动 |
---|---|
配置参数阵列布局设置为列为主 用于列主代码生成。 |
禁用配置参数使用针对行主数组布局优化的算法. |
配置参数阵列布局设置为行 用于生成行主代码。 |
选择配置参数使用针对行主数组布局优化的算法. |
分析屏蔽子系统中的内容。
检查身份证:mathworks.misra.CodeGenSettings
识别可以影响MISRA C:2012兼容代码生成的配置参数。
遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。
可与嵌入式编码器和金宝app仿真软件检查.
条件 | 建议的行动 |
---|---|
数学和数据类型 | |
配置参数采用除法进行定点净斜率计算未设置为在 或只对整数的倒数使用除法 . |
集采用除法进行定点净斜率计算来在 或只对整数的倒数使用除法 . |
配置参数Inf或NaN块输出设置为 配置参数Inf或NaN块输出设置为 |
当金宝app支持非有限数是:
|
配置参数模型验证块启用设置为使用本地设置 或让所有 . |
集模型验证块启用来禁用所有 . |
配置参数无定向事件广播设置为没有一个 或警告 . |
集无定向事件广播来错误 . |
配置参数换行溢出设置为没有一个 |
设置配置参数换行溢出来警告 或错误 . |
硬件实现 | |
配置参数生产硬件有符号整数除法到四舍五入设置为未定义的 |
集生产硬件有符号整数除法到四舍五入来零 或地板上 . |
配置参数对有符号整数右移作为算术移位被选中。 | 清晰的对有符号整数右移作为算术移位. |
模拟目标 | |
配置参数MATLAB函数的编译时递归极限是否设置为其他值0 . |
集MATLAB函数的编译时递归极限来0 . |
配置参数动态内存分配的MATLAB函数被选中。 | 清晰的动态内存分配的MATLAB函数. |
配置参数为MATLAB函数启用运行时递归被选中。 | 清晰的为MATLAB函数启用运行时递归. |
代码生成 | |
配置参数位字段声明器类型说明符设置为
|
集位字段声明器类型说明符来uint_T . |
配置参数铸造模式未设置为标准兼容 . |
集铸造模式来标准兼容 . |
配置参数代码替换库未设置为没有一个 或AUTOSAR 4.0 . |
集代码替换库来 |
配置参数外部模式被选中。 | 清晰的外部模式. |
配置参数生成共享常量被选中。 | 清晰的生成共享常量. |
配置参数包括评论清除。 |
选择包括评论. |
配置参数MAT-file日志被选中。 | 清晰的MAT-file日志 |
对于基于ert的目标系统,配置参数MATLAB用户评论清除。 | 选择MATLAB用户评论. |
配置参数的值最大标识符长度未提供。 | 将该值设置为与实现相关的限制。默认为31 . |
配置参数括号的水平未设置为最大值(用括号指定优先级) . |
集括号水平来最大值(用括号指定优先级) . |
对于基于ert的目标系统,配置参数在函数声明中保留static关键字当文件包装格式设置为 |
选择在函数声明中保留static关键字. |
配置参数用有符号的位移位代替2的幂乘法被选中。 | 清晰的用有符号的位移位代替2的幂乘法. |
配置参数共享代码放置设置为汽车 . |
集共享代码放置来 |
对于基于ert的目标系统,配置参数金宝app支持连续时间被选中 | 清晰的金宝app支持连续时间. |
对于基于ert的目标系统,配置参数金宝app支持非内联s函数被选中 | 清晰的金宝app支持非内联s函数. |
配置参数系统生成的标识符设置为经典 . |
集系统生成的标识符来缩短 . |
配置参数系统目标文件设置为基于grt的目标。 | 集系统目标文件到基于ert的目标。 |
配置参数对模型初始化使用动态内存分配当选中时代码接口封装设置为可重用的功能 . |
清晰的对模型初始化使用动态内存分配. 请注意 仅在以下情况下选择代码接口封装设置为 |
点击修改所有将参数值修改为推荐值。
请注意
当你点击修改所有对于具有基于grt的目标的模型,模型顾问不会更新系统目标文件配置参数到基于ert的系统。
参数子检查取决于用标记的参数的结果D在结果表中。当结果是D-Warning,当前值列在结果表中的状态不满足先决条件约束对于子检查。修改参数后,请重新执行检查。
请注意
一些子检查是特定于基于ert的系统的配置参数的。单击时,这些参数不会更新修改所有除非你把模型改成基于ert的系统。
此检查不检查引用的模型。
检查身份证:mathworks.misra.Blk金宝appSupport
识别MISRA C:2012兼容代码生成不支持或不推荐的代金宝app码块。
遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。
可与嵌入式编码器和金宝app仿真软件检查.
您可以:
在您的库模型上运行此检查。
分析库链接块的内容。
分析屏蔽子系统中的内容。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
编辑时间检查。编辑时检查支持此检查。金宝app
检查身份证:mathworks.misra.BlockNames
识别包含以下内容的块名/
.
遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。
可与嵌入式编码器和金宝app仿真软件检查.
条件 | 建议的行动 |
---|---|
块名包含/ 在模型或子系统中找到。 |
删除/ 来自块名。 |
在库模型上运行。
分析库链接块的内容。
分析屏蔽子系统中的内容。
如果你有金宝app仿真软件检查许可,允许排除块和图表。
编辑时间检查。编辑时检查支持此检查。金宝app
MISRA C:2012,规则3.1
检查身份证:mathworks.misra.AssignmentBlocks
识别赋值没有block参数的块如果没有分配任何输出元素,则执行该操作设置为错误或警告.
此检查适用于赋值下的Simulink块库中可用的块金宝app金宝app>数学操作.
遵循此检查的建议,可以增加为嵌入式应用程序生成MISRA C:2012兼容代码的可能性,以及符合CERT C、CWE、ISO/IEC TS 17961标准的代码。
可与嵌入式编码器和金宝app仿真软件检查.
条件 | 建议的行动 |
---|---|
模型或子系统可能包含的赋值数组初始化不完整的块,没有块参数如果没有分配任何输出元素,则执行该操作设置为错误或警告. | 设置块参数如果没有分配任何输出元素,则执行该操作到其中一个推荐值:
|
在库模型上运行。
分析库链接块的内容。
分析屏蔽子系统中的内容。
如果你有金宝app仿真软件检查许可,允许排除块和图表。
编辑时间检查。编辑时检查支持此检查。金宝app但是,不支持以下检查条件,因为编辑时检查无法确定是否金宝app赋值block在一个Iterator子系统中。
设置块参数如果没有分配任何输出元素,则执行该操作到其中一个推荐值:
错误,如果赋值block不在Iterator子系统中。
警告,如果赋值block在一个Iterator子系统中。
MISRA C:2012,规则9.1
ISO/IEC TS 17961: 2013, uninitref
证书c, exp33-c
CWE CWE - 908
检查身份证:mathworks.misra.SwitchDefault
识别没有默认大小写的开关大小写表达式。
检查标志模型对象具有没有默认大小写的开关大小写表达式。
遵循此检查的建议,可以增加为嵌入式应用程序生成MISRA C:2012兼容代码的可能性,以及符合CERT C、CWE、ISO/IEC TS 17961标准的代码。
如果使用Polyspace对块进行了验证,则检查不会标记没有默认情况的块®注释。当你运行检查时,带理由的块表列出了块,没有默认情况下,有一个理由。
可与嵌入式编码器和金宝app仿真软件检查.
条件 | 建议的行动 |
---|---|
模型对象有一个没有默认大小写的开关大小写表达式。 |
为开关情况块,考虑选择块参数显示默认情况显式指定默认大小写。 |
您可以:
在您的库模型上运行此检查。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
编辑时间检查。编辑时检查支持此检查。金宝app
MISRA C:2012, Rule 16.4
ISO/IEC TS 17961: 2013, swtchdflt
证书c, msc01-c
CWE CWE - 478
注释代码并隐藏已知或可接受的结果(Polyspace Bug Finder)
检查身份证:mathworks.misra.AutosarReceiverInterface
识别没有匹配错误端口的AUTOSAR接收机接口输入。
遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。检查标志AUTOSAR接收器接口输入丢失错误端口。下表标识了当相应的错误端口缺失时由检查标记的接收机接口端口的AUTOSAR数据访问模式类型。
AUTOSAR数据访问模式类型 | 被Check标记? |
---|---|
ImplicitReceive |
是的 |
ExplicitReceive |
是的 |
QueuedExplicitReceive |
没有 |
ErrorStatus |
没有 |
ModeReceive |
没有 |
IsUpdated |
没有 |
EndToEndRead |
是的 |
ExplicitReceiveByVal |
没有 |
否则 |
没有 |
当使用Polyspace注释对错误端口进行校正时,检查不会标记缺失的错误端口。当你运行检查时,带理由的块表中列出了缺少的有理由的错误端口。
可与嵌入式编码器和金宝app仿真软件检查.
条件 | 建议的行动 |
---|---|
AUTOSAR接收器接口输入没有匹配的错误端口。 |
添加缺失错误端口并映射到相应的AUTOSAR接收机接口输入。 |
当数据访问方式为时,AUTOSAR接收机接口端口没有匹配错误端口ImplicitReceive ,ExplicitReceive ,或EndToEndRead . |
添加缺失错误端口并映射到相应的AUTOSAR接收机接口输入。 |
您可以:
分析顶层/根级模型。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
MISRA C: 2012,指令4.7
模型顾问排除概述(金宝app仿真软件检查)
注释代码并隐藏已知或可接受的结果(Polyspace Bug Finder)
配置AUTOSAR元素和属性(AUTOSAR Blockset)
AUTOSAR组件配置(AUTOSAR Blockset)
检查身份证:mathworks.misra.BusElementNames
标识用作总线元素名称的总线对象名称。
使用此检查可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。检查标记Simulink的实例。金宝app总线对象名称作为Simulink。金宝app总线元素名称。
可与嵌入式编码器和金宝app仿真软件检查.
条件 | 建议的行动 |
---|---|
总线对象名称用作总线元素名称。 | 更改标记的总线对象名称或总线元素名称,使它们不相同。 |
MISRA C:2012,规则5.6
MISRA AC AGC,规则5.3
检查身份证:mathworks.security.CodeGenSettings
确定可能影响符合安全编码标准的配置参数。
遵循此检查的建议可以增加生成符合CERT C、CWE、ISO/IEC TS 17961安全编码标准的代码的可能性。
可与嵌入式编码器和金宝app仿真软件检查.
条件 | 建议的行动 |
---|---|
诊断 | |
配置参数Inf或NaN块输出设置为 配置参数Inf或NaN块输出设置为 |
当金宝app支持非有限数是:
|
配置参数模型验证块启用设置为使用本地设置 或让所有 . |
集模型验证块启用来禁用所有 . |
配置参数无定向事件广播设置为没有一个 或警告 . |
集无定向事件广播来错误 . |
配置参数换行溢出设置为没有一个 . |
集换行溢出来警告 或错误 . |
硬件实现 | |
配置参数生产硬件有符号整数除法到四舍五入设置为未定义的 . |
集生产硬件有符号整数除法到四舍五入来零 或地板上 . |
配置参数对有符号整数右移作为算术移位被选中。 | 清晰的对有符号整数右移作为算术移位. |
模拟目标 | |
配置参数MATLAB函数的编译时递归极限是否设置为其他值0 . |
集MATLAB函数的编译时递归极限来0 . |
配置参数动态内存分配的MATLAB函数被选中。 | 清晰的动态内存分配的MATLAB函数. |
配置参数为MATLAB函数启用运行时递归被选中。 | 清晰的为MATLAB函数启用运行时递归. |
代码生成 | |
配置参数代码替换库未设置为没有一个 或AUTOSAR 4.0 . |
集代码替换库来没有一个 或AUTOSAR 4.0 . |
配置参数外部模式被选中。 | 清晰的外部模式. |
配置参数包括评论清除。 |
选择包括评论. |
配置参数MAT-file日志被选中。 | 清晰的MAT-file日志. |
对于基于ert的目标系统,配置参数MATLAB用户评论清除。 | 选择MATLAB用户评论. |
配置参数用有符号的位移位代替2的幂乘法被选中。 | 清晰的用有符号的位移位代替2的幂乘法. |
对于基于ert的目标系统,配置参数金宝app支持连续时间被选中 | 清晰的金宝app支持连续时间. |
对于基于ert的目标系统,配置参数金宝app支持非内联s函数被选中 | 清晰的金宝app支持非内联s函数. |
配置参数系统目标文件设置为基于grt的目标。 | 集系统目标文件到基于ert的目标。 |
配置参数对模型初始化使用动态内存分配被选中。 | 清晰的对模型初始化使用动态内存分配. 请注意 仅在以下情况下选择代码接口封装设置为 |
点击修改所有将参数值修改为推荐值。
请注意
当你点击修改所有对于具有基于grt的目标的模型,模型顾问不会更新系统目标文件配置参数到基于ert的系统。
参数子检查取决于用标记的参数的结果D在结果表中。当结果是D-Warning,当前值列在结果表中的状态不满足先决条件约束对于子检查。修改参数后,请重新执行检查。
请注意
一些子检查是特定于基于ert的系统的配置参数的。单击时,这些参数不会更新修改所有除非你把模型改成基于ert的系统。
检查身份证:mathworks.security.Block金宝appSupport
识别不建议遵守安全编码标准的块。
遵循此检查的建议可以增加生成符合CERT C、CWE、ISO/IEC TS 17961安全编码标准的代码的可能性。
可与嵌入式编码器和金宝app仿真软件检查.
您可以:
在您的库模型上运行此检查。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
编辑时间检查。编辑时检查支持此检查。金宝app
检查身份证:mathworks.codegen.QuestionableSubsysSetting
识别有问题的子系统块设置。
在生成的代码中实现为void-void函数的子系统块使用全局内存来存储子系统I/O。
可与嵌入式编码器。
条件 | 建议的行动 |
---|---|
子系统块具有子系统参数>函数包装选项设置为那种一次性的功能 . |
设置子系统参数>函数包装参数汽车 . |
子系统块具有子系统参数>函数包装选项设置为可重用的功能 . |
设置子系统参数>函数包装参数汽车 . |
如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.codegen.RowMajorCodeGen金宝appSupport
检查行主代码生成不支持的块。金宝app
该检查标识不支持行主代码生成的块。金宝app
可与嵌入式编码器。
条件 | 建议的行动 |
---|---|
模型与行主数组布局中的外部数据进行接口。 | 设置配置参数阵列布局来行 . |
分析屏蔽子系统中的内容。
检查身份证:mathworks.codegen.RowMajorUnsetSFunction
识别带有未设置数组布局的TLC s -函数。
这个检查确定了s函数SSArrayLayout
设置为SS_UNSET
.默认情况下,每个s函数都有SSArrayLayout
属性设置为SS_UNSET
.此设置禁用用于生成行主代码的s函数。当配置参数阵列布局设置为行
时,嵌入式编码器报告错误。属性可以关闭错误行主代码生成的外部函数兼容性来警告
或没有一个
.
可与嵌入式编码器。
条件 | 建议的行动 |
---|---|
配置参数阵列布局设置为列为主 用于列主代码生成。 |
设置SSArrayLayout 财产列为主 . |
配置参数阵列布局设置为行 用于生成行主代码。 |
设置SSArrayLayout 财产行 . |
分析所有被屏蔽子系统中的内容。
检查身份证:mathworks.codegen.BlockSpecificQuestionableFxptOperations
确定可能导致非最佳结果的定点操作。
某些块设置可能导致昂贵的定点和饱和代码。
条件 | 建议的行动 |
---|---|
块生成昂贵的饱和代码。 | 检查您的应用程序是否需要设置功能块参数说明>信号的属性>饱和整数溢出.否则,清除饱和整数溢出参数用于在生成的代码中最有效地实现块。 |
产品块与不匹配的坡度调整因子相乘的信号。净斜率计算使用乘法和移位,这对于某些目标硬件是低效的。 | 设置优化>采用除法进行定点净斜率计算参数 请注意 这种优化只在满足某些简单性和准确性条件时才会发生。有关更多信息,请参见处理净斜率计算(定点设计师). |
产品块配置为第一个输入的除法操作和第二个输入的乘法操作。 | 颠倒输入,使乘法运算先发生,除法运算后发生。 |
产品块被配置为执行多个除法操作。 | 将所有分母项相乘,然后使用级联做一次除法产品块。 |
产品块被配置为执行许多乘法或除法运算。 | 将操作拆分到几个块中,每个块执行一个乘法或除法操作。 |
作为除法操作的一部分生成的保护代码是冗余的。 | 验证您的模型不能在除法运算中引起异常,然后通过设置优化>删除防止除法算术异常的代码参数。 |
的输入的数据类型范围总和块超过输出的数据类型范围,可能导致溢出或饱和。 | 更改输出和累加器数据类型,使范围等于或超过所有输入范围。 例如,如果模型有两个输入
输出和累加器的数据类型范围必须大于等于-128 ~ 255。一个 |
一个总和块的输入具有不等于输出的斜率调整因子的斜率调整因子。 | 改变数据类型,使输入、输出和累加器具有相同的斜率调整因子。 |
的净和总和块输入偏置不等于输出偏置。 | 改变输出缩放的偏置,使净偏置调整为零。 |
的输入和输出极大极小块有不同的数据类型。 | 更改输入或输出的数据类型。 |
的输入极大极小块有不同的坡度调整系数比输出。 | 改变输入或输出的比例。 |
的初始条件离散时间积分器块用于初始化状态和输出。 | 设置功能块参数说明>初始条件设置参数国家(效率最高) . |
的参数溢出与零比较块。该块使用输入数据类型表示零。输入数据类型不能准确地表示零,因此将输入值与最接近的可表示值零进行比较。 | 选择可以表示零的输入数据类型。 |
以下情况发生参数溢出与常量比较块。这个块使用输入数据类型来表示它恒定值参数。的恒定值参数超出了输入数据类型可以表示的范围。将输入信号与最接近的可表示值进行比较恒定值参数。 | 类型的输入数据类型恒定值参数或更改恒定值参数来匹配输入数据类型。 |
需要一个定点设计器许可证来生成定点代码。
如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。
识别生成昂贵的定点和饱和代码的块(定点设计师)
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.misra.ModelFunctionInterface
识别输入数据指针中缺失的const限定符。
遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。check标记没有const限定符的输入数据指针。
可与嵌入式编码器和金宝app仿真软件检查.
条件 | 建议的行动 |
---|---|
没有为输入数据指针定义const限定符。 | 考虑向输入数据指针添加一个const限定符。 |
MISRA C:2012,规则8.13
检查身份证:mathworks.codegen.QuestionableFxptOperations
确定可能导致非最佳结果的定点操作。
效率较低的代码可能来自生成麻烦的乘除操作的块、昂贵的转换代码、查找表块的低效率以及昂贵的比较代码。
条件 | 建议的行动 |
---|---|
整数除法生成的代码很大。 | 在“配置参数”对话框中,在硬件实现窗格中,设置生产硬件有符号整数除法到四舍五入参数设置为推荐值。 |
查找表向量的输入值间隔不均匀。 | 如果断点数据不可调,则将数据调整为偶数的2次幂间距。看到fixpt_look1_func_approx . |
在量子化时,输入值的查找表向量不是均匀间隔的,但它非常接近于均匀间隔。 | 如果断点数据不可调,则将数据调整为偶数的2次幂间距。看到fixpt_evenspace_cleanup . |
查找表向量的输入值是均匀间隔的,但间隔不是2的幂。 | 如果断点数据不可调,则将数据调整为偶数的2次幂间距。看到fixpt_look1_func_approx . |
对于预查找或n-D查找表块,索引检索法是等距点 .断点数据没有2次幂的间距。 |
如果断点数据不可调,则将数据调整为偶数的2次幂间距。否则,在块参数对话框中,指定一个不同的索引检索法避免计算量大的除法运算。 |
n-D查找表断点数据不是均匀间隔的索引检索法不是等距点 . |
如果断点数据不可调,则将数据调整为偶数,间隔为2的幂,然后设置索引检索法来等距点 . |
n-D查找表断点数据均匀间隔索引检索法是等距点 .但是间隔不是2的幂。 |
如果断点数据不可调,则将数据调整为偶数的2次幂间距。看到fixpt_look1_func_approx . |
n-D查找表断点数据是均匀间隔的,但间隔不是2的幂。同时,索引检索法不是等距点 . |
集索引检索法来等距点 .此外,如果数据不可调,则考虑偶数的2次幂间距。 |
n-D查找表断点数据是均匀间隔的,间隔是2的幂。但是,索引检索法不是等距点 . |
集索引检索法来等距点 . |
块需要在生成的代码中进行多字操作。 | 调整操作输入的字长,使它们不超过处理器的最大字长。有关更多信息,请参见生成代码中的定点多字操作(定点设计师). |
块需要繁琐的乘法。 | 限制乘法操作:
|
产品块与不匹配的坡度调整因子相乘的信号。 | 改变输出的缩放,使其斜率调整因子为输入斜率调整因子的乘积。 |
块以非零偏置乘法信号。 | 插入一个数据类型转换包含乘法运算的块的前后。 |
的输入关系操作符块有不同的数据类型。 | |
的输入关系操作符块体有不同的坡度调节因子。 | 改变任意一个输入的比例。 |
的输出。关系操作符Block是常数。这可能会导致死代码被删除金宝app仿真软件编码器. | 检查您的模型设计,或者删除关系操作符阻塞或用常量替换它。 |
需要定点设计器许可证才能生成定点代码。
如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。
检查身份证:mathworks.codegen.ExpensiveSaturationRoundingCode
检查生成昂贵舍入代码的块。
所生成的舍入代码效率很低,因为整数舍入模式参数设置。
可与嵌入式编码器。
条件 | 建议的行动 |
---|---|
生成的代码效率很低。 | 设置功能块参数说明>整数舍入模式参数设置为推荐值。 |
如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。
识别产生昂贵舍入代码的块(定点设计师)
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.misra.CompliantCGIRConstructions
识别包含有符号整数金宝app按位操作的Simulink块。
遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性,以及符合CERT C和CWE标准的代码。
可与嵌入式编码器和金宝app仿真软件检查.
请注意
如果模型包含状态流元素,则需要状态流许可。
条件 | 建议的行动 |
---|---|
该模型包含对有符号整数进行逐位操作的块。 | 考虑使用无符号整数进行逐位操作。 |
您可以:
检查假设为整个模型生成了代码。当代码由子系统构建或导出函数生成时,检查可能产生错误的结果。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
MISRA C:2012,规则10.1
证书c, int13-c
CWE CWE - 682
检查身份证:mathworks.misra.RecursionCompliance
在状态流程图中识别递归函数调用。
遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。检查标记有递归函数调用的图表。
可与嵌入式编码器和金宝app仿真软件检查.
请注意
如果模型包含状态流元素,则需要状态流许可。
条件 | 建议的行动 |
---|---|
Chart有一个递归函数调用。 |
删除递归函数调用。 |
MISRA C:2012, Rule 17.2
避免图表中不必要的递归(Stateflow)
检查身份证:mathworks.misra.CompareFloatEquality
识别浮点值上的相等和不相等操作。
检查标记对浮点值进行相等或不相等操作的源。
遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性,以及符合CERT C和CWE标准的代码。
如果使用Polyspace注释对浮点值进行了验证,则该检查不会标记具有相等或不相等操作的块。当你运行检查时,带理由的块该表列出具有相等或不相等操作的块。
可与嵌入式编码器和金宝app仿真软件检查.
请注意
如果模型包含状态流元素,则需要状态流许可。
条件 | 建议的行动 |
---|---|
模型对象对浮点值具有相等或不相等操作。 |
考虑使用非浮点值进行相等或不相等操作。 |
您可以:
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
MISRA C:2012, Dir 1.1
证书c, flp02-c
CWE CWE - 1077
注释代码并隐藏已知或可接受的结果(Polyspace Bug Finder)
检查身份证:mathworks.misra.IntegerWordLengths
识别不符合硬件实现设置的整数字长
该检查标记字长超过硬件实现设置允许的比特数的整数。
遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性,以及符合CERT C和CWE标准的代码。
可与嵌入式编码器和金宝app仿真软件检查.
请注意
如果模型包含状态流元素,则需要状态流许可。
条件 | 建议的行动 |
---|---|
模型对象包含不符合硬件实现设置的整数字长。 |
更新整数,使其长度不超过允许的位数。可以在“配置参数”对话框中查看允许的比特数硬件实现>设备详细信息窗格。 |
您可以:
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
检查身份证:mathworks.codegen.BlockNames
中是否存在块名称代码的角度窗格包含无效字符。
对象中的块名称进行编辑时检查代码的角度窗格。检查报告块名中的无效字符,除了:
被忽略或不推荐用于代码生成的块
该检查检查块名称是否符合以下准则:
形式:
的名字:
不以数字开头
块名的开头不包括空格
不使用双字节字符
允许回车
允许的字符:
的名字:
A b c d e f g h I j k l m n o p q r s t u v w x y z
A b c d e f g h I j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 _
条件 | 建议的行动 |
---|---|
的块名称代码的角度窗格不符合指导方针。 |
更新块名称以符合指导方针。 |
在库模型上运行。
分析库链接块的内容。
分析屏蔽子系统中的内容。
允许排除块和图表。