赞
踩
原创 特权同学 FPGA快乐学习
- vlib work
-
- vmap work work
-
-
-
- #library
-
- #vlog -work work../../library/artix7/*.v
-
-
-
- #IP
-
- #vlog -work work../../../source_code/ROM_IP/rom_controller.v
-
-
-
- #SourceCode
-
- vlog -work work ../design/vlg_design.v
-
-
-
- #Testbench
-
- vlog -work work testbench_top.v
-
-
-
- vsim -voptargs=+acc work.testbench_top
-
-
-
- #Add signal into wave window
-
- do wave.do
-
-
-
- #run -all
脚本详细说明:
vlib work
vlib为Modelsim命令,work是一个新建的文件夹名称。该命令将在compile.do所在文件夹中新建一个名为work的物理目录。如图所示。
vmap work work
vmap是Modelsim命令,后面两个work都是文件名。前面一个work是vlib命令所创建的物理文件夹名(此文件夹必须用vlib命令事先定义好,才能被引用),后面一个work表示在Modelsim的Library窗口中创建了一个名为work的库文件夹。此命令输入后,将在Modelsim的Library窗口中创建了一个名为work的库文件夹(逻辑目录),其对应的物理目录是vlib创建好的名为work的文件夹。
vmap命令输入后,如图所示。
创建work文件夹的目的,是为了后续编译的文件都可以存放在这个文件夹下,Modelsim的work Library里可以看到编译文件名称,而这些编译文件实际是存放在vlib创建的work文件夹下。
- vlog -work work ../design/vlg_design.v
-
- vlog -work work testbench_top.v
vlog -work是Modelsim命令。此命令编译Verilog源码,将编译得到的结果放到名为work的逻辑库里面。该命令主要用于编译设计文件、测试脚本、调用的IP核文件及其相应的仿真库文件等。
文件名称中,如果直接跟着.v文件,表示与compile.do文件同一个文件夹路径下。../表示向上一个文件夹目录。
vsim -voptargs=+acc work.testbench_top
vsim是Modelsim命令,表示启动仿真。
work.testbench_top表示以testbench_top.v文件作为测试脚本进行仿真,work.是固定用法,testbench_top是用vlog编译过的测试脚本的文件名。
-voptargs=+acc是固定命令脚本,表示优化部分参数。
这里的优化主要包括:
不优化(命令-novopt):完全不进行设计优化,所有信号可见,但仿真速度较慢。
优化(命令-vopt),信号不可见:进行设计优化,但信号都不可见,速度最快。调试完全依赖于testbench的打印输出,无法正常看到中间信号。在不是非常高度自动化的进行测试,并且需要观察中间调试信号的情况下,一般不推荐该模式。
部分优化(命令-voptargs=+acc):进行设计优化,但又保证所有信号可见,速度较快,调试必备。
设计优化功能是用来提高仿真速度。对于小工程,选择不优化或者选择优化其实对仿真速度的影响微乎其微,根本感觉不到。
do wave.do
前面一个do是Modelsim命令。wave.do是同文件夹下另一个do文件名称。执行该命令将会打开wave.do文件并执行这个文件中的命令。该文件一般用于添加需要在波形查看的信号。
当然,也可以不用使用这个文件来加载波形中的信号,可以将wave.do中的命令直接copy过来并覆盖do wave.do这行命令。
run -all
Modelsim命令,表示直接运行仿真,直到遇上仿真测试脚本中的$stop或$finish命令才终止。
在“Lesson08 基于Xilinx BUFGCE原语的门控时钟设计”的仿真工程sim104的compile.do中,vsim的定义更多一些。
vsim -voptargs=+acc -L unisims_ver -L unisim work.glbl work.testbench_top
-L unisims_ver
-L 是固定格式,表示加载其后的仿真库文件,例如这里表示加载名为unisims_ver的库文件。modelsim.ini里指定库文件的映射目录后,还需要在输入vsim命令时使用-L选项来实现真正的库文件加载。
-L unisims_ver -L unisim
这里连续使用了三个-L选项,表示对unisim和unisims_ver这2个库同时进行加载。在实际仿真中,需要加载什么样的库,取决于设计中使用到的IP核、原语等涉及原厂提供的库文件的设计组件。设计所涉及的库文件,原则上都需要加载。而sim104实例中,使用了BUFGCE原语。这个原语所涉及的库其实只有unisims_ver这一个,所以使用下面这条vsim命令,其实就足够了。
vsim -voptargs=+acc work.glbl work.testbench_top
对于使用了某个IP核,如何确认它所需要的库和库文件名呢?一种比较简单的方法,当新创建的IP核出现在Sources à IP Sources面板中,可以展开它的Simulation子文件夹,打开以IP核名称命名的.vhd文件,如图所示打开Gamma IP核的v_gamma_0.vhd。
v_gamma_0.vhd文件中LIBRARY后面的v_gamma_v7_0_15便是IP核对应的库文件名(LIBRARYieee;这是标准库,不需要加载)。
如图所示,modelsim.ini文件中,可以查找以v_gamma_v7_0_15命名的库文件。
work.glbl
glbl.v文件也需要在仿真时运行,因为它是BUFGCE原语仿真执行时引用的一个初始化文件。这是一个固定的文件,通常对于xilinx提供的IP核、原语等都通用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。