Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug

Modelsim的仿真之路(基础仿真流程)

前言

缓了一段时间,该接着开始系列记录了,这一次将开始ModelSim的仿真之路,对于学FPGA或者从业于该行业的人来说,仿真是必不可免的一件事,而仿真的工具也不少,不过感觉ModelSim推荐的指数要高很多,或许和它优化的能力有关吧~
~Show Time~
图片[1]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug

仿真前夕

在ModelSim中对一个设计进行仿真有几种模式,基本的仿真、工程形式的仿真,还有使用多个库进行仿真,逐个进行介绍下使用步骤;

一:基础仿真步骤:

1、创建工作库
在ModelSim中,所有设计都被编译到一个库中。通常通过创建名为“work”的工作库来启动一个新的仿真,这是编译器使用的默认库名,作为已编译设计单元的目标库;
2、编译设计文件
创建工作库之后,就要将设计模块编译到其中,编译后的库格式支持在多个平台上使用,比如在Linux上编译了,然后可以不需要重新编译,就直接移到Windows上用,
3、载入且运行仿真
编译完成后,选择顶层的激励文件来加载仿真器,载入完成后,仿真界面将处于初始状态,再Run一下就可以开始仿真了~
4、对仿真结果进行Debug
Debug就是在仿真的时候,如果发现结果不是你想要的,就一步步调试了,当然,是可以借用工具滴!

二:工程形式的仿真步骤:

1、创建工程
2、添加设计文件到工程
3、编译设计文件
4、载入且运行仿真
5、对仿真结果进行Debug
可以看出来,工程形式的仿真和基础仿真很相似,多了个工程来对设计文件进行管理,其中,工作库在工程创建好后就自动生成了,如果没有使用close来关闭工程,下次启动ModelSim时,工程还会处于打开状态,都不需要再去麻烦的找了。

三:多个库的使用

除了工作库,ModelSim还有一种资源库的用法,和工作库有个明显的不同,就是工作库是处于设计文件的编译目录下,而资源库则可以处于其他位置,然后链接后就可以使用,这个资源库可以是第三方的(比如Vivado编译的库,然后在ModelSim里使用)
多个库的使用步骤再简单总结下
1、创建工程
2、添加激励文件到工程
3、编译设计文件
4、链接资源库
5、载入且运行仿真
6、对仿真结果进行Debug
如果没有使用工程的形式,就直接创建工作库替换步骤1和2就好了。
图片[2]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug

基础仿真

根据上一部分的基础仿真步骤来正式踏入仿真之路~
先准备好要仿真的文件,将文件放到自己想要的路径下(不要出现中文字符,不然要出问题),准备好之后,打开ModelSim,软件安装的版本可以根据自己情况来装,我这装的是:ModelSim DE 16.C(也还装了另外的版本),至于为什么装这个版本,就看下一篇
《Vivado与ModelSim的联合仿真》
1、软件打开后,界面如下(有弹窗的话,直接Close掉就好了)
图片[3]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
2、将工作路径改变到要准备好的文件路径下(File > Change Directory)
图片[4]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
 
图片[5]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
直接使用TCL命令也可以,按以上操作后,也会有相应的命令出现在Transcript的窗口中。
举例:cd E:/Soft_File/Sim_File/basicSimulation
3、创建工作库(File > New > Library)
图片[6]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
会出现一个弹窗,然后在这个窗口可以创建一个新的库,也可以映射已存在的库,库名的栏中会有个默认的值”work“,没有的话就自己输入一下。
图片[7]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
然后OK一下,工作库就创建好了,在软件的库界面会出现一个work的选项,不过此时还处于empty的状态
图片[8]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
观察一下work库对应的路径,会发现多了个work的文件夹(内含一个“_info”的文件)以及一个modelsim.ini的文件;“_info”是运行的一些信息,和work是一起的,不要随意改动它;ini那个文件则是初始文件,里头是复制的安装路径下的ini文件,然后将work库加入了库的映射中。
图片[9]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
在 Transcript 窗口也有这两个操作的相应Tcl命令
vlib work
vmap work work

 

图片[10]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug

 
4、编译文件(Compile > Compile)
注:如果开着工程的话,该选项是灰色的,需要使用File > Close先关闭
图片[11]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
点击后,在弹窗的文件窗口选中两个.v文件,注意左上角的Library选中的是否为work,然后点Compile进行编译
图片[12]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
编译完后,Transcript窗口会出现编译结果,然后就可以点Done完成且关闭编译界面
图片[13]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
这时再看work,会发现,已经是非空状态了,多了个 “+” ,点击后,出现了两个模块的名字,即刚刚编译的文件,类型为Module
图片[14]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
5、如上图一样,选中test_counter,然后直接双击它,载入仿真界面
图片[15]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
启动仿真还可以选中test文件,点右键,再选择 Simulate ;或者选中菜单栏上的Simulate > Start Simulation ,然后弹出以下的窗口,选择好文件,点OK也一样进入仿真界面;
图片[16]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
仿真界面如下,这时候的界面主要由三个部分组成
1:文件层次;2:根据1中选中的模块,对模块内的变量信息(Objects)以及当前仿真状态(Processes)进行显示;3:波形窗口
图片[17]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
如果缺了需要的,在菜单栏 View下开启对应的即可
图片[18]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
若Wave窗口中无信号,则在1窗口中,选中模块,然后右键,点击Add Wave ,Wave中就添加对应的信号变量了
图片[19]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
6、找到控制仿真运行的菜单,然后点 Run,或者直接在脚本窗口输入:run 100ns,也可运行仿真,时长根据自己需要设定,要注意的是,当以后变量多了,运行则会相对变慢;点 Run -All 的图标,则会一直运行,直到运行到停止的信号或者点了 Stop 那个图标
图片[20]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
图片[21]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
可以看到 Wave 中的信号变量运行了一段时间,接着 Restart,将状态全部复位,准备后续的演示
图片[22]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
图片[23]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
7、准备简单的Debug一下,先在菜单栏 View > Files ,打开文件窗口,双击counter.v
图片[24]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
打开counter.v后,在always处点下侧边栏,会出现一个红色的点,即断点,再次单击就会变灰色,如果要移除就右键然后Remove Breakpoint
图片[25]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
断点设好后,直接点 Run -All 的图标,会发现运行的蓝箭头停在了设置的断点处
图片[26]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
这时候看Objects窗口的变量值,为当前停下时,各变量的值
图片[27]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
把鼠标移到变量上,也会出现此时相应的变量与其值,和Objects的一样
图片[28]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
或者选中某个信号,然后右键,选中 Examine
图片[29]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
这时也会弹出对应变量的值
图片[30]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
接着找到调试窗口,图标的含义和玩C的Debug是一样的,单步调试那些啥的
图片[31]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
点两下Step Into,箭头就一步步的到了count的赋值处
图片[32]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
基础仿真就讲到这了,不熟悉的话,可以自己多试几遍,对应产生的一些简单的脚本命令也可以记一下,之后直接跑命令有时候会方便些,最后菜单栏 Simulate > End Simulation 结束并退出仿真,出现提示框的话,点是就可以了(quit -sim)。
图片[33]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
 
图片[34]-Modelsim的仿真之路(基础仿真流程)-FPGA常见问题社区-FPGA CPLD-ChipDebug
本篇对最基本的一个仿真操作流程直接过了一遍,下一篇就开始工程的形式来操作仿真了,还没上手的赶快学起来吧~

请登录后发表评论

    没有回复内容