1、PCIe debug環境說明
本文將以PCIe EP用戶邏輯舉例,描述PCIe可以添加哪些定位手段。
如圖所示,PCIe IP作為endpoint與RC對接,用戶實現了應用邏輯,與PCIe IP進行交互,交互信號中data格式為TLP報文格式,且交互信號包含相應的控制信號,例如PCIe配置空間和IP相干的配置信號。
常見的Debug設計可以通常有:中斷、鎖存狀態、統計計數和實時狀態。
添加Debug設計的目的通常是定位功能故障和性能故障。
功能故障通常有鏈路不通,出現錯包,PCIe部分 function無法訪問等等。
性能故障通常速率協商未到最高速率、傳輸速率不及預期等等。
添加debug手段可以在芯片調試時有效提高定位效率,快速發現并解決問題。
2.用戶需要添加的debug手段
2.1.最常見的統計計數
常見的統計技術有,發起的請求數量和收到的請求響應數量、正確的數量和錯誤的數量、單個function的統計以及所有function的統計。
已發起的dma read請求、已返回的dma read 響應。
已發起的dma write請求、已返回的dma write 響應。
已收到的memory space 訪問以及返回的memory space 響應。
2.2.ltssm 狀態機
記錄ltssm 協商過程,鎖存ltssm最近的若干次數值,便于分析ltssm協商過程。
ltssm 實時狀態可讀 統計ltssm進入L0狀態的次數和退出L0狀態的次數
2.3.PCIe 關鍵使能信號
PCIe IP關鍵信號包含vf/pf_bus_master_en、vf/pf_function_level_reset、hot reset、金手指復位perst,如下表格才采用英文簡寫描述。
如上的關鍵信號只有0和1兩種狀態,都需要記錄實時狀態、統計0-->1跳變次數、統計1-->0跳變次數
采用ram或者寄存器鎖存收到的cpl/cpld報文頭信息,可以根據需要選擇鎖存的字段,如下所示,強烈推薦鎖存Completion Status 、EP、Completer ID、Requester ID等信息方便問題定位。
2.5.異常請求debug
發現異常請求時記錄異常信息。 場景1:無效function的請求,例如當前PCIe只有128個VF,即VF0~VF127,結果收到了VF128的請求。此時需要鎖存請求類型、VF number以及產生錯誤中斷,方便問題定位。
2.6.記錄cpld時延信息
為了便于計算性能,EP發起的memory 讀請求(俗稱dma read),需要統計時延,即從發起dma read請求開始到收到最后一個CPLD/CPL時消耗的時間,并且期望debug設計能夠記錄不同時延段位的dma read請求數量。debug設計可配置延時上限,一旦超時延時上限,則鎖存dma read請求信息,方便調試者定位。
2.7.統計流控信號
當應用邏輯寫數據速率過大或者RC端數據處理能力較弱時,RC反饋給EP的credit更新跟不上應用邏輯寫數據的速率,會導致EP對應用邏輯產生反壓,即credit_fc置1。此時將影響應用邏輯dma write的速率,通過觀察credit_fc的統計計數可以初步判斷影響性能的因素。
3.結束語
出現問題的原因可能是代碼bug,可能是配置的寄存器數值錯誤,也可能是配置順序流程不正確,添加debug設計就是為了能夠高效定位問題。本文僅僅簡單描述了部分需要添加的debug手段,歡迎大家留言補充。
審核編輯:劉清
-
寄存器
+關注
關注
30文章
5141瀏覽量
118055 -
鎖存器
+關注
關注
8文章
847瀏覽量
41105 -
PCIe
+關注
關注
13文章
1101瀏覽量
81154 -
TLP
+關注
關注
0文章
30瀏覽量
15531 -
CPLD芯片
+關注
關注
0文章
18瀏覽量
11584
原文標題:PCIE定位:PCIe需要的debug設計
文章出處:【微信號:IP與SoC設計,微信公眾號:IP與SoC設計】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論