許壽全
(江蘇自動化研究所,江蘇 連云港 222061)
隨著系統理論[1]和裝備軟件的發展,對芯片的要求越來越高,而FPGA(field-programmable gate array),即現場可編程門陣列,以其集成度高、功耗低、靈活性高等優點而被廣泛應用在通信、數字信號處理、雷達和聲吶領域[2]。如何降低FPGA軟件故障率,提高裝備質量,保證裝備軟件可靠運行,變得尤為重要[3],也為軟件測評提出更高的要求。
FPGA軟件不同于常規軟件,因其與硬件芯片、時鐘頻率、布局布線有關,需要經過靜態分析、時序分析、動態仿真、實物驗證等步驟[4]。動態仿真[5]利用仿真軟件來模仿電路的硬件行為,從而對被測芯片的功能進行驗證,因其脫離芯片采用純軟件仿真,無法保證信號實時性,導致測試結果失真,并且后仿真速度慢,影響軟件測試效率。而實物驗證由于外部信號模擬困難,信號輸入靈活性相對軟件仿真較差,測試數據范圍窄,無法滿足軟件測試的充分性要求。
為此,該文提出一種基于VCD波形的FPGA實物自動化驗證技術,該技術以VCD波形為基礎,以硬件芯片為被測對象,既能保證輸入信號的高實時性,又能滿足靈活性需求。實驗結果表明具有較高可信度,是當前FPGA軟件測評過程的有力補充。
當前FPGA軟件測評流程主要包括:靜態檢查規則、跨時鐘域檢查、功能仿真、門級仿真、邏輯等效性驗證、動態時序仿真、靜態時序分析、實物驗證。其中,軟件仿真借助仿真軟件編寫測試激勵Testbench模擬信號輸入,同時采集被測軟件輸出信號VCD波形,進行結論判定[6]。實物驗證需要搭建芯片真實運行環境,與外圍電路、設備一同運行,通過功能表現驗證軟件正確性[7]。軟件仿真和實物驗證在一定程度上互為補充,是當前FPGA軟件測評主要驗證手段。但隨著裝備軟件應用范圍及應用場景的不斷變化,當前驗證手段已不能滿足對FPGA軟件測評越來越高的要求。
IEEE1364標準(Verilog HDL語言標準)中定義的一種ASCII文件VCD(value change dump),是通用的文件格式。它主要包含變量的預定義,頭信息以及變量值的變化信息。由于它包含信號的變化信息,等同于記錄了整個仿真的信息,VCD文件記錄了信號的完整變化信息[8]。
VCD是一種文本文件,可以使用文本編輯工具將其打開,它的結構比較簡單,主要包含以下信息:
(1)仿真工具名稱及版本信息;
(2)VCD文件仿真生成時間;
(3)時間分辨率(timescale):表示時間單位和精度;
(4)信號的定義:每個信號用一個簡單字符來代表,并指出信號的寬度;
(5)信號的初始狀態;
(6)信號的跳變信息,“#”后的數字代表動作時間。
VCD波形通用性強,易于生成,故本研究擬采用VCD波形作為設計輸入。
實物自動化驗證技術是一種結合仿真技術和實物驗證平臺的驗證技術,主要用來彌補軟件仿真和硬件實現之間的缺口[9]。軟件仿真能夠模擬出各種各樣的測試激勵,通過軟件仿真器生成VCD波形文件。實物驗證平臺的軟件部分把VCD文件中的數據提取出來,傳給平臺上的母板,由母板把這些數據轉換為實際的電信號,發送給被測FPGA[10]。被測FPGA的響應又通過母板上的數據采集電路讀回上位機,在上位機中進行數據的整理和比較[11],來驗證被測FPGA的實際行為和仿真過程中的行為的一致性,具體實現流程見圖1。實物自動化驗證技術在生成測試激勵時,采用的是和原設計相同的時鐘,能夠完全模擬出硬件電路的工作狀態,而不是仿真中的軟件計算和仿真加速器中的降頻,使被測電路能夠得到最大程度的可靠性驗證。

