付浩 秦浩



摘要:FPGA(Field Programmable Gate Array,現場可編程門陣列)在開發過程除了包含傳統軟件開發過程中的需求分析、設計、編碼實現過程外,由于其自身特點,還包括邏輯綜合、布局布線并生成位流文件后固化到FPGA芯片的過程,進而得到了能夠完成系統功能的數字電路硬件。本文根據FPGA的開發流程和特點,針對測試方法進行探討,并找出與之相適應的測試流程并進行優化,對流程的比對測試表明,優化后的測試流程在保持原有流程問題挖掘能力的同時,在靜態時序分析發現問題的情況下能夠極大的提高測試工作效率。
關鍵詞:FPGA測試(FPGA test);測試方法(test method);靜態測試(static test);動態測試(dynamic test);仿真測試(simulation test);板級測試(board level test)
現今的FPGA器件內含大量的等效邏輯門,高速I/O,嵌入微處理器和RAM、高速時鐘處理等模塊,使用方便、靈活,可以使系統工程師以最快時間來實現系統原型設計、調試、快速查錯和升級等任務。通過編程可以很方便地把一個通用的FPGA芯片配置成用戶需要的硬件數字電路,因而大大加快電子產品的研發周期,降低研發成本,縮短產品上市時間。由于具有密度高、功耗低、可靠性高以及開發周期短、開發軟件投入少、芯片價格低等優點,FPGA器件廣泛應用于航天、通信、計算機硬件系統、程序控制、數字系統的測試診斷等方面。伴隨著FPGA設計規模的不斷增大和廣泛應用,其重要性和復雜程度也日益提高,因此對FPGA進行測試的需求變得尤為迫切[1,2]。本文從FPGA的開發和應用特點來進行研究,對測試方法進行探討,找出與之相適應的測試流程。
1 FPGA開發過程概述
一般來說,FPGA的開發階段要經歷需求分析、設計、編碼實現、邏輯綜合、布局布線、燒寫等過程。
需求分析:開發方與用戶就FPGA所要完成的系統級功能需求、性能需求、接口需求、可靠性需求、出錯處理機制等,將用戶需求轉化為需求規格說明、接口需求規格說明等文檔形式的系統級描述。
設計:根據需求分析結果所確定的相應需求來設計FPGA的整體結構、劃分功能模塊、確定每個功能模塊的接口方式和實現方式,以設計說明等文檔形式對FPGA進行行為級描述。
編碼實現:以硬件描述語言(HDL)的形式對FPGA進行RTL級(Register Transfer Level,寄存器傳輸級)描述,該過程編碼人員通過編寫HDL代碼來得以實現,目前主流使用VHDL和Verilog兩種語言。該過程還要根據FPGA的應用要求,以約束文件的形式來指明布局布線過程中的約束條件。
邏輯綜合:使用綜合工具將編碼實現所得到的RTL級描述轉化成最基本的與、或、非門,RAM,觸發器等基本邏輯單元組成的邏輯連接,形成FPGA的門級邏輯網表文件。
布局布線:根據所選FPGA芯片的型號,將邏輯綜合過程輸出的邏輯適配到具體的FPGA芯片上。其實現過程是按照編碼實現階段生成的約束條件要求,將邏輯單元合理地進行布局,適配到FPGA內部的固有硬件結構上,然后根據布局的拓撲結構,利用FPGA內部的各種連線資源,合理正確地連接各個邏輯單元。在該過程加入了器件位置信息以及延遲信息,形成邏輯網表文件和標準時延文件相結合的FPGA門級描述,并輸出用于燒寫目標FPGA芯片的位流文件。由于生成了基于目標FPGA的時延文件,該階段生成的邏輯網表文件比綜合階段輸出的邏輯網表文件更為接近實際工作情況。
燒寫:將布局布線生成的位流文件固化到FPGA芯片中對FPGA進行配置,使其能夠正確實現用戶需求,其最終形式為數字電路硬件。
FPGA的開發流程見圖1。
開發過程中所生成的工作產品形式包括開發文檔、HDL代碼、約束文件、網表文件、時延文件、位流文件、數字電路硬件。針對不同的工作產品,應該使用與之相匹配的測試方法。
開發文檔:包括需求規格說明、接口需求規格說明、設計說明等,其作用是將用戶需求轉化為開發人員易于從技術角度去理解的文檔形式,可以使用文檔審查的方式來發現此過程中所引入的錯誤。審查的內容至少應包括需求描述的正確性和無二義性、對用戶需求覆蓋的充分性、需求內容的可測試性等方面。
HDL代碼:HDL代碼是將開發文檔所描述的上層需求轉化為計算機能夠理解的形式,對HDL代碼的測試手段包括靜態分析、跨時鐘域分析、代碼審查和功能仿真。
約束文件:約束內容包括位置約束、區域約束和時序約束,用于約束EDA設計工具在布局布線階段盡量按照文件中的要求來完成邏輯資源的映射和連線,可采用代碼審查的方式確認所編寫的約束文件滿足上層需求要求。
網表文件:該文件用于描述與、或、非門,RAM,觸發器等基本邏輯單元的連接關系,針對邏輯綜合過程生成的網表文件可使用門級仿真的方式進行測試,針對布局布線過程生成的網表文件的測試則需要與時延文件一起進行時序仿真,需要分別對最大工況、典型工況和最小工況3種情況進行測試。
時延文件:該文件中包括目標FPGA芯片中內部邏輯單元的門延時信息和邏輯單元之間進行互連的布線延時,可采用靜態時序分析的方式來驗證是否滿足時序約束要求。
位流文件:該文件采用二進制數據的方式,將目標FPGA芯片內的全部邏輯資源配置成最終的數字電路硬件,從而使得目標FPGA能夠完成所要求的功能,因此直接對最終的數字電路硬件進行測試。
數字電路硬件:是FPGA設計的最終工作產品,采用板級測試的方式來驗證它是否正確實現了用戶需求。
根據上述描述形成了各開發過程所需要使用的測試方法見圖2。
2 FPGA測試流程探討
按照FPGA開發流程,依據各階段所需要使用的測試方法,并結合測試過程中對可能發現問題的更改以及回歸測試,形成的測試流程見圖3。
通過對各階段能夠使用的測試方法進行分析,使用的靜態測試方式包括文檔審查、靜態分析、跨時鐘域分析、代碼審查、靜態時序分析,動態測試方式包括功能仿真、門級仿真、時序仿真和板級測試。在圖3右側所示的測試流程中,靜態測試與動態測試交叉進行,又由于測試階段的功能仿真和門級仿真均耗時較長;而在開發過程中,從完成編碼實現后主要還是依賴EDA設計工具自動完成邏輯綜合以及布局布線過程[6],該階段在整個開發過程中的耗時基本可忽略不計。若在靜態時序分析時發現問題,待更改代碼后再次進行功能仿真和門級仿真的回歸測試,會嚴重影響整個開發工作的進度,鑒于此,可將靜態時序分析移至功能仿真測試前進行,即使在靜態時序分析中發現問題,對該類問題的更改在功能仿真的首輪測試工作中就能夠得到驗證,能夠大大節省開發時間。基于上述原因,將圖3的測試流程進行優化后得到的測試流程見圖4。
3 應用情況
分別采用未優化的測試流程(圖3)和優化后的測試流程(圖4)對4個FPGA測試項目進行了比對測試,對表1所示的比對測試結果進行分析可知,兩種測試流程在發現問題的能力方面差別不大;在無靜態時序分析問題時,兩種測試流程的測試耗時基本一致;在有靜態時序分析問題時,使用優化流程能夠節省近1/3的測試時間。
4 結論
使用優化后的測試流程進行FPGA測試,在保持了原有問題挖掘能力的同時,在靜態時序分析發現問題的情況下能夠極大的提高測試工作效率,從而達到提高整個FPGA產品的質量,降低開發成本,縮短開發周期的目的。
參考文獻:
[1]朱明程,熊元嬌.Actel數字系統現場集成技術[M].北京:清華大學出版社,2004.
[2]劉子宜,劉暢,鄭軍.基于軟件測試技術的FPGA測試研究.電子技術應用,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設計流程[J].微計算機信息(嵌入式與SOC).2007,23(32):201203.
作者簡介:付浩(1982),男,湖北黃岡人,工科學士,工程師,主要研究方向:FPGA測試、軟件測試、軟件工程。