文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.173548
中文引用格式: 高虎,封二強(qiáng),,趙剛. 基于Testbench的FPGA實(shí)物自動化測試環(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],而在實(shí)際芯片中開展的測試往往是板級,、系統(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)時序分析、邏輯等效性檢查和實(shí)物測試,。其中功能仿真,、門級仿真、時序仿真和實(shí)物測試均為動態(tài)測試,,開展測試時需依據(jù)測試要求,,建立FPGA運(yùn)行的外圍環(huán)境,根據(jù)測試對象的不同,,可將此類環(huán)境分為仿真測試環(huán)境和實(shí)物測試環(huán)境,。
采用仿真測試環(huán)境時,需根據(jù)測試用例將測試數(shù)據(jù)映射為不同時刻下的不同信號值,,形成仿真測試平臺文件Testbench,,通過仿真測試工具將被測FPGA產(chǎn)生的響應(yīng)進(jìn)行采集和自動判斷,形成測試結(jié)論[7],。
采用實(shí)物測試環(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)測試因測試實(shí)施過程中被測系統(tǒng)處于運(yùn)行狀態(tài),能夠較為準(zhǔn)確地反映系統(tǒng)實(shí)際運(yùn)行時的行為,,因此在測試技術(shù)中成為最重要的測試手段之一,。FPGA動態(tài)測試過程通常采用仿真測試與實(shí)物測試相結(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)實(shí)物測試針對系統(tǒng)數(shù)據(jù),,而無法針對芯片信號。
當(dāng)前高可靠系統(tǒng)的FPGA動態(tài)測試方法作為型號任務(wù)測試中的重要測試手段,,在工程實(shí)踐中雖然能夠發(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è)計需在真實(shí)的器件上運(yùn)行,而非采用仿真工具替代目標(biāo)FPGA運(yùn)行,。
(3)動態(tài)測試激勵的施加及測試結(jié)果的采集均能夠滿足FPGA設(shè)計需求的精度及實(shí)時性,,即能夠?qū)Ρ粶yFPGA設(shè)計施加高精度的信號輸入,同時能夠支持對被測FPGA輸出信號的高精度采集,;此外,,對FPGA各激勵及響應(yīng)信號的實(shí)時性應(yīng)滿足系統(tǒng)要求[11]。
2.2 環(huán)境框架構(gòu)建
2.2.1 工作原理
為滿足動態(tài)測試環(huán)境需求,設(shè)計基于Testbench的實(shí)物測試環(huán)境,,通過Testbench對測試信號作用域,、觸發(fā)時刻的描述,解決測試激勵的信號傳輸層需求,;通過將Testbench信號轉(zhuǎn)換成真實(shí)的電路信號并施加于真實(shí)的被測FPGA芯片,,解決被測系統(tǒng)運(yùn)行的真實(shí)性問題;通過高性能FPGA芯片進(jìn)行Testbench信號描述與真實(shí)電路信號的轉(zhuǎn)換,,解決測試激勵及響應(yīng)的精度及實(shí)時性需求,。具體工作原理如下:將Testbench進(jìn)行語義解析,便可獲得測試激勵數(shù)據(jù),。此激勵數(shù)據(jù)若不用于仿真,,而經(jīng)過信號分配施加于被測FPGA芯片實(shí)體,便可實(shí)現(xiàn)基于Testbench的實(shí)物測試,。同時,,解析Testbench中對預(yù)期信號的讀取過程,并將被測FPGA實(shí)體的輸出信號讀取出來便可獲得被測FPGA的運(yùn)行結(jié)果,,然后將實(shí)際運(yùn)行結(jié)果與預(yù)期結(jié)果進(jìn)行自動比對,,便可實(shí)現(xiàn)基于Testbench的自動化測試過程。
2.2.2 系統(tǒng)結(jié)構(gòu)
根據(jù)Testbench下的FPGA自動化測試工作原理,,設(shè)計FPGA自動化測試環(huán)境框架如圖1所示。
將測試環(huán)境按照測試的實(shí)時性要求劃分成主控平臺和執(zhí)行平臺兩部分,,主控平臺為非實(shí)時節(jié)點(diǎn),,執(zhí)行平臺為實(shí)時節(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ā)送給處理器,,實(shí)時上報至主控平臺,用于監(jiān)控和測試結(jié)果分析,。
2.3 關(guān)鍵技術(shù)
基于Testbench的實(shí)物自動化測試環(huán)境以Testbench為數(shù)據(jù)核心,,通過執(zhí)行器FPGA進(jìn)行數(shù)據(jù)到信號的轉(zhuǎn)換,因此,,Testbench解析方法及執(zhí)行器FPGA設(shè)計是構(gòu)建實(shí)物自動化測試環(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的自動化實(shí)物測試環(huán)境構(gòu)建中對Testbench的解析主要是指對激勵產(chǎn)生,、響應(yīng)判斷的解析;激勵施加的實(shí)質(zhì)是例化被測FPGA(即DUT,,Design Under Test),,對于構(gòu)建自動化實(shí)物測試環(huán)境并沒有影響。
無論采用何種語言構(gòu)建Testbench,,激勵產(chǎn)生都會最終落實(shí)為在指定時刻對DUT引腳施加特定值的操作集合,,因此可將Testbench的激勵施加過程解析為時刻、引腳,、引腳值的集合,,命名該集合為激勵域。
Testbench中的響應(yīng)判斷過程在一系列激勵產(chǎn)生并施加于DUT后實(shí)施,,與激勵域類似,,該過程也可理解為在指定時刻起對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集合,。
自動化實(shí)物測試環(huán)境的設(shè)計目標(biāo)之一為提高測試執(zhí)行效率,,為此,可將所有生成的Testbench一次解析,,生成測試用例集Caseset,實(shí)現(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用于與實(shí)際測試結(jié)果一起上傳至主控平臺。
時刻控制模塊是執(zhí)行器FPGA的控制中樞,,一方面,,讀取DPRAM中的時刻描述,計算獲得執(zhí)行器FPGA實(shí)際需觸發(fā)輸入輸出的時刻,,通過計數(shù)器控制激勵和采集的使能,,從而實(shí)現(xiàn)對FPGA信號的實(shí)時性傳輸控制;另一方面,,通過讀取DPRAM中的測試用例數(shù)量,、測試激勵域數(shù)量、結(jié)果域數(shù)量,、各個域內(nèi)不同時刻點(diǎn)的引腳信號的數(shù)量,,管理測試用例中的不同測試時刻的激勵域與結(jié)果域數(shù)據(jù)的時刻、引腳的配置,,為激勵域解析模塊和結(jié)果域解析模塊實(shí)現(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的配合實(shí)現(xiàn)對執(zhí)行器FPGA與被測FPGA連接引腳的配置;通過監(jiān)控與報告生成軟接收并顯示測試執(zhí)行結(jié)果數(shù)據(jù),,生成測試報告,;下位機(jī)執(zhí)行平臺X86CPU運(yùn)行實(shí)時操作系統(tǒng)VxWorks 5.5,進(jìn)行測試命令的執(zhí)行及測試數(shù)據(jù)分發(fā)和實(shí)時回傳,。
3 實(shí)驗(yàn)與應(yīng)用
基于上述設(shè)計方法,,開發(fā)設(shè)計FPGA仿真用例實(shí)物化測試環(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é)論
本文探索性地提出了一種基于仿真測試平臺的實(shí)物自動化測試環(huán)境,,用于FPGA軟件測試中彌補(bǔ)仿真測試和當(dāng)前實(shí)物測試存在的弊端,,通過實(shí)物自動化測試環(huán)境原型對設(shè)計框架進(jìn)行驗(yàn)證,結(jié)果表明該測試環(huán)境具有測試覆蓋率高,、測試效率高的優(yōu)點(diǎn),,在后續(xù)項目中加以優(yōu)化便可作為FPGA測試工程實(shí)踐的主要工具。
參考文獻(xiàn)
[1] 高虎,,劉媛,,劉子宜.DO-254標(biāo)準(zhǔn)中的確認(rèn)與驗(yà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軟件自動化驗(yàn)證平臺設(shè)計與實(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可重用測試平臺的實(shí)現(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è)計驗(yàn)證中的軟硬件協(xié)同仿真測試方法[J].南通大學(xué)學(xué)報(自然科學(xué)版),,2016,,15(3):41-44,66.
[10] 王曉耕.基于VHDL的數(shù)字SoC設(shè)計與驗(yàn)證的全面自動化實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),,2016.
[11] 易敏,,蘇淑靖,季偉,,等.基于FPGA的高速時間交替采樣系統(tǒng)[J].電子技術(shù)應(yīng)用,,2015,41(1):71-74.
[12] 錢一文,,景為平,,蔣斌.基于UVM的CPU卡芯片驗(yàn)證平臺[J].微電子學(xué)與計算機(jī),2016,,33(6):37-40.
[13] 王建中,,楊璐.高速實(shí)時系統(tǒng)數(shù)據(jù)采集與傳輸[J].計算機(jī)科學(xué),2016,,43(S2):604-606.
[14] 呂波,,張涌,黃侃,,等.基于FPGA的四口RAM設(shè)計與實(shí)現(xiàn)[J].儀表技術(shù)與傳感器,,2017(1):34-37.
作者信息:
高 虎,封二強(qiáng),,趙 剛
(中國航空綜合技術(shù)研究所,,北京100083)