当前位置:首页 > > FPGA开源工作室

FPGA仿真篇-使用脚本命令来加速仿真

作者:lee

1. 背景知识

FPGA的仿真与调试在FPGA开发过程中起着至关重要的作用,也占用了FPGA开发的大部分时间。所以适当减少或简化FPGA的仿真与调试过程无疑是对FPGA开发的加速,所对产品成型的时间。这里我们将利用三篇给大家讲解使用脚本命令来加速FPGA的仿真过程。

FPGA的仿真又分为前仿真和后仿真,前仿真即功能仿真,是在不考虑器件的布局布线和延时的理想情况下对源代码进行的仿真;后仿真即时序仿真,时序仿真主要在布局布线后进行,与特定的器件有关,在仿真时还要包含器件和布线延时信息。

FPGA的仿真工具也很多,其中用各公司软件自带的仿真工具,也有其他公司的仿真工具。其中Mentor公司的Modelsim是业界比较优秀的仿真软件,它提供了友好的仿真界面。

本次使用xilinx的官方例程xapp859来为大家做实验,xapp859是一个PCIEdma,DDR2控制器,以及DDR2的较大工程。对于要学习PCIEDMA的同学具有很大帮助。其中工程中使用到了大量xilinx IP,也是对《FPGA仿真篇-使用脚本命令来加速仿真一》的进一步补充和讲解。

2. 使用脚本语言命令加速仿真

Xapp859这个例程我会在QQ群里边给出,或者大家自己去xilinx官网下载。

1 xapp859

1给出了整个文件的子目录。其中doc文件夹中有详细介绍xapp859工程的pdf文件,有兴趣的同学可以重点看一下。

2 xapp859子文件夹

2xapp859\fpga\simulation\functional子文件的截图,我们所需要的重点仿真脚本文件都在这里。

3  tb.fdo.bat

3.bat文件,双击此文件整个工程就可以运行。


4 tb.fdo

4 tb.fdo文件里边是我们重点学习的脚本语句,如何增加verilog文件,大家一看便知。

5 wave.do

5 wave.do文件,这个文件被tb.fdo文件调用,主要是增加波形信号。

6.bat启动

6 为双击xapp859\fpga\simulation\functional目录下的tb.fdo.bat运行后的结果,它会自动启动modelsim软件。

7 运行过程中碰到的第一个错误

7,为运行过程中的第一个错误# ** Error: (vlog-7) Failed to open design unit file "%XILINX%/verilog/src/glbl.v" in read mode.修改到你的正确路径。例如图8

8修改后的tb.fdo

9 运行中的第二个错误

9 使我们运行过程中的第二个错误,这是因为IP的仿真库找不到。修改xapp859\fpga\simulation\functional路径下modelsi.ini如下图10

10 修改后的modelsim.ini

10,是xilinx生成的仿真库,我们自己要保证路径正确。

11Transcript 显示脚本运行成功

12 最后波形的输出

这个工程比较大,脚本运行时间稍微会长一些时间,有兴趣学习PCIE或者DMA的同学需要好好看PDF以及.v文件和仿真出来的波形,学习脚本的同学认真看xilixn官网给出的脚本的写法,你会受益匪浅。

3. 常用脚本语言的解释

vsim -novopt work.histogram_2d_new_tb

#结束仿真

quit -sim

#仿真video_cap模块 不优化

vsim -novopt work.video_cap_tb

##退出当前仿真

quit -sim

##仿真image_src模块 不优化

vsim -novopt work.image_src

##设置仿真时间分辨率

##vsim -t 1ps   -lib work image_src

##设置仿真时间分辨率

vsim -t 1ns   -lib work AES256_tb

##添加顶层所有的信号

add wave *

radix hex ##16进制显示

radix unsigned ##10进制显示

##编译xilinxVHDL

vcom work simprim d:Xilinx/VHDL/src/simprims/simprim_Vcomponents.vhd

vcom work simprim d:Xilinx/VHDL/src/simprims/simprim_Vpackage.vhd

vcom work simprim d:Xilinx/VHDL/src/simprims/simprim_VITAL.vhd

vcom work unisim d:Xilinx/VHDL/src/unisims/unisim_VCOMP.vhd

vcom work unisim d:Xilinx/VHDL/src/unisims/unisim_VPKG.vhd

vcom work unisim d:Xilinx/VHDL/src/unisims/unisim_VITAL.vhd

vcom work unisim d:Xilinx/VHDL/src/unisims/unisim_VCFG4K.vhd

vcom work xilinxcorelib d:Xilinx/VHDL/src/ XilinxCoreLib/*.vhd


##编译xilinxVerilog

vlog work simprim d:Xilinx/VHDL/src/simprims/simprim_Vcomponents.v

vlog work simprim d:Xilinx/VHDL/src/simprims/simprim_Vpackage.v

vlog work simprim d:Xilinx/VHDL/src/simprims/simprim_VITAL.v

vlog work unisim d:Xilinx/VHDL/src/unisims/unisim_VCOMP.v

vlog work unisim d:Xilinx/VHDL/src/unisims/unisim_VPKG.v

vlog work unisim d:Xilinx/VHDL/src/unisims/unisim_VITAL.v

vlog work unisim d:Xilinx/VHDL/src/unisims/unisim_VCFG4K.v

vlog work xilinxcorelib d:Xilinx/VHDL/src/ XilinxCoreLib/*.v


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
关闭