在Vivado中调用ModelSim生成FSM的状态转移图

时间:2023-03-08 17:06:23
在Vivado中调用ModelSim生成FSM的状态转移图

如果我们已经书写了一段FSM代码,现在想倒过来把它转换成为状态转移图,方便我们直观地检查我们书写的状态对不对(在写论文什么的画图太麻烦的时候,有个自动生成的是多方便啊!),应该怎么弄呢?通过在Vivado中调用ModelSim,可以直接完成这个操作,下面我们就来看看这个神奇的转换是如何完成的。

首先介绍一下软件环境:

ü  操作系统win7 sp1 64位

ü  Vivado2014.1 64位

ü  Modelsim SE-64 10.2c

然后就是打开Vivado,新建一个RTL工程,配置好器件……这个步骤大家都写过了,所以在此略过。然后在Vivado中新建顶层文件,然后输入一段FSM代码。接下来我们要先配置ModelSim的路径,使得Vivado知道ModelSim在哪里。方法是在Vivado中点击菜单栏的Tools---Options---General,在最后面的一行里选择ModelSim的安装路径,如图1所示。

图1 配置ModelSim的路径

然后我们要为Xilinx的FPGA器件编译生成供ModelSim仿真使用的库。点击Vivado工具栏上的Tools---Compaile Simulation Libraries,如图2所示。

图2 编译仿真库

在图2的配置窗口中选择仿真器类型(例如ModelSim、Active-HDL等)、编程语言(Verilog或者HDL或者全选)、库的类型(Unisim或者SimPrim或者全选)、器件家族(例如Kintex/ Virtex/ Artix -7, ,Zynq-7000, Kintex/Virtex UltraScale系列,或者干脆全选)。中间的框是选择编译之后输出的库文件的路径以及第三方仿真工具的路径。最后是其它杂项,例如是否覆盖现有的库,是不是编译32位的库,是不是启用啰嗦模式等。ISE相比,在Vivado中编译仿真库只需要点击这两个步骤然后等待几分钟就可以了,步骤只有ISE的五分之一,需要我们决定的选择框要少了非常多,花的时间则只有几分钟,比ISE编译仿真库的效率要高了好几倍。

编译很快就完成了。然后我们在Vivado设计流程管理器中点击Simulation下面的Simulation Settings,如图3所示。

图3 改变仿真设置

然后把仿真软件设置为ModelSim,如图4所示。

图4 改变仿真软件

在Vivado的仿真配置中,我们可以直接指定Vsim的选项,如图5所示。

图5 指定Vsim选项

然后就可以在Vivado设计流程管理器中在Simulation上点击右键,运行行为仿真了,如图6所示。

图6 运行行为仿真

很不幸的是,ModelSim启动之后遇到了错误,如图7所示。

图7 仿真错误(单击图片可放大)

这也许是两个软件的版本不太兼容造成的。为了在ModelSim里显示FSM,我们又必须使用-coverage –fsmdebug两个参数,那怎么办呢?目前可以采用的办法是,暂时不能在图5中启用相关的选项,重新运行行为仿真,此时在ModelSim启动完成并且不抱错。然后我们修改FSM1.do文件,或者直接在ModelSim的命令窗口里输入下面的命令(加黑字体为更改的部分):

vsim -L unisims_ver -L unimacro_ver -L secureip  -L xil_defaultlib -lib xil_defaultlib -voptargs=\"+acc\" -t 1ps -coverage -fsmdebug xil_defaultlib.FSM1 xil_defaultlib.glbl

此时我们便可以查看FSM的状态转移图了,点击ModelSim菜单栏上的View---FSM List,然后在任务视图里点击FSM List,就能看到状态转移图了,如图8所示。

图8 FSM的状态转移图(单击图片可放大)

最后,感谢大家的支持