《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于硬件仿真加速平臺(tái)的PCIE系統(tǒng)級(jí)調(diào)測(cè)試方法
基于硬件仿真加速平臺(tái)的PCIE系統(tǒng)級(jí)調(diào)測(cè)試方法
2017年電子技術(shù)應(yīng)用第8期
柏 穎1,馬玲芝1,郭 嘉1,陳少輝2
1.天津飛騰信息技術(shù)有限公司,天津102209;2.Cadence,廣東 深圳518040
摘要: 在帶真實(shí)PCIE設(shè)備的系統(tǒng)級(jí)測(cè)試環(huán)境中,由于驅(qū)動(dòng)程序或應(yīng)用測(cè)試程序的更換,可能需要頻繁引導(dǎo)操作系統(tǒng),造成額外時(shí)間開銷;同時(shí),由于真實(shí)外設(shè)的存在,系統(tǒng)調(diào)試能力急劇降低,給調(diào)試帶來巨大挑戰(zhàn)。分別對(duì)帶真實(shí)PCIE設(shè)備的系統(tǒng)級(jí)驗(yàn)證流程及調(diào)試進(jìn)行了優(yōu)化。驗(yàn)證流程方面,一方面采用“抽屜式”內(nèi)存管理機(jī)制,通過ramdisk直接更換驅(qū)動(dòng)程序及benchmark,避免重復(fù)引導(dǎo)OS;另一方面,通過Ethernet通路實(shí)現(xiàn)程序更換,進(jìn)一步節(jié)省狀態(tài)恢復(fù)、PCIE熱復(fù)位時(shí)間。調(diào)試能力優(yōu)化方面,利用display buffer,SDL捕捉關(guān)鍵信號(hào)并導(dǎo)出處理后還原成波形,并通過選定合適的捕捉信號(hào)、buffer深度、降頻操作,盡可能增大連續(xù)波形長(zhǎng)度,改善調(diào)試能力。
中圖分類號(hào): TN91;TN409
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.179008
中文引用格式: 柏穎,馬玲芝,郭嘉,等. 基于硬件仿真加速平臺(tái)的PCIE系統(tǒng)級(jí)調(diào)測(cè)試方法[J].電子技術(shù)應(yīng)用,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驗(yàn)證較為復(fù)雜,首先,不同的功能點(diǎn)需要在不同的驗(yàn)證層次中完成[1]。其次,PCIE所參與的DMA訪問對(duì)cache一致性的維護(hù)帶來新的挑戰(zhàn)等[2];對(duì)于DUT為PCIE RC設(shè)備的設(shè)計(jì)來說,PCIE可外接各種PCIE設(shè)備橋[3],其驅(qū)動(dòng)程序需要在系統(tǒng)驗(yàn)證環(huán)境中進(jìn)行聯(lián)調(diào)。

    即便基于硬件仿真平臺(tái)的PCIE系統(tǒng)級(jí)測(cè)試,也存在諸多調(diào)測(cè)試挑戰(zhàn):首先,為盡可能仿真各種測(cè)試場(chǎng)景,可能需要掛接多種EP設(shè)備并進(jìn)行相關(guān)測(cè)試,這既需聯(lián)調(diào)驅(qū)動(dòng)程序,又涉及各種PCIE EP設(shè)備的典型應(yīng)用測(cè)試,以及各PCIE應(yīng)用程序測(cè)試與內(nèi)核測(cè)試的各種組合以增強(qiáng)測(cè)試力度。這均需不停更換驅(qū)動(dòng)程序或測(cè)試程序,可能需要重新引導(dǎo)操作系統(tǒng),增加了測(cè)試壓力;其次,PCIE是動(dòng)態(tài)IO協(xié)議,在PCIE訪問過程中不能隨意暫停,這將極大削弱硬件仿真平臺(tái)的調(diào)試能力。

1 測(cè)試環(huán)境及流程

    基于硬件仿真加速平臺(tái)的PCIE系統(tǒng)級(jí)測(cè)試方法主要有兩種:傳統(tǒng)的DUT+速度匹配橋+真實(shí)PCIE設(shè)備測(cè)試模式與DUT+AVIP的模式,分別如圖1(a)、圖1(b)所示。

