【转载】Modelsim的自动化使用(一)脚本的基本使用

转载https://www.jianshu.com/p/e25254f4d6be

作者:lanFeng666
链接:https://www.jianshu.com/p/e25254f4d6be
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

一、 实验来源

通过vivado联合Modelsim调试,自动生成脚本,通过学习人家写好的脚本,来学习如何自动化使用Modelsim。毕竟,每一次都在那几个按钮上点来点去,实在是太恶心人了,我觉得,没有人喜欢这样重复做实验,因此,写了这篇blog。本文,最后会给一个简单的Modelsim通用型工具脚本。如果对笔者的实验过程,不感兴趣,可以直接跳到最后,简单看看,直接拿来用即可。

二、vivado调用modelsim的过程

 
image.png

住里面主要说明两种文件:

  • .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

 

前面三条语句是新建一个库,并设置库的位置,如下图


 
image.png

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脚本
这个脚本的内容很简单

 

说白了就是添加了所有的信号线,放到了右边的框里(这个时候,已经仿真完了),完事之后,执行:

view wave
view structure
view signals
run 1000ns

 

查看波形,查看结构,查看信号线,同时设置了一下具体时间。

三、把Vivado生成的脚本转变为一个通用的脚本

通过上面的论述,其实只需要更改Vivado生成的脚本,就可以做一个简单的通用Modelsim仿真自动化工具了

改的东西,最基本的仅仅是:

  • 软件路径、源文件路径、映射库的路径
  • 波形的查看
  • 仿真的tb模块
    笔者简单改了改,最后的文件结构为:


     
    image.png

    我花了几个红框,这张图需要细品,细品之后,基本上就会改了。我这儿提示一下,modelsim_lib这个文件夹需要事先建好,至于里面的东西,不要担心,modelsim这个软件自己会建。

modelsim更进一步的使用,就参照下一个文档

 

posted @ 2020-04-17 13:27  MikeCorleone  阅读(861)  评论(0编辑  收藏  举报