Modelsim——工程建立和常用设置
Modelsim是一款优秀的FPGA仿真软件,这里记录一下Modelsim的基本使用。
一、联合仿真
联合仿真,即Quartus ii自己调用Modelsim,Modelsim自动出现仿真波形。
1.Modelsim软件的路径设置,一次设置好,以后就不用重复设置了。打开Quartus ii,点击Tools --- Options --- EDA Tool Optinons,将modelsim的安装路径填写进去。我这用的是QuestaSim,和Modelsim是完全没有区别的。为了防止遗漏,我把下面三个位置都填上:
2.Quartus ii关联Modelsim,一开始建立工程时就可以设置,如果忘记了或者设置错了也可以再次更改。点击Assignments --- Setings --- Eda Tool Setings,将仿真工具选择好即可。(我的是QuastaSim,就填的QuastaSim)
3.仿真的前提是你的模块文件和testbench文件都写好了,那么我们需要把模块文件和testbench相关联。点击Assignments --- Setings --- Eda Tool Setings下的simulation,将Tool name选择好,然后点击Compile testbench,之后点击Test Benches
进去后,点击New,进入另一个小页面,然后点击 。。。选择要的testbench文件,再点击Add,并且记得在上面把该testbench名字写上,然后一路ok就行了。
4.现在,各种设置都完成了,可以开始仿真了。这里记录一个小知识点:前仿真和后仿真。前仿真又称为功能仿真,即综合编译前理想状态下的仿真;后仿真又称为时序仿真,即综合编译后考虑恶劣情况下的仿真,会将一些线路延时等考虑进去,具体考虑了多少因素我还不是很懂,希望以后能学会。那么现在我们点击Quartus ii界面的Tools --- Run Simulation Tool,需要前仿真就点RTL Simulation,需要后仿真就点击Gate Level Simulation,仿真就自动出现了。当然Quartus ii界面也有这两项的小图标,点小图标是一样的。
5.现在Modelsim已经打开了,并且呈现出了波形,注意一点的是只有鼠标靠近该信号线的边沿,标杆就会吸附在边沿上,对手抖的人很友好。这里对Modelsim的界面简单记录一下:
6.注意一点,如果对代码进行了修改,那么需要关闭Modelsim并且重新点击打开才行。
二、独立仿真
联合仿真虽然很方便,一点击就自动出波形,但是一共工程模块很多的话还是不太方便,那么就要学会直接使用Modelsim进行仿真。
1.打开Modelsim,点击File --- New --- Project,出现以下界面,第一行是工程名称,第二行是工作路径,我们按需要填写以下就行。第三行第四行默认即可。完了点击OK
2.这里是添加文件,点击第一排第二个,Add Existing File,将模块文件和testbench都添加进来(可以跨文件夹一个个添加),如果使用了ip核,那么ip核和仿真库文件altera_mf.v也需要添加进去(该文件在Quartus ii安装路径下可找到)
3.添加好了后页面如下所示,文件出现了,但是有个问号,这说明我们需要编译一下,鼠标右键选择Compile All即可。我们发现很快就编译好了,问号变成了 √ 号。这比Quartus ii快多了,那么以后我们写代码需要检查语法错误时,其实可以用Modelsim来检查了,真方便。
4.之后我们点击Library ---- work --- tb文件,右键选择Simulation without Optimization
5.接着出现以下界面,我们关注信号就行了。选择好要呈现波形的信号,鼠标右键点击Add wava。
6.波形界面出现了,但是没有波形,我们手动点击顶上的按钮即可,上文已经介绍过了。
7.注意,如果对代码进行了改动,那么需要进行重新编译,并且波形窗口重置一下再跑即可。此外,独立仿真适合于前仿真,需要后仿真的话得添加很多由Quartus ii产生的相关文件,很是麻烦。所以后仿真还是直接用联合仿真方式吧。
三、界面调整
1.隐藏信号名的路径,波形窗口中,信号名的默认显示方式是包含路径名的,点击该页面左下角的灰色原点即可隐藏路径名。但这样每次打开都得点,软件不会记忆住。可以点击Tools --- Window preference --- display signal path,数值改写成1,ok。这样每次加载信号时,信号名都不包含路径了。
2.更改界面颜色,点击Tools --- Edit preferences,这里可以修改你的界面颜色。如果想单独改变某个波形的颜色,可以直接选择该信号右键点最后一项,里面也有color的设置。
3.Modelsim上面很多快捷按钮供我们使用,但是它经常跑偏而且太杂了。鼠标停在按钮那,点鼠标右键,将Standard、Compile、Simulate、Zoom保留打钩,其他项都不打钩。这样快捷按钮栏就变得简洁了。留下的这四个快捷按钮基本够我们用了,以后还要用到哪个快捷按钮再鼠标右键打钩就行。
四、保存波形
变好颜色,设置显示格式,定位时间点,终于看到想要的漂亮波形啦!这时按Crtl + S 保存当前状态为wave.do,路径为默认路径。关闭软件,走人!下次想再看到之前的费了半天调好的漂亮波形,只需要这样做:
1.在你刚刚那个工程的文件夹,出现一个vsim.wlf文件和刚刚保存的wave.do文件。我们双击vsim.wlf,Modelsim就打开了,并且定位到了之前的文件夹,也打开了sim区域,但是没有波形。
2.如果你在sim区域选中模块右键点击add wave,那么波形出现了,却不是你之前的那个漂亮波形,所以我不建议这么做。你应该在做完上面第1步后直接在Transcript输入:do wave.do,按Enter回车键。噔噔噔噔,原来的波形回来了!
五、脚本自动化仿真
Modelsim是支持命令的,我们可以用 .do 文件将这些命令先写好然后在Modelsim上调用。因为我的编辑器不支持.do的语法,所以这里改用 .tcl文件,它和 .do 的使用是没有任何区别的。
1. 我习惯设置一个test文件夹,里面放着仿真文件 XX_tb.v,然后在这test文件夹里放一个sim文件夹,在此文件夹内新建一个sim.tcl文件,这样后面的工程和乱七八糟的文件都在内部的sim文件夹里。
2. 在sim .tcl文件里写好以下代码,这些代码建议保存或制作成代码片段,以后只需要稍微改一改就能用。
1 # ========================================================================== 2 # == 清空软件残留信息 3 # ========================================================================== 4 5 # 退出之前仿真 6 quit -sim 7 8 # 清空信息 9 .main clear 10 11 # ========================================================================== 12 # == 建立工程并仿真 13 # ========================================================================== 14 15 # 建立新的工程库 16 vlib work 17 18 # 映射逻辑库到物理目录 19 vmap work work 20 21 # 编译仿真文件 22 vlog ./../*.v 23 24 # 编译设计文件 25 vlog ./../../rtl/*.v 26 27 # 无优化simulation *** 请修改文件名 *** 28 vsim -novopt work.fsm_tb 29 30 # ========================================================================== 31 # == 状态机名称查看器,如若不用请删除!!! 32 # ========================================================================== 33 34 # 结构体设置 35 virtual type { 36 {4'b0001 S0} 37 {4'b0010 S1} 38 {4'b0100 S2} 39 {4'b1000 S3} 40 } fsm_type; 41 42 # 结构体和信号名关联,命名为state_name 43 virtual function {(fsm_type)/fsm_tb/u_fsm/state} state_name 44 45 # ========================================================================== 46 # == 加载波形 47 # ========================================================================== 48 49 # 添加波形,高度30,以unsigned格式显示 *** 请修改路径名 *** 50 add wave -height 30 -radix unsigned /fsm_tb/u_fsm/* 51 52 # 跑完 53 run -all
3.打开Modelsim,点击 Files --- Change Directory ,找到刚刚那个 tcl 文件所在的文件夹。
4.在Transcript窗口输入 do sim.tcl,敲击Enter回车键。现在Modelsim就会自动帮你工作啦!
ps:
1.如果你的文件夹结构设置的和我一样,而且testbench文件命名为:XX_tb.v,里面例化的名称为 u_XX ,那么以后只需要将上述代码的 fsm 以"不匹配全词"方式替换成XX即可,当然手动修改也是很方便的,毕竟只要改2处地方即可。
2.这样操作在Project区域是空白的,那我们改了代码后怎么编译调试呢?在Library里找到模块用鼠标右键选择编译即可,和在Project里编译是一样的效果。然后在波形那restart一下重跑就行了。
六、用bat命令直接运行Modelsim
如果你懒得连Modelsim都不想打开,那可以试试 .bat文件的操作。
1.在 sim.tcl文件边上新建一个txt文件,里面写好下面的的代码然后保存。注意第4行需要和你的 .tcl 文件名称保持一致。
::请按任意键继续...
pause
::打开Modelsim并执行do sim.tcl
vsim -do sim.tcl
2.将刚刚那个 .txt 文件重命名为 .bat 文件
3.打开这个bat文件,敲Enter回车键,OK,电脑自动打开Modelsim自动仿真出波形了!
Modelsim的记录就到这了,这个工具很强大,很多功能我还不懂,以后再添加吧。