使用嵌入式编码器®模型顾问检查以配置您的模型以进行代码生成。
检查身份证:mathworks.codegen.PCG金宝appSupport
识别代码生成不支持或不推荐用于C/ c+金宝app+生产代码部署的块。
这个检查部分地确定了不推荐用于C/ c++产品代码生成的模型构造。为金宝app®编码器™和嵌入式编码器,这些模型构造标识出现在金宝appSimulink块支持金宝app。
在某些情况下,此检查标记支持代码生成的块。金宝app对于这些块,您应该查看支持说明中提供的脚注信息,并遵循Model Advisor提供的建议操作。金宝app
遵循此检查的建议可以增加生成符合CERT C、CWE和ISO/IEC TS 17961标准的代码的可能性。
可与嵌入式编码器和金宝app模型检查™。
条件 | 建议的行动 |
---|---|
模型或子系统包含不应该用于生产代码部署的块。 | 考虑替换结果中列出的块。单击可疑项列表中的一个元素来定位条件。 |
模型或子系统包含支持但不推荐用于生产代码生成的块。金宝app | 审查支持说明,并遵循模金宝app型顾问提供的建议行动。 |
您可以:
在库模型上运行这个检查。
分析库链接块的内容。
分析被屏蔽子系统中的内容。
排除块和图表,如果你有金宝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 | 选择Stateflow图表属性在Simulink I/O中使用强数据类型金宝app。选择属性后,可能需要调整模型中的数据类型。 |
使用statflow图表时需要statflow许可证。
强数据类型与Simulink输入和输出金宝app(Stateflow)
检查身份证:mathworks.codegen.CodeInstrumentation
识别有问题的代码工具。
生成代码的插装可能导致非最佳结果。
测试点需要全局内存,并不是生产代码生成的最佳选择。
可与嵌入式编码器。
如果你有金宝app仿真软件检查许可,您可以从此检查中排除块和图表。
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.codegen.UseRowMajorAlgorithm
识别生成低效算法的块。
该检查识别基于模型的数组布局生成的代码中产生低效算法的块。
可与嵌入式编码器。
条件 | 建议的行动 |
---|---|
配置参数阵列布局设为列为主 用于主要列代码生成。 |
禁用配置参数使用针对行为主数组布局优化的算法。 |
配置参数阵列布局设为行 用于主要行代码生成。 |
选择配置参数使用针对行为主数组布局优化的算法。 |
分析被屏蔽子系统中的内容。
检查身份证:mathworks.misra.CodeGenSettings
确定可能影响MISRA C:2012兼容代码生成的配置参数。
遵循此检查的建议增加了为嵌入式应用程序生成MISRA C:2012兼容代码的可能性。
可与嵌入式编码器和金宝app仿真软件检查。
条件 | 建议的行动 |
---|---|
数学和数据类型 | |
配置参数采用除法计算定点网斜率未设置为在 或仅对整数的倒数使用除法 。 |
集采用除法计算定点网斜率来在 或仅对整数的倒数使用除法 。 |
配置参数info NaN块输出设为 配置参数info 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
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.misra.BlockNames
识别包含以下内容的块名称/
。
遵循此检查的建议增加了为嵌入式应用程序生成MISRA C:2012兼容代码的可能性。
可与嵌入式编码器和金宝app仿真软件检查。
条件 | 建议的行动 |
---|---|
块名称包含/ 在模型或子系统中找到的。 |
删除/ 从块名称。 |
运行在库模型上。
分析库链接块的内容。
分析被屏蔽子系统中的内容。
如果你有金宝app仿真软件检查许可,允许排除方块和图表。
编辑时间检查。编辑时检查支持此检查。金宝app
MISRA C:2012,规则3.1
检查身份证:mathworks.misra.AssignmentBlocks
识别赋值没有块参数的块如果未分配任何输出元素,则操作设置为错误或警告。
此检查适用于赋值中的Simulink块库中可用的块金宝app金宝app>数学操作。
遵循此检查的建议增加了为嵌入式应用程序生成MISRA C:2012兼容代码的可能性,以及符合CERT C, CWE, ISO/IEC TS 17961标准的代码。
可与嵌入式编码器和金宝app仿真软件检查。
条件 | 建议的行动 |
---|---|
模型或子系统可能包含赋值未完成数组初始化的块,没有块参数如果未分配任何输出元素,则操作设置为错误或警告。 | 设置块参数如果未分配任何输出元素,则操作到其中一个推荐值:
|
运行在库模型上。
分析库链接块的内容。
分析被屏蔽子系统中的内容。
如果你有金宝app仿真软件检查许可,允许排除方块和图表。
编辑时间检查。编辑时检查支持此检查。金宝app但是,不支持以下检查条件,因为编辑时检查无法确定是否金宝app赋值块位于Iterator子系统中。
设置块参数如果未分配任何输出元素,则操作到其中一个推荐值:
错误,如果赋值块不在Iterator子系统中。
警告,如果赋值块位于Iterator子系统中。
MISRA C:2012,规则9.1
ISO/IEC TS 17961: 2013
证书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,规则16.4
ISO/IEC TS 17961: 2013,开关开关
证书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仿真软件检查。
条件 | 建议的行动 |
---|---|
诊断 | |
配置参数info NaN块输出设为 配置参数info 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仿真软件检查许可,您可以从此检查中排除块和图表。
检查身份证: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。一个 |
一个总和Block有一个坡度调整因子的输入,它不等于输出的坡度调整因子。 | 更改数据类型,使输入、输出和累加器具有相同的斜率调整因子。 |
净和总和块输入偏差不等于输出偏差。 | 改变输出缩放的偏置,使净偏置调整为零。 |
的输入和输出极大极小块有不同的数据类型。 | 更改输入或输出的数据类型。 |
的输入极大极小块具有不同于输出的斜率调整因子。 | 更改输入或输出的比例。 |
的初始条件离散时间积分器块用于初始化状态和输出。 | 设置功能块参数>初始条件设定参数状态(最有效) 。 |
参数溢出与零比较块。这个块使用输入数据类型来表示零。输入数据类型不能精确地表示零,因此将输入值与最接近的可表示的零值进行比较。 | 选择可以表示零的输入数据类型。 |
以下发生参数溢出与常量比较块。该块使用输入数据类型来表示其恒定值参数。的恒定值参数超出了输入数据类型可以表示的范围。将输入信号与最接近的可表示值进行比较恒定值参数。 | 选择可以表示的输入数据类型恒定值参数或更改恒定值参数以匹配输入数据类型。 |
生成定点代码需要定点设计师™许可证。
如果你有金宝app仿真软件检查许可,您可以从此检查中排除块和图表。
识别生成昂贵的定点和饱和代码的块(定点设计师)
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.misra.ModelFunctionInterface
识别输入数据指针中缺少的const限定符。
遵循此检查的建议增加了为嵌入式应用程序生成MISRA C:2012兼容代码的可能性。检查标志输入没有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仿真软件检查许可,您可以从此检查中排除块和图表。
识别有问题的定点操作(定点设计师)
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.codegen.ExpensiveSaturationRoundingCode
检查生成昂贵舍入代码的块。
生成的舍入代码效率很低,因为整数舍入模式参数设置。
可与嵌入式编码器。
条件 | 建议的行动 |
---|---|
生成的代码效率低下。 | 设置功能块参数>整数舍入模式参数设置为推荐值。 |
如果你有金宝app仿真软件检查许可,您可以从此检查中排除块和图表。
识别生成昂贵舍入代码的块(定点设计师)
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.misra.CompliantCGIRConstructions
识别包含对有符号整金宝app数进行位操作的Simulink块。
遵循此检查的建议增加了为嵌入式应用程序生成符合MISRA C:2012标准的代码的可能性,以及符合CERT C和CWE标准的代码。
可与嵌入式编码器和金宝app仿真软件检查。
当在模型中使用Stateflow时,此检查需要Stateflow许可。
条件 | 建议的行动 |
---|---|
该模型具有包含对有符号整数进行位操作的块。 | 考虑使用无符号整数进行位操作。 |
您可以:
检查假设为整个模型生成了代码。当代码由子系统构建或导出函数生成时,检查可能产生不正确的结果。
从此检查中排除块和图表,如果您有金宝app仿真软件检查许可证。
MISRA C:2012,规则10.1
证书c, int13-c
CWE CWE - 682
检查身份证:mathworks.misra.RecursionCompliance
在状态流程图中识别递归函数调用。
遵循此检查的建议增加了为嵌入式应用程序生成MISRA C:2012兼容代码的可能性。复选标记具有递归函数调用的图表。
可与嵌入式编码器和金宝app仿真软件检查。
此检查需要statflow许可证。
条件 | 建议的行动 |
---|---|
图表有一个递归函数调用。 |
删除递归函数调用。 |
MISRA C:2012,规则17.2
避免图表中不必要的递归(Stateflow)
检查身份证:mathworks.misra.CompareFloatEquality
识别浮点值上的相等和不等操作。
检查标记导致对浮点值进行相等或不相等操作的源。
遵循此检查的建议增加了为嵌入式应用程序生成符合MISRA C:2012标准的代码的可能性,以及符合CERT C和CWE标准的代码。
如果使用Polyspace注释对浮点值进行了对齐,则检查不会标记具有相等或不等操作的块。当你运行支票时有理由的块表列出了具有证明的相等或不等操作的块。
可与嵌入式编码器和金宝app仿真软件检查。
此检查需要statflow许可证。
条件 | 建议的行动 |
---|---|
模型对象对浮点值进行相等或不等操作。 |
考虑使用非浮点值进行相等或不等操作。 |
您可以:
从此检查中排除块和图表,如果您有金宝app仿真软件检查许可证。
MISRA C:2012,第1.1章
证书c, flp00-c
CWE CWE - 697
注释代码并隐藏已知或可接受的结果(Polyspace Bug Finder)
检查身份证:mathworks.misra.IntegerWordLengths
识别不符合硬件实现设置的整型字长
检查标记字长超过硬件实现设置允许的位数的整数。
遵循此检查的建议增加了为嵌入式应用程序生成符合MISRA C:2012标准的代码的可能性,以及符合CERT C和CWE标准的代码。
可与嵌入式编码器和金宝app仿真软件检查。
条件 | 建议的行动 |
---|---|
模型对象包含与硬件实现设置不兼容的整型字长。 |
更新整数,使其长度不超过允许的位数。在“配置参数”对话框中可以查看允许的位数硬件实现>设备详细信息窗格。 |
您可以:
从此检查中排除块和图表,如果您有金宝app仿真软件检查许可证。
检查身份证:mathworks.codegen.BlockNames
中的块名称代码的角度窗格中包含无效字符。
类中的块名称进行编辑时检查代码的角度窗格。检查报告块名称中的无效字符,但以下字符除外:
被忽略或不推荐用于代码生成的块
虚拟子系统块
该检查验证区块名称是否符合以下准则:
形式:
名字:
不以数字开头吗
在块名称的开头不包含空格
不使用双字节字符
允许回车
允许的字符:
名字:
A, b, c, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I
A, b, c, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I
0 1 2 3 4 5 6 7 8 9 _
条件 | 建议的行动 |
---|---|
中的块名称代码的角度窗格不符合指导方针。 |
更新区块名称以符合指南。 |
运行在库模型上。
分析库链接块的内容。
分析被屏蔽子系统中的内容。
允许排除方块和图表。