一、 实验来源
通过vivado联合Modelsim调试,自动生成脚本,通过学习人家写好的脚本,来学习如何自动化使用Modelsim。毕竟,每一次都在那几个按钮上点来点去,实在是太恶心人了,我觉得,没有人喜欢这样重复做实验,因此,写了这篇blog。本文,最后会给一个简单的Modelsim通用型工具脚本。如果对笔者的实验过程,不感兴趣,可以直接跳到最后,简单看看,直接拿来用即可。
二、vivado调用modelsim的过程
住里面主要说明两种文件:
- .bat文件,这个是Windows里面的脚本文件,类似于Linux里面的Shell
- .do 文件,这个是modelsim支持的脚本文件
- .ini 文件,这个文件设置了modelsim中的需要使用到的仿真库的位置,这个东西也是vivado自动生成的
截图红框中的几个文件都是Vivado为了调用modelsim进行仿真而生成的。下面简单介绍一下:
2.1 compile.bat
set bin_path=D:\modelsim\win64
call %bin_path%/vsim -c -do "do {tb_test_compile.do}" -l compile.log
if "%errorlevel%"=="1" goto END
if "%errorlevel%"=="0" goto SUCCESS
:END
exit 1
:SUCCESS
exit 0
这个脚本,调用了位于D:\modelsim\win64的vism.exe文件,让 modelsim执行了tb_test_compile.do脚本,并将日志信息,输出到了compile.log文件中
2.1.1 tb_test_compile.do
编译的过程是:
vlib modelsim_lib/work
vlib modelsim_lib/msim
vlib modelsim_lib/msim/xil_defaultlib
vmap xil_defaultlib modelsim_lib/msim/xil_defaultlib
vlog -64 -incr -work xil_defaultlib \
"../../../../Miz_sys.srcs/sources_1/new/block.v" \
"../../../../Miz_sys.srcs/sources_1/new/unblock.v" \
"../../../../Miz_sys.srcs/sim_1/new/tb_test.v" \
quit -force
前面三条语句是新建一个库,并设置库的位置,如下图
vmap 是把系统的work库文件映射到新建的work库中
vlog 添加并编译HDL文件
2.2 simulate.bat 仿真操作
在编译成功之后,就使用simulate.bat去仿真目标模块
set bin_path=D:\modelsim\win64
call %bin_path%/vsim -do "do {tb_test_simulate.do}" -l simulate.log
if "%errorlevel%"=="1" goto END
if "%errorlevel%"=="0" goto SUCCESS
:END
exit 1
:SUCCESS
exit 0
和刚才编译时,一样,只是调用vsim.exe去执行相应的脚本
2.2.1 tb_test_simulate.do
vsim -voptargs="+acc" -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -lib xil_defaultlib xil_defaultlib.tb_test
set NumericStdNoWarnings 1
set StdArithNoWarnings 1
do {tb_test_wave.do}
view wave
view structure
view signals
run 1000ns
vsim命令的编译选项:
选项 | 值 | 说明 |
---|---|---|
voptargs | +acc | 优化编译 |
-L | unisims_ver(以这个为例) | 链接unisims_ver库 |
-lib | xil_defaultlib | 这个和-L没啥区别(笔者已经试过了) |
执行完下面的指令之后
vsim -voptargs="+acc" -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -lib xil_defaultlib xil_defaultlib.tb_test
两个set无关紧要,也就关一关警告。
之后,就执行tb_test_wave.do脚本
这个脚本的内容很简单
add wave *
说白了就是添加了所有的信号线,放到了右边的框里(这个时候,已经仿真完了),完事之后,执行:
view wave
view structure
view signals
run 1000ns
查看波形,查看结构,查看信号线,同时设置了一下具体时间。
三、把Vivado生成的脚本转变为一个通用的脚本
通过上面的论述,其实只需要更改Vivado生成的脚本,就可以做一个简单的通用Modelsim仿真自动化工具了
改的东西,最基本的仅仅是:
- 软件路径、源文件路径、映射库的路径
- 波形的查看
-
仿真的tb模块
笔者简单改了改,最后的文件结构为:
我花了几个红框,这张图需要细品,细品之后,基本上就会改了。我这儿提示一下,modelsim_lib这个文件夹需要事先建好,至于里面的东西,不要担心,modelsim这个软件自己会建。
modelsim更进一步的使用,就参照下一个文档