李艷龍,楊 琪,王雪峰
基于SV-DPI的圖像壞元修正FPGA自動化驗證
李艷龍,楊 琪,王雪峰
(西安微電子技術研究所,陜西 西安 710065)
為實現紅外圖像壞元修正FPGA(field programmable gate array)的快速驗證,提高測試覆蓋性,設計了基于SV-DPI(SystemVerilog-direct programming interface)的FPGA自動化驗證平臺。采用DPI(direct programming interface)編程接口技術,實現了SystemVerilog平臺調用C++編程語言,構建了針對紅外圖像壞元數據的生成和檢測修正模型,建立了兩種語言在事務級(transaction level)模型的通信。結果表明相對于傳統驗證方法,該平臺結構簡單,可以快速實現激勵產生、參考模型構建、測試結果自動比對等功能,實現了紅外圖像壞元檢測與修正FPGA的自動化測試,功能覆蓋率達到100%,有效縮短FPGA測試平臺搭建和調試周期,提高了測試效率和測試質量。
自動化測試;FPGA驗證;紅外圖像壞元修正;驗證平臺
紅外焦平面陣列成像系統以其結構簡單、探測能力強、穩定性好、功耗低等優點而廣泛應用于武器裝備領域,在目標跟蹤等方面起到十分重要的作用[1]。然而紅外焦平面器件受材料、工藝的影響,不可避免地存在壞元[2]。壞元大小通常僅有一個像素,表現為亮點或暗點,會直接影響探測器的成像質量,從而影響與圖像處理相關的目標檢測、目標識別等處理結果。通常需要對未知壞元位置的圖像進行壞元檢測與修正[3]等預處理。
圖像預處理數據量較大、實時性要求高,FPGA芯片是目標硬件的理想選擇之一[4]。隨著設計復雜度和規模的不斷加大,FPGA在實際應用中發生故障的可能性也相應提高,將直接影響產品的可靠性[5]。測試驗證是保證FPGA設計質量的重要環節,隨著型號任務的不斷增加,測試人員需要具備在短時間內完成對復雜FPGA設計進行充分、全面驗證的能力[6]。圖像規模不斷增大,處理算法日趨復雜,驗證難度也在隨之增加,甚至由于無法構建出這類復雜驗證模型而不能采取傳統的驗證方法,影響了驗證效率和完備性。FPGA設計具有靈活性高、功能差異化大的特點,測試驗證時需要針對性的編寫測試組件,難以建立高復用性測試平臺,然而人工搭建測試平臺耗時占整個功能驗證周期的20%~30%。因此,要提高FPGA的驗證效率,必須對測試平臺搭建進行優化和改進。
目前,對于紅外圖像壞元檢測與修正FPGA的測試驗證手段一般為樣例數據對比、采用UVM(universal verification methodology)驗證方法學、使用Matlab進行聯合仿真。但現有驗證方法都存在各自的局限性:
1)使用設計師提供的樣例數據進行結果比對時,其測試用例會存在局限性,如提供的數據是否正確有效,是否能夠保證功能覆蓋性,是否提供了異常情況的激勵等,無法保證驗證工作的獨立性和有效性。
2)UVM驗證方法學雖然具有移植性好、重用性高的優點,尤其適合大規模IC(integrated circuit)設計的驗證,在團隊協作、維護方面優勢明顯[7]。但UVM驗證平臺的搭建比較復雜,相比于直接測試用例,UVM學習成本更高、搭建驗證平臺的時間更多。因此,使用SystemVerilog直接測試的方式更有效率。
3)HDL(hardware designed language)仿真工具結合Matlab進行數據生成、數據對比也可以實現復雜算法類FPGA的驗證。由于測試過程中需要對大量測試用例進行隨機化,生成及導入數據的操作靈活性較差,耗費大量時間,難以分析驗證結果。
基于現有驗證方法的局限性,為了快速實現紅外圖像壞元檢測與修正算法建模,快速建立自動化驗證平臺,減少驗證過程的人為干預,提高驗證效率和覆蓋性,本文設計了基于SV-DPI(SystemVerilog-direct programming interface)的圖像壞元檢測與修正FPGA自動化驗證平臺,采用SystemVerilog驗證語言結合DPI編程接口技術,實現了在仿真驗證平臺中調用C++語言,采用面向對象編程,來快速實現紅外圖像壞元檢測與修正算法功能的建模。
基于SV-DPI的自動化驗證利用SystemVerilog的直接編程接口(DPI)[8]連接C++編程語言,實現SystemVerilog和C++語言之間的數據通信。該平臺結合了C++編程語言和SystemVerilog驗證語言的優點,實現激勵隨機約束生成,自動化結果檢查的功能。
信號級通信屬于較低級別的模型,通信效率較低。當需要創建復雜設備模型時,面向對象語言能極大提高設計效率,使用事務級通信會使仿真的速度加快。本文驗證方案的核心設計原則是使用SystemVerilog建立基本架構,包括TestBench、驅動器、監控器、檢查器等;使用C++實現復雜算法,如數據生成器、參考模型等;建立兩種語言之間的事務級(transaction level)模型通信,最終實現自動化驗證。
開展測試前首先要分析被測對象的功能特點,梳理測試功能點,并設計測試用例。
由于應用領域及使用場景的特殊性,要求FPGA設計具有高可靠性、高容錯性以及妥善處理異常情況的能力。作為獨立測試人員,需要在有限時間內全面、充分地設計測試用例,保證測試質量。所以測試用例不僅應該覆蓋所有正常情況,還應涉及到邊界內、邊界上、邊界外,特殊位置(壞元位置在圖像邊緣、出現連續壞元),壞元數量的性能測試、恢復性測試等。采用受約束的隨機激勵和直接測試激勵相結合的方式,可以有效保證測試的覆蓋性。
驗證平臺主體架構基于SystemVerilog語言編寫,圖像數據生成以及參考模型部分使用C++語言編寫。可實現多種圖像數據(正常圖像、存在不同壞元的圖像)的自動化隨機生成,圖像數據的驅動注入和監控,圖像數據的輸出采集,與參考模型數據的自動化比對功能。
驗證平臺能夠在HDL仿真工具下運行,整體結構如圖1所示。

