申春妮
(南京電子技術研究所,江蘇 南京 210039)
復雜可編程邏輯器件(CPLD)和現場可編程門陣列(FPGA)的出現,給數字電路系統設計帶來了革命性的變革,極大地縮短了數字系統研發的周期和成本.由于其規模大、 集成度高、 處理速度快以及編程靈活等優點,在航空航天等軍工領域可編程邏輯器件中得到廣泛應用,常用于重要性和復雜度較高的產品,因此對FPGA/CPLD設計的質量和可靠性要求越來越高[1,2].原本在軍用領域中作為硬件管理不作測試要求的可編程邏輯器件現已逐漸納入測試范圍.
本文針對FPGA軟件特點及其測試的現狀,結合軟件測試技術對FPGA軟件測試的過程進行了研究,重點闡述了雷達FPGA軟件測試設計與實現的過程,最后對雷達某波控機FPGA軟件進行了實例分析.
雷達裝備中FPGA應用越來越多,很多重要功能也是通過FPGA實現,但相關測試不充分,需求分析采用對設計文件追蹤的方式,只進行對設計依據的羅列和追蹤覆蓋,獨立性不強,依賴于設計文檔質量,容易遺漏; 代碼審查采用人工審查方式,只關注代碼實現,不設計報告(概設、 詳設)的一致性,甚至有時以不設計方的聯席走查代替測試人員的獨立審查/走查; 仿真驗證弱化仿真,以板級確認測試代替; 時序分析只關注主要時鐘路徑,缺少對接口的時序分析,約束不完備,時有遺漏等.產品中由于FPGA軟件缺陷引起的故障日益增多.由于FPGA時序器件的特性以及開發過程中測試驗證的不充分,導致不少FPGA類軟件問題在系統測試或外場使用時才暴露出來,例如:
某型號微波著陸接收模塊FPGA軟件模塊偶發出現低溫上電后內部本振模塊不工作,導致微波著陸功能方位、 仰角數據輸出無效.
某型號綜合分機接口控制FPGA軟件在系統測試時,話音突然中斷.經故障排查,原因為FPGA中斷處理缺陷.
這些問題偶發難以復現,環境依賴性強,問題排查困難,嚴重影響了FPGA產品質量和科研生產進度.
根據GJB 9433-2018《軍用可編程邏輯器件軟件測試要求》,FPGA軟件測試的基本步驟與常規軟件測試相同,都需要進行測試策劃、 測試設計與實現、 測試執行和測試總結4個階段[3].但是由于FPGA 軟件的特殊性,其測試過程中涉及到功能仿真、 時序仿真、 靜態時序分析、 邏輯等效性驗證、 跨時鐘域檢查等區別于傳統軟件測試的內容[4].因此,本節針對FPGA軟件特點研究FPGA軟件測試過程,對其測試流程的各個階段的具體內容進行了重新規劃設計,FPGA軟件測試過程如圖 1 所示[5].
測試方根據測評任務書、 合同或其他等效文件,以及被測軟件的任務書或需求規格說明等設計文檔進行測試策劃,編制軟件測試計劃.軟件測試計劃應經過評審,并應受到變更控制和版本控制.
測試方根據軟件測試計劃和軟件測試需求規格說明進行測試設計與實現.測試設計的工作要求如下: 選定測試工具,建立并驗證測試環境,確定測試優先級,設計測試用例集,編制測試說明.軟件測試說明應經過評審,得到相關人員的認可,并應受到變更控制和版本控制.同時需要根據情況進行修訂.
根據所選定的測試環境、 測試工具以及設計的測試用例、 測試方法,執行規定的測試項目和內容.在執行過程中應如實地記錄測試過程、 結果(必要時包含中間結果)以及發現問題的現象,填寫軟件問題報告單.
測試方應根據軟件任務書、 軟件需求規格說明、 測試計劃、 測試說明、 測試記錄、 軟件問題報告單,對測試工作和被測軟件進行分析與評價.編寫測評報告.對測試工作的分析與評價,總結測試文檔和測試環境的變化情況及相應原因,總結測試問題及采取的措施情況; 在測試異常終止時,說明未能被測試活動充分覆蓋的范圍及其理由.對被測軟件的分析與評價,總結發現的軟件問題及每一個問題的處理和確認情況; 總結通過測試被測軟件與軟件任務書或者軟件需求之間的差異,可提出改進建議.
雷達FPGA軟件測試包括靜態測試和動態測試兩部分[6].靜態測試一般在動態測試之前完成,FPGA軟件靜態測試技術包括文檔審查、 靜態分析、 代碼審查、 跨時鐘域檢查、 靜態時序分析和邏輯等效性分析6種測試類型.FPGA軟件動態測試技術包括功能仿真測試和時序仿真測試[7,8].
3.1.1 文檔審查
針對FPGA軟件特點,特別是有別于傳統雷達軟件檢查內容,對文檔中內外接口狀態、 時序圖及時序參數、 寄存器/存儲器的定義、 同步電路、 異步電路設計方式、 跨時鐘域設計方式、 復位電路設計原則及要求、 對IP核的論證、 驗證情況和使用說明、 設計和實現約束描述等方面并結合文檔的完整性、 規范性、 正確性和一致性等逐項列出審查條目.
3.1.2 靜態分析
靜態分析依據FPGA軟件編碼規范,使用編碼規則檢查工具對時鐘域復位規則、 可綜合性規則、 異步時鐘域檢查、 時序約束檢查及編碼風格等檢查是否符合編碼規范,輔助測試人員發現可編程邏輯器件問題.
雷達FPGA軟件編碼規范參考《軍用可編程邏輯器件軟件編程語言安全子集》、 《航空裝備FPGA編碼要求》,覆蓋總裝下發的《軍用可編程邏輯器件軟件編程語言安全子集》要求,包含12類強制或推薦規范,具體編碼規范如表 1 所示。
目前市場上主流的編碼規格檢查工具主要有LEDA,HDL designer,Alint,Vlint等.
3.1.3 代碼審查
代碼審查要對代碼和設計的一致性、 代碼執行標準的情況、 代碼邏輯表達的正確性、 代碼結構的合理性以及代碼的可讀性等進行審查.測試人員需要仔細閱讀相關文檔,對設計充分熟悉,然后對照代碼審查單,逐行認真閱讀代碼進行人工審查.人工審查中,重點關注無法通過工具自動分析發現的各種問題,如算法實現的問題、 編碼與設計不符的問題、 代碼設計中存在的邏輯問題等.
3.1.4 靜態時序分析
靜態時序分析是利用靜態時序分析工具來分析邏輯綜合或布局布線后得到的靜態時序信息,根據信息提示找出不滿足建立/保持時間路徑以及不符合約束路徑的過程.
靜態時序分析至少對可編程邏輯器件軟件最好、 最差和典型工況下建立、 保持時間、 異步復位的恢復/移除時間進行分析記錄,時序分析的路徑覆蓋率為100%.
除了集成開發環境ISE自帶的靜態時序分析工具TimingAnalyzer和Quartus自帶的靜態時序分析工具TimeQuest外,目前業界使用較多的第三方靜態時序分析工具是Synopsys公司的PrimeTime.
3.1.5 跨時鐘域檢查
跨時鐘域檢查利用跨時鐘域檢查工具對可編程邏輯器件軟件中多時鐘域之間的交互問題進行檢查,避免亞穩態等不穩定的電路設計.
跨時鐘域檢查工具包括: Mentor Graphics公司的0in CDC工具,SpyGlass(CDC)工具.
3.1.6 邏輯等效性檢查
邏輯等效性檢查用于檢查綜合或布局布線過程中引入的錯誤,避免最終所得到的邏輯電路與設計存在偏差.
邏輯等效性分析要對可編程邏輯器件的RTL級代碼、 邏輯綜合之后的網表文件、 布局布線之后的網表文件兩兩之間開展的邏輯一致性檢查.
測試要借助于等效性分析工具對文件之間的等效性進行分析,人工對結果信息進行二次分析,對問題進行追蹤和定位.
Synopys公司的Formality工具支持FPGA的邏輯等效性檢查,驗證RTL代碼和綜合后網表,綜合后網表和布局布線后網表是否邏輯一致.
3.2.1 功能仿真
功能仿真在不考慮構成電路邏輯和門的時間延遲前提下,著重考核電路在理想環境下的行為與設計構想之間的一致性.
功能仿真用例測試類型覆蓋功能、 性能、 接口、 可靠性、 余量、 強度、 恢復性、 邊界等,并給出動態仿真結果.
專業仿真測試環境包括: ModelSim、 Questa、 VCS-MX等.結合EDA開發工具QuartusII、 ISE、 Vivado等,能支持Verilog、 VHDL、 Systemverilog和SystemC的RTL仿真、 綜合后網表仿真、 時序仿真等[9,10].
3.2.2 時序仿真
時序仿真是針對加入器件延時和線延時的布局布線后網表,使用動態分析的方法考核電路與設計構想之間的一致性.
測試可編程邏輯器件軟件布局布線后的邏輯網表功能和時序是否滿足設計要求,通過仿真工具運行與功能仿真相同的激勵,對可編程邏輯器件軟件布局布線后的邏輯網表進行仿真,分別添加3種工況(最好、 最壞、 典型)下的SDF文件,對功能和時序進行測試.
以軟件測試為基礎的FPGA 測試技術已經在雷達的各個分系統中得到了成功的應用.以雷達某波控機FPGA軟件測試為例,該系統以Xilinx公司的XQ2V3000芯片為宿主機,采用Verilog語言開發,實現了SAR天線的波束控制功能,配合內定標器完成靈活的定標功能.同時采集SAR天線監測數據,向SAR監控定時器傳遞天線和波控機監測數據.程序清單如表 2 所示.

