FPGA开发技巧:Modelsim仿真.do文件详细解析 原创 特权同学

FPGA开发技巧:Modelsim仿真.do文件详细解析

原创 特权同学 FPGA快乐学习 

  以《FPGA边码边学 视频教程》“Lesson06 分频计数器设计”中的sim102为例。 sim102的compile.do文件如下。

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核、原语等都通用。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值