vivado联合modelsim仿真——脚本操作编译,仿真及保存波形
本文内容均来自个人使用经验,希望可以帮助大家通过脚本节省相关操作的时间,记录在此做分享交流。
确保已经完成vivado和modelsim的联合工作,可参考vivado联合modelsim报错:vsim-19 Failed to access library ‘unisims_ver‘ at ‘unisims_ver‘中小节:添加编译库。
仿真路径文件介绍
从vivado中调用modelsim之后,在工程路径:\gtwizard_0_ex\gtwizard_0_ex.sim\sim_1\behav\modelsim
下会产生如下文件(这里以gtwizard0_ex
工程为例):
其中上述比较重要的文件为:
- compile.bat——编译快捷脚本;
- xxxx_simulate.do——仿真脚本文件;
- xxxx_wave.do——仿真波形属性文件;
- simulate.bat——仿真快捷脚本文件;
其他的比如xx_log
即为对应的log文件,在编译或这仿真时,提示的warinings & errors
也会在这里面显示,如果在软件中寻找不方便,可以在这里进行查找。
对应的xxx_rom_init_rx.dat
和xxx_rom_init_tx.dat
为初始ROM值,在Source
文件中调用;
快捷编译
如果修改过tb文件或这RTL的源码文件,可以直接双击compile.bat
进行编译,弹出cmd
窗口进行编译(修改过源文件一定要记得编译,再进行仿真)。
如果出错窗口就一直显示,可根据提示内容进行修改。如果不出错,cmd
窗口会自动退出。
感兴趣的可以用记事本打开此文件,内部通过modelsim
执行了xxxx_compile.do
文件,对每个已将加入到xxxx_compile.do
的.v文件进行编译。
通过双击compile.bat
文件进行编译,比使用vivado GUI
进行调用方便。
快捷仿真
如果不打开vivado GUI
,可以通过双击simulate.bat
进行modelsim仿真。
脚本会自动打开Vsim
窗口,并在脚本窗口运行xxxx_simulate.do
脚本。
在xxxx_simulate.do
脚本中,可以修改仿真的时间,波形属性文件等。
######################################################################
#
# File name : gtwizard_0_TB_simulate.do
# Created on: Sun Jan 31 11:27:17 +0800 2021
#
# Auto generated by Vivado for 'behavioral' simulation
#
######################################################################
vsim -voptargs="+acc" -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -lib xil_defaultlib xil_defaultlib.gtwizard_0_TB xil_defaultlib.glbl
set NumericStdNoWarnings 1
set StdArithNoWarnings 1
## 这里修改波形属性文件
do {gtwizard_0_TB_wave.do}
view wave
view structure
view signals
do {gtwizard_0_TB.udo}
## 这里修改仿真时间
run 1000ns
波形保存
如果在仿真时候,对波形进行了调整,比如添加了一系列波形名字,调整了波形的颜色,波形的属性,数值的格式等,可以直接在wave
窗口下使用Ctrl + S
,将波形保存为xxxx_wave.do
文件,并将刚才描述的xxxx_simulator.do
文件中修改为:
do {xxxx_wave.do}
这样,在下次使用xxxx_simulate.do
的时候就会加载上次保存的波形属性了。
注意 ,如果只保存为wave.do
可能造成下次被默认覆盖。
常用的操作
如果通过仿真波形调整到了BUG,需要修改源文件再进行仿真,笔者一般会这么操作:
-
在波形窗口中保存波形文件;
-
在
Atom
编辑器中修改了Source
文件之后,双击compile.bat
文件进行编译; -
通过之后,在
Vsim
的Transcript
窗口中,按方向键↑
,找到命令:do xxxxsimulate.do
-
回车,等待仿真完成,继续查看波形;
这样的方式是笔者使用最流畅的。
结束语
经常操作的话,得通过一些方法进行快捷操作,不能把时间都浪费在操作上。
这样的方式虽然不是最合理的,但是使用后找到的比较便捷的了。
如果读者有什么更好的方法,留言讨论一下哈。
2021-01-31.