我用一個(gè)或多或少完整的NVMe VIP測試用例示例結(jié)束了我的上一篇博客文章,試圖展示從基本設(shè)置到執(zhí)行NVM寫入然后讀取的所有內(nèi)容。我們將在這里稍微改變一下,從 NVMe 命令轉(zhuǎn)移到一些可用于協(xié)助您測試的 VIP 功能。
在這里,您可以了解有關(guān)適用于 NVMe 和 PCIe 的 Synopsys VC 驗(yàn)證 IP 的更多信息。
為了讓您保持新鮮感,我們將繼續(xù)參考此圖:
如前所述,NVMe VIP 提供了一組豐富的功能來幫助測試。
后臺流量
您將在上圖中注意到位于 PCIE 端口模型(請求者、目標(biāo)/cmpltr 和驅(qū)動程序)之上的幾個(gè)應(yīng)用程序。這些是可用于源(和接收)PCIe 流量(不是專門進(jìn)出 NVMe)的 PCIe 應(yīng)用程序。特別:
驅(qū)動程序應(yīng)用程序 – 如果您想生成各種類型的TLP(例如CfgWr,IORd,MemWr),此應(yīng)用程序就是您的工具。TLP 的各個(gè)字段是可配置的,并且會檢查收到的完成(例如來自 MemRd 請求)的有效性和正確的數(shù)據(jù)。您還可以根據(jù)需要使用此工具配置或監(jiān)控 DUT。
目標(biāo)/完成者應(yīng)用程序 – 如果遠(yuǎn)程端點(diǎn)(例如控制器 DUT)將(非 NVMe)流量發(fā)送到此主機(jī) VIP,Target 應(yīng)用程序?qū)?zhí)行該請求,將其轉(zhuǎn)過來并生成一個(gè)或多個(gè)(根據(jù)需要和/或配置)完成操作返回到端點(diǎn)。提供定時(shí)和數(shù)據(jù)包大小控制,以及用于詳細(xì) TLP 修改的多個(gè)回調(diào)。
請求者申請 – 此應(yīng)用程序會向目標(biāo)生成恒定的 TLP 負(fù)載。它可用于創(chuàng)建后臺流量,或在目標(biāo)上造成負(fù)載。流量速率、大小和類型都是可配置的。
錯(cuò)誤注入
VIP 的一個(gè)重要且有用的功能是內(nèi)置錯(cuò)誤注入。NVMe VIP 提供了一種簡單但非常強(qiáng)大的機(jī)制來導(dǎo)致錯(cuò)誤注入,而不必使用回調(diào)和定向測試來導(dǎo)致錯(cuò)誤。對于每個(gè)“腳本...”用戶可用的任務(wù)(有關(guān)詳細(xì)信息,請參閱以前的帖子),有一個(gè)“錯(cuò)誤注入”參數(shù)??梢允褂酶鞣N參數(shù)填充此參數(shù),以導(dǎo)致該 NVMe 命令發(fā)生特定的錯(cuò)誤注入。對命令有效的特定錯(cuò)誤注入由潛在錯(cuò)誤條件控制(根據(jù) NVMe 規(guī)范)。
例如,檢查“創(chuàng)建 I/O 提交隊(duì)列”命令的規(guī)范會向我們顯示該命令可能導(dǎo)致的幾個(gè)錯(cuò)誤,例如“完成隊(duì)列無效”、“隊(duì)列標(biāo)識符無效”和“超出最大隊(duì)列大小”。您只需要提供類似的錯(cuò)誤注入代碼,然后會發(fā)生以下幾件事,而不是創(chuàng)建定向測試來導(dǎo)致這些情況:
VIP 將查找要生成的導(dǎo)致錯(cuò)誤的相應(yīng)值。
這些值將被放置在適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)中(例如提交隊(duì)列條目)。
收到錯(cuò)誤后,我們會自動禁止顯示可能以其他方式引起的任何警告(畢竟這是一個(gè)錯(cuò)誤)。
如果預(yù)期的錯(cuò)誤沒有到達(dá),它將被標(biāo)記。
然后,系統(tǒng)已準(zhǔn)備好(如果需要)在沒有錯(cuò)誤注入的情況下重新運(yùn)行命令。
用戶無需進(jìn)一步工作來測試錯(cuò)誤 – 無需設(shè)置回調(diào),無需抑制錯(cuò)誤。一切都處理得干凈透明。
除了 NVMe 層的注入錯(cuò)誤之外,您還可以提供協(xié)議錯(cuò)誤注入。例如,要在 PCIe DL 層導(dǎo)致 LCRC 錯(cuò)誤,使用相同的過程:只需為該 LCRC 添加錯(cuò)誤注入?yún)?shù),它就會發(fā)生,檢查、重試并重新檢查事務(wù)。所有這些都是在沒有任何用戶幫助的情況下發(fā)生的。
隊(duì)列圍欄
在主機(jī)內(nèi)存中創(chuàng)建隊(duì)列時(shí),控制器可能會生成錯(cuò)誤的內(nèi)存請求,并可能非法訪問隊(duì)列。這些訪問由主機(jī)的隊(duì)列屏蔽機(jī)制捕獲和標(biāo)記。主機(jī)了解哪些操作(即讀取或?qū)懭耄┮约澳男┑刂穼刂破髟L問有效,并將警惕地監(jiān)視控制器的訪問,以確保它不會嘗試(例如)從完成隊(duì)列讀取或?qū)懭胩峤魂?duì)列。隊(duì)列和隊(duì)列條目邊界的有效性同樣檢查。
卷影磁盤
主機(jī) VIP 內(nèi)置的是一個(gè)卷影磁盤,用于跟蹤和記錄對各種控制器命名空間的塊數(shù)據(jù)寫入。一旦發(fā)生有效的寫入,它就會提交到影子,以后的讀取訪問將與影子數(shù)據(jù)進(jìn)行比較。盡管VIP用戶肯定擁有可用的實(shí)際讀/寫數(shù)據(jù),但他們無需進(jìn)行數(shù)據(jù)比較/檢查 - NVMe主機(jī)VIP會以靜默和自動的方式處理此問題。
控制器配置跟蹤
與卷影磁盤類似,主機(jī)還跟蹤連接到系統(tǒng)的控制器的配置。這有幾部分:
寄存器跟蹤 – 當(dāng)控制器 NVMe 寄存器被寫入時(shí),主機(jī)會“窺探”此寫入,并將其存儲在本地“寄存器影子”中。VIP 的進(jìn)一步操作可以參考此內(nèi)容,以確保操作對于控制器的當(dāng)前狀態(tài)有效和/或合理。
識別跟蹤 – 正如我們在示例中(在最近幾集中)中看到的那樣,NVMe 協(xié)議讓我們同時(shí)執(zhí)行“識別控制器”和“識別命名空間”命令來收集控制器信息。這些信息的相關(guān)部分也會保存以供VIP使用。
特征跟蹤 – “設(shè)置功能”命令用于配置控制器的各種元素——我們監(jiān)視并收集“設(shè)置”和“獲取功能”命令信息(根據(jù)需要),以完成主機(jī)VIP對控制器當(dāng)前配置和狀態(tài)的理解。
審核編輯:郭婷
-
控制器
+關(guān)注
關(guān)注
114文章
17499瀏覽量
188487 -
寄存器
+關(guān)注
關(guān)注
31文章
5495瀏覽量
127792 -
nvme
+關(guān)注
關(guān)注
0文章
283瀏覽量
23558
發(fā)布評論請先 登錄
NVMe高速傳輸之?dāng)[脫XDMA設(shè)計(jì)18:UVM驗(yàn)證平臺
NVMe高速傳輸之?dāng)[脫XDMA設(shè)計(jì)23:UVM驗(yàn)證平臺
NVMe高速傳輸之?dāng)[脫XDMA設(shè)計(jì)24: UVM 驗(yàn)證包設(shè)計(jì)
NVMe高速傳輸之?dāng)[脫XDMA設(shè)計(jì)33:初始化功能驗(yàn)證與分析
NVMe高速傳輸之?dāng)[脫XDMA設(shè)計(jì)34:初始化功能驗(yàn)證與分析2
NVMe高速傳輸之?dāng)[脫XDMA設(shè)計(jì)37:隊(duì)列管理功能驗(yàn)證與分析1
如何使用Xilinx AXI VIP對自己的設(shè)計(jì)搭建仿真驗(yàn)證環(huán)境的方法
Cadence推出15種新驗(yàn)證 IP(VIP)解決方案
Cadence推出新一代CXL VIP和系統(tǒng)VIP工具
使用AXI VIP的幾個(gè)關(guān)鍵步驟及常見功能
覆蓋模型 – 填補(bǔ)內(nèi)存VIP的漏洞

NVMe VIP架構(gòu):主機(jī)功能

新思科技NVMe VIP:高層次視圖

新思科技PCIe 7.0驗(yàn)證IP(VIP)的特性

NVMe高速傳輸之?dāng)[脫XDMA設(shè)計(jì)23:UVM驗(yàn)證平臺

評論