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

简介: 如何自动生成设计文件的状态机跳转图(仿真工具使用技巧)【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可视化窗口的参数和内容

image.png


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

image.png


三、状态机生成步骤


3.1 找到Fsm List Windows

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


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

929266a8ab3842aaa33466f7f8bd9e62.png


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

此时因为我们没有打开状态机覆盖率收集的选项,因此设计文件的状态机并不可见

d6510735ea0e45a2a6ea07d88b095ea5.png


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

按照Modesim/Questasim的正常步骤进行工程的建立和文件的添加,得到如下所示的图像状态

image.png

案例源码和仿真文件来自作者的另一篇文章【数字IC手撕代码】Verilog自动售卖饮料机|题目|原理|设计|仿真,请读者自行下载


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

3.5.1 Transcirpt控制编译(推荐)

寻找到Transcript窗口

ba1c0e81a94247feaae4d4e16b10b059.png

我们可以选择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窗口右键打开设置

805f102d9ecc4e71a8367cfaf808f425.png

在coverage窗口Enable Finite Statement Coverage

e9eee286eb70436fb07e4ff2ea979e22.png

在Simultation窗口Enable optimization

image.png

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

1f465f58b7e4420da0df2e11579a1814.png

最后选择需要进行仿真的文件并进行仿真


3.6 查看Fsm list Windows

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

image.png

image.png


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


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

image.png

358f5cfc47054f9bac36b3aa214f28fd.png

image.png


五、其他Modesim/Questasim使用技巧


如何在仿真窗口查看信号频率

如何设置“tab”键缩进数量

如何去除仿真时的信号前缀

如何设置一个清爽的仿真窗口

如何使用delta cycle来观察相同边沿的先后顺序

如何使用Modesim查看状态机状态跳转

如何用命令行的形式进行仿真及do脚本的使用

相关文章
|
5月前
|
UED
软件开发常见流程,好的用户体验,智能引导助手,介绍软件相关操作,会画个键盘,对键盘的相关键进行标注,效果动态展示图怎样画????弄一个图标,相关介绍
软件开发常见流程,好的用户体验,智能引导助手,介绍软件相关操作,会画个键盘,对键盘的相关键进行标注,效果动态展示图怎样画????弄一个图标,相关介绍
|
5月前
|
前端开发 JavaScript Java
文本----简单编写文章的方法(中),后端接口的编写,自己编写好页面就上传到自己的服务器上,使用富文本编辑器进行编辑,想写好一个项目,先分析一下需求,再理一下实现思路,再搞几层,配好参数校验,lomb
文本----简单编写文章的方法(中),后端接口的编写,自己编写好页面就上传到自己的服务器上,使用富文本编辑器进行编辑,想写好一个项目,先分析一下需求,再理一下实现思路,再搞几层,配好参数校验,lomb
|
异构计算
【FPGA】基本实验步骤演示 | Verilog编码 | 运行合成 | 设备/引脚分配 | 综合/实施 | 设备配置 | 以最简单的逻辑非为例
【FPGA】基本实验步骤演示 | Verilog编码 | 运行合成 | 设备/引脚分配 | 综合/实施 | 设备配置 | 以最简单的逻辑非为例
114 0
|
7月前
|
C++
【51单片机】添加模块代码的常见问题(图示&代码演示)
【51单片机】添加模块代码的常见问题(图示&代码演示)
|
7月前
|
传感器 运维
【软件设计师备考 专题 】编写外部设计文档:系统配置图和关系图
【软件设计师备考 专题 】编写外部设计文档:系统配置图和关系图
120 1
|
前端开发 JavaScript 定位技术
iOS 逆向编程(十六)DZMCycript 脚本使用(封装了常用的快捷函数,后续会继续添加)
iOS 逆向编程(十六)DZMCycript 脚本使用(封装了常用的快捷函数,后续会继续添加)
140 0
|
Web App开发 JavaScript IDE
如何直观地理解程序的运行过程?
了解代码的执行过程是编程的基本要求。一个熟练的编程老手只需要用肉眼看着代码,就能对其运行的过程有所了解。然而对于刚接触编程不久的新手来说,这种事情就没那么显而易见了。于是在编写代码和调试代码时,一旦程序的逻辑有些复杂,就像掉进代码的迷宫,完全不知道东南西北。
|
uml C++
VS工具使用——代码图
引用: 《论语·卫灵公》中,子贡问为仁。子曰:“工欲善其事,必先利其器。居是邦也,事其大夫之贤者,友其士之仁者。”大概的意思是:子贡问怎样修养仁德。孔子说:“工匠要做好工作,必须先磨快工具。住在一个国家,要侍奉大夫中的贤人,与士人中的仁人交朋友。” 今天我将用我的工具——VS2013为大家介绍一下我对“工欲善其事,必先利其器”的理解。
140 0
|
uml C++
VS工具使用——代码生成函数关系图
小引: 在上篇文章《VS工具使用——代码图》中,我向大家介绍了我对工具“代码图”的发现和认识。真是感觉当自己的眼睛不再被蒙蔽的时候,会发现整个世界的美好。所以,这次要向大家介绍我对VS中的另一个容易被忽视的工具—— 自动生成代码关系依赖图的理解。
621 0
|
Linux 异构计算 Windows
如何设置一个清爽的仿真窗口(仿真工具使用技巧)【Modesim/Questasim】
如何设置一个清爽的仿真窗口(仿真工具使用技巧)【Modesim/Questasim】
如何设置一个清爽的仿真窗口(仿真工具使用技巧)【Modesim/Questasim】

相关实验场景

更多