表 2 波控FPGA軟件程序清單
測試人員根據測試總體方案的要求對該系統進行了文檔審查、 靜態分析、 靜態時序分析、 代碼審查、 功能測試/功能仿真測試、 時序仿真測試共6種測試類型的測試.搭建了仿真測試環境,進行了各模塊的功能驗證,開展時序仿真進行時序分析.測試結果如下.
測試人員對開發方提供的需求規格說明和設計說明兩份文檔的完整性、 準確性、 一致性和規范性進行了審查,發現文檔內容欠完整、 準確,缺接口信號定義、 時序關系、 協議數據定義等描述.軟件開發人員修改了需求和設計文檔.
靜態分析采用Alint工具自定義的規則集進行編碼規則檢查,發現頂層文件有門級邏輯、 模塊缺端口信號和內部信號說明、 模塊端口信號排列不符合格式要求等問題,提出改進建議后均進行了相應處理.
代碼審查發現代碼和設計文檔不一致后全部修改正確.
靜態時序分析采用ISE自帶的靜態時序分析工具TimingAnalyzer對軟件布局布線后的門級網表在最好、 典型、 最差工況下進行時序分析檢查,分析檢查結果為: 未發現時序錯誤,滿足建立時間、 保持時間時序要求.靜態時序分析結果如表 3 所示.