wdz2-t1.gif

    其中,對(duì)于DUT+速度匹配橋+真實(shí)PCIE設(shè)備測(cè)試模式, PCIE Phy由于不可綜合[4],需如圖1(a)中所示用Wrapper來替換PCS與Serdes接口相關(guān)部分。Wrapper向下通過母板橋接SATA、Ethernet等不同類型PCIE設(shè)備。在該測(cè)試模式中,PCIE core及其余DUT運(yùn)行在仿真器上,SpeedBridge及母板、橋片、PCIE設(shè)備采用真實(shí)的設(shè)備,兩者間有緊密的時(shí)序握手,在測(cè)試中不可隨意暫停硬件仿真加速器,調(diào)試能力被極大削弱。

    而在DUT+AVIP模式中,AVIP模擬了一個(gè)具有memory功能的PCIE EP設(shè)備,該AVIP與PCIE Core通過PIPE接口直接相連,無需PCS及Serdes接口。在該測(cè)試模式中,PCIE core及其DUT運(yùn)行在仿真器上,AVIP運(yùn)行在服務(wù)器端,中間采用TBA進(jìn)行交互。PCIE Core及AVIP的時(shí)鐘均由硬件仿真加速器產(chǎn)生并控制,因此該模式中大部分時(shí)間均可暫?;蚧謴?fù)測(cè)試。

    上述兩種測(cè)試模式各有優(yōu)缺點(diǎn),也各有適用的測(cè)試場(chǎng)景。根據(jù)本部門多款自主CPU驗(yàn)證的經(jīng)驗(yàn),真實(shí)PCIE設(shè)備測(cè)試模式所占據(jù)的測(cè)試周期長(zhǎng),調(diào)試難度大。因此,本文就該模式下如何改善其調(diào)、測(cè)試效率,簡(jiǎn)單進(jìn)行總結(jié)分析。

2 優(yōu)化測(cè)試流程

    如上所述,在PCIE系統(tǒng)級(jí)測(cè)試中,常需更換PCIE設(shè)備驅(qū)動(dòng)程序或測(cè)試程序。

    最先采用圖 2(a)所示測(cè)試流程,將驅(qū)動(dòng)程序及測(cè)試程序(后文統(tǒng)稱程序)集成在OS鏡像文件中,并一同置于flash。在該方法中,一旦程序不正確,則需要替換新的OS鏡像,然后重新引導(dǎo)uboot、OS等。一方面重新引導(dǎo)OS將浪費(fèi)時(shí)間;另一方面,需在仿真器操作界面與測(cè)試程序命令行中多次切換,很難實(shí)現(xiàn)測(cè)試自動(dòng)化。因此,在測(cè)試流程上進(jìn)行優(yōu)化。

wdz2-t2.gif

2.1 “抽屜式”Ramdisk管理

    為避免因?yàn)楦鼡Q驅(qū)動(dòng)程序或應(yīng)用測(cè)試程序而頻繁引導(dǎo)OS,結(jié)合硬件仿真加速器具有直接操作memory空間的能力,采用了“抽屜式”Ramdisk調(diào)測(cè)試技術(shù)。通過為系統(tǒng)Ramdisk設(shè)備預(yù)留一塊連續(xù)的專用物理內(nèi)存,并以此構(gòu)建Ramdisk設(shè)備,在需要更換Ramdisk內(nèi)容時(shí)通過硬件模擬器把新的Ramdisk映像寫入預(yù)留的物理內(nèi)存中,然后在操作系統(tǒng)中重新掛載該Ramdisk文件系統(tǒng),實(shí)現(xiàn)了Ramdisk設(shè)備的熱插拔。整個(gè)操作類似于把抽屜拉開放入物品再合上的過程,因此稱之為“抽屜式”Ramdisk調(diào)測(cè)試技術(shù),如圖3所示。