圖1 實物自動化驗證原理
實物自動化驗證平臺架構如圖2所示,它向被測試對象施加輸入激勵,采集輸出結果,并將其與期望結果相比較,如果采樣輸出與期望結果不一致,系統將生成錯誤報告。本驗證平臺的母板采用XILINX Virtex-7系列芯片(xc7v585t),該芯片具有豐富的I/O口和可用于存儲測試向量和響應數據的28 Mbit的RAM,同時集成COMe模塊、DDR3模塊、PCI-E總線[12]和FMC接口等。計算機將VCD波形文件通過PCI-E總線傳至COMe模塊,VCD波形數據在COMe模塊中被轉換、生成測試向量,隨后測試向量在FPGA芯片處被轉化為測試激勵,測試激勵經FMC接口映射到DUT引腳上。讀取響應結果的過程則相反,FPGA通過FMC模塊讀取DUT的響應數據,并將采集到的響應數據與預期值進行比對,最后將驗證結果返回計算機端進行顯示[13]。

圖2 實物自動化驗證平臺架構
2.3.1 VCD波形壓縮轉換技術
VCD波形的壓縮和轉換過程如圖3所示。

圖3 VCD波形壓縮轉換過程
首先VCD波形被壓縮分解成多個dat文件,再根據時鐘域的劃分選擇其中的部分dat文件,將這些dat文件打包為測試向量,最后將測試向量通過驗證平臺生成為測試激勵注入到被測對象中。
(1)VCD波形分解壓縮技術。
VCD波形文件包含了全部仿真信息,但信號并非每個時刻都在反轉,在對數據存取時,只需要記錄數據變換的過程,就可以完整地復現信號。通過對VCD波形文件內部的變量進行提取,生成單變量的dat數據文件。dat文件是單引腳波形變化信息,在生成過程中,只需對引腳信號的變化時刻和對應值進行記錄,從而實現信號的壓縮[14]。
波形壓縮轉換技術使母板上的FPGA能夠通過硬件電路對信號進行完整的復原,并且避免了每一時刻都需要對所有信號進行記錄的狀況,使系統的整體性能得到提高,確保了信號能夠被以全速率進行發送和采集。這種技術也巧妙地避開了數據存儲和傳輸的性能瓶頸,使系統能夠以線速生成激勵、采集響應。
對于存在多個時鐘域的待測對象,按時鐘域將接口信號劃分為相互獨立的若干組,每組接口信號均包含inout、input和output信號。對于驗證平臺,同樣以時鐘域將Test pattern劃分為若干組,每組pattern對應時鐘域接口信號的驅動。時鐘域的劃分方法如下:
(a)根據時鐘域pattern被劃分為若干個子pattern,例如pattern_1、pattern_2、pattern_3、pattern_4,每個pattern對應一組測試接口信號,子pattern之間相互獨立,每個子pattern具有完整的幀結構;
(b)根據時鐘域將pattern加載、存儲,劃分為不同組,例如group1、group2、group3、group4;
(c)每個group均包含若干個PIN_INOUT、PIN_DRIVE和PIN_CAPTURE信號;
(d)CLK模塊提供多個時鐘,例如clk1、clk2、clk3、clk4;
(e)根據每個group中信號的時鐘,配置寄存器中group的時鐘,例如,如果group信號處于不同時鐘域,可以group1選clk1,group2選clk2,group3選clk3,group4選clk4;如果某兩個或多個group處于同一時鐘域,可以是group1/2都選clk1,group3/4選clk2,等等。
(2)測試向量生成技術。
測試向量由VCD波形文件轉化得到,軟件將測試向量發送到驗證平臺,驗證平臺將其轉化為激勵向量,實現輸入文件到測試激勵的轉化。首先定義報文,報文根據輸入文件的信息結構特征和驗證平臺的工作原理進行設計。報文定義如圖4所示。
(a)將測試向量定義為幀結構,由幀頭和若干條描述行組成;
(b)Pattern_frame_header[31:0]:定義測試向量的基本信息,包括描述行總數目、測試向量的歸屬時鐘域等;
(c)Pattern_line_header[7:0]:定義描述行的基本信號,包括保持周期數等,對于有判斷期望值的行保持周期數必須為1;
(d)Pattern_drive[1:0]:定義PIN_DRIVE信號的驅動值,00保持原值,01驅動為高阻,10驅動為低電平,11驅動為高電平;
(e)Pattern_capture[1:0]:定義PIN_CAPTURE信號的期望值判斷,00:不關心,01:不關心,10:判斷并且期望值為低電平,11:判斷并且期望值為高電平;
(f)Pattern_inout[2:0]:定義PIN_INOUT信號為驅動或期望值,Pattern_inout[2]為方向位,0:驅動信號,1:期望值判斷;Pattern_inout[1:0]定義與Pattern_drive[1:0]一致。

