費亞男,周 輝,朱偉杰
(北京航天自動控制研究所,北京 100854)
FPGA軟件自動化驗證平臺設(shè)計與實踐
費亞男,周輝,朱偉杰
(北京航天自動控制研究所,北京100854)
目前,航天任務(wù)急劇增多,研制周期大大縮短,F(xiàn)PGA的應(yīng)用呈階梯式增長,提高FPGA軟件的測試效率成為新的挑戰(zhàn);驗證平臺的搭建是進行FPGA測試的前提條件,而驗證平臺的好壞直接影響測試效率和質(zhì)量;為了提高測試效率,設(shè)計搭建了基于Makefile腳本的自動化驗證平臺,可在該平臺上進行FPGA軟件靜態(tài)測試和動態(tài)測試,覆蓋了目前航天型號FPGA軟件測試的全部類型,實驗結(jié)果表明該平臺的應(yīng)用能夠有效地縮短測試時間,并保證測試質(zhì)量。
FPGA軟件測試;自動化;驗證平臺;Makefile腳本
FPGA作為可編程邏輯器件,通過用戶自定義編寫VHDL程序或者Verilog程序進行配置,實現(xiàn)用戶所需功能。但是一旦編寫的程序存在缺陷,比如狀態(tài)機的跳轉(zhuǎn)條件錯誤、對輸入信號未進行濾波處理、計數(shù)器的計數(shù)值產(chǎn)生溢出等,都會導(dǎo)致FPGA輸出信號邏輯狀態(tài)錯誤,無法實現(xiàn)預(yù)期的設(shè)計,嚴重的會影響系統(tǒng)功能,致使系統(tǒng)運行紊亂,最后造成重大事故,在財力物力上損失慘重。為提高FPGA運行的可靠性,需對其進行測試[3]。
目前,F(xiàn)PGA主要測試方法為:基于軟環(huán)境的FPGA測試[4]和基于ATE的FPGA測試。其中基于軟環(huán)境的FPGA測試按照是否要運行程序分為靜態(tài)測試和動態(tài)測試,動態(tài)測試又可分為黑盒測試和白盒測試。這種測試方法的優(yōu)點是,不受硬件環(huán)境影響,測試結(jié)果穩(wěn)定性好,測試類型齊全,并且可進行異常測試。缺點是,環(huán)節(jié)太多為測試工作帶來極大不便,并且自動化程度低,測試花費時間長。基于ATE的測試方法原理是:對FPGA進行針對性的配置,然后采用在線測試機對其進行測試。這種測試方法雖然自動化程度高,但是存在著測試覆蓋率不足的問題,同時測試對硬件的依賴性強,費用相對較高,且靈活性差。
綜合上述兩種FPGA測試方法的優(yōu)點,本文研究出一種自動化程度高、測試類型完備且覆蓋率能夠達到100%的測試方法,來縮短測試時間、提高測試效率和質(zhì)量。
搭建驗證平臺是對FPGA軟件進行測試的前提條件,目前,驗證平臺的結(jié)構(gòu)、功能沒有統(tǒng)一化要求,不同測試人員搭建的驗證平臺有所不同,這樣存在很多弊端,不利于管理、可讀性差、可繼承性差等。為了解決傳統(tǒng)驗證平臺存在的問題,本文設(shè)計了通用驗證平臺的架構(gòu),作為驗證平臺搭建的標(biāo)準(zhǔn)。
可在驗證平臺上進行測試的類型包括代碼規(guī)則檢查、跨時鐘域檢查、功能仿真、時序仿真、邏輯等效性檢查和靜態(tài)時序分析共6種,已覆蓋載人航天工程和武器裝備系統(tǒng)FPGA軟件的所有測試類型要求。
代碼規(guī)則檢查:檢查代碼設(shè)計是否存在書寫風(fēng)格和結(jié)構(gòu)的合理性問題,檢查代碼執(zhí)行安全規(guī)范、編碼規(guī)范的情況,從而提高代碼的可讀性、可修改性、可重用性,避免潛在安全性隱患,優(yōu)化代碼綜合和仿真的結(jié)果。
跨時鐘域檢查:在多時鐘域設(shè)計中,當(dāng)軟件進入一個特定的狀態(tài)或者一組特殊的數(shù)據(jù)組合正好穿過跨時鐘域邊界時,就會出現(xiàn)亞穩(wěn)態(tài)問題,跨時鐘域分析用于對VHDL/Veri log語言編寫的RTL源代碼進行多時鐘域間數(shù)據(jù)交互以及接口信號的處理情況進行分析,檢查是否缺失亞穩(wěn)態(tài)同步器,是否錯誤混用同步FIFO和異步FIFO,是否正確處理輸入輸出接口的時鐘域關(guān)系等??鐣r鐘域分析能夠有效保證亞穩(wěn)態(tài)值不會傳播到設(shè)計的其他部分而影響功能的實現(xiàn)。
功能仿真:又稱為前仿真,通過輸入一組測試激勵檢查測試結(jié)果是否與期望的結(jié)果一致,或者驗證軟件所實現(xiàn)的功能是否滿足需求的過程,可以從仿真波形圖中分析電路內(nèi)部邏輯傳遞關(guān)系的正確性。
時序仿真:又稱為后仿真,與功能仿真的原理相同,區(qū)別在于功能仿真加載到仿真器中的被測件為rtl源程序,而時序仿真加載到仿真器中的被測件為布局布線后的網(wǎng)標(biāo)文件和標(biāo)準(zhǔn)延時信息,測試最壞條件下的電路運行情況,在一定程度上反映芯片的實際運行狀態(tài)。
邏輯等效性檢查:驗證布局布線后生成的網(wǎng)表與綜合前的rtl代碼的一致性,如果對于所有可能的相同輸入,其輸出也相同,則證明兩者之間的邏輯是等效的。
靜態(tài)時序分析:靜態(tài)時序分析針對FPGA設(shè)計綜合及布局布線后生成的門級網(wǎng)表進行時序檢查,根據(jù)電路網(wǎng)表的拓撲檢查所有路徑的時序特性,以較悲觀的方式預(yù)估電路的延遲時間,對于不符合時序限制的分支電路在分析報告中作為關(guān)鍵路徑,提醒設(shè)計者針對關(guān)鍵路徑進行分析和修改,確保所有信號能夠準(zhǔn)時到達,保證電路功能的正確性。
被測件為開發(fā)方提供的被測軟件源程序和布局布線后的網(wǎng)標(biāo)和延時文件,由于確認測試后,開發(fā)方會根據(jù)測評機構(gòu)提出的問題重新修改完善軟件,同時將軟件版本升級,評測機構(gòu)會對升級版本的被測件進行回歸測試,確認修改的正確性,在每個階段的測試過程中,評測機構(gòu)都需要對被測件的版本進行管理,嚴格管控每版被測件的狀態(tài),因此在測試平臺頂層中設(shè)計了被測件版本管理功能。
測試結(jié)果顯示當(dāng)前版本所進行的測試類型的執(zhí)行結(jié)果,對于代碼規(guī)則檢查,測試結(jié)果為不符合規(guī)則的程序語句,跨時鐘域檢查顯示跨越多個時鐘域而未進行同步處理的信號,功能仿真和時序仿真顯示測試用例通過與否和仿真波形,邏輯等效性檢查結(jié)果為網(wǎng)標(biāo)文件與源程序不匹配的位置,靜態(tài)時序分析顯示建立保持時間不滿足要求的路徑。
驗證平臺的頂層結(jié)構(gòu)比較直觀,能夠清楚的展示平臺所具備的基本功能。
自動化測試是FPGA軟件測試的一個重要組成部分,它能提高測試效率,快速檢測出軟件中的性能和功能缺陷。
2.1Makefile介紹
Makefile文件是依據(jù)其特有的書寫風(fēng)格、函數(shù)和來編寫一系列的命令,這些命令執(zhí)行的先后順序可以通過規(guī)則來確定[7],為測試編寫Makefile腳本文件的好處是,測試過程的執(zhí)行只需要一個命令,一旦提供一個正確的Makefile,測試執(zhí)行所要做的唯一事情就是在shell提示符下輸入make命令,測試過程會自動完成,極大提高測試效率。但是,如何編寫我們想要Makefile文件,是自動化驗證平臺設(shè)計關(guān)鍵。
2.2Makefile腳本設(shè)計
本文編寫的Makefile文件描述了整個測試的編譯、連接、執(zhí)行等規(guī)則,其中包括:工程中的哪些源文件需要編譯以及如何編譯,需要創(chuàng)建哪些庫文件以及如何創(chuàng)建這些庫文件,需要執(zhí)行哪些類型的測試及如何進行相關(guān)類型的測試,采用哪些仿真工具進行功能仿真和時序仿真及如何進行仿真工具的選擇等。
圖1所示為本文設(shè)計的Makefile腳本結(jié)構(gòu)示意圖,在縱向上分為開發(fā)方develop、驗證方verify、驗證工具tools和驗證結(jié)果results四個方面,開發(fā)方需要提供被測FPGA軟件源程序rtl和布局布線后的網(wǎng)表netlist和標(biāo)準(zhǔn)延時文件sdf。驗證人員需要為不同測試類型設(shè)計不同的約束和測試用例;驗證工具為本平臺上支持的用于不同測試類型的不同工具;測試結(jié)果部分存放測試中自動生成的各種數(shù)據(jù),包括覆蓋率信息,仿真結(jié)果、波形文件,日志文件等。
圖1 Makefile腳本結(jié)構(gòu)圖
在橫向上根據(jù)測試類型的不同劃分為5個部分,其中代碼規(guī)則檢查CC,跨時鐘域檢查CDC,邏輯等效性檢查FM和靜態(tài)時序分析STA為靜態(tài)測試,靜態(tài)測試是指不執(zhí)行程序代碼而尋找程序代碼中可能存在的錯誤或者評估程序代碼的過程。功能仿真和時序仿真統(tǒng)稱為SIM,為動態(tài)測試,動態(tài)測試是指需要編寫測試用例來執(zhí)行程序,并驗證程序輸出結(jié)果是否滿足指定需求的過程。
對于代碼規(guī)則檢查CC,約束文件rules為依據(jù)DO-254、STARC、RMM等安全規(guī)范制定的代碼規(guī)則集,可用于所有被測件的代碼規(guī)則檢查,不需要修改。
跨時鐘域檢查CDC的約束文件dirtectives為時鐘約束文件,該文件中明確每個作為時鐘使用的信號的時鐘域,并將輸入接口約束為虛擬時鐘域。驗證人員需要依據(jù)不用的設(shè)計制定不同的約束文件。
邏輯等效性檢查FM的約束svf為等效性檢查約束文件,可通過FPGA綜合文件結(jié)果日志轉(zhuǎn)化得到。
靜態(tài)時序分析STA的timing constraints約束文件中描述時鐘頻率和接口延時等信息。
Makefile中對以上每種靜態(tài)測試類型建立工作目錄,創(chuàng)建work庫,并將當(dāng)前的邏輯工作庫映射到實際工作庫work上,然后啟動工具并加載源程序和約束文件,最后運行。
在功能仿真和時序仿真的SIM中,tb為測試平臺,用于實例化需要測試的設(shè)計,將被測件DUT與外圍器件的標(biāo)準(zhǔn)模型連接,有效模擬FPGA的真實運行環(huán)境;tc為測試用例集,測試用例是為了驗證被測件是否具有期望的功能而編寫的程序驅(qū)動,是仿真測試的最小執(zhí)行單元,為了確定被測件的全部功能是否滿足需求,需要設(shè)計多個測試用例,稱為測試用例集;vip為標(biāo)準(zhǔn)模型庫,用于模擬FPGA外圍器件的功能和接口時序,提高測試充分性。目前,已經(jīng)開發(fā)完成的vip模型主要包括3個類別:總線協(xié)議vip、算法vip、控制vip,覆蓋了現(xiàn)有型號FPGA軟件中的常用算法和協(xié)議;lib為庫文件,目前包含三大主流FPGA器件廠商Xilinx、Actel、Altera提供的庫文件,包括verilog庫和VHDL庫。
對于動態(tài)測試,Makefile中除了定義以上靜態(tài)測試的規(guī)則外,還定義了對不同的工具進行編譯、仿真和運行的配置,如仿真器精度、寄存器初始值、覆蓋率類型,優(yōu)化選項開關(guān),硬件語言類型等。
Makefile腳本的使用減少了大量人工手動點擊鼠標(biāo)和敲擊鍵盤的過程,用簡單的命令代替了復(fù)雜的操作,能夠極大地提高測試的自動化程度。
本文設(shè)計的FPGA自動化驗證平臺具有易于理解和操作流程簡單的特點,下面結(jié)合圖2所示的測試流程對不同測試類型的測試方法和測試過程進行介紹。
圖2 FPGA軟件測試流程圖
準(zhǔn)備工作:1)在linux服務(wù)器的終端計算機上創(chuàng)建一個驗證項目目錄;2)將驗證平臺的工作目錄指定到該項目目錄上;3)準(zhǔn)備相應(yīng)版本的被測件;4)準(zhǔn)備用于靜態(tài)測試的約束文件。
自動化驗證平臺支持的靜態(tài)測試類型包括代碼規(guī)則檢查、跨時鐘域檢查、邏輯一致性檢查和靜態(tài)時序分析,這4種測試類型的執(zhí)行過程非常簡單,只要執(zhí)行make命令就會輸出測試結(jié)果。
自動化驗證平臺中包含的動態(tài)測試類型有功能仿真和時序仿真,對于功能仿真,測試人員首先需要設(shè)計tb,將被測軟件程序與驅(qū)動程序建立連接關(guān)系,然后編寫用于測試各個功能點的測試用例tc,最后執(zhí)行功能仿真的make命令,測試結(jié)果數(shù)據(jù)會自動保存在數(shù)據(jù)庫中;當(dāng)所有功能仿真測試用例執(zhí)行完成之后,進行覆蓋率統(tǒng)計,對于關(guān)鍵級軟件的覆蓋率統(tǒng)計要求為語句覆蓋率100%,分支覆蓋率100%,在執(zhí)行覆蓋率統(tǒng)計的make命令時,平臺會自動調(diào)用功能仿真的數(shù)據(jù)庫,將所有執(zhí)行過的測試用例所覆蓋的語句和分支情況進行分析,并且分析結(jié)果中指出哪些語句和分支沒有覆蓋到,測試人員可以根據(jù)覆蓋率分析結(jié)果進一步添加或者完善功能仿真的測試用例,該過程能夠提高測試的充分性;對于時序仿真,要使用功能仿真時設(shè)計的tb,然后編寫用于接口時序測試的用例集并執(zhí)行時序仿真的make命令,測試所有與FPGA接口有連接關(guān)系的外圍器件接口是否滿足芯片手冊中的時序要求。
動態(tài)測試流程與靜態(tài)測試流程的主要區(qū)別在于動態(tài)測試需要搭建tb,編寫測試用例,而靜態(tài)測試不需要。
4.1配置項測試耗時分析
921樣例測試是為了驗證第三方評測機構(gòu)是否具有評測載人航天工程項目的能力。樣例FPGA軟件存在的潛在問題較多,且設(shè)計比較復(fù)雜,功能之間的交互性較強,具有典型性、代表性。本文以921樣例測試的FPGA軟件為被測件,分為兩個項目組對其進行測試,每個項目組有四名測試人員,項目組A的測試人員采用傳統(tǒng)的測試平臺,項目組B的測試人員采用FPGA自動化測試平臺,兩個項目組并行開展工作。表1所示為每個項目組在各個測試環(huán)節(jié)的耗時對比。
表1 兩個項目組耗時
表2 測試耗時對比
從表1中可以明顯看出,項目組B的耗時短,效率高,并且兩個項目組在進行測試結(jié)果匯總時,發(fā)現(xiàn)測得的問題均相同,都沒有漏測、誤測的情況。
此外,以已經(jīng)測試完成的多個項目為樣本,對測試效率進行分析。表2中左側(cè)為采用傳統(tǒng)測試平臺進行測試的項目規(guī)模、項目耗時和千行代碼耗時率,右側(cè)為采用自動化測試平臺完成的同等規(guī)模的項目耗時和千行代碼耗時率。
從表2中可以分析出,F(xiàn)PGA通用自動化測試平臺在配置項測試中的使用能夠降低千行代碼耗時率,提高測試效率,從而節(jié)約測試成本。
4.2回歸測試耗時分析
回歸測試是指修改了舊代碼后,重新進行測試以確認修改是否達到了預(yù)期的更改要求并證明修改對原有功能、性能沒有損害。
FPGA自動化測試平臺的使用能提高測試效率,不僅體現(xiàn)在配置項測試中,在回歸測試中體現(xiàn)的更為突出。對于回歸測試的傳統(tǒng)做法是重新搭建測試平臺,并編寫測試用例,過程復(fù)雜。而在使用自動化測試平臺時,只需簡單的2步即可完成。
步驟1:將被測件的版本升級。
步驟2:選擇測試類型并執(zhí)行測試用例。
簡單的2步操作之后,就可以對回歸測試結(jié)果進行分析,確認修改的正確性。
綜上所述,F(xiàn)PGA自動化測試平臺的使用,能夠使回歸測試的工作量最大化壓縮,并在實踐中驗證測試效率能夠提高60%以上。
本文設(shè)計的自動化驗證平臺結(jié)構(gòu)簡單,操作方便,并且具有測試過程自動執(zhí)行,測試結(jié)果自動保存的功能,自動化程度極高,能夠在保證測試質(zhì)量的情況下提高測試效率。
[1]張焱,任勇峰,齊蕾,等.基于FPGA的CRC校驗算法的實現(xiàn)[J].電子器件,2015,38(1):223-226.
[2]楊東,張超英.基于FPGA的電子表決器電路的設(shè)計與實現(xiàn)[J].電子科技,2015,28(1):61-63.
[3]邱云峰,秦魯東.FPGA可編程邏輯單元測試方法研究[J].計算機與數(shù)字工程,2015,43(1):65-69.
[4]劉子宜,劉暢,鄭軍.基于軟件測試技術(shù)的FPGA測試研究[J].電子技術(shù)應(yīng)用,2011,37(5):28-30.
[5]畢泗國,王力生.基于硬環(huán)境的動態(tài)FPGA測試平臺架構(gòu)設(shè)計[J].計算機工程應(yīng)用技術(shù),2013,9(1):198-199.
[6]孫黎,張濤,周珊.基于ATE的FPGA軟件自動化測試技術(shù)的研究[J].計算機技術(shù)與發(fā)展,2014,24(8):6-9.
[7]杜小平,周順平,趙秋榮.一Linux下makefile文件的分析[J].現(xiàn)代電子技術(shù),2004.(7):61-63.
Auto Verify Platform Design and Practice for FPGA Software
Fei Yanan,Zhou Hui,Zhu Weijie
(Beijing Aerospace Automatic Control Institute,Beijing100854,China)
At present,the rapidly increase of space missions shorten the development cycle,as a resulf,the application of FPGA growth greatly,improving the test efficiency of the FPGA software become a brand new challenge.The precondition of FPGA test is to build the verification platform,which has a direct impact on the test efficiency and quality.This paper designs an automatic verification platform based on Makefile script,static and dynamic test of FPGA software can be done on this platform,it also support all test types of current aerospace FPGA software.The experimental results show that the platform should be used to shorten the test time and ensure the test quality.
FPGA software test;automatic;verification platform;Makefile scripts
1671-4598(2016)05-0139-04
10.16526/j.cnki.11-4762/tp.2016.05.040
TP306
A
2015-11-24;
2016-01-04。
費亞男(1988-),女,吉林長春人,碩士研究生畢業(yè),工程師,主要從事FPGA軟件測試方向的研究。