圖1 驗證平臺整體結構
驗證平臺由6個模塊組成,分別是用例控制模塊(Case_n)、圖像數據生成模塊(C++_gen_data)、圖像數據注入模塊(IN_agent)、圖像數據輸出采集模塊(OUT_agent)、參考模型模塊(C++_reference_model)和數據結果比對模塊(checker)。圖像數據生成和參考模型模塊使用C++語言編寫,其他模塊使用SystemVerilog語言編寫,各模塊功能如下:
1)用例控制模塊的功能是確定需要執行的驗證用例,控制圖像數據的生成,通知參考模型當前的工作參數。
2)圖像數據生成模塊接收用例控制模塊參數后,通過算法生成相應的圖像數據,通過DPI接口將數據傳遞給圖像數據注入模塊。
3)圖像數據注入模塊接收圖像數據,按照器件時序將數據驅動到DUT(design under test)上,同時使用內部monitor將端口數據回采后輸出到參考模型。
4)圖像數據輸出采集模塊能夠按照輸出接口時序協議,監控DUT輸出的圖像數據,并將數據打包傳輸給數據比對模塊,同時監測接口時序,實現接口時序的自動化檢查。
5)參考模型模塊模擬了DUT功能,將注入端口輸入到DUT的數據作為參考模型輸入,使用用例控制模塊的配置參數進行數據處理,處理后的數據傳輸到數據結果比對模塊。
6)數據結果比對模塊將圖像數據輸出采集模塊采集到的圖像數據與參考模型計算的數據進行數據比對,輸出結果信息和數據信息,實現數據的自動化檢查。
圖像數據生成模塊使用C++程序模擬測試圖像的生成,使用類(class)實現數據生成算法,靜態封裝為OOP(object oriented programming)接口供SystemVerilog調用。該模塊接收用例控制模塊的輸入參數生成不同的測試圖像,采用約束隨機方式生成。具體過程為先隨機生成一幀正常的圖像,然后再將不同數量、位置、像素值的壞元隨機注入到圖像中,并記錄壞元的坐標和數量。最終將生成的一幀圖像傳遞到圖像數據注入模塊。圖像數據的關鍵信息均能夠打印到控制臺上,方便驗證人員調試。所生成的圖像數據能夠確保覆蓋全部測試用例,保證測試覆蓋性。邏輯流程如圖2所示。
程序結構圖如圖3所示。圖像數據生成的C++程序結構中包含4個類:ImgEngine、ImgGen、BadPointGen、BPInsert。ImgGen用于生成原始圖像;BadPointGen用于生成壞元的信息,包含了壞元位置、壞元類型、壞元位置類型;BPInsert用于實現壞元的注入,該模塊接收壞元特征信息,將壞元替換到中心像素中;ImgEngine為頂層控制邏輯,實例化上述類,實現單個壞元、連續壞元注入以及壞元位置的遍歷等測試場景。

