PCIe 仿真需要Endpoint 模型和Root Port 模型協同工作。用戶一般可以采用購買BFM/VIP 來模擬對端模型也可以自己設計對端模型,更簡便的方法則是使用Xilinx 提供的模型 (Xilinx Root Port model) 。
仿真例子工程介紹:
Versal 的PCIe 仿真和VU/VU+ 系列有些不一樣,在endpoint 模式下,會有兩種類型的example design, 默認的例子 是BMD 模式,(以前的器件默認的模式是PIO 模式 )在生成IP 后, 可以通過設置下面參數來切換產生的例子工程。
CONFIG.bmd_pio_mode {false}
用戶仿真的例子一般有兩個部分:
1. Root Port 模型,這個是模擬了RP 的產生config 讀寫,讀寫memory 空間并負責對收回來的數據進行檢查。
2. Endpoint 用戶代碼部分,負責對收到的請求進行回復并且發起讀寫,中斷請求。
在不同的測試間切換:
sample_tests.vh 定義了不同的測試名字,
sample_smoke_test0:
確認device/vender ID,運行BMD test (如果是BMD mode)
sample_smoke_test1:
確認device/vender ID,確認比較completion 數據。
RP 模型會對每一個BAR發起一次寫操作,再發起一次讀操作,EP 收到后會發出CPLD。PR模型會對收到的CPLD 進行檢查。RP 模型可以往EP 的特定位置寫特定的值使得EP發起讀寫或者中斷。
如果要在不同的測試間切換, 可以 TESTNAME 參數,比如:
demo_tb.exe-gui -view wave.wcfg -wdb wave_isim -tclbatch isim_cmd.tcl -testplusarg TESTNAME=sample_smoke_test0
修改仿真例子:
修改提供的 example 代碼可以得到自己想要的測試。
如果需要修改 Sample_smoke_test0/1 中 ROOT PORT 對自己的設置, 可以直接修改 Sample_tests.vh 下面的代碼,比如下面的代碼實現的是讀取地址1 往地址1里面寫7 再讀出來的過程,實現的是bus master /memory /IO 的使能。請注意這里的地址是DW Address , 也就是這個地址1 實際上是地址4 (byte address) 也就是協議固定的command register。

可以復制以上代碼 修改地址數據和byte enable 來實現對不同寄存器的操作。
如果需要修改對于EP側 配置寄存器的直接控制,可以修改下面的代碼,填入不同的地址實現不同寄存器的讀寫。

如果使用其他的分支,修改的方式類似。
RP 模型還提供了豐富的功能來實現對PCIe EP 配置空間的操作和memory 的讀寫操作。這些操作大部分都用通過一些task 在pci_exp_usrapp_tx / pci_exp_usrapp_rx 中實現。比如下面的 BAR_PROGRAM 任務 就是把對BAR 的讀寫以及控制的過程實現了一遍。
由于BAR 讀寫是所有memory 請求的基礎,大部分的測試都會用到,所以一般就可以直接修改這個task 來豐富測試的內容。比如可以直接在這個 task 內部 ,復制下面的語句, 把地址修改為自己需要的配置地址來實現對其他配置寄存器的操作。最常見的修改就是修改下面的語句把 32‘h00000003 修改為32‘h00000007 使得 bus master 被打開。這樣 EP 就具備了發起讀寫操作的能力。需要修改其他寄存器也是一樣的道理, 請注意這里的地址區別與上面的DW address 而是byte address。(04 表示command register)

其他的修改也是類似。
原文標題:開發者分享|Versal PCIe Example Design 仿真技巧 1
文章出處:【微信公眾號:XILINX開發者社區】歡迎添加關注!文章轉載請注明出處。
-
Xilinx
+關注
關注
73文章
2179瀏覽量
123960 -
仿真
+關注
關注
51文章
4214瀏覽量
135099 -
PCIe
+關注
關注
16文章
1304瀏覽量
84435 -
Versal
+關注
關注
1文章
166瀏覽量
7940
原文標題:開發者分享|Versal PCIe Example Design 仿真技巧 1
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發者社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
是否采用 Versal?為什么升級到 Versal?
【ALINX 技術分享】AMD Versal AI Edge 自適應計算加速平臺之 Versal 介紹(2)

利用ORAN IP的例子工程來做仿真
仿真例子工程介紹
Versal CPM AXI Bridge模式的地址轉換

如何加速PCIe仿真

AMD Versal? Adaptive SoC CPM PCIE PIO EP設計CED示例

AMD Versal自適應SoC CPM5 QDMA的Tandem PCIe啟動流程介紹

評論