我用一個或多或少完整的NVMe VIP測試用例示例結束了我的上一篇博客文章,試圖展示從基本設置到執行NVM寫入然后讀取的所有內容。我們將在這里稍微改變一下,從 NVMe 命令轉移到一些可用于協助您測試的 VIP 功能。
在這里,您可以了解有關適用于 NVMe 和 PCIe 的 Synopsys VC 驗證 IP 的更多信息。
為了讓您保持新鮮感,我們將繼續參考此圖:
如前所述,NVMe VIP 提供了一組豐富的功能來幫助測試。
后臺流量
您將在上圖中注意到位于 PCIE 端口模型(請求者、目標/cmpltr 和驅動程序)之上的幾個應用程序。這些是可用于源(和接收)PCIe 流量(不是專門進出 NVMe)的 PCIe 應用程序。特別:
驅動程序應用程序 – 如果您想生成各種類型的TLP(例如CfgWr,IORd,MemWr),此應用程序就是您的工具。TLP 的各個字段是可配置的,并且會檢查收到的完成(例如來自 MemRd 請求)的有效性和正確的數據。您還可以根據需要使用此工具配置或監控 DUT。
目標/完成者應用程序 – 如果遠程端點(例如控制器 DUT)將(非 NVMe)流量發送到此主機 VIP,Target 應用程序將執行該請求,將其轉過來并生成一個或多個(根據需要和/或配置)完成操作返回到端點。提供定時和數據包大小控制,以及用于詳細 TLP 修改的多個回調。
請求者申請 – 此應用程序會向目標生成恒定的 TLP 負載。它可用于創建后臺流量,或在目標上造成負載。流量速率、大小和類型都是可配置的。
錯誤注入
VIP 的一個重要且有用的功能是內置錯誤注入。NVMe VIP 提供了一種簡單但非常強大的機制來導致錯誤注入,而不必使用回調和定向測試來導致錯誤。對于每個“腳本...”用戶可用的任務(有關詳細信息,請參閱以前的帖子),有一個“錯誤注入”參數。可以使用各種參數填充此參數,以導致該 NVMe 命令發生特定的錯誤注入。對命令有效的特定錯誤注入由潛在錯誤條件控制(根據 NVMe 規范)。
例如,檢查“創建 I/O 提交隊列”命令的規范會向我們顯示該命令可能導致的幾個錯誤,例如“完成隊列無效”、“隊列標識符無效”和“超出最大隊列大小”。您只需要提供類似的錯誤注入代碼,然后會發生以下幾件事,而不是創建定向測試來導致這些情況:
VIP 將查找要生成的導致錯誤的相應值。
這些值將被放置在適當的數據結構中(例如提交隊列條目)。
收到錯誤后,我們會自動禁止顯示可能以其他方式引起的任何警告(畢竟這是一個錯誤)。
如果預期的錯誤沒有到達,它將被標記。
然后,系統已準備好(如果需要)在沒有錯誤注入的情況下重新運行命令。
用戶無需進一步工作來測試錯誤 – 無需設置回調,無需抑制錯誤。一切都處理得干凈透明。
除了 NVMe 層的注入錯誤之外,您還可以提供協議錯誤注入。例如,要在 PCIe DL 層導致 LCRC 錯誤,使用相同的過程:只需為該 LCRC 添加錯誤注入參數,它就會發生,檢查、重試并重新檢查事務。所有這些都是在沒有任何用戶幫助的情況下發生的。
隊列圍欄
在主機內存中創建隊列時,控制器可能會生成錯誤的內存請求,并可能非法訪問隊列。這些訪問由主機的隊列屏蔽機制捕獲和標記。主機了解哪些操作(即讀取或寫入)以及哪些地址對控制器訪問有效,并將警惕地監視控制器的訪問,以確保它不會嘗試(例如)從完成隊列讀取或寫入提交隊列。隊列和隊列條目邊界的有效性同樣檢查。
卷影磁盤
主機 VIP 內置的是一個卷影磁盤,用于跟蹤和記錄對各種控制器命名空間的塊數據寫入。一旦發生有效的寫入,它就會提交到影子,以后的讀取訪問將與影子數據進行比較。盡管VIP用戶肯定擁有可用的實際讀/寫數據,但他們無需進行數據比較/檢查 - NVMe主機VIP會以靜默和自動的方式處理此問題。
控制器配置跟蹤
與卷影磁盤類似,主機還跟蹤連接到系統的控制器的配置。這有幾部分:
寄存器跟蹤 – 當控制器 NVMe 寄存器被寫入時,主機會“窺探”此寫入,并將其存儲在本地“寄存器影子”中。VIP 的進一步操作可以參考此內容,以確保操作對于控制器的當前狀態有效和/或合理。
識別跟蹤 – 正如我們在示例中(在最近幾集中)中看到的那樣,NVMe 協議讓我們同時執行“識別控制器”和“識別命名空間”命令來收集控制器信息。這些信息的相關部分也會保存以供VIP使用。
特征跟蹤 – “設置功能”命令用于配置控制器的各種元素——我們監視并收集“設置”和“獲取功能”命令信息(根據需要),以完成主機VIP對控制器當前配置和狀態的理解。
審核編輯:郭婷
-
控制器
+關注
關注
112文章
16446瀏覽量
179458 -
寄存器
+關注
關注
31文章
5363瀏覽量
121169 -
nvme
+關注
關注
0文章
222瀏覽量
22732
發布評論請先 登錄
相關推薦
Xilinx FPGA NVMe Host Controller IP,NVMe主機控制器
Xilinx FPGA高性能NVMe SSD主機控制器,NVMe Host Controller IP
高性能NVMe主機控制器,Xilinx FPGA NVMe Host Accelerator IP
Flashtec NVMe 3108 PCIe第四代NVMe固態硬盤控制器怎么樣?
如何使用Xilinx AXI VIP對自己的設計搭建仿真驗證環境的方法
Synopsys為Arm AMBA CXS的VIP提供EDA驗證解決方案
淺析Seagate demo世界首款原生NVMe HDD
![淺析Seagate demo世界首款原生<b class='flag-5'>NVMe</b> HDD](https://file.elecfans.com/web2/M00/21/01/poYBAGGgl5KAE35OAABDxa1noBo784.png)
Cadence推出15種新驗證 IP(VIP)解決方案
Cadence推出新一代CXL VIP和系統VIP工具
使用AXI VIP的幾個關鍵步驟及常見功能
覆蓋模型 – 填補內存VIP的漏洞
![覆蓋模型 – 填補內存<b class='flag-5'>VIP</b>的漏洞](https://file.elecfans.com/web2/M00/A8/14/pYYBAGRvGdyAHg1wAAK2hTBFor8640.png)
管理NVMe驗證復雜性
![管理<b class='flag-5'>NVMe</b><b class='flag-5'>驗證</b>復雜性](https://file.elecfans.com/web2/M00/A7/BC/poYBAGRwF3eABJ4LAAJfx6sJs68535.png)
NVMe VIP架構:主機功能
![<b class='flag-5'>NVMe</b> <b class='flag-5'>VIP</b>架構:主機<b class='flag-5'>功能</b>](https://file.elecfans.com/web2/M00/A8/57/pYYBAGRwc4aAYzD_AARikJWM8Eg768.png)
新思科技PCIe 7.0驗證IP(VIP)的特性
![新思科技PCIe 7.0<b class='flag-5'>驗證</b>IP(<b class='flag-5'>VIP</b>)的特性](https://file1.elecfans.com/web2/M00/FE/FB/wKgaomagYzaAVq8XAAA79qVoSv4799.png)
評論