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

描述

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

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

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

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

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

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

函数

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

函数

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

函数

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

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

函数

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

函数

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

函数

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分