当前位置:首页 > modelsim编写do仿真文件一些经验
Modelsim的do文件写法及体会
采用TCL脚本语言编写的.do文件,在modelsim中执行do文件可以自动进行仿真。比起在modelsim中新建仿真工程或者在ISE中调用modelsim仿真都要好得多,而且方便快捷。下面是编写do文件的一般步骤:
1. quit –sim -――首先退出原来仿真的工程。
2. cd ―――设置工作目录的路径,就是你所要建立的工作目录work要放在哪里。 3. vlib work ―――在工作目录下建立一个work目录,请注意不要用操作系统直接新建一
个work的文件夹,因为用操作系统建立的work文件夹并没有modelsim SE自动生成的_info文件。还有个问题是,当你的软件工程里需要用到软核时,可能会需要一些库,但这些库ISE软件中是没有的,此时就需要我们自己新建库了,并映射到当前目录下。我们只自己新建的库一般放在work库前面建立。
4. vmap work ―――将新建的work库映射到当前工作目录下(当前目录就是第一步中的目录了)。其他新建的库也要这样的方法映射。
5. vlog +acc –work work “file_path/*.v” ―――编译“file_path”目录下所有.v文件,并将
其添加进工作库(work)中,包括IP生成的V文件也要编译的。编译时可以分开单独编译,但是一定要注意顺序,先编译被调用的文件。在仿真的时候还需要用到一个文件,那就是glbl.v这个库文件。它是存放在xilinx安装目录下,我们直接编译它并添加时工作库(work)就可以了。特别需要说明的是,在仿真软核的时候,在XPS软件里点击如下图所示:
此时会在工程目录中生成一个simulaton文件
夹,这个文件夹里的东西就是软核仿真时所需要的仿真文件了。所以我们需把simulaton里所以的v文件都编译一次,这样才能仿真软核。
6. vism –t ps –novopt work.demo_tb ―――这是没有调用IP Core时的仿真命令,注意后面
的参数demo_tb必须为Testbench中的模块名。 7. vsim -L E:/modeltech_6.6a/Xilinx_lib_edk/simprims_ver vsim -L E:/modeltech_6.6a/Xilinx_lib_edk/unisims_ver
vsim -L E:/modeltech_6.6a/Xilinx_lib_edk/XilinxcoreLib_ver
vsim -L E:/modeltech_6.6a/Xilinx_lib_edk/unimacro_ver -t ps -novopt work. demo_tb work.glbl
这是调用IP Core时的仿真命令,其中simprims_ver、unisims_ver、XilinxcoreLib_ver和unimacro_ver这四个库可以在ISE工程中生成的,生成之后直接像上面那样加进来就可以了,具体方法如下: Modelsim编译Xilinx仿真库
仿真库的编译方法有很多中,这里只介绍一种供参考。
1. 在ISE中打开任意一个工程,选择Simulation面板,在“Compile HDL Simulation Libraries”上点击鼠标右键,选择“Process Properites”,如图7.2.1所示。
2. 在一般性选项中,设置属性显示等级为Advanced,然后在Simulator Path中设置Modelsim可执行文件所在的路径,在Compiled Library Directory中设置Xilinx仿真库的路径,如图7.2.2所示,最后单击OK按钮。
3. 在ISE界面中双击“Compile HDL Simulation Libraries”,ISE会自动将仿真库编译至Compiled Library Directory中所指定的路径。
图7.2.1
图7.2.2
8. view wave ―――观察波形
9. delete wave * ―――每次仿真都先删除原来的波形
10.add wave -dec /* ―――将testbench文件中所有的信号变量加到波形文件中,并以十进
制方式显示。
11.add wave -dec /uut/* ―――将top层中所有信号变量加到波形文件中,并以十进制方式显示。 以其方法还可以加入其他想看信号的到波形文件中。 12.run 50ms ―――仿真运行50ms
到这里do文件编写结束!
这里还有个技巧:每个do文件只要编译一次后,在工作目录work里就会生成了仿真的结果。此时改变do文件的内容,但work的内容不改变的话,再次仿真出来的结果是一样的。也就是说,如果你想改变下do文件,比如有些信号你不想在波形窗口中显示了出来,这时你不能单单改变do文件,还要把work里的内容全部删除了,再次进行仿真编译才能达到目的。
下面是一个具体的do文件仿真程序: quit -sim
cd E:/YSHQ/ISE_projest/Microblaze_sdk/testbench vlib lmb_bram_elaborate_v1_00_a
vmap lmb_bram_elaborate_v1_00_a lmb_bram_elaborate_v1_00_a
vlib work
vmap work work
vlog +acc -work lmb_bram_elaborate_v1_00_a
\
ioral/elaborate/lmb_bram_elaborate_v1_00_a/hdl/verilog/lmb_bram_elaborate.v\
vlog +acc -work work \vlog +acc -work work \
vlog +acc -work work
\oral/*.v\
vlog +acc -work work
\oral/system_ip.v\
vlog +acc -work work
\vlog +acc -work work
\
vlog +acc -work work \
vsim -L E:/modeltech_6.6a/Xilinx_lib_edk/simprims_ver vsim -L E:/modeltech_6.6a/Xilinx_lib_edk/unisims_ver vsim -L E:/modeltech_6.6a/Xilinx_lib_edk/XilinxcoreLib_ver vsim -L E:/modeltech_6.6a/Xilinx_lib_edk/unimacro_ver -t ps -novopt work.microblaze_test_top_tb work.glbl
view wave
delete wave * ;#每次仿真都先删除原来的波形 add wave -dec /* add wave -dec /uut/*
add wave -dec /uut/u_system_ip/* add wave -dec /uut/u_uart_r/* run 50ms
共分享92篇相关文档