wdz2-t3.gif

    主要技術(shù)點(diǎn)如下:

    (1)預(yù)留連續(xù)的物理內(nèi)存

    “抽屜式”Ramdisk調(diào)測(cè)試技術(shù)由于要通過硬件模擬器直接在內(nèi)存中寫入新的Ramdisk映像,因此,要求具有連續(xù)的物理內(nèi)存空間。

    (2)構(gòu)建Ramdisk設(shè)備

    傳統(tǒng)Ramdisk技術(shù)中,Ramdisk設(shè)備所使用的物理內(nèi)存是按需動(dòng)態(tài)分配的,只有當(dāng)確實(shí)需要訪問一個(gè)扇區(qū)的時(shí)候才會(huì)為之分配內(nèi)存并把該扇區(qū)從外設(shè)讀入到分配的物理內(nèi)存中,所有內(nèi)存頁(yè)面通過一個(gè)Radix Tree組織在一起。抽屜式Ramdisk技術(shù)基于連續(xù)的物理內(nèi)存來實(shí)現(xiàn),在預(yù)留連續(xù)物理內(nèi)存以后,會(huì)基于該內(nèi)存區(qū)域建立Ramdisk設(shè)備,并把Ramdisk設(shè)備與該內(nèi)存區(qū)域綁定在一起,不使用預(yù)留內(nèi)存區(qū)域以外的其它物理內(nèi)存。

    采用抽屜式Ramdisk調(diào)測(cè)試方法后,測(cè)試流程如圖2(b)所示,與采用抽屜式Ramdisk技術(shù)之前的圖2(a)所示流程相比,在OS引導(dǎo)成功后多了一個(gè)Ramdisk掛載操作。當(dāng)需要替換新的驅(qū)動(dòng)程序或應(yīng)用測(cè)試程序時(shí),重新引導(dǎo)uboot、恢復(fù)到“健康”斷點(diǎn)、PCIE熱復(fù)位,然后掛接新的Ramdisk,即可完成程序替換功能。其余操作流程與采用抽屜式Ramdisk之前類似。

    采用抽屜式Ramdisk調(diào)測(cè)試方法,將取得三方面的好處:首先,在將鏡像文件從Flash拷貝至內(nèi)存時(shí),由于驅(qū)動(dòng)程序及應(yīng)用測(cè)試程序不再集成在OS鏡像文件中,可節(jié)省OS引導(dǎo)時(shí)間;其次,可避免頻繁引導(dǎo)OS;再次,可提高整個(gè)測(cè)試的自動(dòng)化水平。

2.2 “on line”式程序管理

    抽屜式Ramdisk調(diào)測(cè)試方法雖然能獲得上述收益,但也存在一定的開銷:一方面,恢復(fù)斷點(diǎn)及引導(dǎo)uboot、PCIE熱復(fù)位需要花費(fèi)一定的時(shí)間。另一方面,恢復(fù)到一個(gè)相對(duì)干凈的斷點(diǎn),不利于DUT狀態(tài)的累積,無形中降低了某些復(fù)雜情形的測(cè)試力度。因此,本部門對(duì)測(cè)試流程進(jìn)行了另一種優(yōu)化,采用了圖4所示的“on line”式的驅(qū)動(dòng)/測(cè)試程序管理。當(dāng)需要更新程序時(shí),如圖 4中虛線箭頭所示,通過Ethernet將新程序傳送至OS所約定位置,也可對(duì)錯(cuò)誤程序修改,然后啟動(dòng)新的測(cè)試。

wdz2-t4.gif

    與抽屜式Ramdisk調(diào)測(cè)試方法相比,本方法進(jìn)一步對(duì)測(cè)試流程進(jìn)行了優(yōu)化:首先,一旦驅(qū)動(dòng)加載或程序測(cè)試過程中報(bào)錯(cuò)且初步診斷為程序錯(cuò),無需重新引導(dǎo)uboot、恢復(fù)斷點(diǎn)、PCIE部件熱復(fù)位,更無需重新引導(dǎo)OS,而僅需通過Ethernet或NIO往內(nèi)存中修改、更換或新增測(cè)試程序即可,可最大程度節(jié)省時(shí)間;其次,該流程中無需暫停時(shí)鐘或“恢復(fù)”斷點(diǎn),DUT的狀態(tài)連續(xù),可實(shí)現(xiàn)狀態(tài)的累積,更能優(yōu)化一些深層的設(shè)計(jì)缺陷。

3 Sdl-to-wave:利用SDL提高調(diào)試能力

    AVIP測(cè)試模式雖有其優(yōu)勢(shì),但尚難以完全替代真實(shí)PCIE設(shè)備測(cè)試模式,因此,如何提高PCIE設(shè)備測(cè)試模式的調(diào)試能力依然重要。

    在調(diào)試方面,Palladium硬件仿真加速器提供了強(qiáng)大調(diào)試能力,如超長(zhǎng)的波形窗口、InfiniTrace模式、強(qiáng)大的SDL功能、靈活的探針模式,Palladium Z1對(duì)SDL進(jìn)行了進(jìn)一步的加強(qiáng)。但需求無止境,業(yè)內(nèi)常見利用TBA等驗(yàn)證技術(shù)提高硬件仿真平臺(tái)調(diào)試能力的嘗試。如AMD公司將PC值緩存后通過TBA輸出,處理后將PC反標(biāo)至反匯編程序,以實(shí)現(xiàn)測(cè)試激勵(lì)與仿真狀態(tài)的“準(zhǔn)同步”滾動(dòng)。該方法不僅需設(shè)計(jì)緩存、TBA實(shí)現(xiàn),還需謹(jǐn)慎處理緩存的空滿等問題。其實(shí),在Palladium中,軟件層面上設(shè)置了專門的Display buffer供SDL使用,軟件已對(duì)其空滿狀態(tài)進(jìn)行了控制,且大小可調(diào)節(jié)。本文通過有效利用該display buffer來捕捉關(guān)鍵信息以輔助debug,其基本流程如圖5所示。

