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工具进行集成,开展模型验证工作。

相关推荐
控制迷思4 天前
垂尾控制升级实验:LQG控制-EXP-LQG-垂尾升级
自动化·pcb·simulink·垂尾·smart material
原野风霜3246 天前
Test Harness单元测试如何导入已有的Harness文件
单元测试·simulink·test harness
冷凝雨8 天前
复数乘法(C & Simulink)
c语言·开发语言·信号处理·simulink·dsp
youcans_9 天前
【STM32-MBD】(10)基于 STM32 的处理器在环仿真(PIL)
stm32·单片机·嵌入式硬件·simulink·mbd
Dillon Dong9 天前
从C到Simulink: 使用STM32硬件支持包后为什么还不支持PC仿真ARM建模程序
c语言·stm32·simulink
Dillon Dong9 天前
从C到Simulink: ARM Compiler 5 (RVDS) 为什么simulink 不能使用arm编译
c语言·arm开发·simulink
轻微的风格艾丝凡10 天前
模型拆解--Variable Inductance Modeling
线性代数·simulink
bu_shuo10 天前
MATLAB与Simulink介绍
开发语言·matlab·simulink
控制迷思10 天前
Faulhaber Coreless 直流电机 2338S006 使用指南-PART-MOTOR-derivative feedback
simulink·faulhaber·直流电机·自动化控制
youcans_10 天前
【STM32-MBD】(12)Simulink 模型开发之ADC
stm32·单片机·嵌入式硬件·simulink·mbd