如何自动生成设计文件的状态机跳转图(仿真工具使用技巧)【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脚本的使用

相关文章
|
1月前
|
存储
UE建模模式编辑器工具的快速入门教程
在UE虚幻引擎中,想要进行创建网格体、制作新关卡几何原型、编辑现有静态网格体资产等模型编辑动作,都需要借助建模模式的编辑器完成。因此,充分掌握编辑器能力是每个UE开发人员必备的基础技能,尽管UE建模模式中的许多工具与其他建模软件工具操作类似,但在如何构建网格体编辑方面存在着重要区别。 下面就带大家一起了解「UE建模模式编辑器」的不同之处🤔。
|
3月前
|
测试技术 开发者
设计文档中的流程图,靠得住吗?
本文讨论了软件开发设计文档中图形化设计图的重要性,如流程图、思维导图等,它们有助于清晰传达设计意图和提高沟通效率。然而,当面临迭代更新、人员变动时,基于截图的图形设计图可能会带来协作难题。作者提倡使用简单文字格式搭配标签和符号作为替代方案,分享了团队内部实践,通过表格来实现类似思维导图和流程图的功能,以增强文档的可维护性和协作性。同时,作者强调这不是反对使用设计图,而是提出在某些场景下的一种有效补充方法。
97 7
|
2月前
|
前端开发 JavaScript Java
文本----简单编写文章的方法(中),后端接口的编写,自己编写好页面就上传到自己的服务器上,使用富文本编辑器进行编辑,想写好一个项目,先分析一下需求,再理一下实现思路,再搞几层,配好参数校验,lomb
文本----简单编写文章的方法(中),后端接口的编写,自己编写好页面就上传到自己的服务器上,使用富文本编辑器进行编辑,想写好一个项目,先分析一下需求,再理一下实现思路,再搞几层,配好参数校验,lomb
|
4月前
|
C++
【51单片机】添加模块代码的常见问题(图示&代码演示)
【51单片机】添加模块代码的常见问题(图示&代码演示)
【51单片机】一文带你利用【Keil软件的模板功能】【自定义模板】简化操作(带图详解)
【51单片机】一文带你利用【Keil软件的模板功能】【自定义模板】简化操作(带图详解)
|
uml C++
VS工具使用——代码图
引用: 《论语·卫灵公》中,子贡问为仁。子曰:“工欲善其事,必先利其器。居是邦也,事其大夫之贤者,友其士之仁者。”大概的意思是:子贡问怎样修养仁德。孔子说:“工匠要做好工作,必须先磨快工具。住在一个国家,要侍奉大夫中的贤人,与士人中的仁人交朋友。” 今天我将用我的工具——VS2013为大家介绍一下我对“工欲善其事,必先利其器”的理解。
121 0
|
uml C++
VS工具使用——代码生成函数关系图
小引: 在上篇文章《VS工具使用——代码图》中,我向大家介绍了我对工具“代码图”的发现和认识。真是感觉当自己的眼睛不再被蒙蔽的时候,会发现整个世界的美好。所以,这次要向大家介绍我对VS中的另一个容易被忽视的工具—— 自动生成代码关系依赖图的理解。
527 0
|
Linux 异构计算 Windows
如何设置一个清爽的仿真窗口(仿真工具使用技巧)【Modesim/Questasim】
如何设置一个清爽的仿真窗口(仿真工具使用技巧)【Modesim/Questasim】
如何设置一个清爽的仿真窗口(仿真工具使用技巧)【Modesim/Questasim】
|
存储 Linux 异构计算
如何用命令行的形式进行仿真及do脚本的使用(仿真工具使用技巧)【Modesim/Questasim】
如何用命令行的形式进行仿真及do脚本的使用(仿真工具使用技巧)【Modesim/Questasim】
如何用命令行的形式进行仿真及do脚本的使用(仿真工具使用技巧)【Modesim/Questasim】
|
JavaScript API
splumb 流程图,常用功能配置记录(上)
splumb 流程图,常用功能配置记录
splumb 流程图,常用功能配置记录(上)