文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.179008
中文引用格式: 柏穎,馬玲芝,郭嘉,等. 基于硬件仿真加速平臺的PCIE系統級調測試方法[J].電子技術應用,2017,43(8):28-31.
英文引用格式: Bai Ying,Ma Lingzhi,Guo Jia,et al. The system level debug method of pcie based on emulator platform[J].App-
lication of Electronic Technique,2017,43(8):28-31.
0 引言
PCIE驗證較為復雜,首先,不同的功能點需要在不同的驗證層次中完成[1]。其次,PCIE所參與的DMA訪問對cache一致性的維護帶來新的挑戰等[2];對于DUT為PCIE RC設備的設計來說,PCIE可外接各種PCIE設備橋[3],其驅動程序需要在系統驗證環境中進行聯調。
即便基于硬件仿真平臺的PCIE系統級測試,也存在諸多調測試挑戰:首先,為盡可能仿真各種測試場景,可能需要掛接多種EP設備并進行相關測試,這既需聯調驅動程序,又涉及各種PCIE EP設備的典型應用測試,以及各PCIE應用程序測試與內核測試的各種組合以增強測試力度。這均需不停更換驅動程序或測試程序,可能需要重新引導操作系統,增加了測試壓力;其次,PCIE是動態IO協議,在PCIE訪問過程中不能隨意暫停,這將極大削弱硬件仿真平臺的調試能力。
1 測試環境及流程
基于硬件仿真加速平臺的PCIE系統級測試方法主要有兩種:傳統的DUT+速度匹配橋+真實PCIE設備測試模式與DUT+AVIP的模式,分別如圖1(a)、圖1(b)所示。
其中,對于DUT+速度匹配橋+真實PCIE設備測試模式, PCIE Phy由于不可綜合[4],需如圖1(a)中所示用Wrapper來替換PCS與Serdes接口相關部分。Wrapper向下通過母板橋接SATA、Ethernet等不同類型PCIE設備。在該測試模式中,PCIE core及其余DUT運行在仿真器上,SpeedBridge及母板、橋片、PCIE設備采用真實的設備,兩者間有緊密的時序握手,在測試中不可隨意暫停硬件仿真加速器,調試能力被極大削弱。
而在DUT+AVIP模式中,AVIP模擬了一個具有memory功能的PCIE EP設備,該AVIP與PCIE Core通過PIPE接口直接相連,無需PCS及Serdes接口。在該測試模式中,PCIE core及其DUT運行在仿真器上,AVIP運行在服務器端,中間采用TBA進行交互。PCIE Core及AVIP的時鐘均由硬件仿真加速器產生并控制,因此該模式中大部分時間均可暫停或恢復測試。
上述兩種測試模式各有優缺點,也各有適用的測試場景。根據本部門多款自主CPU驗證的經驗,真實PCIE設備測試模式所占據的測試周期長,調試難度大。因此,本文就該模式下如何改善其調、測試效率,簡單進行總結分析。
2 優化測試流程
如上所述,在PCIE系統級測試中,常需更換PCIE設備驅動程序或測試程序。
最先采用圖 2(a)所示測試流程,將驅動程序及測試程序(后文統稱程序)集成在OS鏡像文件中,并一同置于flash。在該方法中,一旦程序不正確,則需要替換新的OS鏡像,然后重新引導uboot、OS等。一方面重新引導OS將浪費時間;另一方面,需在仿真器操作界面與測試程序命令行中多次切換,很難實現測試自動化。因此,在測試流程上進行優化。
2.1 “抽屜式”Ramdisk管理
為避免因為更換驅動程序或應用測試程序而頻繁引導OS,結合硬件仿真加速器具有直接操作memory空間的能力,采用了“抽屜式”Ramdisk調測試技術。通過為系統Ramdisk設備預留一塊連續的專用物理內存,并以此構建Ramdisk設備,在需要更換Ramdisk內容時通過硬件模擬器把新的Ramdisk映像寫入預留的物理內存中,然后在操作系統中重新掛載該Ramdisk文件系統,實現了Ramdisk設備的熱插拔。整個操作類似于把抽屜拉開放入物品再合上的過程,因此稱之為“抽屜式”Ramdisk調測試技術,如圖3所示。
主要技術點如下:
(1)預留連續的物理內存
“抽屜式”Ramdisk調測試技術由于要通過硬件模擬器直接在內存中寫入新的Ramdisk映像,因此,要求具有連續的物理內存空間。
(2)構建Ramdisk設備
傳統Ramdisk技術中,Ramdisk設備所使用的物理內存是按需動態分配的,只有當確實需要訪問一個扇區的時候才會為之分配內存并把該扇區從外設讀入到分配的物理內存中,所有內存頁面通過一個Radix Tree組織在一起。抽屜式Ramdisk技術基于連續的物理內存來實現,在預留連續物理內存以后,會基于該內存區域建立Ramdisk設備,并把Ramdisk設備與該內存區域綁定在一起,不使用預留內存區域以外的其它物理內存。
采用抽屜式Ramdisk調測試方法后,測試流程如圖2(b)所示,與采用抽屜式Ramdisk技術之前的圖2(a)所示流程相比,在OS引導成功后多了一個Ramdisk掛載操作。當需要替換新的驅動程序或應用測試程序時,重新引導uboot、恢復到“健康”斷點、PCIE熱復位,然后掛接新的Ramdisk,即可完成程序替換功能。其余操作流程與采用抽屜式Ramdisk之前類似。
采用抽屜式Ramdisk調測試方法,將取得三方面的好處:首先,在將鏡像文件從Flash拷貝至內存時,由于驅動程序及應用測試程序不再集成在OS鏡像文件中,可節省OS引導時間;其次,可避免頻繁引導OS;再次,可提高整個測試的自動化水平。
2.2 “on line”式程序管理
抽屜式Ramdisk調測試方法雖然能獲得上述收益,但也存在一定的開銷:一方面,恢復斷點及引導uboot、PCIE熱復位需要花費一定的時間。另一方面,恢復到一個相對干凈的斷點,不利于DUT狀態的累積,無形中降低了某些復雜情形的測試力度。因此,本部門對測試流程進行了另一種優化,采用了圖4所示的“on line”式的驅動/測試程序管理。當需要更新程序時,如圖 4中虛線箭頭所示,通過Ethernet將新程序傳送至OS所約定位置,也可對錯誤程序修改,然后啟動新的測試。
與抽屜式Ramdisk調測試方法相比,本方法進一步對測試流程進行了優化:首先,一旦驅動加載或程序測試過程中報錯且初步診斷為程序錯,無需重新引導uboot、恢復斷點、PCIE部件熱復位,更無需重新引導OS,而僅需通過Ethernet或NIO往內存中修改、更換或新增測試程序即可,可最大程度節省時間;其次,該流程中無需暫停時鐘或“恢復”斷點,DUT的狀態連續,可實現狀態的累積,更能優化一些深層的設計缺陷。
3 Sdl-to-wave:利用SDL提高調試能力
AVIP測試模式雖有其優勢,但尚難以完全替代真實PCIE設備測試模式,因此,如何提高PCIE設備測試模式的調試能力依然重要。
在調試方面,Palladium硬件仿真加速器提供了強大調試能力,如超長的波形窗口、InfiniTrace模式、強大的SDL功能、靈活的探針模式,Palladium Z1對SDL進行了進一步的加強。但需求無止境,業內常見利用TBA等驗證技術提高硬件仿真平臺調試能力的嘗試。如AMD公司將PC值緩存后通過TBA輸出,處理后將PC反標至反匯編程序,以實現測試激勵與仿真狀態的“準同步”滾動。該方法不僅需設計緩存、TBA實現,還需謹慎處理緩存的空滿等問題。其實,在Palladium中,軟件層面上設置了專門的Display buffer供SDL使用,軟件已對其空滿狀態進行了控制,且大小可調節。本文通過有效利用該display buffer來捕捉關鍵信息以輔助debug,其基本流程如圖5所示。
SDL對所需數據進行捕捉,然后將捕捉到的數據寫入Display buffer。在SDL對Display buffer進行寫的同時,UXE/VXE會將buffer中的數據驅動進fiber,然后取道server上的PCIE、NOC、DDR,最后進入內存,經過后處理程序將數據轉換為波形。
該流程中有如下幾個實現細節需要說明:
(1)SDL將捕捉到的數據“寫入”的動作用display而不能用EXEC調用put命令來實現。首先,后者并不對數據進行緩存,因此每次打印都需暫停仿真器時鐘,這不僅嚴重降低仿真速度,且影響PCIE通路功能正確性;其次,當運行在Logic Analyser、Dynamic Target Mode或帶有不可控時鐘的IXCOM流程時,由于時鐘是不能被暫停的,如果用EXEC來打印,將造成數據的丟失,而采用display來實現,將極大降低此概率;最后就是時間的精確性,display命令捕捉的是trigger條件觸發時刻的數據,而EXCE所捕捉的數據有一定的延時,且在不同模式下,延時的大小并不一致,具體可參考Palladium的相關技術手冊。
(2)運行在LA模式而不是STB模式。當display數據滿時,在LA模式與STB模式下的處理方式并不相同。在前者中,將停止數據捕捉,同時,可報Warning或Error。而在后者中,將丟掉待寫入的數據直至有新的buffer空間,但并不停止數據的捕捉,也不報Warning或Error。當運行在STB模式時,出現數據丟失時用戶無法感知,干擾后續debug。
對于真實PCIE設備測試模式,利用SDL來捕捉關鍵信號的數據并還原成波形,其調試效果的關鍵是連續波形的長度,而決定連續波形長度的核心是對display buffer的讀寫速度。
從上述數據“產生”、“消費”的流程不難發現,一旦仿真加速平臺的硬件條件,尤其是服務器一一確定,對Display buffer的讀取速度就已經基本確定(受網絡繁忙情況的影響除外),決定能導出的連續波形長度L_wave的主要因素是SDL產生數據的速度以及Display buffer本身的大小。因此,在實際應用中,有效的優化手段主要有如下幾個方面:
(1)盡可能精簡所捕捉的信號數量。當然,過于精簡信號數量,可能會降低調試效率,這需要做合理權衡。
(2)增大Display buffer的深度。
(3)適當降低被捕獲信號所在時鐘域的時鐘頻率。當然,采用該策略的前提是DUT中的各時鐘域的頻率比能隨意改動。對于那些有嚴格頻率比關系的部件(如DDR控制器與DDR phy),則需一起降頻、升頻。
為驗證該方法的效果,在某真實自主多核處理器中進行了驗證。SDL在clk_sample上升沿對PCIE設備DMA操作過程中PIPE接口上的數據進行采樣。
圖6(a)表示信號數量對L_wave的影響。當clk_sample為1 000 kHz(Fclk設定為2 000 kHz)時,Display buffer的寫入速度遠大于buffer的讀出速度,此時,信號數量對L_wave幾乎沒影響,L_wave主要由bufer深度決定。當clk_sample為195 kHz時,Display buffer稍大于buffer的讀出速度,此時,信號數量對L_wave的影響較為明顯。需要說明的是,此實驗中是用clk_sample上升沿作為display的觸發條件,因此ACTIVE的display的批數與信號數量無關。而在真實應用中,display的觸發條件是信號發生變化,屆時,信號數量不僅影響buffer的讀出速度,更影響ACTIVE的display的批數。因此,在實際應用中,所需捕捉的信號應盡量精簡。
圖6(b)表示buffer深度對L_wave的影響。將buffer深度設為Palladium最大所支持的16 M。由于clk_sample=1 000 kHz時buffer的寫入速度遠大于讀出速度,因此此時L_wave幾乎隨buffer深度線型增長。然而,隨著buffer的寫入速度逐漸與讀出速度相近甚至小于讀出速度,該增長趨勢將逐漸趨緩直至無窮大。
圖6(c)表示clk_sample頻率對L_wave的影響。當clk_sample較大時,buffer寫入熟讀遠大于讀出速度,此時clk_sample頻率對L_wave的影響較小甚至可以忽略。當采用時鐘sample_clk降到一定時,L_wave隨clk_sample的減小而增加,直至無限(如圖中175 kHz所示情形)。
由上述分析可知,實際應用中是否降頻、設置多大的buffer深度,完全取決于buffer的寫入速度與讀出速度的相對關系,由于讀出速度主要由硬件環境決定,因此在實際應用中主要由display的ACTIVE情況及每批display的數據量決定,這兩方面均為SDL所捕捉的信號數量及其行為來決定。因此,對于不同的信號捕捉情況,采用的策略也各不相同,所能獲得的最大連續波形長度也不盡相同。該方法主要用于查看指令執行trace、PCIE控制器的LTSSM狀態機、PCIE鏈路訓練過程時的信用情況等“稀疏”信號或僅有限區域內頻繁變化的信號、錯誤處理、中斷處理等。
4 總結
本文分別對帶真實PCIE設備的系統級驗證流程及調試進行了優化。驗證流程方面,一方面采用“抽屜式”內存管理機制,通過ramdisk直接更換驅動程序及benchmark,避免重復引導OS;另一方面,通過Ethernet通路實現程序更換,進一步節省狀態恢復、PCIE熱復位時間。調試能力優化方面,利用Display buffer,SDL捕捉關鍵信號并導出處理后還原成波形,并通過選定合適的捕捉信號、buffer深度、降頻操作,盡可能增大連續波形長度,改善調試能力。
參考文獻
[1] 陳欣民.基于UVM的PCIe協議的驗證[D].南京:南開大學電子信息與光學工程學院,2015.
[2] 王齊,等.PCI Express 體系結構導讀[M].北京:機械工業出版社,2010.
[3] Li Jun,Wang Wei.PCI Expression interface design and verification based on Spartan-6 FPGA[C].IEEE International Conference on Communication Technology,2010:305-307.
[4] Liao Chunlin.Terence Rodrigues,Bhyrav Mutnury.Challenges of high-speed channel design on GPU accelerated system[C].IEEE 24th Electrical Performance of Electronic Packaging and Sysytems,2015:221-224.
作者信息:
柏 穎1,馬玲芝1,郭 嘉1,陳少輝2
(1.天津飛騰信息技術有限公司,天津102209;2.Cadence,廣東 深圳518040)