一. 前言
最近学习了modelsim的tcl命令,可以直接在transcript窗口通过命令来执行操作,更重要的是通过.do文件可以不打开modelsim就生成一些波形文件(例如.vcd等),方便后续使用(debussy调试波形)。
二. 命令总结
总结了一下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | #Quit last sim quit -sim #Create the work library vlib work #vmap the work lib vmap work work #include the head files vlog +incdir+ YOURPATH sfifo_def.v #eg: vlog +incdir+ sfifo_def.v # Compile the verilog files vlog -work work sfifo.v vlog -work work sfifo_tb.v #Or you can merge them, but be sure to compile the called file first vlog -work work sfifo.v sfifo_tb.v #You can also ignore the ‘-work work’, such as vlog sfifo.v sfifo_tb.v #Run simulation vsim sfifo_tb vsim -lib work sfifo_tb vsim work. sfifo_tb #Prohibit to optimize vsim -novopt work.sfifo_tb vsim -voptargs=+acc -novopt work.sfifo_tb #Attention: If you don’t add ‘-novopt’ to disable optimization in your commands, there will be error when add wave to window: # (vish-4014) No objects found matching '/sfifo_tb/*'. #specified time pricision is 1ns vsim -novopt work.sfifo_tb -t 1ns #Set the window types #Open the wave window view wave #Open the instance structure window view structure #Open the signals list window view signals #Open the source window view source #Open the list window view list #Open the variables window view variables #Open the dataflow window view dataflow #Add all signals to wave window add wave -r /* #Attention: -r should be followed by a space #Add the specific test signal to wave window, eg: add wave sim:/ sfifo_tb /clock add wave sim:/ sfifo_tb /signal #Attention: ‘sim:’ can be ignored, which means ‘add wave / sfifo_tb /signal’ is also right #Add the tb signals to wave window add wave sim:/sfifo_tb /* add wave /sfifo_tb /* add wave * #Display in hexadecimal or binary or decimal or unsigned or others add wave -hex/-decimal/-unsigned/-binary * #format: Logic/Literal/Event/analogautomatic/analogcustom #add wave -noupdate -format Logic -radix decimal -color Red /sfifo_tb/sfifo1/clock #add wave -radix unsigned -color pink -format analogautomatic sim: sfifo_tb/sfifo1/clock add wave -unsigned sim: sfifo_tb/sfifo1/clock add wave -noupdate -color pink -format Analog-Step -height 74 -max 4094.9999999999995 -radix unsigned sfifo_tb/sfifo1/clock #Delete signal delete??wave??/test/i #Restart simulation, then click OK or press ENTER restart #Run simulation run 100 us run -all #quit -f/-force to quit Modelsim #quit -sim to quit simulation quit -f/-force/-sim #Clear transcript window .main clear |
中文理解可以参考这几个网页:
modelsim之命令行仿真入门
modelsim中常用的tcl命令
三. 脚下留心:
Enable optimization
仿真的时候:vsim -novopt work.sfifo_tb,如果不加‘-novopt’或者没有勾选掉‘Enable optimization’,添加波形的时候会出现错误:# (vish-4014) No objects found matching ‘/sfifo_tb/*’

ERROR:

restart
如果想要重新仿真,可以直接输入restart,然后点击OK即可,或者点击界面工具栏,最后run -all。
界面工具栏

点击OK

路径
有时候需要添加一些宏定义文件,路径有两种方法:
绝对路径和相对路径。
绝对路径
就是平时经常用到的,比如:F:\ModelProject\04_tcl_practice就为绝对路径,但是这种路径有个坏处,就是换一台电脑基本就不适用了。
相对路径
相对路径中./表示当前文件夹,两个点…/表示上一级文件,所以用相对路径:./…/…/Wang_code/iVerilogLab/11_sfifo/sfifo.v
表示当前文件夹的上一级文件的上一级文件中的Wang_code中的iVerilogLab中的11_sfifo中的sfifo.v文件,当然,你可以直接把这个文件拷贝到当前目录下,这里只是举个栗子。
直接include
如果要添加宏定义文件的话,可以选中要添加的文件,右击,选择Properties,然后Include directory即可。可以看到其实和直接使用+incdir+命令效果是一样的。


四. do文件
ModelSim SE中可以执行一种批处理文件,就是.do文件,相当于DOS中的.bat文件。我们可以用批处理方式来使仿真简单化,具体做法为,将所要执行的命令编辑在一起,将上面的命令行加入到do文件中即可。
大体是这样一个步骤,具体内容请看上面的命令注释:

有了.do文件,以后就不用每次都点击那么多啦,直接在transcript中输入do file.do(file为你命名的名字)即可。
五. bat文件
.bat文件是DOS中的批处理文件,我们可以将刚才的file.do文件直接命名为file.bat,然后双击即可。
图中为优化后的代码

双击.bat后

可以看到,效果是一样的。
do文件具体可以参考:
moedlsim中do文件的写法技巧
Modelsim之TCL仿真
以上就是基本命令和do文件的基础知识,希望对你有帮助~