付浩 秦浩
摘要:FPGA(Field Programmable Gate Array,現(xiàn)場可編程門陣列)在開發(fā)過程除了包含傳統(tǒng)軟件開發(fā)過程中的需求分析、設(shè)計、編碼實現(xiàn)過程外,由于其自身特點,還包括邏輯綜合、布局布線并生成位流文件后固化到FPGA芯片的過程,進(jìn)而得到了能夠完成系統(tǒng)功能的數(shù)字電路硬件。本文根據(jù)FPGA的開發(fā)流程和特點,針對測試方法進(jìn)行探討,并找出與之相適應(yīng)的測試流程并進(jìn)行優(yōu)化,對流程的比對測試表明,優(yōu)化后的測試流程在保持原有流程問題挖掘能力的同時,在靜態(tài)時序分析發(fā)現(xiàn)問題的情況下能夠極大的提高測試工作效率。
關(guān)鍵詞:FPGA測試(FPGA test);測試方法(test method);靜態(tài)測試(static test);動態(tài)測試(dynamic test);仿真測試(simulation test);板級測試(board level test)
現(xiàn)今的FPGA器件內(nèi)含大量的等效邏輯門,高速I/O,嵌入微處理器和RAM、高速時鐘處理等模塊,使用方便、靈活,可以使系統(tǒng)工程師以最快時間來實現(xiàn)系統(tǒng)原型設(shè)計、調(diào)試、快速查錯和升級等任務(wù)。通過編程可以很方便地把一個通用的FPGA芯片配置成用戶需要的硬件數(shù)字電路,因而大大加快電子產(chǎn)品的研發(fā)周期,降低研發(fā)成本,縮短產(chǎn)品上市時間。由于具有密度高、功耗低、可靠性高以及開發(fā)周期短、開發(fā)軟件投入少、芯片價格低等優(yōu)點,F(xiàn)PGA器件廣泛應(yīng)用于航天、通信、計算機(jī)硬件系統(tǒng)、程序控制、數(shù)字系統(tǒng)的測試診斷等方面。伴隨著FPGA設(shè)計規(guī)模的不斷增大和廣泛應(yīng)用,其重要性和復(fù)雜程度也日益提高,因此對FPGA進(jìn)行測試的需求變得尤為迫切[1,2]。本文從FPGA的開發(fā)和應(yīng)用特點來進(jìn)行研究,對測試方法進(jìn)行探討,找出與之相適應(yīng)的測試流程。
1 FPGA開發(fā)過程概述
一般來說,F(xiàn)PGA的開發(fā)階段要經(jīng)歷需求分析、設(shè)計、編碼實現(xiàn)、邏輯綜合、布局布線、燒寫等過程。
需求分析:開發(fā)方與用戶就FPGA所要完成的系統(tǒng)級功能需求、性能需求、接口需求、可靠性需求、出錯處理機(jī)制等,將用戶需求轉(zhuǎn)化為需求規(guī)格說明、接口需求規(guī)格說明等文檔形式的系統(tǒng)級描述。
設(shè)計:根據(jù)需求分析結(jié)果所確定的相應(yīng)需求來設(shè)計FPGA的整體結(jié)構(gòu)、劃分功能模塊、確定每個功能模塊的接口方式和實現(xiàn)方式,以設(shè)計說明等文檔形式對FPGA進(jìn)行行為級描述。
編碼實現(xiàn):以硬件描述語言(HDL)的形式對FPGA進(jìn)行RTL級(Register Transfer Level,寄存器傳輸級)描述,該過程編碼人員通過編寫HDL代碼來得以實現(xiàn),目前主流使用VHDL和Verilog兩種語言。該過程還要根據(jù)FPGA的應(yīng)用要求,以約束文件的形式來指明布局布線過程中的約束條件。
邏輯綜合:使用綜合工具將編碼實現(xiàn)所得到的RTL級描述轉(zhuǎn)化成最基本的與、或、非門,RAM,觸發(fā)器等基本邏輯單元組成的邏輯連接,形成FPGA的門級邏輯網(wǎng)表文件。
布局布線:根據(jù)所選FPGA芯片的型號,將邏輯綜合過程輸出的邏輯適配到具體的FPGA芯片上。其實現(xiàn)過程是按照編碼實現(xiàn)階段生成的約束條件要求,將邏輯單元合理地進(jìn)行布局,適配到FPGA內(nèi)部的固有硬件結(jié)構(gòu)上,然后根據(jù)布局的拓?fù)浣Y(jié)構(gòu),利用FPGA內(nèi)部的各種連線資源,合理正確地連接各個邏輯單元。在該過程加入了器件位置信息以及延遲信息,形成邏輯網(wǎng)表文件和標(biāo)準(zhǔn)時延文件相結(jié)合的FPGA門級描述,并輸出用于燒寫目標(biāo)FPGA芯片的位流文件。由于生成了基于目標(biāo)FPGA的時延文件,該階段生成的邏輯網(wǎng)表文件比綜合階段輸出的邏輯網(wǎng)表文件更為接近實際工作情況。
燒寫:將布局布線生成的位流文件固化到FPGA芯片中對FPGA進(jìn)行配置,使其能夠正確實現(xiàn)用戶需求,其最終形式為數(shù)字電路硬件。
FPGA的開發(fā)流程見圖1。
開發(fā)過程中所生成的工作產(chǎn)品形式包括開發(fā)文檔、HDL代碼、約束文件、網(wǎng)表文件、時延文件、位流文件、數(shù)字電路硬件。針對不同的工作產(chǎn)品,應(yīng)該使用與之相匹配的測試方法。
開發(fā)文檔:包括需求規(guī)格說明、接口需求規(guī)格說明、設(shè)計說明等,其作用是將用戶需求轉(zhuǎn)化為開發(fā)人員易于從技術(shù)角度去理解的文檔形式,可以使用文檔審查的方式來發(fā)現(xiàn)此過程中所引入的錯誤。審查的內(nèi)容至少應(yīng)包括需求描述的正確性和無二義性、對用戶需求覆蓋的充分性、需求內(nèi)容的可測試性等方面。
HDL代碼:HDL代碼是將開發(fā)文檔所描述的上層需求轉(zhuǎn)化為計算機(jī)能夠理解的形式,對HDL代碼的測試手段包括靜態(tài)分析、跨時鐘域分析、代碼審查和功能仿真。
約束文件:約束內(nèi)容包括位置約束、區(qū)域約束和時序約束,用于約束EDA設(shè)計工具在布局布線階段盡量按照文件中的要求來完成邏輯資源的映射和連線,可采用代碼審查的方式確認(rèn)所編寫的約束文件滿足上層需求要求。
網(wǎng)表文件:該文件用于描述與、或、非門,RAM,觸發(fā)器等基本邏輯單元的連接關(guān)系,針對邏輯綜合過程生成的網(wǎng)表文件可使用門級仿真的方式進(jìn)行測試,針對布局布線過程生成的網(wǎng)表文件的測試則需要與時延文件一起進(jìn)行時序仿真,需要分別對最大工況、典型工況和最小工況3種情況進(jìn)行測試。
時延文件:該文件中包括目標(biāo)FPGA芯片中內(nèi)部邏輯單元的門延時信息和邏輯單元之間進(jìn)行互連的布線延時,可采用靜態(tài)時序分析的方式來驗證是否滿足時序約束要求。
位流文件:該文件采用二進(jìn)制數(shù)據(jù)的方式,將目標(biāo)FPGA芯片內(nèi)的全部邏輯資源配置成最終的數(shù)字電路硬件,從而使得目標(biāo)FPGA能夠完成所要求的功能,因此直接對最終的數(shù)字電路硬件進(jìn)行測試。
數(shù)字電路硬件:是FPGA設(shè)計的最終工作產(chǎn)品,采用板級測試的方式來驗證它是否正確實現(xiàn)了用戶需求。
根據(jù)上述描述形成了各開發(fā)過程所需要使用的測試方法見圖2。
2 FPGA測試流程探討
按照FPGA開發(fā)流程,依據(jù)各階段所需要使用的測試方法,并結(jié)合測試過程中對可能發(fā)現(xiàn)問題的更改以及回歸測試,形成的測試流程見圖3。
通過對各階段能夠使用的測試方法進(jìn)行分析,使用的靜態(tài)測試方式包括文檔審查、靜態(tài)分析、跨時鐘域分析、代碼審查、靜態(tài)時序分析,動態(tài)測試方式包括功能仿真、門級仿真、時序仿真和板級測試。在圖3右側(cè)所示的測試流程中,靜態(tài)測試與動態(tài)測試交叉進(jìn)行,又由于測試階段的功能仿真和門級仿真均耗時較長;而在開發(fā)過程中,從完成編碼實現(xiàn)后主要還是依賴EDA設(shè)計工具自動完成邏輯綜合以及布局布線過程[6],該階段在整個開發(fā)過程中的耗時基本可忽略不計。若在靜態(tài)時序分析時發(fā)現(xiàn)問題,待更改代碼后再次進(jìn)行功能仿真和門級仿真的回歸測試,會嚴(yán)重影響整個開發(fā)工作的進(jìn)度,鑒于此,可將靜態(tài)時序分析移至功能仿真測試前進(jìn)行,即使在靜態(tài)時序分析中發(fā)現(xiàn)問題,對該類問題的更改在功能仿真的首輪測試工作中就能夠得到驗證,能夠大大節(jié)省開發(fā)時間。基于上述原因,將圖3的測試流程進(jìn)行優(yōu)化后得到的測試流程見圖4。
3 應(yīng)用情況
分別采用未優(yōu)化的測試流程(圖3)和優(yōu)化后的測試流程(圖4)對4個FPGA測試項目進(jìn)行了比對測試,對表1所示的比對測試結(jié)果進(jìn)行分析可知,兩種測試流程在發(fā)現(xiàn)問題的能力方面差別不大;在無靜態(tài)時序分析問題時,兩種測試流程的測試耗時基本一致;在有靜態(tài)時序分析問題時,使用優(yōu)化流程能夠節(jié)省近1/3的測試時間。
4 結(jié)論
使用優(yōu)化后的測試流程進(jìn)行FPGA測試,在保持了原有問題挖掘能力的同時,在靜態(tài)時序分析發(fā)現(xiàn)問題的情況下能夠極大的提高測試工作效率,從而達(dá)到提高整個FPGA產(chǎn)品的質(zhì)量,降低開發(fā)成本,縮短開發(fā)周期的目的。
參考文獻(xiàn):
[1]朱明程,熊元嬌.Actel數(shù)字系統(tǒng)現(xiàn)場集成技術(shù)[M].北京:清華大學(xué)出版社,2004.
[2]劉子宜,劉暢,鄭軍.基于軟件測試技術(shù)的FPGA測試研究.電子技術(shù)應(yīng)用,2011,37(5):2834.
[3]PAYAKAPANT,LEE NI CHUNG,SHAHIN TOUTOUNCHI.A builtin self test for testing field programmable gate array(FPGAs) using partial reconfiguration[P].US,7302625,20071127.
[4]DUTTON BF,STROUD CE.Builtin selftest of configurable logic blocks in virtex5 FPGAs[C].Proc.IEEE Southeastern Symp.on System Theory,Tullahoma,2009:230234.
[5]ASADI G.TAHOORI.M.B.Soft error rate estimation and mitigation for SRAM based FPGAs[C].ACM/SIGDA international Symposium on FieldProgrammable Gate Arrays,Monterey,2005:149160.
[6]蔣昊,李哲英.基于多種EDA工具的FPGA設(shè)計流程[J].微計算機(jī)信息(嵌入式與SOC).2007,23(32):201203.
作者簡介:付浩(1982),男,湖北黃岡人,工科學(xué)士,工程師,主要研究方向:FPGA測試、軟件測試、軟件工程。