文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.173548
中文引用格式: 高虎,封二強(qiáng),趙剛. 基于Testbench的FPGA實物自動化測試環(huán)境設(shè)計[J].電子技術(shù)應(yīng)用,2018,44(4):48-51.
英文引用格式: Gao Hu,F(xiàn)eng Erqiang,Zhao Gang. Design of FPGA physical automatic testing environment based on Testbench[J]. Application of Electronic Technique,2018,44(4):48-51.
隨著FPGA設(shè)計規(guī)模的不斷擴(kuò)大,因FPGA軟件設(shè)計而造成的質(zhì)量問題也越來越突出,成為影響裝備質(zhì)量的重要因素[1-2]。而測試是當(dāng)前解決該問題的最有效手段,因此,越來越多的型號裝備產(chǎn)品定型過程對FPGA軟件測試提出了新的要求[3]。
然而FPGA測試與常規(guī)軟件測試不同,因其測試環(huán)境限制,測試過程需大量依賴于仿真和分析的方法[4],而在實際芯片中開展的測試往往是板級、系統(tǒng)級測試,測試結(jié)果可信度低且無法有效發(fā)現(xiàn)FPGA軟件設(shè)計缺陷[5-6]。為此,本文提出了一種基于仿真測試平臺Testbench數(shù)據(jù)的自動化測試環(huán)境框架,測試結(jié)果具有較高的可信度,能夠有效提高FPGA測試質(zhì)量。
1 FPGA動態(tài)測試概述
1.1 FPGA動態(tài)測試環(huán)境原理
當(dāng)前型號裝備FPGA定型測試過程主要方法包括設(shè)計檢查、功能仿真、門級仿真、時序仿真、靜態(tài)時序分析、邏輯等效性檢查和實物測試。其中功能仿真、門級仿真、時序仿真和實物測試均為動態(tài)測試,開展測試時需依據(jù)測試要求,建立FPGA運(yùn)行的外圍環(huán)境,根據(jù)測試對象的不同,可將此類環(huán)境分為仿真測試環(huán)境和實物測試環(huán)境。
采用仿真測試環(huán)境時,需根據(jù)測試用例將測試數(shù)據(jù)映射為不同時刻下的不同信號值,形成仿真測試平臺文件Testbench,通過仿真測試工具將被測FPGA產(chǎn)生的響應(yīng)進(jìn)行采集和自動判斷,形成測試結(jié)論[7]。
采用實物測試環(huán)境時,往往構(gòu)建系統(tǒng)測試環(huán)境,將FPGA與外圍電路、設(shè)備一起運(yùn)行,通過外部總線接口設(shè)置激勵數(shù)據(jù),然后通過總線輸出接口查看響應(yīng)結(jié)果,人工分析和判斷,形成測試結(jié)論[8]。
1.2 FPGA動態(tài)測試特點(diǎn)
動態(tài)測試因測試實施過程中被測系統(tǒng)處于運(yùn)行狀態(tài),能夠較為準(zhǔn)確地反映系統(tǒng)實際運(yùn)行時的行為,因此在測試技術(shù)中成為最重要的測試手段之一。FPGA動態(tài)測試過程通常采用仿真測試與實物測試相結(jié)合的方法,通過執(zhí)行測試用例覆蓋FPGA需求、發(fā)現(xiàn)相關(guān)缺陷,與靜態(tài)測試相比, 具有測試結(jié)果直觀、覆蓋率高等優(yōu)勢。
但是,F(xiàn)PGA動態(tài)測試也存在一定弊端,在當(dāng)前型號測試任務(wù)中越來越突出[9-10],主要包括:(1)仿真測試過分依賴于仿真工具的性能;(2)仿真測試覆蓋率因使用IP核等原因無法得到充分保障;(3)實物測試針對系統(tǒng)數(shù)據(jù),而無法針對芯片信號。
當(dāng)前高可靠系統(tǒng)的FPGA動態(tài)測試方法作為型號任務(wù)測試中的重要測試手段,在工程實踐中雖然能夠發(fā)現(xiàn)大量FPGA質(zhì)量缺陷,但是上述弊端得不到解決,F(xiàn)PGA潛在的質(zhì)量風(fēng)險就無法得到有效控制。
2 自動化測試環(huán)境設(shè)計
2.1 環(huán)境需求分析
為提高當(dāng)前高可靠系統(tǒng)FPGA動態(tài)測試的可信性及測試效率,動態(tài)測試過程需滿足如下測試要求:
(1)測試激勵應(yīng)能夠完整反映FPGA芯片的輸入輸出行為,而非系統(tǒng)級測試激勵僅反映應(yīng)用數(shù)據(jù),即測試用例數(shù)據(jù)需由應(yīng)用層降低至信號傳輸層。
(2)動態(tài)測試的目標(biāo)FPGA設(shè)計需在真實的器件上運(yùn)行,而非采用仿真工具替代目標(biāo)FPGA運(yùn)行。
(3)動態(tài)測試激勵的施加及測試結(jié)果的采集均能夠滿足FPGA設(shè)計需求的精度及實時性,即能夠?qū)Ρ粶yFPGA設(shè)計施加高精度的信號輸入,同時能夠支持對被測FPGA輸出信號的高精度采集;此外,對FPGA各激勵及響應(yīng)信號的實時性應(yīng)滿足系統(tǒng)要求[11]。
2.2 環(huán)境框架構(gòu)建
2.2.1 工作原理
為滿足動態(tài)測試環(huán)境需求,設(shè)計基于Testbench的實物測試環(huán)境,通過Testbench對測試信號作用域、觸發(fā)時刻的描述,解決測試激勵的信號傳輸層需求;通過將Testbench信號轉(zhuǎn)換成真實的電路信號并施加于真實的被測FPGA芯片,解決被測系統(tǒng)運(yùn)行的真實性問題;通過高性能FPGA芯片進(jìn)行Testbench信號描述與真實電路信號的轉(zhuǎn)換,解決測試激勵及響應(yīng)的精度及實時性需求。具體工作原理如下:將Testbench進(jìn)行語義解析,便可獲得測試激勵數(shù)據(jù)。此激勵數(shù)據(jù)若不用于仿真,而經(jīng)過信號分配施加于被測FPGA芯片實體,便可實現(xiàn)基于Testbench的實物測試。同時,解析Testbench中對預(yù)期信號的讀取過程,并將被測FPGA實體的輸出信號讀取出來便可獲得被測FPGA的運(yùn)行結(jié)果,然后將實際運(yùn)行結(jié)果與預(yù)期結(jié)果進(jìn)行自動比對,便可實現(xiàn)基于Testbench的自動化測試過程。
2.2.2 系統(tǒng)結(jié)構(gòu)
根據(jù)Testbench下的FPGA自動化測試工作原理,設(shè)計FPGA自動化測試環(huán)境框架如圖1所示。
將測試環(huán)境按照測試的實時性要求劃分成主控平臺和執(zhí)行平臺兩部分,主控平臺為非實時節(jié)點(diǎn),執(zhí)行平臺為實時節(jié)點(diǎn)。
主控平臺主要完成測試準(zhǔn)備及測試結(jié)果分析工作。準(zhǔn)備工作包括測試激勵的準(zhǔn)備和測試接口的準(zhǔn)備。測試激勵的準(zhǔn)備是指將Testbench中的測試激勵信息進(jìn)行解析的過程,具體過程為:在主控平臺中完成Testbench的編輯后,將生成的Testbench經(jīng)形式化處理,解析成激勵域和結(jié)果域兩類字段,每個域字段內(nèi)均包含時刻、引腳和引腳值3個要素,最終形成包含有測試激勵信息的數(shù)據(jù)幀消息,并通過以太網(wǎng)將該數(shù)據(jù)幀消息發(fā)送至執(zhí)行平臺。測試接口的準(zhǔn)備是指設(shè)計被測FPGA外圍接口模型,并將其綜合、布局布線后下載至一片高性能FPGA(以下稱為執(zhí)行器FPGA)中等待運(yùn)行的過程;對于不同的被測FPGA測試項目,需對執(zhí)行器FPGA分別進(jìn)行接口模型的創(chuàng)建。測試結(jié)果分析工作用于接收測試結(jié)果數(shù)據(jù),生成測試報告。
執(zhí)行平臺可視為一個多路信號收發(fā)平臺,其接收主控下發(fā)的Testbench激勵數(shù)據(jù)幀消息,并存入大容量DPRAM中,當(dāng)收到測試執(zhí)行命令時,將該數(shù)據(jù)幀消息通過DPRAM發(fā)送至執(zhí)行器FPGA。執(zhí)行器FPGA按照DPRAM中描述的信號引腳、信號值及信號觸發(fā)時間信息,輸出信號至被測FPGA,并按照采集引腳地址及采集時機(jī)讀取被測FPGA產(chǎn)生的輸出信號,然后將采集的被測FPGA響應(yīng)結(jié)果通過DPRAM發(fā)送給處理器,實時上報至主控平臺,用于監(jiān)控和測試結(jié)果分析。
2.3 關(guān)鍵技術(shù)
基于Testbench的實物自動化測試環(huán)境以Testbench為數(shù)據(jù)核心,通過執(zhí)行器FPGA進(jìn)行數(shù)據(jù)到信號的轉(zhuǎn)換,因此,Testbench解析方法及執(zhí)行器FPGA設(shè)計是構(gòu)建實物自動化測試環(huán)境的關(guān)鍵技術(shù)。
2.3.1 Testbench解析方法
Testbench是開展FPGA測試的數(shù)據(jù)驅(qū)動,也是FPGA測試結(jié)果采集的驅(qū)動。Testbench由激勵產(chǎn)生、激勵施加、響應(yīng)判斷3部分構(gòu)成[12]。在開展基于Testbench的自動化實物測試環(huán)境構(gòu)建中對Testbench的解析主要是指對激勵產(chǎn)生、響應(yīng)判斷的解析;激勵施加的實質(zhì)是例化被測FPGA(即DUT,Design Under Test),對于構(gòu)建自動化實物測試環(huán)境并沒有影響。
無論采用何種語言構(gòu)建Testbench,激勵產(chǎn)生都會最終落實為在指定時刻對DUT引腳施加特定值的操作集合,因此可將Testbench的激勵施加過程解析為時刻、引腳、引腳值的集合,命名該集合為激勵域。
Testbench中的響應(yīng)判斷過程在一系列激勵產(chǎn)生并施加于DUT后實施,與激勵域類似,該過程也可理解為在指定時刻起對DUT引腳采集值的操作集合,該過程也同樣解析為時刻、引腳、引腳值3個要素,并命名該集合為結(jié)果域。與激勵域不同的是,結(jié)果域中的引腳值用于存儲預(yù)期結(jié)果數(shù)據(jù),該引腳值也可設(shè)為空,即無預(yù)期結(jié)果,表示由人工判定測試結(jié)果。
綜上,一個Testbench可以解析為如圖2所示的激勵域及結(jié)果域的集合。
為提高測試環(huán)境的時間控制精度并提高存儲效率[13],將一個時刻點(diǎn)下的激勵域及結(jié)果域解析為時刻控制點(diǎn)配置結(jié)構(gòu)Tickset,其定義形式如下:
其中,tickVal表示激勵信號觸發(fā)的時刻點(diǎn),drvPinNum用于存儲該時刻點(diǎn)同時為多少個引腳賦值,drvTab是指向具體引腳配置表的指針,引腳配置表結(jié)構(gòu)形式如下:
這樣,一個時刻點(diǎn)即為一個Tickset結(jié)構(gòu),其中包含了drvPinNum個激勵引腳和sampPinNum個采集引腳,每個引腳的地址和值也都包含在內(nèi)。
一個Testbench中包含了多個時刻點(diǎn),共同構(gòu)成了一個測試用例,因此一個測試用例可定義為case結(jié)構(gòu),形式如下:
在case結(jié)構(gòu)中包含了tickNum個Tickset,指針變量tickPoints表示具體的時刻控制點(diǎn)配置Tickset集合。
自動化實物測試環(huán)境的設(shè)計目標(biāo)之一為提高測試執(zhí)行效率,為此,可將所有生成的Testbench一次解析,生成測試用例集Caseset,實現(xiàn)測試用例集內(nèi)用例的不間斷執(zhí)行。Caseset的定義形式如下:
設(shè)計Testbench解析軟件,按照上述約定協(xié)議形式將全部Testbench文件進(jìn)行格式化后解析,最終形成的測試用例集Caseset下發(fā)至執(zhí)行平臺,通過CPU寫入DPRAM中,供執(zhí)行器FPGA讀取、配置。
2.3.2 執(zhí)行器FPGA設(shè)計
執(zhí)行器FPGA是銜接被測FPGA與測試環(huán)境的接口適配單元,主要完成Testbench數(shù)據(jù)與電路信號的轉(zhuǎn)換功能,在整個自動化測試環(huán)境中起核心作用。其內(nèi)部主要模塊及信息傳遞關(guān)系如圖3所示。
執(zhí)行器FPGA讀取DPRAM中的Testbench激勵數(shù)據(jù)消息,解析出激勵域和結(jié)果域,并對將兩個域的時刻控制值交由計數(shù)器處理。
激勵域解析模塊讀取DPRAM中激勵數(shù)據(jù)所要施加的FPGA引腳地址、激勵值[14],然后經(jīng)地址數(shù)據(jù)分配模塊進(jìn)行FPGA引腳索引和數(shù)據(jù)鎖存,到達(dá)激勵觸發(fā)時刻后將激勵數(shù)據(jù)通過指定的引腳輸出至被測FPGA。
結(jié)果域解析模塊讀取DPRAM中結(jié)果采集所需要的引腳地址、預(yù)期結(jié)果值,經(jīng)地址數(shù)據(jù)分配模塊進(jìn)行引腳映射,當(dāng)采集時刻到達(dá)時,地址數(shù)據(jù)分配模塊再從采集緩存中讀取對應(yīng)的數(shù)據(jù)值,并與DPRAM中的預(yù)期采集結(jié)果值進(jìn)行比較,將該時刻的結(jié)論發(fā)送至DPRAM用于與實際測試結(jié)果一起上傳至主控平臺。
時刻控制模塊是執(zhí)行器FPGA的控制中樞,一方面,讀取DPRAM中的時刻描述,計算獲得執(zhí)行器FPGA實際需觸發(fā)輸入輸出的時刻,通過計數(shù)器控制激勵和采集的使能,從而實現(xiàn)對FPGA信號的實時性傳輸控制;另一方面,通過讀取DPRAM中的測試用例數(shù)量、測試激勵域數(shù)量、結(jié)果域數(shù)量、各個域內(nèi)不同時刻點(diǎn)的引腳信號的數(shù)量,管理測試用例中的不同測試時刻的激勵域與結(jié)果域數(shù)據(jù)的時刻、引腳的配置,為激勵域解析模塊和結(jié)果域解析模塊實現(xiàn)引腳和數(shù)據(jù)分配提供依據(jù)。
此外,執(zhí)行器FPGA中還包括由主控平臺被測FPGA接口建模軟件配置的input引腳組、output引腳組及inout引腳組,用于配合地址收分配模塊進(jìn)行數(shù)據(jù)管理。
2.4 軟硬件部署
自動化動態(tài)測試環(huán)境中包括上位機(jī)主控平臺和下位機(jī)執(zhí)行平臺兩部分,主控平臺運(yùn)行于PC無需開展特別硬件設(shè)計;執(zhí)行平臺主要包括X86CPU、DPRAM和執(zhí)行器FPGA 3部分,其中X86CPU通過DPRAM與執(zhí)行器FPGA進(jìn)行數(shù)據(jù)通信的設(shè)計采用常規(guī)的DPRAM通信方法。
軟件方面,上位機(jī)主控平臺部署Testbench解析軟件,解析Testbench為Caseset測試用例集格式;部署被測FPGA接口建模軟件,通過執(zhí)行器FPGA集成開發(fā)環(huán)境ISE的配合實現(xiàn)對執(zhí)行器FPGA與被測FPGA連接引腳的配置;通過監(jiān)控與報告生成軟接收并顯示測試執(zhí)行結(jié)果數(shù)據(jù),生成測試報告;下位機(jī)執(zhí)行平臺X86CPU運(yùn)行實時操作系統(tǒng)VxWorks 5.5,進(jìn)行測試命令的執(zhí)行及測試數(shù)據(jù)分發(fā)和實時回傳。
3 實驗與應(yīng)用
基于上述設(shè)計方法,開發(fā)設(shè)計FPGA仿真用例實物化測試環(huán)境原型,包含Testbench解析器軟件、FPGA接口建模軟件等核心軟件,將Testbench文件解析成Caseset集合格式;采用XC7VX690T作為執(zhí)行器FPGA,設(shè)計其數(shù)據(jù)與信號的轉(zhuǎn)換邏輯,并通過外置接線板與被測FPGA芯片交聯(lián)。將該平臺試用于某型衛(wèi)星導(dǎo)航通信FPGA軟件測試中,與“仿真+系統(tǒng)”測試方式相比,顯著提高了測試工作效率。
4 結(jié)論
本文探索性地提出了一種基于仿真測試平臺的實物自動化測試環(huán)境,用于FPGA軟件測試中彌補(bǔ)仿真測試和當(dāng)前實物測試存在的弊端,通過實物自動化測試環(huán)境原型對設(shè)計框架進(jìn)行驗證,結(jié)果表明該測試環(huán)境具有測試覆蓋率高、測試效率高的優(yōu)點(diǎn),在后續(xù)項目中加以優(yōu)化便可作為FPGA測試工程實踐的主要工具。
參考文獻(xiàn)
[1] 高虎,劉媛,劉子宜.DO-254標(biāo)準(zhǔn)中的確認(rèn)與驗證過程分析[J].航空標(biāo)準(zhǔn)化與質(zhì)量,2014(2):10-13.
[2] 劉子宜,劉暢,鄭軍.基于軟件測試技術(shù)的FPGA測試研究[J].電子技術(shù)應(yīng)用,2011,37(5):28-30.
[3] 周珊,楊雅雯,王金波.航天高可靠FPGA測試技術(shù)研究[J].計算機(jī)技術(shù)與發(fā)展,2017,27(3):1-5.
[4] 費(fèi)亞男,周輝,朱偉杰.FPGA軟件自動化驗證平臺設(shè)計與實踐[J].計算機(jī)測量與控制,2016,24(5):139-142.
[5] LEMON R,COULTER B,ARCHIBALD S,et al.Interface test adapter development & maintenance using a continuity/insulation automatic test station in large scale test systems[C].Autotestcon,2009 IEEE,2009:107-112.
[6] JUSTIN J,LINDSTROM L,JAIN A.Using a plug-in model to simplify and enhance ATE test software capabilities[C].Autotestcon,2012 IEEE,2012:105-107.
[7] 王鵬,劉萬和,劉銳,等.基于SystemVerilog可重用測試平臺的實現(xiàn)[J].電子技術(shù)應(yīng)用,2015,41(2):61-64.
[8] 高虎,鄭軍,趙剛.FPGA板級自動化仿真測試環(huán)境框架設(shè)計[J].微電子學(xué)與計算機(jī),2017,34(12):94-98.
[9] 孫秀睿.FPGA設(shè)計驗證中的軟硬件協(xié)同仿真測試方法[J].南通大學(xué)學(xué)報(自然科學(xué)版),2016,15(3):41-44,66.
[10] 王曉耕.基于VHDL的數(shù)字SoC設(shè)計與驗證的全面自動化實現(xiàn)[D].西安:西安電子科技大學(xué),2016.
[11] 易敏,蘇淑靖,季偉,等.基于FPGA的高速時間交替采樣系統(tǒng)[J].電子技術(shù)應(yīng)用,2015,41(1):71-74.
[12] 錢一文,景為平,蔣斌.基于UVM的CPU卡芯片驗證平臺[J].微電子學(xué)與計算機(jī),2016,33(6):37-40.
[13] 王建中,楊璐.高速實時系統(tǒng)數(shù)據(jù)采集與傳輸[J].計算機(jī)科學(xué),2016,43(S2):604-606.
[14] 呂波,張涌,黃侃,等.基于FPGA的四口RAM設(shè)計與實現(xiàn)[J].儀表技術(shù)與傳感器,2017(1):34-37.
作者信息:
高 虎,封二強(qiáng),趙 剛
(中國航空綜合技術(shù)研究所,北京100083)