本篇博客展示了如何訪問(wèn) NPI 為 NoC(片上網(wǎng)絡(luò))公開(kāi)的 Performance Monitor(性能監(jiān)控器)寄存器,這些寄存器用于監(jiān)控 NoC 的性能。
NoC 包含以下組件:
NMU(NoC 主單元)
NSU(NoC 從單元)
上述每個(gè)組件都有自己的一組 Performance Monitor 寄存器。
什么是 Performance Monitor?
Performance Monitor 是在每個(gè) NoC 中嵌入的一組寄存器,允許用戶通過(guò)一組給定的指標(biāo)來(lái)觀察流量。這些指標(biāo)包括:
突發(fā)計(jì)數(shù)
待處理的傳輸事務(wù)數(shù)
溢出和字節(jié)計(jì)數(shù)(下限和上限)
最大/最小時(shí)延值
累積時(shí)延(下限和上限)
解決方案:
除了使用基于 Python 的 ChipScoPy 方案外,還可以通過(guò) XSDB(使用 Tcl)或系統(tǒng)上運(yùn)行的應(yīng)用程序 (C/C++) 來(lái)訪問(wèn)這些指標(biāo)寄存器。
在本演示中選擇通過(guò) XSDB 運(yùn)行 Tcl 腳本。將該腳本轉(zhuǎn)換為 C++ 相對(duì)簡(jiǎn)單,隨后即可將其作為應(yīng)用程序來(lái)運(yùn)行。
該腳本包含:
硬編碼的寄存器地址(這些地址與器件相關(guān),本例中器件為 VPK120)
讀寫(xiě)函數(shù)
鎖定和解鎖函數(shù)
循環(huán)函數(shù)
演示設(shè)計(jì) (VPK120):

該設(shè)計(jì)包含一個(gè) NoC 和兩個(gè)可綜合的 Performance AXI Traffic Generator (TG),用于驅(qū)動(dòng) AXI 傳輸事務(wù)流量。這些 TG 共享同一個(gè) CSV 文件:

該 CSV 包含兩個(gè)場(chǎng)景。第一個(gè)場(chǎng)景包括一次寫(xiě)入事務(wù)、一次讀/寫(xiě)事務(wù)和一次讀取事務(wù);第二個(gè)場(chǎng)景(本演示重點(diǎn))是循環(huán)讀/寫(xiě)傳輸事務(wù)。
我們通過(guò)切換 Virtual Input/Output 來(lái)啟用流量生成器并選擇 CSV 場(chǎng)景。
設(shè)置演示:
下載 recreate.tcl 和 Custom.csv
使用 Source 命令運(yùn)行 recreate.tcl(打開(kāi) AMD Vivado 設(shè)計(jì)套件,在 Tcl 控制臺(tái)中運(yùn)行 source recreate.tcl)
在 Vivado 中,打開(kāi)生成工程的 XPR
右鍵單擊 design_1,然后單擊“Create HDL Wrapper”(創(chuàng)建 HDL 封裝文件)。選擇“Let Vivado manage wrapper and auto-update”(讓 Vivado 管理封裝文件并自動(dòng)更新)選項(xiàng)
運(yùn)行綜合與實(shí)現(xiàn)
生成器件鏡像
打開(kāi)硬件管理器
如何運(yùn)行演示:
我們將啟動(dòng)器件,并使其做好連接準(zhǔn)備 (JTAG) 工作,以便允許我們通過(guò)直接連接或者通過(guò)遠(yuǎn)程硬件服務(wù)器來(lái)進(jìn)行調(diào)試。隨后,我們將為自己的設(shè)計(jì)完成 Vivado 硬件管理器設(shè)置,并連接到目標(biāo)硬件。
我們通過(guò)使用 VIO 來(lái)觸發(fā) Traffic Generator 運(yùn)行 CSV 中的第二個(gè)場(chǎng)景(循環(huán)讀/寫(xiě))。
返回到器件后,我們將使用 XSDB(賽靈思調(diào)試實(shí)用工具)來(lái)運(yùn)行腳本并觀察輪詢到的傳輸事務(wù)指標(biāo)。
在器件上:
無(wú)論您如何管理器件,請(qǐng)啟動(dòng)它并確保其可連接到 Vivado 硬件管理器。
這里需要運(yùn)行 hw_server 以便遠(yuǎn)程連接。
在 Vivado 中:
注釋:您可以為其他器件重做此設(shè)計(jì),但請(qǐng)確保將腳本中的寄存器值更新為正確的目標(biāo)寄存器。
如果您對(duì)應(yīng)使用哪些寄存器存有疑問(wèn),請(qǐng)參閱:000035076 - Versal NoC:哪些 NPI 地址與 NoC/DDRMC site 位置有關(guān)聯(lián)?:
https://adaptivesupport.amd.com/s/article/000035076?language=zh_CN
打開(kāi) Vivado 并轉(zhuǎn)至 Vivado 硬件管理器。打開(kāi)到您的開(kāi)發(fā)板的目標(biāo)連接(通過(guò)遠(yuǎn)程 hw_server 或 localhost):

您應(yīng)在藍(lán)色下拉欄中看到“Program device”(器件燒錄)選項(xiàng):

選中“Program device”時(shí),它會(huì)自動(dòng)檢測(cè)您的 PDI 和調(diào)試探針。如未執(zhí)行自動(dòng)檢測(cè),請(qǐng)嘗試重新生成器件鏡像:

如果在后續(xù)選項(xiàng)卡中未看到 VIO,請(qǐng)使用 (+) 符號(hào)添加。
將全部 3 個(gè) VIO 都翻轉(zhuǎn)為 0 值,然后將 VIO_2 重新翻轉(zhuǎn)為 0。提供的 CSV 包含兩個(gè)場(chǎng)景;我們需要使用第二個(gè)場(chǎng)景,即持續(xù)讀/寫(xiě)循環(huán)。
這樣可以確保我們有流量可供測(cè)量:

選擇“Toggle auto-retrigger mode for this ILA core”(為此 ILA 核切換自動(dòng)重新觸發(fā)模式),然后選擇旁邊的“Run trigger for this ILA core”(為此 ILA 核運(yùn)行觸發(fā)器),即播放按鈕。
這樣應(yīng)該會(huì)在波形窗口中出現(xiàn)活動(dòng),并且應(yīng)無(wú)限循環(huán)。

在器件上:
現(xiàn)在器件中已有循環(huán)運(yùn)行的流量,我們可以在您的器件命令行上運(yùn)行 xsdb 來(lái)打開(kāi) XSDB,在 XSDB 中運(yùn)行“connect”,然后運(yùn)行“ta 1”,導(dǎo)航到您的腳本的存儲(chǔ)位置(本演示附帶的腳本),并通過(guò)“source
NoC性能監(jiān)控器調(diào)試指南