wdz2-t5.gif

    SDL對(duì)所需數(shù)據(jù)進(jìn)行捕捉,然后將捕捉到的數(shù)據(jù)寫入Display buffer。在SDL對(duì)Display buffer進(jìn)行寫的同時(shí),UXE/VXE會(huì)將buffer中的數(shù)據(jù)驅(qū)動(dòng)進(jìn)fiber,然后取道server上的PCIE、NOC、DDR,最后進(jìn)入內(nèi)存,經(jīng)過后處理程序?qū)?shù)據(jù)轉(zhuǎn)換為波形。

    該流程中有如下幾個(gè)實(shí)現(xiàn)細(xì)節(jié)需要說明:

    (1)SDL將捕捉到的數(shù)據(jù)“寫入”的動(dòng)作用display而不能用EXEC調(diào)用put命令來實(shí)現(xiàn)。首先,后者并不對(duì)數(shù)據(jù)進(jìn)行緩存,因此每次打印都需暫停仿真器時(shí)鐘,這不僅嚴(yán)重降低仿真速度,且影響PCIE通路功能正確性;其次,當(dāng)運(yùn)行在Logic Analyser、Dynamic Target Mode或帶有不可控時(shí)鐘的IXCOM流程時(shí),由于時(shí)鐘是不能被暫停的,如果用EXEC來打印,將造成數(shù)據(jù)的丟失,而采用display來實(shí)現(xiàn),將極大降低此概率;最后就是時(shí)間的精確性,display命令捕捉的是trigger條件觸發(fā)時(shí)刻的數(shù)據(jù),而EXCE所捕捉的數(shù)據(jù)有一定的延時(shí),且在不同模式下,延時(shí)的大小并不一致,具體可參考Palladium的相關(guān)技術(shù)手冊(cè)。

    (2)運(yùn)行在LA模式而不是STB模式。當(dāng)display數(shù)據(jù)滿時(shí),在LA模式與STB模式下的處理方式并不相同。在前者中,將停止數(shù)據(jù)捕捉,同時(shí),可報(bào)Warning或Error。而在后者中,將丟掉待寫入的數(shù)據(jù)直至有新的buffer空間,但并不停止數(shù)據(jù)的捕捉,也不報(bào)Warning或Error。當(dāng)運(yùn)行在STB模式時(shí),出現(xiàn)數(shù)據(jù)丟失時(shí)用戶無法感知,干擾后續(xù)debug。

    對(duì)于真實(shí)PCIE設(shè)備測(cè)試模式,利用SDL來捕捉關(guān)鍵信號(hào)的數(shù)據(jù)并還原成波形,其調(diào)試效果的關(guān)鍵是連續(xù)波形的長(zhǎng)度,而決定連續(xù)波形長(zhǎng)度的核心是對(duì)display buffer的讀寫速度。

    從上述數(shù)據(jù)“產(chǎn)生”、“消費(fèi)”的流程不難發(fā)現(xiàn),一旦仿真加速平臺(tái)的硬件條件,尤其是服務(wù)器一一確定,對(duì)Display buffer的讀取速度就已經(jīng)基本確定(受網(wǎng)絡(luò)繁忙情況的影響除外),決定能導(dǎo)出的連續(xù)波形長(zhǎng)度L_wave的主要因素是SDL產(chǎn)生數(shù)據(jù)的速度以及Display buffer本身的大小。因此,在實(shí)際應(yīng)用中,有效的優(yōu)化手段主要有如下幾個(gè)方面:

    (1)盡可能精簡(jiǎn)所捕捉的信號(hào)數(shù)量。當(dāng)然,過于精簡(jiǎn)信號(hào)數(shù)量,可能會(huì)降低調(diào)試效率,這需要做合理權(quán)衡。

    (2)增大Display buffer的深度。

    (3)適當(dāng)降低被捕獲信號(hào)所在時(shí)鐘域的時(shí)鐘頻率。當(dāng)然,采用該策略的前提是DUT中的各時(shí)鐘域的頻率比能隨意改動(dòng)。對(duì)于那些有嚴(yán)格頻率比關(guān)系的部件(如DDR控制器與DDR phy),則需一起降頻、升頻。

    為驗(yàn)證該方法的效果,在某真實(shí)自主多核處理器中進(jìn)行了驗(yàn)證。SDL在clk_sample上升沿對(duì)PCIE設(shè)備DMA操作過程中PIPE接口上的數(shù)據(jù)進(jìn)行采樣。

    圖6(a)表示信號(hào)數(shù)量對(duì)L_wave的影響。當(dāng)clk_sample為1 000 kHz(Fclk設(shè)定為2 000 kHz)時(shí),Display buffer的寫入速度遠(yuǎn)大于buffer的讀出速度,此時(shí),信號(hào)數(shù)量對(duì)L_wave幾乎沒影響,L_wave主要由bufer深度決定。當(dāng)clk_sample為195 kHz時(shí),Display buffer稍大于buffer的讀出速度,此時(shí),信號(hào)數(shù)量對(duì)L_wave的影響較為明顯。需要說明的是,此實(shí)驗(yàn)中是用clk_sample上升沿作為display的觸發(fā)條件,因此ACTIVE的display的批數(shù)與信號(hào)數(shù)量無關(guān)。而在真實(shí)應(yīng)用中,display的觸發(fā)條件是信號(hào)發(fā)生變化,屆時(shí),信號(hào)數(shù)量不僅影響buffer的讀出速度,更影響ACTIVE的display的批數(shù)。因此,在實(shí)際應(yīng)用中,所需捕捉的信號(hào)應(yīng)盡量精簡(jiǎn)。

    圖6(b)表示buffer深度對(duì)L_wave的影響。將buffer深度設(shè)為Palladium最大所支持的16 M。由于clk_sample=1 000 kHz時(shí)buffer的寫入速度遠(yuǎn)大于讀出速度,因此此時(shí)L_wave幾乎隨buffer深度線型增長(zhǎng)。然而,隨著buffer的寫入速度逐漸與讀出速度相近甚至小于讀出速度,該增長(zhǎng)趨勢(shì)將逐漸趨緩直至無窮大。

    圖6(c)表示clk_sample頻率對(duì)L_wave的影響。當(dāng)clk_sample較大時(shí),buffer寫入熟讀遠(yuǎn)大于讀出速度,此時(shí)clk_sample頻率對(duì)L_wave的影響較小甚至可以忽略。當(dāng)采用時(shí)鐘sample_clk降到一定時(shí),L_wave隨clk_sample的減小而增加,直至無限(如圖中175 kHz所示情形)。

