Simulink模型转换为DIVINE模型(2012)

在CoCoSim中,提到将Simulink模型转换为Lustre模型。除了这种方式外,Simulink模型还能转换为其他模型检测工具的输入模型,比如DIVINE。下面将介绍2012年的一份相关工作。

在面对复杂的系统行为和时序属性验证时,单纯依靠Simulink自身的功能难以实现全面深入的验证。DIVINE是一款用于离散分布式系统的显式状态LTL线性时序逻辑模型检查和可达性分析工具。相较于符号模型检查工具,显式状态模型检查在分布式内存环境中具有更好的可扩展性。

参考

详细内容,可参考Barnat, Jiri & Beran, Jan & Brim, Luboš & Kratochvíla, Tomas & Ročkai, Petr. (2012). Tool Chain to Support Automated Formal Verification of Avionics Simulink Designs. 10.1007/978-3-642-32469-7_6.

将Simulink模型转换为DIVINE模型主要包括中间语言转换、生成符合CESMI接口的代码以及与DIVINE工具集成等步骤:

中间语言转换

为了实现Simulink模型到DIVINE模型的转换,首先需要将Simulink模型转换为一种特定的中间语言。这种中间语言是一种适用于描述同步数据电路的EDS嵌入式领域特定编程语言,基于C++实现。

在转换过程中,会由专门的编译器处理Simulink设计,生成中间语言的代码。该中间语言支持创建块和块之间的连接,其中块分为原子块和复合块。原子块的实现需要用C++代码编写基本操作。

复合块则对应实际的数据流程序或子程序,并且复合块可以作为构建更复杂复合块的基础,从而轻松实现模块化设计。在Simulink模型转换中,复合块自然对应 Simulink中的子系统以及整个系统设计,很好地保留了Simulink模型的层级结构和功能模块划分。

生成符合CESMI接口的代码

生成中间语言代码后,下一步是将其编译为符合 CESMI(Common Explicit-State Model Interface,通用显式状态模型接口)规范的共享对象。这一步骤通过标准的C++编译器完成。CESMI接口对于DIVINE工具来说,它定义了模型检查工具与待验证模型之间的交互方式。​

CESMI接口要求在二进制文件中定义一系列必要的函数,以支持DIVINE对模型的解读和验证。这些函数包括:​

  • 初始状态函数:一个无参函数,用于提供模型的初始状态,是DIVINE进行状态搜索的起点。
  • 后继状态函数:一个从状态到状态集合的函数,能够根据当前状态计算出所有可能的后续状态,为DIVINE遍历系统状态空间提供支持。
  • 接受状态和目标状态判断函数:两个一元布尔函数,分别用于判断一个状态是否为接受状态和目标状态,这服务于LTL模型检查中确定系统是否满足特定属性。

此外,如果要在LTL验证中让DIVINE内部计算属性自动机,还需要扩展基本的 CESMI接口,增加用于评估LTL公式中使用的原子命题在各个系统状态下有效性的函数。通过生成符合CESMI接口的代码,确保了转换后的模型能够被DIVINE工具正确识别和处理,为后续的验证工作提供基础。

与DIVINE工具集成

在获得符合CESMI接口的共享对象后,就可以将其与DIVINE工具进行集成,开展模型验证工作。

相关推荐
fdtsaid2 天前
Simulink模型转换为UPPAAL模型(2016)
simulink·uppaal·模型检测
可编程芯片开发1 个月前
六自由度Stewart并联机器人simulink建模与模拟仿真
机器人·simulink·stewart·并联机器人
凌晨7点1 个月前
拓展:simulink中将仿真环境离散化
matlab·simulink
Dillon Dong3 个月前
Simulink仿真-model Setting关键配置
simulink
微小冷3 个月前
simscape中坐标系和坐标变换Frames and Transforms
matlab·transform·simulink·simscape·multibody
曹勖之3 个月前
simuilink和ROS2数据联通,Run后一直卡在Initializting
windows·matlab·simulink·ros2
电力程序小学童3 个月前
IEEE5节点系统潮流仿真模型(simulink+matlab全功能模型)
matlab·毕设·仿真·simulink·5节点系统·ieee 5·三相仿真模型
可编程芯片开发4 个月前
基于PEMFC质子交换膜燃料电池系统的simulink建模与仿真
simulink·pemfc·质子交换膜燃料电池
曹勖之4 个月前
在MATLAB中使用自定义的ROS2消息
开发语言·matlab·机器人·ros·simulink·ros2