表 3 靜態時序分析結果
采用Altera Modelsim工具在仿真環境下,對獨立功能的各個子模塊進行比較全面的功能仿真,仿真語言為Verilog HDL.

圖 2 FPGA軟件仿真驗證平臺Fig.2 FPGA software simulation verification platform
仿真驗證平臺如圖 2 所示,對不同的子模塊寫不同的test_bench,test_bench產生激勵輸出作為待測子模塊的輸入,子模塊受輸入激勵產生輸出,觀察輸出結果,驗證子模塊功能.
對各級子模塊進行仿真測試,在對接口波形測試中發現,串行數據與需求規格說明文檔中的定義不一致,需求文檔中的協議描述有誤,因此對該問題不更動代碼,修改需求文檔.
布局布線后,設計中添加了延遲信息.相應總結報告如下:
系統時鐘clk: 外部時鐘i_clk 經過BUFG延遲1 595 ps得到,作為各個子模塊的輸入時鐘;
看門狗o_wdi: 相比于內部同步時鐘延遲約567 ps (輸出信號);
系統復位信號rst_4: 相比于內部同步時鐘延遲約568 ps,作為其余各個子模塊的復位信號(內部寄存器);
時序報告的結果表明內部邏輯各路徑滿足建立保持時間時序要求.
經過測試以及相應的修改和回歸,該FPGA 系統代碼質量和可靠性得到了提高,系統功能、 性能得到了驗證.
針對雷達FPGA軟件質量管控中存在的問題,以規范、 可操作性為目標,開展FPGA軟件測試與驗證研究.研究并制定符合雷達FPGA軟件的編碼規范、 測試規范,同時在實際項目中試點驗證,實現持續改進.及早及時地發現和關閉FPGA 設計開發過程中存在的缺陷,提高了硬件描述語言的編寫質量和系統的可靠性,并對FPGA的電路行為進行了有效的驗證.最終保證FPGA 產品的質量,提升客戶的滿意度.