圖2 圖像生成邏輯框圖
參考模型模塊使用C++程序模擬圖像壞元檢測與修正功能,該模塊將最終處理完的圖像數據輸出到數據結果比對模塊進行比對。同樣使用類(class)實現參考模型處理算法。接收AD模塊傳來的圖像數據,對×區域像素進行排序,分別找到最大值,最小值和中值。接收用例模塊傳來的配置閾值等有關參數,來決定是否進行壞元修正。如果滿足閾值要求則使用中值替換當前像素,記錄當前像素位置,修正計數器加一,邏輯流程如圖4所示。

圖3 圖像數據生成程序結構圖

圖4 參考模型邏輯流程圖
該紅外圖像壞元檢測與修正FPGA所實現的功能為,將輸入圖像經AD(analog digital)接口進行采集,處理后的數據經LVDS輸出。外部DSP作為控制主機,能夠通過總線接口配置閾值等參數。處理過程是對輸入的圖像逐幀先檢測壞元再修正。處理方式以待測像素點為中心,在3×3鄰域內進行判別,對比當前待測像素點與鄰域內其他像素點之間的亮度差值,當差值大于設定的壞元閾值時,則判斷當前待測像素點為壞元。最后采用中值濾波算法進行壞元修正。
根據上述功能提取測試功能點,設計了如表1所示的測試用例。
依照上述自動化驗證方案設計測試平臺,其中3×3區域內尋找中值和極值的算法采用快速中值濾波,原理如圖5所示。對于圖中的圖像區域,首先進行一次列排序,得到A、B、C由大到小的排列順序。再進行一次行排序,得到由大到小的排列順序,則得到最大值maxmax、最小值minmin、和中值Med[minmax,medmed,maxmin][9]。
利用該自動化驗證平臺,執行了如表1所示中的10個測試用例,實現了圖像壞元測試激勵的隨機約束生成,數據結果自動化檢查,測試點覆蓋了邊界內、邊界上、邊界外,特殊位置(壞元位置在圖像邊緣、出現連續壞元),壞元數量的性能測試,恢復性測試,全面覆蓋了DUT的測試充分性要求。結果表明本文構建的紅外圖像壞元數據的生成和檢測修正模型實現正確有效,設計的測試用例覆蓋全面、可控,實現了圖像壞元檢測與修正FPGA的自動化測試,功能覆蓋率達到100%,確保了測試效率和測試質量。
與傳統驗證方法相比具備如下優點:
1)通過高級語言實現紅外圖像壞元檢測與修正復雜模型比HDL語言更加容易,并且FPGA中實現的算法一般都會有成熟、可靠的高級語言模型,直接調用這些模型能夠極大提高平臺搭建速度。相比使用傳統單純采用SystemVerilog以及UVM驗證方法,極大提高了平臺搭建速度,節省時間超過40%(如表2所示),從而有效縮短了FPGA整個功能驗證周期,提高了驗證效率。

表1 測試用例及執行情況表

圖5 快速中值濾波

