NuSMV的常用关键字与命令
禁止任何形式的转载,原始作者链接:https://www.cnblogs.com/iceorrange/
常用关键字
MODULE
关键字主要是用来定义一个模块。一个模块是一个封装了定义的集合,可以看作是一个用户自定义的数据类型。模块定义之后,可以多次复用,也可以作为一个函数参数传递不同的值,模块内部可以嵌套其他的模块。
VAR
模块主要用于定义系统的变量,变量的类型可以为布尔型、整型、枚举类型、用户定义的模块以及这些类型的数组。
INIT
模块用来对系统变量进行初始化。根据系统原来的值,对 SMV 语言中的变量进行初始化。
DEFINE
模块用于系统的简洁描述而引入的,一个变量可以和另外一个普通表达式相关联,类似于 C 语言中的宏。
ASSIGN
模块用于定义系统状态之间的变迁关系。变迁关系是通过当前状态的变量值以及下一个状态的变量值之间的关系来定义的。其中 next(variable-name)表示变量名为 variable-name的变量在下一个状态时的值,根据 case 条件的不同,next 的值也分为不同的情况。
TRANS
模块是用一个值为布尔型的表达式来定义。TRANS 中给出的表达式值必须真或假 SPEC 模块是给出需要检测的性质,通常是以 CTL 或者 LTL 形式的时序逻辑。每个SPEC模块中只能包含一个时序公式,若要检测多个性质,需要定义多个 SPEC 块。
模型读取与构建命令
Readmodel
read model [-h] [-i model-file]
加载NuSMV文件为NuSMV模型
参数
- -i model-file
明确的文件
flatten_hierarchy
flatten hierarchy [-h] [-d] [-e]
合并平面模型。这个命令负责实例化模块与进程
参数
- -d 需要的时候构造变量,延时作用
- -e 展开数组表达式为单元素表达式
show_vars
show vars [-h] [-s] [-f] [-i] [-t | -V | -D] [-v] [-m | -o output-file]
显示带类型模型的符号变量
参数
- -s 只打印状态变量
- -f 只打印冻结变量
- -i 只打印输入变量
- -t 只打印已选择类型的变量个数,并按类型分组。不与-V或-D兼容
- -V 只打印已选择类型的变量列表,并按类型分组。不与-t或-D兼容
- -D 只打印带类型的列表,不显示摘要信息。不与-t或-V兼容
- -v 不截断打印。标定变量过长也不截断
- -m 如果定义了PAGER的shell环境变量,则通过管道输出至指定程序,否则通过UNIX命令more输出
- -o output-file 命令生成输出写入指定文件
show_dependencies
显示给定表达式的依赖
show dependencies [-h] [-k bound] -e expression
参数
- -h 显示命令用法。帮助
- -k bound 设置依赖项计算的边界限制
- -e expr 计算依赖项的表达式
encode_variables
构建需要的BDD变量为BDD模型
encode variables [-h] [-i order-file]
参数
- -i order-file 从文件中读取命令变量
write_order
写入命令变量到文件
write order [-h] [-b] [(-o | -f) order-file]
参数
- -b 替换标量字变量为单标量变量
- -o order-file 导出命令列表到指定位置
- -f order-file -o的别名,向后兼容
build_model
编译平面模型为BDD(初始状态、不变量、转移关系)
build model [-h] [-f] [-m Method]
参数
- -m Method 设置构建方法,可用方法有Monolithic,Threshold,Iwls95CP
- -f 强制构造模型。
go
系统初始化校验。相当于顺序执行命令readmodel, flatten_hierarchy, encode_variables, build_flat_model, build_model
go [-h] [-f]
参数
- -f 强制构造模型
get_internal_status
打印系统内部状态
get internal status [-h]
process_model
批量执行处理步骤,并返还shell控制权。读取模型,将其编译成BDD,并对其中包含的所有规范执行模型检查
process model [-h] [-f] [-r] [-i model-file] [-m Method]
参数
- -f 强制构造模型
- -r 计算结束时强制变量重新排序,并将新变量排序存储至默认排序文件中,命令类似于-reorder
- -i model-file 改变文件读取
- -m Method 传递partition_method环境变量至Method,并用其进行方法区分
build_flat_model
平面模型编译为标量FSM
build flat model [-h]
将平面模型编译成SEXP(初始状态、不变量和转换关系)
write_flat_model
将平面模型写入一个文件
write flat model [-h] [-A] [-o filename]
参数
- -o filename 将平面模型写入指定位置
- -A 使用重命名映射至"anonimize"模型方式写入文件,所有除数值类型常量以为的符号都将被重命名
规格检查命令
只能用于基于BDD模型的NUXMV模型检查。不能用于包含实数或复数整型的NUXMV模型
compute_reachable
计算可至状态的集合。结果可以用于简化图像和像原计算。有时由于可至状态计算多,该命令会花费大量时间。使用-k参数可以限制要执行的向前步骤数。如果到了可至状态,则命令返回。
compute reachable [-h] [-k number] [-t seconds]
参数
- -k number 计算步长
- -t second 强制几秒后终止,该计算可能不精确
print_reachable_states
打印输出可至状态数。在verbose模式下,如果可至状态数小于216,则同时打印其列表。
print reachable states [-h] [-v] [-d] [-f] [-o filename]
参数
- -v 打印可至状态列表
- -d 带定义打印可至状态列表(需要带-v参数)
- -f 打印可至状态的表达公式
- -o 结果输出至文件
check_fsm
检查全部迁移关系。同时检查迁移关系是否完整,如果不完整,则打印潜在的死锁状态
check fsm [-h] [-m | -o output-file]
参数
- -m 输出管道重定向
- -o 输出重定向至文件
print_fsm_stats
打印状态机和集群信息。
print fsm stats [-h] | [-m] | [-p] | [-o output-file]
参数
- -h 帮助
- -m 管道重定向
- -p 打印状态机的规范谓语,属性表达式将会被忽略
- -o 输出重定向至文件

浙公网安备 33010602011771号