ModelCoder——建模仿真与代码生成软件
在安全关键领域,基于模型的软件工程或者软件开发已逐渐进入了我国的装备研制过程中。使用Simulink或者SCADE等嵌入式软件建模工具,对算法或控制逻辑进行可视化建模,然后生成高可靠的二进制代码逐渐成为安全关键领域的主流软件开发方式。
ModelCoder支持基于模型的嵌入式系统设计、仿真和可信代码自动生成,提供了图形编辑器、模块库以及对应的求解器,可对算法或控制逻辑进行可视化建模。其可信代码生成器可通过形式化验证技术将用户模型翻译为可信代码,进而不加修改地应用于多种嵌入式系统。
ModelCoder具有结构明了、流程清晰、仿真精细、贴近实际、效率高、灵活、适应面广泛等优点,可被应用于如控制系统和数字信号处理(DSP)等复杂模型的设计和仿真。
ModelCoder支持多个领域
ModelCoder的建模规则
1.特定的运算符用来支持特定的数据结构;
2.控制模块的复杂度,尽量减少子模块的调用,生成的代码每调用一次函数,就会产生函数传参的开销,此时如果上层有较多循环,则传参的代价较高;
3.检查重复模块,尽量归并重复项,形成基础库;
4.所用模型的输入输出端口的类型与数量必须符合该模型要求;
5.对逻辑模型,建模前应先优化,可降低模型的复杂度;
6.控制局部变量数量,减少不必要的局部变量,以防产生额外的堆栈创建和销毁的开销。
ModelCoder功能介绍
▲ModelCoder图形化建模编辑器
1.图形化建模编辑器
1.通过对信号及子系统的封装实现模型层次化管理;
2.支持数据流模型和状态机模型混合建模;
3.支持模型功能分解;
4.支持模型分割;
5.支持版本管理。
▲ModelCoder自定义模块库
2.自定义模块库
1.支持连续、离散动态系统模块;
2.支持多种算法模块,如加法、乘法和查表模块;
3.支持多种结构模块,如mux、switch和信号、总线选择。
▲ModelCoder模型信号和参数管理界面
3.管理模型信号和参数
1.包含信号和参数的数据类型:单/双精度浮点,8、16和32位整型(有符号或无符号),定点数和布尔数据;
2.包含信号和参数的维数:标量,矢量,矩阵;
3.包含信号和参数的数值范围。
▲ModelCoder代码自动生成界面
4.自动生成安全可靠代码
1.生成的代码与模型的语法语义一致;
2.可继承模型中不同数据类型;
3.支持多种嵌入式系统的C代码生成。