wdz2-t6.gif

    由上述分析可知,實(shí)際應(yīng)用中是否降頻、設(shè)置多大的buffer深度,完全取決于buffer的寫入速度與讀出速度的相對(duì)關(guān)系,由于讀出速度主要由硬件環(huán)境決定,因此在實(shí)際應(yīng)用中主要由display的ACTIVE情況及每批display的數(shù)據(jù)量決定,這兩方面均為SDL所捕捉的信號(hào)數(shù)量及其行為來決定。因此,對(duì)于不同的信號(hào)捕捉情況,采用的策略也各不相同,所能獲得的最大連續(xù)波形長(zhǎng)度也不盡相同。該方法主要用于查看指令執(zhí)行trace、PCIE控制器的LTSSM狀態(tài)機(jī)、PCIE鏈路訓(xùn)練過程時(shí)的信用情況等“稀疏”信號(hào)或僅有限區(qū)域內(nèi)頻繁變化的信號(hào)、錯(cuò)誤處理、中斷處理等。

4 總結(jié)

    本文分別對(duì)帶真實(shí)PCIE設(shè)備的系統(tǒng)級(jí)驗(yàn)證流程及調(diào)試進(jìn)行了優(yōu)化。驗(yàn)證流程方面,一方面采用“抽屜式”內(nèi)存管理機(jī)制,通過ramdisk直接更換驅(qū)動(dòng)程序及benchmark,避免重復(fù)引導(dǎo)OS;另一方面,通過Ethernet通路實(shí)現(xiàn)程序更換,進(jìn)一步節(jié)省狀態(tài)恢復(fù)、PCIE熱復(fù)位時(shí)間。調(diào)試能力優(yōu)化方面,利用Display buffer,SDL捕捉關(guān)鍵信號(hào)并導(dǎo)出處理后還原成波形,并通過選定合適的捕捉信號(hào)、buffer深度、降頻操作,盡可能增大連續(xù)波形長(zhǎng)度,改善調(diào)試能力。

參考文獻(xiàn)

[1] 陳欣民.基于UVM的PCIe協(xié)議的驗(yàn)證[D].南京:南開大學(xué)電子信息與光學(xué)工程學(xué)院,2015.

[2] 王齊,等.PCI Express 體系結(jié)構(gòu)導(dǎo)讀[M].北京:機(jī)械工業(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.天津飛騰信息技術(shù)有限公司,天津102209;2.Cadence,廣東 深圳518040)

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