polyspace和matlab的关系,关于Polyspace应用到基于模型的设计可能性分析和介绍

描述

Polyspace 自 2013b 版本起开始集成到 MATLAB 平台,利用其强大的静态分析和形式化验证功能完善基于模型设计的过程,同时 MATLAB 的脚本处理能力也加强了验证的自动化过程,应用场景包括:

获取生成代码的规范符合性和复杂度信息

验证集成了 C 代码的模型的鲁棒性

补充 基于模型的设计(MBD) 流程的形式化验证能力

以下案例说明了在基于模型的设计中 Polyspace 的可能的应用过程。

下图案例模型中,既包含了 Simulink 和 Stateflow 模块,也包含了 C 代码封装的 s-function 函数 PedalCmdLookup_C。对于这种混合代码模型,Polyspace 可以起到很好的分析和验证作用。

5af5ee563b878124c5bda9ad8a37096a.png

模型生成代码之后,可以按照如下方法从 Simulink 直接调用 Polyspace,在调用之前也可以在 Option 选项中设置 Polyspace 选项。

7c93679306683e68f427a3bc20a639a7.png

在 Bug Finder 的结果中,可以得到违反 MISRA 规则的生成代码(左图)和分析得到的软件错误(右图)。

7a7623bddfcc6085329d7d373da999fa.png

Polyspace 结果和 Simulink 模型的双向追溯功能可以快速定位到模型中问题模块。

对于 Sum 模块的 MISRA 10.3 违规是为了满足 S 函数接口要求有意为之,我们可以在验证之前就在模型中添加说明,相应的说明会反应到 Polyspace 的结果中(左图),避免了重复评审的工作;而对于指针越界的软件错误,经过分析确实是 S 函数 C 代码中的设计问题,及时修正(右图)避免将问题留到后续环节。

bb11f70137d1dcb6e6d5132949980191.png

同时我们还能得到生成代码的度量信息,如圈复杂度、局部变量内存占用情况等(左图),用以评估模型架构设计是否合理。Bug Finder 的“边设计边检查”模式可以在设计早期就获得高质量的模型。

b1e4d20b54da8cc94c09f2309a61cc43.png

在模块交付之前,按同样的方法也可以调用 Code Prover,确保生成代码中不存在运行错误,按此方法创建验证工程的过程中由于可以继承 Simulink 模型中数据的范围信息(上图右),保证了验证的精确性。Code Prover 深度的形式化验证能力可以发现更加隐蔽的问题,并且给出充分的程序调用栈信息帮助快速定位问题原因:

62afb7a977f17d62b1aeb299e62eb5f4.png

打开APP阅读更多精彩内容

点击阅读全文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值