如何自动生成设计文件的状态机跳转图(仿真工具使用技巧)【Modesim/Questasim】

一、写在前面

Modesim/Questasim是Mentor公司用来仿真VHDL/Verilog/Systemverilog的EDA工具,因其可以运行在Windows系统下,同时与各类FPGA的开发平台有较好的适配,所以是很多数字IC或FPGA初学者第一次接触到的仿真工具,但是简体中文互联网上对Modesim/Questasim的使用技巧的归类与整理不够详细,也不够准确,因此创作本前缀为【Modesim/Questasim】的系列文章,对此工具的使用技巧进行整理与归纳总结

当然modesim/Questasim更多的是提供给FPGA/数字IC领域初学者的仿真工具,对于IC设计来说,真正工作环境使用到的更多的是VCS,也希望有志于从事数字IC领域工作的人员尽早地将环境转移到linux下的VCS上去进行熟悉

二、Questasim User Manual章节

2.1 Chapter2讲解Fsm可视化窗口的参数和内容

在这里插入图片描述

2.2 Charpter21:讲解Fsm代码风格,覆盖率,多状态转换等内容

在这里插入图片描述

三、状态机生成步骤

3.1 找到Fsm List Windows

通常情况下,Fsm List WIndows并不是仿真默认开启的一个选项,因此我们需要手动将其打开

3.2 依次点击View——Fsm list,我们即可打开Fsm List Windows

在这里插入图片描述

3.3 默认状态下Fsm List Windows显示如下

此时因为我们没有打开状态机覆盖率收集的选项,因此设计文件的状态机并不可见
在这里插入图片描述

3.4 新建工程并添加相关文件

按照Modesim/Questasim的正常步骤进行工程的建立和文件的添加,得到如下所示的图像状态
在这里插入图片描述
案例源码和仿真文件来自作者的另一篇文章【数字IC手撕代码】Verilog自动售卖饮料机|题目|原理|设计|仿真,请读者自行下载

3.5 编译与仿真,查看Fsm状态机跳变

3.5.1 Transcirpt控制编译(推荐)

寻找到Transcript窗口
在这里插入图片描述

我们可以选择GUI可视化的方式来进行设置,但是这里作者还是推荐使用脚本的方式进行仿真
依次在命令行输入

vlog +cover=f  drink_machine_tb.v drink_machine.v
vsim -gui -vopt -coverage work.drink_machine_tb

vlog意为编译 +cover=f 意为打开状态机的覆盖率收集 drink_machine_tb.v drink_machine.v是需要仿真的testbench文件和设计文件
vsim意为仿真 -gui 意为可视化仿真(即可以跳出波形窗口的仿真), -coverage意为打开覆盖率收集功能 work.drink_machine_tb为目标仿真对象

3.5.2 Transcript扩展

有关更多Modesim/Questasim的简单仿真命令可参见do文件脚本控制仿真

3.5.3 GUI编译仿真(不推荐)

我们也可以采取GUI的形式来进行仿真,注意这设计文件和仿真文件都要进行设置
在Project窗口右键打开设置
在这里插入图片描述
在coverage窗口Enable Finite Statement Coverage
![在这里插入图片描述](https://img-blog.csdnimg.cn/c0f7399f82df4afdbef7c329c6956b4b.png

在Simultation窗口Enable optimization
在这里插入图片描述

点击Optimization Options并在Coverage窗口Enable Finite Statement Coverage

在这里插入图片描述
最后选择需要进行仿真的文件并进行仿真

3.6 查看Fsm list Windows

如果设置正确的话,Fsm List WIndows会出现状态机名称,右键添加即可查看状态机的样子,此外经过一段时间的仿真,我们还可以查看波形经过状态机的次数和经过跳转路径的次数,其他参数和相关内容也可以在Modesim/Questasim中进行设置
在这里插入图片描述

在这里插入图片描述

四、可识别状态机的代码规范

正常经过如上步骤的设置,我们就可以自动生成状态机的转换图片了,但假如你的设计文件还是没有正确的生成状态机,有可能是你的代码风格没有被Modesim/Questasim识别,这里作者贴上Questasim User Manual的代码风格要求,不做翻译,请读者自行查阅比对。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、其他Modesim/Questasim使用技巧

如何在仿真窗口查看信号频率
如何设置“tab”键缩进数量
如何去除仿真时的信号前缀
如何设置一个清爽的仿真窗口
如何使用delta cycle来观察相同边沿的先后顺序
如何使用Modesim查看状态机状态跳转
如何用命令行的形式进行仿真及do脚本的使用

猜你喜欢

转载自blog.csdn.net/weixin_43698385/article/details/124879340