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