李艷龍,楊 琪,王雪峰
基于SV-DPI的圖像壞元修正FPGA自動化驗證
李艷龍,楊 琪,王雪峰
(西安微電子技術(shù)研究所,陜西 西安 710065)
為實現(xiàn)紅外圖像壞元修正FPGA(field programmable gate array)的快速驗證,提高測試覆蓋性,設(shè)計了基于SV-DPI(SystemVerilog-direct programming interface)的FPGA自動化驗證平臺。采用DPI(direct programming interface)編程接口技術(shù),實現(xiàn)了SystemVerilog平臺調(diào)用C++編程語言,構(gòu)建了針對紅外圖像壞元數(shù)據(jù)的生成和檢測修正模型,建立了兩種語言在事務(wù)級(transaction level)模型的通信。結(jié)果表明相對于傳統(tǒng)驗證方法,該平臺結(jié)構(gòu)簡單,可以快速實現(xiàn)激勵產(chǎn)生、參考模型構(gòu)建、測試結(jié)果自動比對等功能,實現(xiàn)了紅外圖像壞元檢測與修正FPGA的自動化測試,功能覆蓋率達(dá)到100%,有效縮短FPGA測試平臺搭建和調(diào)試周期,提高了測試效率和測試質(zhì)量。
自動化測試;FPGA驗證;紅外圖像壞元修正;驗證平臺
紅外焦平面陣列成像系統(tǒng)以其結(jié)構(gòu)簡單、探測能力強、穩(wěn)定性好、功耗低等優(yōu)點而廣泛應(yīng)用于武器裝備領(lǐng)域,在目標(biāo)跟蹤等方面起到十分重要的作用[1]。然而紅外焦平面器件受材料、工藝的影響,不可避免地存在壞元[2]。壞元大小通常僅有一個像素,表現(xiàn)為亮點或暗點,會直接影響探測器的成像質(zhì)量,從而影響與圖像處理相關(guān)的目標(biāo)檢測、目標(biāo)識別等處理結(jié)果。通常需要對未知壞元位置的圖像進(jìn)行壞元檢測與修正[3]等預(yù)處理。
圖像預(yù)處理數(shù)據(jù)量較大、實時性要求高,F(xiàn)PGA芯片是目標(biāo)硬件的理想選擇之一[4]。隨著設(shè)計復(fù)雜度和規(guī)模的不斷加大,F(xiàn)PGA在實際應(yīng)用中發(fā)生故障的可能性也相應(yīng)提高,將直接影響產(chǎn)品的可靠性[5]。測試驗證是保證FPGA設(shè)計質(zhì)量的重要環(huán)節(jié),隨著型號任務(wù)的不斷增加,測試人員需要具備在短時間內(nèi)完成對復(fù)雜FPGA設(shè)計進(jìn)行充分、全面驗證的能力[6]。圖像規(guī)模不斷增大,處理算法日趨復(fù)雜,驗證難度也在隨之增加,甚至由于無法構(gòu)建出這類復(fù)雜驗證模型而不能采取傳統(tǒng)的驗證方法,影響了驗證效率和完備性。FPGA設(shè)計具有靈活性高、功能差異化大的特點,測試驗證時需要針對性的編寫測試組件,難以建立高復(fù)用性測試平臺,然而人工搭建測試平臺耗時占整個功能驗證周期的20%~30%。因此,要提高FPGA的驗證效率,必須對測試平臺搭建進(jìn)行優(yōu)化和改進(jìn)。
目前,對于紅外圖像壞元檢測與修正FPGA的測試驗證手段一般為樣例數(shù)據(jù)對比、采用UVM(universal verification methodology)驗證方法學(xué)、使用Matlab進(jìn)行聯(lián)合仿真。但現(xiàn)有驗證方法都存在各自的局限性:
1)使用設(shè)計師提供的樣例數(shù)據(jù)進(jìn)行結(jié)果比對時,其測試用例會存在局限性,如提供的數(shù)據(jù)是否正確有效,是否能夠保證功能覆蓋性,是否提供了異常情況的激勵等,無法保證驗證工作的獨立性和有效性。
2)UVM驗證方法學(xué)雖然具有移植性好、重用性高的優(yōu)點,尤其適合大規(guī)模IC(integrated circuit)設(shè)計的驗證,在團(tuán)隊協(xié)作、維護(hù)方面優(yōu)勢明顯[7]。但UVM驗證平臺的搭建比較復(fù)雜,相比于直接測試用例,UVM學(xué)習(xí)成本更高、搭建驗證平臺的時間更多。因此,使用SystemVerilog直接測試的方式更有效率。
3)HDL(hardware designed language)仿真工具結(jié)合Matlab進(jìn)行數(shù)據(jù)生成、數(shù)據(jù)對比也可以實現(xiàn)復(fù)雜算法類FPGA的驗證。由于測試過程中需要對大量測試用例進(jìn)行隨機化,生成及導(dǎo)入數(shù)據(jù)的操作靈活性較差,耗費大量時間,難以分析驗證結(jié)果。
基于現(xiàn)有驗證方法的局限性,為了快速實現(xiàn)紅外圖像壞元檢測與修正算法建模,快速建立自動化驗證平臺,減少驗證過程的人為干預(yù),提高驗證效率和覆蓋性,本文設(shè)計了基于SV-DPI(SystemVerilog-direct programming interface)的圖像壞元檢測與修正FPGA自動化驗證平臺,采用SystemVerilog驗證語言結(jié)合DPI編程接口技術(shù),實現(xiàn)了在仿真驗證平臺中調(diào)用C++語言,采用面向?qū)ο缶幊?,來快速實現(xiàn)紅外圖像壞元檢測與修正算法功能的建模。
基于SV-DPI的自動化驗證利用SystemVerilog的直接編程接口(DPI)[8]連接C++編程語言,實現(xiàn)SystemVerilog和C++語言之間的數(shù)據(jù)通信。該平臺結(jié)合了C++編程語言和SystemVerilog驗證語言的優(yōu)點,實現(xiàn)激勵隨機約束生成,自動化結(jié)果檢查的功能。
信號級通信屬于較低級別的模型,通信效率較低。當(dāng)需要創(chuàng)建復(fù)雜設(shè)備模型時,面向?qū)ο笳Z言能極大提高設(shè)計效率,使用事務(wù)級通信會使仿真的速度加快。本文驗證方案的核心設(shè)計原則是使用SystemVerilog建立基本架構(gòu),包括TestBench、驅(qū)動器、監(jiān)控器、檢查器等;使用C++實現(xiàn)復(fù)雜算法,如數(shù)據(jù)生成器、參考模型等;建立兩種語言之間的事務(wù)級(transaction level)模型通信,最終實現(xiàn)自動化驗證。
開展測試前首先要分析被測對象的功能特點,梳理測試功能點,并設(shè)計測試用例。
由于應(yīng)用領(lǐng)域及使用場景的特殊性,要求FPGA設(shè)計具有高可靠性、高容錯性以及妥善處理異常情況的能力。作為獨立測試人員,需要在有限時間內(nèi)全面、充分地設(shè)計測試用例,保證測試質(zhì)量。所以測試用例不僅應(yīng)該覆蓋所有正常情況,還應(yīng)涉及到邊界內(nèi)、邊界上、邊界外,特殊位置(壞元位置在圖像邊緣、出現(xiàn)連續(xù)壞元),壞元數(shù)量的性能測試、恢復(fù)性測試等。采用受約束的隨機激勵和直接測試激勵相結(jié)合的方式,可以有效保證測試的覆蓋性。
驗證平臺主體架構(gòu)基于SystemVerilog語言編寫,圖像數(shù)據(jù)生成以及參考模型部分使用C++語言編寫??蓪崿F(xiàn)多種圖像數(shù)據(jù)(正常圖像、存在不同壞元的圖像)的自動化隨機生成,圖像數(shù)據(jù)的驅(qū)動注入和監(jiān)控,圖像數(shù)據(jù)的輸出采集,與參考模型數(shù)據(jù)的自動化比對功能。
驗證平臺能夠在HDL仿真工具下運行,整體結(jié)構(gòu)如圖1所示。
圖1 驗證平臺整體結(jié)構(gòu)
驗證平臺由6個模塊組成,分別是用例控制模塊(Case_n)、圖像數(shù)據(jù)生成模塊(C++_gen_data)、圖像數(shù)據(jù)注入模塊(IN_agent)、圖像數(shù)據(jù)輸出采集模塊(OUT_agent)、參考模型模塊(C++_reference_model)和數(shù)據(jù)結(jié)果比對模塊(checker)。圖像數(shù)據(jù)生成和參考模型模塊使用C++語言編寫,其他模塊使用SystemVerilog語言編寫,各模塊功能如下:
1)用例控制模塊的功能是確定需要執(zhí)行的驗證用例,控制圖像數(shù)據(jù)的生成,通知參考模型當(dāng)前的工作參數(shù)。
2)圖像數(shù)據(jù)生成模塊接收用例控制模塊參數(shù)后,通過算法生成相應(yīng)的圖像數(shù)據(jù),通過DPI接口將數(shù)據(jù)傳遞給圖像數(shù)據(jù)注入模塊。
3)圖像數(shù)據(jù)注入模塊接收圖像數(shù)據(jù),按照器件時序?qū)?shù)據(jù)驅(qū)動到DUT(design under test)上,同時使用內(nèi)部monitor將端口數(shù)據(jù)回采后輸出到參考模型。
4)圖像數(shù)據(jù)輸出采集模塊能夠按照輸出接口時序協(xié)議,監(jiān)控DUT輸出的圖像數(shù)據(jù),并將數(shù)據(jù)打包傳輸給數(shù)據(jù)比對模塊,同時監(jiān)測接口時序,實現(xiàn)接口時序的自動化檢查。
5)參考模型模塊模擬了DUT功能,將注入端口輸入到DUT的數(shù)據(jù)作為參考模型輸入,使用用例控制模塊的配置參數(shù)進(jìn)行數(shù)據(jù)處理,處理后的數(shù)據(jù)傳輸?shù)綌?shù)據(jù)結(jié)果比對模塊。
6)數(shù)據(jù)結(jié)果比對模塊將圖像數(shù)據(jù)輸出采集模塊采集到的圖像數(shù)據(jù)與參考模型計算的數(shù)據(jù)進(jìn)行數(shù)據(jù)比對,輸出結(jié)果信息和數(shù)據(jù)信息,實現(xiàn)數(shù)據(jù)的自動化檢查。
圖像數(shù)據(jù)生成模塊使用C++程序模擬測試圖像的生成,使用類(class)實現(xiàn)數(shù)據(jù)生成算法,靜態(tài)封裝為OOP(object oriented programming)接口供SystemVerilog調(diào)用。該模塊接收用例控制模塊的輸入?yún)?shù)生成不同的測試圖像,采用約束隨機方式生成。具體過程為先隨機生成一幀正常的圖像,然后再將不同數(shù)量、位置、像素值的壞元隨機注入到圖像中,并記錄壞元的坐標(biāo)和數(shù)量。最終將生成的一幀圖像傳遞到圖像數(shù)據(jù)注入模塊。圖像數(shù)據(jù)的關(guān)鍵信息均能夠打印到控制臺上,方便驗證人員調(diào)試。所生成的圖像數(shù)據(jù)能夠確保覆蓋全部測試用例,保證測試覆蓋性。邏輯流程如圖2所示。
程序結(jié)構(gòu)圖如圖3所示。圖像數(shù)據(jù)生成的C++程序結(jié)構(gòu)中包含4個類:ImgEngine、ImgGen、BadPointGen、BPInsert。ImgGen用于生成原始圖像;BadPointGen用于生成壞元的信息,包含了壞元位置、壞元類型、壞元位置類型;BPInsert用于實現(xiàn)壞元的注入,該模塊接收壞元特征信息,將壞元替換到中心像素中;ImgEngine為頂層控制邏輯,實例化上述類,實現(xiàn)單個壞元、連續(xù)壞元注入以及壞元位置的遍歷等測試場景。
圖2 圖像生成邏輯框圖
參考模型模塊使用C++程序模擬圖像壞元檢測與修正功能,該模塊將最終處理完的圖像數(shù)據(jù)輸出到數(shù)據(jù)結(jié)果比對模塊進(jìn)行比對。同樣使用類(class)實現(xiàn)參考模型處理算法。接收AD模塊傳來的圖像數(shù)據(jù),對×區(qū)域像素進(jìn)行排序,分別找到最大值,最小值和中值。接收用例模塊傳來的配置閾值等有關(guān)參數(shù),來決定是否進(jìn)行壞元修正。如果滿足閾值要求則使用中值替換當(dāng)前像素,記錄當(dāng)前像素位置,修正計數(shù)器加一,邏輯流程如圖4所示。
圖3 圖像數(shù)據(jù)生成程序結(jié)構(gòu)圖
圖4 參考模型邏輯流程圖
該紅外圖像壞元檢測與修正FPGA所實現(xiàn)的功能為,將輸入圖像經(jīng)AD(analog digital)接口進(jìn)行采集,處理后的數(shù)據(jù)經(jīng)LVDS輸出。外部DSP作為控制主機,能夠通過總線接口配置閾值等參數(shù)。處理過程是對輸入的圖像逐幀先檢測壞元再修正。處理方式以待測像素點為中心,在3×3鄰域內(nèi)進(jìn)行判別,對比當(dāng)前待測像素點與鄰域內(nèi)其他像素點之間的亮度差值,當(dāng)差值大于設(shè)定的壞元閾值時,則判斷當(dāng)前待測像素點為壞元。最后采用中值濾波算法進(jìn)行壞元修正。
根據(jù)上述功能提取測試功能點,設(shè)計了如表1所示的測試用例。
依照上述自動化驗證方案設(shè)計測試平臺,其中3×3區(qū)域內(nèi)尋找中值和極值的算法采用快速中值濾波,原理如圖5所示。對于圖中的圖像區(qū)域,首先進(jìn)行一次列排序,得到A、B、C由大到小的排列順序。再進(jìn)行一次行排序,得到由大到小的排列順序,則得到最大值maxmax、最小值minmin、和中值Med[minmax,medmed,maxmin][9]。
利用該自動化驗證平臺,執(zhí)行了如表1所示中的10個測試用例,實現(xiàn)了圖像壞元測試激勵的隨機約束生成,數(shù)據(jù)結(jié)果自動化檢查,測試點覆蓋了邊界內(nèi)、邊界上、邊界外,特殊位置(壞元位置在圖像邊緣、出現(xiàn)連續(xù)壞元),壞元數(shù)量的性能測試,恢復(fù)性測試,全面覆蓋了DUT的測試充分性要求。結(jié)果表明本文構(gòu)建的紅外圖像壞元數(shù)據(jù)的生成和檢測修正模型實現(xiàn)正確有效,設(shè)計的測試用例覆蓋全面、可控,實現(xiàn)了圖像壞元檢測與修正FPGA的自動化測試,功能覆蓋率達(dá)到100%,確保了測試效率和測試質(zhì)量。
與傳統(tǒng)驗證方法相比具備如下優(yōu)點:
1)通過高級語言實現(xiàn)紅外圖像壞元檢測與修正復(fù)雜模型比HDL語言更加容易,并且FPGA中實現(xiàn)的算法一般都會有成熟、可靠的高級語言模型,直接調(diào)用這些模型能夠極大提高平臺搭建速度。相比使用傳統(tǒng)單純采用SystemVerilog以及UVM驗證方法,極大提高了平臺搭建速度,節(jié)省時間超過40%(如表2所示),從而有效縮短了FPGA整個功能驗證周期,提高了驗證效率。
表1 測試用例及執(zhí)行情況表
圖5 快速中值濾波
表2 搭建平臺時間對比
2)相對于UVM驗證方法學(xué),該平臺結(jié)構(gòu)簡單、化繁為簡,具備良好的靈活性和易維護(hù)性,不需要配置復(fù)雜的環(huán)境參數(shù),降低了測試人員的學(xué)習(xí)成本,縮短了開發(fā)調(diào)試時間,非常適合FPGA的測試驗證。無需調(diào)用UVM大量的資源庫,計算機資源占用更少,結(jié)合事務(wù)級模型通信使得運行效率得到提高。
本文實現(xiàn)了基于SV-DPI的紅外圖像壞元修正FPGA自動化驗證,采用SystemVerilog語言和C++語言相結(jié)合的驗證方案,構(gòu)建了針對紅外圖像壞元數(shù)據(jù)的生成和檢測修正模型,通過DPI實現(xiàn)SystemVerilog平臺與事務(wù)級C++模型的通信。該驗證方案結(jié)合了SystemVerilog事物處理能力強大的優(yōu)勢,以及C++實現(xiàn)模型成熟、穩(wěn)定、重用性高的優(yōu)點,相對于傳統(tǒng)驗證方法,平臺結(jié)構(gòu)簡單,可以快速實現(xiàn)激勵產(chǎn)生、參考模型構(gòu)建、測試結(jié)果自動化檢查等功能,實現(xiàn)了紅外圖像壞元檢測與修正FPGA的自動化測試,功能覆蓋率達(dá)到100%,有效縮短了測試平臺搭建時間,提高了測試效率和測試質(zhì)量,切實有效地保證產(chǎn)品的可靠性。
[1] 白俊奇, 蔣怡亮,, 等. 紅外焦平面陣列探測器盲元檢測算法研究[J]. 紅外技術(shù), 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]. 上海大學(xué)學(xué)報: 自然科學(xué)版, 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的圖像中值濾波器的硬件實現(xiàn)[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測試技術(shù)研究[J]. 計算機技術(shù)與發(fā)展, 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功能驗證自動化技術(shù)研究與實踐[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] 習(xí)建博, 朱鵬, 崔留爭. 基于UVM方法的FPGA驗證技術(shù)[J]. 電子科學(xué)技術(shù), 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系統(tǒng)驗證[M]. 2版: 張春等譯. 北京: 科學(xué)出版社, 2009.
Chris Spear.[M]. 2ndEdition: Translated by ZHANG Chun , et al. Beijing: Science Press, 2009.
[9] 韓團(tuán)軍. 快速中值濾波算法研究及其FPGA硬件實現(xiàn)[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測試、測試自動化技術(shù)。E-mail:470968999@qq.com。