FPGA仿真篇-使用腳本命令來加速仿真二
掃描二維碼
隨時隨地手機看文章
FPGA仿真篇-使用腳本命令來加速仿真二
作者:lee神
1. 背景知識
FPGA的仿真與調(diào)試在FPGA開發(fā)過程中起著至關(guān)重要的作用,也占用了FPGA開發(fā)的大部分時間。所以適當(dāng)減少或簡化FPGA的仿真與調(diào)試過程無疑是對FPGA開發(fā)的加速,所對產(chǎn)品成型的時間。這里我們將利用三篇給大家講解使用腳本命令來加速FPGA的仿真過程。
FPGA的仿真又分為前仿真和后仿真,前仿真即功能仿真,是在不考慮器件的布局布線和延時的理想情況下對源代碼進行的仿真;后仿真即時序仿真,時序仿真主要在布局布線后進行,與特定的器件有關(guān),在仿真時還要包含器件和布線延時信息。
FPGA的仿真工具也很多,其中用各公司軟件自帶的仿真工具,也有其他公司的仿真工具。其中Mentor公司的Modelsim是業(yè)界比較優(yōu)秀的仿真軟件,它提供了友好的仿真界面。
本次使用xilinx的官方例程xapp859來為大家做實驗,xapp859是一個PCIE,dma,DDR2控制器,以及DDR2的較大工程。對于要學(xué)習(xí)PCIE,DMA的同學(xué)具有很大幫助。其中工程中使用到了大量xilinx IP,也是對《FPGA仿真篇-使用腳本命令來加速仿真一》的進一步補充和講解。
2. 使用腳本語言命令加速仿真
Xapp859這個例程我會在QQ群里邊給出,或者大家自己去xilinx官網(wǎng)下載。
圖1 xapp859
圖1給出了整個文件的子目錄。其中doc文件夾中有詳細介紹xapp859工程的pdf文件,有興趣的同學(xué)可以重點看一下。
圖2 xapp859子文件夾
圖2是xapp859\fpga\simulation\functional子文件的截圖,我們所需要的重點仿真腳本文件都在這里。
圖3 tb.fdo.bat
圖3是.bat文件,雙擊此文件整個工程就可以運行。
圖4 tb.fdo
圖4 是tb.fdo文件里邊是我們重點學(xué)習(xí)的腳本語句,如何增加verilog文件,大家一看便知。
圖5 wave.do
圖5 為wave.do文件,這個文件被tb.fdo文件調(diào)用,主要是增加波形信號。
圖6.bat啟動
圖6 為雙擊xapp859\fpga\simulation\functional目錄下的tb.fdo.bat運行后的結(jié)果,它會自動啟動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 最后波形的輸出
這個工程比較大,腳本運行時間稍微會長一些時間,有興趣學(xué)習(xí)PCIE或者DMA的同學(xué)需要好好看PDF以及.v文件和仿真出來的波形,學(xué)習(xí)腳本的同學(xué)認真看xilixn官網(wǎng)給出的腳本的寫法,你會受益匪淺。
3. 常用腳本語言的解釋
vsim -novopt work.histogram_2d_new_tb
#結(jié)束仿真
quit -sim
#仿真video_cap模塊 不優(yōu)化
vsim -novopt work.video_cap_tb
##退出當(dāng)前仿真
quit -sim
##仿真image_src模塊 不優(yōu)化
vsim -novopt work.image_src
##設(shè)置仿真時間分辨率
##vsim -t 1ps -lib work image_src
##設(shè)置仿真時間分辨率
vsim -t 1ns -lib work AES256_tb
##添加頂層所有的信號
add wave *
radix hex ##16進制顯示
radix unsigned ##10進制顯示
##編譯xilinx庫 VHDL
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
##編譯xilinx庫 Verilog
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