来源自我的博客
http://www.yingzinanfei.com/2017/02/01/nusmvyunxingyanglijiexi/
short.smv
- 代码
MODULE main # 新建模型,名为main
VAR # 变量声明
request : {Tr, Fa}; # 变量request,取值在True或False之中
state : {ready, busy}; # 变量state,取值在ready或busy之中
ASSIGN # 指定约束
init(state) := ready; # state初始值为ready
next(state) := case # state下一状态为条件选择
#如果state等于ready并且request等于True,则返回busy作为state的下一状态
state = ready & (request = Tr): busy;
TRUE : {ready,busy}; # 如果前面一句未命中,则返回一个ready或busy中的随机值作为state的下一状态
esac; # 退出case结构
SPEC
AG((request = Tr) -> AF state = busy) # 询问是否状态request等于True的下一状态为state等于busy
- 运行结果:
-- specification AG (request = Tr -> AF state = busy) is true
- 代码
counter.smv
- 系统行为模型(状态图):
- 模拟了一个3bit的进位的模型,每个bit有一个value和一个进位标志carryout,进位标志需要把3个bit看成一个整体。
- 当这个整体需要进位的时候,carryout将置1.
代码
MODULE main
- 系统行为模型(状态图):