《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于硬件仿真加速平臺的PCIE系統(tǒng)級調測試方法
基于硬件仿真加速平臺的PCIE系統(tǒng)級調測試方法
2017年電子技術應用第8期
柏 穎1,,馬玲芝1,郭 嘉1,,陳少輝2
1.天津飛騰信息技術有限公司,,天津102209,;2.Cadence,廣東 深圳518040
摘要: 在帶真實PCIE設備的系統(tǒng)級測試環(huán)境中,,由于驅動程序或應用測試程序的更換,,可能需要頻繁引導操作系統(tǒng),造成額外時間開銷,;同時,,由于真實外設的存在,系統(tǒng)調試能力急劇降低,,給調試帶來巨大挑戰(zhàn),。分別對帶真實PCIE設備的系統(tǒng)級驗證流程及調試進行了優(yōu)化。驗證流程方面,,一方面采用“抽屜式”內(nèi)存管理機制,,通過ramdisk直接更換驅動程序及benchmark,避免重復引導OS,;另一方面,,通過Ethernet通路實現(xiàn)程序更換,,進一步節(jié)省狀態(tài)恢復,、PCIE熱復位時間。調試能力優(yōu)化方面,,利用display buffer,,SDL捕捉關鍵信號并導出處理后還原成波形,,并通過選定合適的捕捉信號、buffer深度,、降頻操作,,盡可能增大連續(xù)波形長度,改善調試能力,。
中圖分類號: TN91,;TN409
文獻標識碼: 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.
The system level debug method of PCIE based on emulator platform
Bai Ying1,,Ma Lingzhi1,,Guo Jia1,Chen Shaohui2
1.Tianjin Phytium Technology Co.,,Ltd.,,Tianjing 102209,China,;2.Cadence,,Shenzhen 518040,China
Abstract: Due to frequent change of driver or benchmark in system level verification environment with real PCIE device, operation system would be rebooted frequently,,this would result in extra simulation time. On the other hand, the weaken debugging ability would contribute to the challenge of debug. As a response, optimizations of both the PCIE system level verification flow and the debugging were presented in this paper. As for the verification flow, a “drawer-style” ram disk management mechanism was adopted. The driver or benchmark was replaced directly, avoiding OS reboot, via this ram disk. And the transportation of driver or benchmark to memory via NIO or Ethernet data path would further avoid both state restore and PCIE hot reset time. As for debug, the signal captured by SDL would be dumped and transported into waveform via display buffer. And the debugging ability would be improved with proper choice of capture signal, buffer depth and doping clock frequency.
Key words : emulator,;ICE;system verification,;PCIE

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)所示,。

wdz2-t1.gif

    其中,,對于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)化,。

wdz2-t2.gif

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所示。

wdz2-t3.gif

    主要技術點如下:

    (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所約定位置,,也可對錯誤程序修改,然后啟動新的測試,。

wdz2-t4.gif

    與抽屜式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所示。

wdz2-t5.gif

    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所示情形),。

wdz2-t6.gif

    由上述分析可知,實際應用中是否降頻,、設置多大的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)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載,。