PCIe 仿真需要Endpoint 模型和Root Port 模型協(xié)同工作。用戶一般可以采用購(gòu)買(mǎi)BFM/VIP 來(lái)模擬對(duì)端模型也可以自己設(shè)計(jì)對(duì)端模型,更簡(jiǎn)便的方法則是使用Xilinx 提供的模型 (Xilinx Root Port model) 。
仿真例子工程介紹:
Versal 的PCIe 仿真和VU/VU+ 系列有些不一樣,在endpoint 模式下,會(huì)有兩種類型的example design, 默認(rèn)的例子 是BMD 模式,(以前的器件默認(rèn)的模式是PIO 模式 )在生成IP 后, 可以通過(guò)設(shè)置下面參數(shù)來(lái)切換產(chǎn)生的例子工程。
CONFIG.bmd_pio_mode {false}
用戶仿真的例子一般有兩個(gè)部分:
1. Root Port 模型,這個(gè)是模擬了RP 的產(chǎn)生config 讀寫(xiě),讀寫(xiě)memory 空間并負(fù)責(zé)對(duì)收回來(lái)的數(shù)據(jù)進(jìn)行檢查。
2. Endpoint 用戶代碼部分,負(fù)責(zé)對(duì)收到的請(qǐng)求進(jìn)行回復(fù)并且發(fā)起讀寫(xiě),中斷請(qǐng)求。
在不同的測(cè)試間切換:
sample_tests.vh 定義了不同的測(cè)試名字,
sample_smoke_test0:
確認(rèn)device/vender ID,運(yùn)行BMD test (如果是BMD mode)
sample_smoke_test1:
確認(rèn)device/vender ID,確認(rèn)比較completion 數(shù)據(jù)。
RP 模型會(huì)對(duì)每一個(gè)BAR發(fā)起一次寫(xiě)操作,再發(fā)起一次讀操作,EP 收到后會(huì)發(fā)出CPLD。PR模型會(huì)對(duì)收到的CPLD 進(jìn)行檢查。RP 模型可以往EP 的特定位置寫(xiě)特定的值使得EP發(fā)起讀寫(xiě)或者中斷。
如果要在不同的測(cè)試間切換, 可以 TESTNAME 參數(shù),比如:
demo_tb.exe-gui -view wave.wcfg -wdb wave_isim -tclbatch isim_cmd.tcl -testplusarg TESTNAME=sample_smoke_test0
修改仿真例子:
修改提供的 example 代碼可以得到自己想要的測(cè)試。
如果需要修改 Sample_smoke_test0/1 中 ROOT PORT 對(duì)自己的設(shè)置, 可以直接修改 Sample_tests.vh 下面的代碼,比如下面的代碼實(shí)現(xiàn)的是讀取地址1 往地址1里面寫(xiě)7 再讀出來(lái)的過(guò)程,實(shí)現(xiàn)的是bus master /memory /IO 的使能。請(qǐng)注意這里的地址是DW Address , 也就是這個(gè)地址1 實(shí)際上是地址4 (byte address) 也就是協(xié)議固定的command register。
![d5fddd0e-e652-11ec-ba43-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/95/70/wKgZomTnAZaAAJu4AABkdv96Cfs947.jpg)
可以復(fù)制以上代碼 修改地址數(shù)據(jù)和byte enable 來(lái)實(shí)現(xiàn)對(duì)不同寄存器的操作。
如果需要修改對(duì)于EP側(cè) 配置寄存器的直接控制,可以修改下面的代碼,填入不同的地址實(shí)現(xiàn)不同寄存器的讀寫(xiě)。
![d66f38f0-e652-11ec-ba43-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/95/70/wKgZomTnAZeADVhtAABphaPmUs4722.jpg)
如果使用其他的分支,修改的方式類似。
RP 模型還提供了豐富的功能來(lái)實(shí)現(xiàn)對(duì)PCIe EP 配置空間的操作和memory 的讀寫(xiě)操作。這些操作大部分都用通過(guò)一些task 在pci_exp_usrapp_tx / pci_exp_usrapp_rx 中實(shí)現(xiàn)。比如下面的 BAR_PROGRAM 任務(wù) 就是把對(duì)BAR 的讀寫(xiě)以及控制的過(guò)程實(shí)現(xiàn)了一遍。
由于BAR 讀寫(xiě)是所有memory 請(qǐng)求的基礎(chǔ),大部分的測(cè)試都會(huì)用到,所以一般就可以直接修改這個(gè)task 來(lái)豐富測(cè)試的內(nèi)容。比如可以直接在這個(gè) task 內(nèi)部 ,復(fù)制下面的語(yǔ)句, 把地址修改為自己需要的配置地址來(lái)實(shí)現(xiàn)對(duì)其他配置寄存器的操作。最常見(jiàn)的修改就是修改下面的語(yǔ)句把 32‘h00000003 修改為32‘h00000007 使得 bus master 被打開(kāi)。這樣 EP 就具備了發(fā)起讀寫(xiě)操作的能力。需要修改其他寄存器也是一樣的道理, 請(qǐng)注意這里的地址區(qū)別與上面的DW address 而是byte address。(04 表示command register)
![d6956ef8-e652-11ec-ba43-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/95/70/wKgZomTnAZeAThmiAABkwsfFztc855.jpg)
其他的修改也是類似。
原文標(biāo)題:開(kāi)發(fā)者分享|Versal PCIe Example Design 仿真技巧 1
文章出處:【微信公眾號(hào):XILINX開(kāi)發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
Xilinx
+關(guān)注
關(guān)注
71文章
2171瀏覽量
122217 -
仿真
+關(guān)注
關(guān)注
50文章
4127瀏覽量
134050 -
PCIe
+關(guān)注
關(guān)注
15文章
1264瀏覽量
83255 -
Versal
+關(guān)注
關(guān)注
1文章
163瀏覽量
7717
原文標(biāo)題:開(kāi)發(fā)者分享|Versal PCIe Example Design 仿真技巧 1
文章出處:【微信號(hào):gh_2d1c7e2d540e,微信公眾號(hào):XILINX開(kāi)發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
PCIe 5.0設(shè)計(jì)面臨的挑戰(zhàn)以及仿真案例
![<b class='flag-5'>PCIe</b> 5.0設(shè)計(jì)面臨的挑戰(zhàn)以及<b class='flag-5'>仿真</b>案例](https://file.elecfans.com/web2/M00/8E/14/pYYBAGPccS2AQGSUAACz0mVOJ7U360.png)
是否采用 Versal?為什么升級(jí)到 Versal?
【ALINX 技術(shù)分享】AMD Versal AI Edge 自適應(yīng)計(jì)算加速平臺(tái)之 Versal 介紹(2)
![【ALINX 技術(shù)分享】AMD <b class='flag-5'>Versal</b> AI Edge 自適應(yīng)計(jì)算加速平臺(tái)之 <b class='flag-5'>Versal</b> <b class='flag-5'>介紹</b>(2)](https://file1.elecfans.com/web2/M00/C4/01/wKgaomXpc4CAdotmAAESc7mijLA820.png)
利用ORAN IP的例子工程來(lái)做仿真
仿真例子工程介紹
Versal GTY仿真:初始化,復(fù)位和速率變更
Versal CPM AXI Bridge模式的地址轉(zhuǎn)換
![<b class='flag-5'>Versal</b> CPM AXI Bridge模式的地址轉(zhuǎn)換](https://file1.elecfans.com/web2/M00/82/9E/wKgZomRa9_OAUf0LAAAeqw3o6t4262.png)
如何加速PCIe仿真
![如何加速<b class='flag-5'>PCIe</b><b class='flag-5'>仿真</b>](https://file1.elecfans.com/web2/M00/90/D9/wKgZomTdev-AFqA9AAARNDO9SZE829.png)
AMD Versal? Adaptive SoC CPM PCIE PIO EP設(shè)計(jì)CED示例
![AMD <b class='flag-5'>Versal</b>? Adaptive SoC CPM <b class='flag-5'>PCIE</b> PIO EP設(shè)計(jì)CED示例](https://file1.elecfans.com/web2/M00/E4/B8/wKgaomY9e0mABXFVAAAeEhLGtao374.png)
AMD Versal自適應(yīng)SoC CPM5 QDMA的Tandem PCIe啟動(dòng)流程介紹
![AMD <b class='flag-5'>Versal</b>自適應(yīng)SoC CPM5 QDMA的Tandem <b class='flag-5'>PCIe</b>啟動(dòng)流程<b class='flag-5'>介紹</b>](https://file1.elecfans.com/web2/M00/07/A1/wKgaombqNhqAHonqAAHwYlZwzzw387.jpg)
評(píng)論