文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.179008
中文引用格式: 柏穎,馬玲芝,,郭嘉,,等. 基于硬件仿真加速平臺的PCIE系統(tǒng)級調測試方法[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一致性的維護帶來新的挑戰(zhàn)等[2];對于DUT為PCIE RC設備的設計來說,,PCIE可外接各種PCIE設備橋[3],,其驅動程序需要在系統(tǒng)驗證環(huán)境中進行聯(lián)調。
即便基于硬件仿真平臺的PCIE系統(tǒng)級測試,也存在諸多調測試挑戰(zhàn):首先,,為盡可能仿真各種測試場景,,可能需要掛接多種EP設備并進行相關測試,這既需聯(lián)調驅動程序,,又涉及各種PCIE EP設備的典型應用測試,,以及各PCIE應用程序測試與內(nèi)核測試的各種組合以增強測試力度。這均需不停更換驅動程序或測試程序,,可能需要重新引導操作系統(tǒng),,增加了測試壓力;其次,,PCIE是動態(tài)IO協(xié)議,,在PCIE訪問過程中不能隨意暫停,這將極大削弱硬件仿真平臺的調試能力,。
1 測試環(huán)境及流程
基于硬件仿真加速平臺的PCIE系統(tǒng)級測試方法主要有兩種:傳統(tǒng)的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的時鐘均由硬件仿真加速器產(chǎn)生并控制,因此該模式中大部分時間均可暫停或恢復測試,。
上述兩種測試模式各有優(yōu)缺點,,也各有適用的測試場景,。根據(jù)本部門多款自主CPU驗證的經(jīng)驗,,真實PCIE設備測試模式所占據(jù)的測試周期長,調試難度大,。因此,,本文就該模式下如何改善其調、測試效率,,簡單進行總結分析,。
2 優(yōu)化測試流程
如上所述,在PCIE系統(tǒng)級測試中,,常需更換PCIE設備驅動程序或測試程序,。
最先采用圖 2(a)所示測試流程,將驅動程序及測試程序(后文統(tǒng)稱程序)集成在OS鏡像文件中,,并一同置于flash,。在該方法中,一旦程序不正確,,則需要替換新的OS鏡像,,然后重新引導uboot、OS等,。一方面重新引導OS將浪費時間,;另一方面,需在仿真器操作界面與測試程序命令行中多次切換,,很難實現(xiàn)測試自動化,。因此,在測試流程上進行優(yōu)化,。
2.1 “抽屜式”Ramdisk管理
為避免因為更換驅動程序或應用測試程序而頻繁引導OS,,結合硬件仿真加速器具有直接操作memory空間的能力,采用了“抽屜式”Ramdisk調測試技術,。通過為系統(tǒng)Ramdisk設備預留一塊連續(xù)的專用物理內(nèi)存,,并以此構建Ramdisk設備,在需要更換Ramdisk內(nèi)容時通過硬件模擬器把新的Ramdisk映像寫入預留的物理內(nèi)存中,,然后在操作系統(tǒng)中重新掛載該Ramdisk文件系統(tǒng),,實現(xiàn)了Ramdisk設備的熱插拔。整個操作類似于把抽屜拉開放入物品再合上的過程,,因此稱之為“抽屜式”Ramdisk調測試技術,,如圖3所示。
主要技術點如下:
(1)預留連續(xù)的物理內(nèi)存
“抽屜式”Ramdisk調測試技術由于要通過硬件模擬器直接在內(nèi)存中寫入新的Ramdisk映像,因此,,要求具有連續(xù)的物理內(nèi)存空間,。
(2)構建Ramdisk設備
傳統(tǒng)Ramdisk技術中,Ramdisk設備所使用的物理內(nèi)存是按需動態(tài)分配的,,只有當確實需要訪問一個扇區(qū)的時候才會為之分配內(nèi)存并把該扇區(qū)從外設讀入到分配的物理內(nèi)存中,,所有內(nèi)存頁面通過一個Radix Tree組織在一起。抽屜式Ramdisk技術基于連續(xù)的物理內(nèi)存來實現(xiàn),,在預留連續(xù)物理內(nèi)存以后,,會基于該內(nèi)存區(qū)域建立Ramdisk設備,并把Ramdisk設備與該內(nèi)存區(qū)域綁定在一起,,不使用預留內(nèi)存區(qū)域以外的其它物理內(nèi)存,。
采用抽屜式Ramdisk調測試方法后,測試流程如圖2(b)所示,,與采用抽屜式Ramdisk技術之前的圖2(a)所示流程相比,,在OS引導成功后多了一個Ramdisk掛載操作。當需要替換新的驅動程序或應用測試程序時,,重新引導uboot,、恢復到“健康”斷點、PCIE熱復位,,然后掛接新的Ramdisk,,即可完成程序替換功能。其余操作流程與采用抽屜式Ramdisk之前類似,。
采用抽屜式Ramdisk調測試方法,,將取得三方面的好處:首先,在將鏡像文件從Flash拷貝至內(nèi)存時,,由于驅動程序及應用測試程序不再集成在OS鏡像文件中,,可節(jié)省OS引導時間;其次,,可避免頻繁引導OS,;再次,可提高整個測試的自動化水平,。
2.2 “on line”式程序管理
抽屜式Ramdisk調測試方法雖然能獲得上述收益,,但也存在一定的開銷:一方面,恢復斷點及引導uboot,、PCIE熱復位需要花費一定的時間,。另一方面,恢復到一個相對干凈的斷點,,不利于DUT狀態(tài)的累積,,無形中降低了某些復雜情形的測試力度,。因此,本部門對測試流程進行了另一種優(yōu)化,,采用了圖4所示的“on line”式的驅動/測試程序管理,。當需要更新程序時,如圖 4中虛線箭頭所示,,通過Ethernet將新程序傳送至OS所約定位置,,也可對錯誤程序修改,然后啟動新的測試,。
與抽屜式Ramdisk調測試方法相比,,本方法進一步對測試流程進行了優(yōu)化:首先,,一旦驅動加載或程序測試過程中報錯且初步診斷為程序錯,,無需重新引導uboot、恢復斷點,、PCIE部件熱復位,,更無需重新引導OS,而僅需通過Ethernet或NIO往內(nèi)存中修改,、更換或新增測試程序即可,,可最大程度節(jié)省時間;其次,,該流程中無需暫停時鐘或“恢復”斷點,,DUT的狀態(tài)連續(xù),可實現(xiàn)狀態(tài)的累積,,更能優(yōu)化一些深層的設計缺陷,。
3 Sdl-to-wave:利用SDL提高調試能力
AVIP測試模式雖有其優(yōu)勢,但尚難以完全替代真實PCIE設備測試模式,,因此,,如何提高PCIE設備測試模式的調試能力依然重要。
在調試方面,,Palladium硬件仿真加速器提供了強大調試能力,,如超長的波形窗口、InfiniTrace模式,、強大的SDL功能,、靈活的探針模式,Palladium Z1對SDL進行了進一步的加強,。但需求無止境,,業(yè)內(nèi)常見利用TBA等驗證技術提高硬件仿真平臺調試能力的嘗試。如AMD公司將PC值緩存后通過TBA輸出,,處理后將PC反標至反匯編程序,,以實現(xiàn)測試激勵與仿真狀態(tài)的“準同步”滾動,。該方法不僅需設計緩存、TBA實現(xiàn),,還需謹慎處理緩存的空滿等問題,。其實,在Palladium中,,軟件層面上設置了專門的Display buffer供SDL使用,,軟件已對其空滿狀態(tài)進行了控制,且大小可調節(jié),。本文通過有效利用該display buffer來捕捉關鍵信息以輔助debug,,其基本流程如圖5所示。
SDL對所需數(shù)據(jù)進行捕捉,,然后將捕捉到的數(shù)據(jù)寫入Display buffer,。在SDL對Display buffer進行寫的同時,UXE/VXE會將buffer中的數(shù)據(jù)驅動進fiber,,然后取道server上的PCIE,、NOC、DDR,,最后進入內(nèi)存,,經(jīng)過后處理程序將數(shù)據(jù)轉換為波形。
該流程中有如下幾個實現(xiàn)細節(jié)需要說明:
(1)SDL將捕捉到的數(shù)據(jù)“寫入”的動作用display而不能用EXEC調用put命令來實現(xiàn),。首先,,后者并不對數(shù)據(jù)進行緩存,因此每次打印都需暫停仿真器時鐘,,這不僅嚴重降低仿真速度,,且影響PCIE通路功能正確性;其次,,當運行在Logic Analyser,、Dynamic Target Mode或帶有不可控時鐘的IXCOM流程時,由于時鐘是不能被暫停的,,如果用EXEC來打印,,將造成數(shù)據(jù)的丟失,而采用display來實現(xiàn),,將極大降低此概率,;最后就是時間的精確性,display命令捕捉的是trigger條件觸發(fā)時刻的數(shù)據(jù),,而EXCE所捕捉的數(shù)據(jù)有一定的延時,,且在不同模式下,延時的大小并不一致,,具體可參考Palladium的相關技術手冊,。
(2)運行在LA模式而不是STB模式,。當display數(shù)據(jù)滿時,在LA模式與STB模式下的處理方式并不相同,。在前者中,,將停止數(shù)據(jù)捕捉,同時,,可報Warning或Error,。而在后者中,將丟掉待寫入的數(shù)據(jù)直至有新的buffer空間,,但并不停止數(shù)據(jù)的捕捉,,也不報Warning或Error。當運行在STB模式時,,出現(xiàn)數(shù)據(jù)丟失時用戶無法感知,,干擾后續(xù)debug。
對于真實PCIE設備測試模式,,利用SDL來捕捉關鍵信號的數(shù)據(jù)并還原成波形,,其調試效果的關鍵是連續(xù)波形的長度,,而決定連續(xù)波形長度的核心是對display buffer的讀寫速度,。
從上述數(shù)據(jù)“產(chǎn)生”、“消費”的流程不難發(fā)現(xiàn),,一旦仿真加速平臺的硬件條件,,尤其是服務器一一確定,對Display buffer的讀取速度就已經(jīng)基本確定(受網(wǎng)絡繁忙情況的影響除外),,決定能導出的連續(xù)波形長度L_wave的主要因素是SDL產(chǎn)生數(shù)據(jù)的速度以及Display buffer本身的大小,。因此,在實際應用中,,有效的優(yōu)化手段主要有如下幾個方面:
(1)盡可能精簡所捕捉的信號數(shù)量,。當然,過于精簡信號數(shù)量,,可能會降低調試效率,,這需要做合理權衡。
(2)增大Display buffer的深度,。
(3)適當降低被捕獲信號所在時鐘域的時鐘頻率,。當然,采用該策略的前提是DUT中的各時鐘域的頻率比能隨意改動,。對于那些有嚴格頻率比關系的部件(如DDR控制器與DDR phy),,則需一起降頻、升頻,。
為驗證該方法的效果,,在某真實自主多核處理器中進行了驗證,。SDL在clk_sample上升沿對PCIE設備DMA操作過程中PIPE接口上的數(shù)據(jù)進行采樣。
圖6(a)表示信號數(shù)量對L_wave的影響,。當clk_sample為1 000 kHz(Fclk設定為2 000 kHz)時,,Display buffer的寫入速度遠大于buffer的讀出速度,此時,,信號數(shù)量對L_wave幾乎沒影響,,L_wave主要由bufer深度決定。當clk_sample為195 kHz時,,Display buffer稍大于buffer的讀出速度,,此時,信號數(shù)量對L_wave的影響較為明顯,。需要說明的是,,此實驗中是用clk_sample上升沿作為display的觸發(fā)條件,因此ACTIVE的display的批數(shù)與信號數(shù)量無關,。而在真實應用中,,display的觸發(fā)條件是信號發(fā)生變化,屆時,,信號數(shù)量不僅影響buffer的讀出速度,,更影響ACTIVE的display的批數(shù)。因此,,在實際應用中,,所需捕捉的信號應盡量精簡。
圖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的寫入速度與讀出速度的相對關系,,由于讀出速度主要由硬件環(huán)境決定,因此在實際應用中主要由display的ACTIVE情況及每批display的數(shù)據(jù)量決定,,這兩方面均為SDL所捕捉的信號數(shù)量及其行為來決定,。因此,對于不同的信號捕捉情況,,采用的策略也各不相同,,所能獲得的最大連續(xù)波形長度也不盡相同。該方法主要用于查看指令執(zhí)行trace,、PCIE控制器的LTSSM狀態(tài)機,、PCIE鏈路訓練過程時的信用情況等“稀疏”信號或僅有限區(qū)域內(nèi)頻繁變化的信號、錯誤處理,、中斷處理等,。
4 總結
本文分別對帶真實PCIE設備的系統(tǒng)級驗證流程及調試進行了優(yōu)化。驗證流程方面,,一方面采用“抽屜式”內(nèi)存管理機制,,通過ramdisk直接更換驅動程序及benchmark,避免重復引導OS,;另一方面,,通過Ethernet通路實現(xiàn)程序更換,進一步節(jié)省狀態(tài)恢復,、PCIE熱復位時間,。調試能力優(yōu)化方面,利用Display buffer,,SDL捕捉關鍵信號并導出處理后還原成波形,并通過選定合適的捕捉信號,、buffer深度,、降頻操作,盡可能增大連續(xù)波形長度,,改善調試能力,。
參考文獻
[1] 陳欣民.基于UVM的PCIe協(xié)議的驗證[D].南京:南開大學電子信息與光學工程學院,2015.
[2] 王齊,,等.PCI Express 體系結構導讀[M].北京:機械工業(yè)出版社,,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)