表2 搭建平臺時間對比
2)相對于UVM驗證方法學,該平臺結構簡單、化繁為簡,具備良好的靈活性和易維護性,不需要配置復雜的環境參數,降低了測試人員的學習成本,縮短了開發調試時間,非常適合FPGA的測試驗證。無需調用UVM大量的資源庫,計算機資源占用更少,結合事務級模型通信使得運行效率得到提高。
本文實現了基于SV-DPI的紅外圖像壞元修正FPGA自動化驗證,采用SystemVerilog語言和C++語言相結合的驗證方案,構建了針對紅外圖像壞元數據的生成和檢測修正模型,通過DPI實現SystemVerilog平臺與事務級C++模型的通信。該驗證方案結合了SystemVerilog事物處理能力強大的優勢,以及C++實現模型成熟、穩定、重用性高的優點,相對于傳統驗證方法,平臺結構簡單,可以快速實現激勵產生、參考模型構建、測試結果自動化檢查等功能,實現了紅外圖像壞元檢測與修正FPGA的自動化測試,功能覆蓋率達到100%,有效縮短了測試平臺搭建時間,提高了測試效率和測試質量,切實有效地保證產品的可靠性。
[1] 白俊奇, 蔣怡亮,, 等. 紅外焦平面陣列探測器盲元檢測算法研究[J]. 紅外技術, 2011, 33(4): 233-235, 240.
BAI Junqi,JIANG Yiliang,ZHAO Chunguang, et al. Blind-pixel detection algorithm for infrared focal plane array detector[J]., 2011, 33(4): 233-235, 240.
[2] 李炎冰, 梁少峰, 陳洪亮, 等. 紅外焦平面陣列壞元檢測算法[J]. 電光與控制, 2015, 22(3): 69-71.
LI Yanbing, LIANG Shaofeng, CHEN Hongliang, et al. A bad-pixel detection algorithm for infrared focal plane array[J]., 2015, 22(3): 69-71.
[3] 胡云生, 胡越黎, 燕明, 等. 一種圖像壞點檢測及修正算法[J]. 上海大學學報: 自然科學版, 2018, 24(5): 755-762.
HU Yunsheng, HU Yueli, YAN Ming, et al. Detection and correction of dead pixels in an image[J].: Natrual Science, 2018, 24(5): 755-762.
[4] 李雷鳴, 張煥春, 張波. 一種基于FPGA的圖像中值濾波器的硬件實現[J]. 電子工程師, 2004(2): 48-50.
LI Leiming, ZHANG Huanchun, ZHANG Bo. The realization of image median filter based on FPGA[J]., 2004(2): 48-50.
[5] 周珊, 楊雅雯, 王金波. 航天高可靠FPGA測試技術研究[J]. 計算機技術與發展, 2017, 27(3): 1-5.
ZHOU Shan, YANG Yawen, WANG Jinbo. Research on high reliable FPGA test technology on space flight[J]., 2017, 27(3): 1-5.
[6] 朱偉杰, 陽徽, 費亞男, 等. FPGA功能驗證自動化技術研究與實踐[J].航天控制, 2017, 35(2): 72-77, 98.
ZHU Weijie, YANG Hui, FEI Yanan, et al. Research and practice of automation technology on FPGA function verification[J]., 2017, 35(2): 72-77, 98.
[7] 習建博, 朱鵬, 崔留爭. 基于UVM方法的FPGA驗證技術[J]. 電子科學技術, 2016, 3(3): 204-207.
XI Jianbo, ZHU Peng, CUI Liuzheng. FPGA verification technology based on UVM[J]., 2016, 3(3): 204-207.
[8] 克里斯·斯皮爾. SystemVerilog系統驗證[M]. 2版: 張春等譯. 北京: 科學出版社, 2009.
Chris Spear.[M]. 2ndEdition: Translated by ZHANG Chun , et al. Beijing: Science Press, 2009.
[9] 韓團軍. 快速中值濾波算法研究及其FPGA硬件實現[J]. 電子器件, 2017, 40(3): 697-701.
HAN Tuanjun. Research of fast median filtering algorithm and hardware implementation based on FPGA[J]., 2017, 40(3): 697-701.
Automatic Verification of Field Programmable Gate Arrays for Dead Pixel Correction
LI Yanlong,YANG Qi,WANG Xuefeng
(Xi’an Microelectronic Technique Institute, Xi’an 710065, China)
To accelerate the simulation speed and improve the coverage of verification for a field programmable gate array (FPGA) implemented with dead pixel correction of an infrared image, an FPGA automatic verification platform based on SystemVerilog-Direct programming interface(SV-DPI) was designed. Using DPI programming interface technology, the C++ programming language was invoked by the SV platform. A generator and correction model for dead pixel data of infrared images was built. This established a communication between two languages on the transaction level. The results show that, compared with the traditional verification method, the proposed platform is simple in structure and can quickly generate a test vector, construct a reference model, and check results automatically. It realizes automated verification for an FPGA implemented with dead pixel detection and correction of an infrared image. The function coverage can reach 100%. It effectively shortens the period of construction and debugging for the FPGA verification platform and improves the efficiency and quality of verification.
automated testing, FPGA verification, dead pixel correction of infrared image, verification platform
TP306
A
1001-8891(2020)12-1192-06
2020-04-20;
2020-06-21.
李艷龍(1988-),男,吉林白城人,工程師,碩士。研究方向為FPGA測試、測試自動化技術。E-mail:470968999@qq.com。