AXI總線在FPGA設(shè)計(jì)中使用越來(lái)越頻繁,但初學(xué)的同學(xué)經(jīng)常會(huì)因?yàn)閷?duì)協(xié)議的理解不夠深入,寫(xiě)出來(lái)的代碼經(jīng)常會(huì)出現(xiàn)死鎖等問(wèn)題,對(duì)FPGA設(shè)計(jì)與調(diào)試帶來(lái)很多不必要的麻煩。為了解決這個(gè)問(wèn)題,我們可以使用Vivado生成AXI VIP(AXI Verification IP)來(lái)對(duì)自己設(shè)計(jì)的AXI接口模塊進(jìn)行全方位的驗(yàn)證(如使用VIP的Master、Passthrough、Slave三種模式對(duì)自己寫(xiě)的AXI接口進(jìn)行仿真驗(yàn)證),提前規(guī)避和發(fā)現(xiàn)一些不滿足AXI總線規(guī)范的設(shè)計(jì)問(wèn)題。本文就跟大家分享如何使用Xilinx AXI VIP對(duì)自己的設(shè)計(jì)搭建仿真驗(yàn)證環(huán)境的方法。
本文參考的Xilinx官方文檔為:pg267-axi-vip.pdf。
01使用AXI VIP的幾個(gè)關(guān)鍵步驟
1.1、從IP Catalog中選擇并添加一個(gè)VIP,在這一步可以自定義該VIP的Component Name(新建完成后就很難再改名字了)。
IP添加完成就可以在tb中實(shí)例化。
1.2、在sv格式的tb中加入下面兩條import語(yǔ)句,第一個(gè)import是固定不變的,axi_vip對(duì)應(yīng)axi_vip_pkg,axi-stream vip對(duì)應(yīng)axi4stream_vip_pkg。
第二個(gè)import是導(dǎo)入剛才例化的vip的pkg,格式為import {Component Name}_pkg::*; 比如Component Name為axi_vip_0,則import如下圖第二行。
vivado自帶的編輯器會(huì)提示找不到import的這些pkg,但不會(huì)影響仿真。
1.3、 在tb中聲明相關(guān)的agent,使用vip的agent和它支持的一些函數(shù)就能實(shí)現(xiàn)仿真的功能。AXI vip支持的agent類(lèi)型如下:
(AXI Verification IP v1.1 第47頁(yè))
如果測(cè)試一個(gè)AXI Master接口,可以聲明一個(gè)自帶memory model的slave agent,結(jié)尾為mem_t:
這種自帶memory model的slave可以在執(zhí)行start();之后自動(dòng)生成AXI Slave時(shí)序,支持?jǐn)?shù)據(jù)的寫(xiě)入和讀出,也支持對(duì)memory內(nèi)容的初始化和后臺(tái)讀寫(xiě)操作。
1.4、Start前的初始化步驟
使用new函數(shù)將agent指定到待仿真的vip的IF上,
第二行:為agent設(shè)置一個(gè)標(biāo)簽,在使用多個(gè)vip時(shí),方便在仿真時(shí)的錯(cuò)誤信息中看到是哪個(gè)vip產(chǎn)生的。
第三行:設(shè)置verbosity為0,為不展示詳細(xì)的仿真信息。設(shè)置為400,則會(huì)在仿真時(shí)print出詳細(xì)的仿真信息。(不常用)
第四行:?jiǎn)?dòng)slave,之后slave可以根據(jù)待測(cè)的Master接口的讀寫(xiě)時(shí)序產(chǎn)生相應(yīng)的slave時(shí)序,被Master進(jìn)行讀寫(xiě)。
仿真過(guò)程中,如果axi或axi stream總線上的時(shí)序出現(xiàn)了任何錯(cuò)誤,vip都會(huì)自動(dòng)結(jié)束(暫停)仿真過(guò)程,仿真記錄的波形會(huì)停在總線時(shí)序出錯(cuò)的位置偏后一點(diǎn),控制臺(tái)中也會(huì)顯示vip對(duì)錯(cuò)誤的詳細(xì)描述。
02幾個(gè)常見(jiàn)功能
VIP的內(nèi)部功能結(jié)構(gòu)、支持的仿真函數(shù)在xilinx-vip-api-2021-2中有詳細(xì)的說(shuō)明。使用瀏覽器打開(kāi)下圖中的文件,便可以查看到。
axi-vip和axi-stream-vip都有自帶的仿真例程,常用的功能在仿真例程中都有涉及。
2.1 設(shè)置VIP支持的Outstanding讀寫(xiě)深度
例如,設(shè)置slave vip的outstanding深度為32,執(zhí)行下面代碼的前兩行即可。第3~4行則是獲取agent的讀寫(xiě)深度,可以以此確認(rèn)前面設(shè)置的讀寫(xiě)深度是否有效。
2.2 自定義ready信號(hào)
自帶memory model的slave vip可以在start_slave();之后產(chǎn)生slave時(shí)序,也可以通過(guò)slave的wr_driver或rd_driver,自定義ready的高低電平周期。
下圖代碼展示的是為axi產(chǎn)生自定義wready、awready、arready的方法。在這個(gè)initial的末尾,只是為ready信號(hào)設(shè)置了一個(gè)低電平時(shí)間為5clk,高電平時(shí)間為5clk的初始狀態(tài)。
仿真開(kāi)始后,可以在每次AW(寫(xiě)地址)通道握手之后,將新的awready和wready設(shè)置到agent上。在每次AR通道握手之后,將arready設(shè)置到agent上。
不能在axi的一個(gè)傳輸周期之內(nèi)設(shè)置多組ready,否則vip會(huì)報(bào)出類(lèi)似“太多未處理的ready”等錯(cuò)誤信息,即使仿真依舊能夠進(jìn)行。
2.3 Axi slave vip的memory model
使用agent.mem_model.backdoor_memory_write等函數(shù)可以繞過(guò)vip直接對(duì)memory model進(jìn)行一些讀寫(xiě)操作,在xilinx vip api文檔中有詳細(xì)介紹,需要注意只有帶memory model的vip才支持這類(lèi)功能。
03使用自己的仿真環(huán)境
dma_sim_vivado工程中含有兩個(gè)仿真源,一個(gè)是只測(cè)試AXI與AXI-Stream通路的回環(huán)測(cè)試工程,另一個(gè)是測(cè)試DMA所有功能包括接口的仿真工程。
其中,axi_if_sim中例化了一個(gè)axi vip和一個(gè)axi stream vip,其測(cè)試內(nèi)容為:
1、 填充axi stream接口的rxfifo。
2、 axi master接口將rxfifo中的數(shù)據(jù)寫(xiě)入到axi vip的memory。
3、 axi master接口將ax vip中memoty的數(shù)據(jù)全部讀出,并存入txfifo。
4、 txfifo上的axi-stream master接口將txfifo內(nèi)的數(shù)據(jù)以axi-stream的形式傳給axi stream vip。
5、最后比較axi stream vip接收的數(shù)據(jù)與一開(kāi)始填充進(jìn)rxfifo的數(shù)據(jù)是否一致,輸出仿真結(jié)果。
np_dma_sim中的vip使用基本一致,增加的內(nèi)容在于使用
agent.mem_model.backdoor_memory_write為slave vip的memory預(yù)先填充了一部分DMA的描述符,方便后面的仿真使用。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1642文章
21920瀏覽量
612158 -
Xilinx
+關(guān)注
關(guān)注
73文章
2179瀏覽量
123931 -
AXI
+關(guān)注
關(guān)注
1文章
132瀏覽量
17028
原文標(biāo)題:【經(jīng)驗(yàn)分享】Xilinx AXI VIP使用說(shuō)明
文章出處:【微信號(hào):HXSLH1010101010,微信公眾號(hào):FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
AXI VIP設(shè)計(jì)示例 AXI接口傳輸分析
如何使用AXI VIP在AXI4(Full)主接口中執(zhí)行驗(yàn)證和查找錯(cuò)誤
AXI VIP當(dāng)作master時(shí)如何使用

如何使用Xilinx AXI VIP對(duì)自己的設(shè)計(jì)搭建仿真驗(yàn)證環(huán)境的方法
布線測(cè)試中的幾個(gè)關(guān)鍵步驟
設(shè)計(jì) NCL30088 控制的 LED 驅(qū)動(dòng)器的 4 個(gè)關(guān)鍵步驟

設(shè)計(jì)由 NCP1631 驅(qū)動(dòng)的交錯(cuò)式 PFC 級(jí)的關(guān)鍵步驟

關(guān)于工業(yè)物聯(lián)網(wǎng)的3個(gè)關(guān)鍵步驟
AXI協(xié)議的幾個(gè)關(guān)鍵特性
AXI VIP當(dāng)作master時(shí)如何使用?

評(píng)論