圖4 測試向量報文
(3)測試激勵注入技術。
測試向量文件采用FPGA片上的block RAM搭建雙端口DPRAM組來存儲,DPRAM一端處于PCI-E_slave用戶接口時鐘域,接受來自pattern_load_ctrl寫入的數據;另一端處于PIN的時鐘域,讀出數據給pin_ctrl,用于控制PIN的驅動和獲取,將測試向量映射到對應引腳,完成測試激勵注入,注入過程如圖5所示。

圖5 測試激勵注入過程
2.3.2 輸出波形分析比較技術
(1)被驗對象輸出波形采集。
測試結果文件采用FPGA片上block RAM搭建雙端口DPRAM組來存儲。DPRAM一端接受pin_ctrl寫入的測試結果數據,處于PIN的時鐘域,另一端讀出數據給result_read_ctrl,處于PCI-E_slave用戶接口時鐘域,采集過程與測試激勵注入過程相反。
(2)驗證結果文件的報文定義。
驗證結果文件是由驗證平臺生成的,它的輸入為被測對象的各輸出引腳波形。驗證平臺要處理這些波形,包括存儲、格式轉換和發送等操作。
輸出波形到驗證結果文件的轉化要結合波形信息特征和驗證平臺工作的原理進行。由于使用的是波形,這與測試向量的生成方式類似,因此對驗證結果文件的報文定義如圖6所示。

圖6 測試結果報文
(a)測試結果文件由若干結果行構成;
(b)含有判斷期望值的描述行的所有PIN_CAPTURE信號的真實值,記為PIN_CAPTURE_VALUE[1:0],和PIN_INOUT信號的真實值,記為PIN_INOUT_VALUE[1:0],構成一個結果行;
(c)PIN_CAPTURE_VALUE[1:0]:00,低電平,01,高電平,10/11,高阻;
(d)PIN_INOUT_VALUE[1:0]:00,低電平,01,高電平,10/11,高阻;
(e)每條結果行包含一個Result_header[15:0],[15]標記是否有判斷期望值不一致的信號,1:有錯,0:無錯,[14:0]為對應描述行序號值;
(f)由結果行頭位置信息可以定位到測試向量的某條描述行,可以得到判斷信號的期望值和真實值。
(3)測試報告的生成方法。
結合測試向量和測試結果文件,根據測試結果文件每條行頭標記的描述行序號,將測試結果與測試向量文件進行匹配,標記出測試向量文件中所有包含判斷期望值信號的真實值,得到測試報告[15]。
實物自動化驗證平臺包含子板和母板,外部連接輔助計算機。
首先通過PCI-E接口接收VCD波形文件,驗證平臺將其壓縮轉換為測試向量,測試向量如圖7所示。
然后,向測試向量文件中mem[4]、mem[6]注入錯誤行,通過驗證平臺將測試向量加載到被測FPGA芯片。隨后驗證平臺讀取從被測FPGA上返回的輸出數據,經過與期望值比較,得到驗證報告,結果顯示在列表中。
點擊結果列表,可顯示驗證平臺波形,通過與注入錯誤行前的原始波形比較,可定位問題。注入錯誤行前原始波形和注入錯誤行后波形如圖8所示。
注入錯誤行前,波形圖中cap_error_valid信號一直為低電平,實測結果與期望一致。測試向量注入錯誤行后,cap_error_valid信號出現兩處高電平,導致兩處錯誤,兩處錯誤的期望值分別為0x00、0x03,真實值分別為0x02、0x01。

圖7 測試向量

圖8 注入錯誤行前、后波形
借助自動化驗證平臺進行某型星敏感器FPGA軟件測試,通過仿真建模和編寫測試激勵實現常規仿真測試,生成的VCD文件進行實物自動化驗證。二者進行比較發現,實物自動化驗證平臺工作效率顯著提高,發現了常規FPGA仿真測試未發現的問題,如表1所示。

表1 測試結果對比
實驗驗證了實物自動化驗證平臺可正確轉換VCD波形,并將轉換后的測試向量加載至被測器件。通過讀取返回值,與期望值比較后生成測試報告,并可對問題進行追蹤。實驗結果表明,該平臺能夠正確施加測試激勵,有效檢驗出被測器件的錯誤,具有驗證過程簡單、驗證速度較快等優點。
該文提出一種基于VCD波形的FPGA實物自動化驗證技術,用以解決仿真測試和實物測試的弊端。實物自動化驗證技術突破了數據傳輸瓶頸,保證了數據實時性,提高了測評效率,同時VCD信號的靈活性保證了測試充分性。該技術可作為當前FPGA軟件測試的有力補充,并將在未來的FPGA軟件測試中發揮重要作用。