許壽全
(江蘇自動化研究所,江蘇 連云港 222061)
隨著系統(tǒng)理論[1]和裝備軟件的發(fā)展,對芯片的要求越來越高,而FPGA(field-programmable gate array),即現(xiàn)場可編程門陣列,以其集成度高、功耗低、靈活性高等優(yōu)點而被廣泛應(yīng)用在通信、數(shù)字信號處理、雷達和聲吶領(lǐng)域[2]。如何降低FPGA軟件故障率,提高裝備質(zhì)量,保證裝備軟件可靠運行,變得尤為重要[3],也為軟件測評提出更高的要求。
FPGA軟件不同于常規(guī)軟件,因其與硬件芯片、時鐘頻率、布局布線有關(guān),需要經(jīng)過靜態(tài)分析、時序分析、動態(tài)仿真、實物驗證等步驟[4]。動態(tài)仿真[5]利用仿真軟件來模仿電路的硬件行為,從而對被測芯片的功能進行驗證,因其脫離芯片采用純軟件仿真,無法保證信號實時性,導致測試結(jié)果失真,并且后仿真速度慢,影響軟件測試效率。而實物驗證由于外部信號模擬困難,信號輸入靈活性相對軟件仿真較差,測試數(shù)據(jù)范圍窄,無法滿足軟件測試的充分性要求。
為此,該文提出一種基于VCD波形的FPGA實物自動化驗證技術(shù),該技術(shù)以VCD波形為基礎(chǔ),以硬件芯片為被測對象,既能保證輸入信號的高實時性,又能滿足靈活性需求。實驗結(jié)果表明具有較高可信度,是當前FPGA軟件測評過程的有力補充。
當前FPGA軟件測評流程主要包括:靜態(tài)檢查規(guī)則、跨時鐘域檢查、功能仿真、門級仿真、邏輯等效性驗證、動態(tài)時序仿真、靜態(tài)時序分析、實物驗證。其中,軟件仿真借助仿真軟件編寫測試激勵Testbench模擬信號輸入,同時采集被測軟件輸出信號VCD波形,進行結(jié)論判定[6]。實物驗證需要搭建芯片真實運行環(huán)境,與外圍電路、設(shè)備一同運行,通過功能表現(xiàn)驗證軟件正確性[7]。軟件仿真和實物驗證在一定程度上互為補充,是當前FPGA軟件測評主要驗證手段。但隨著裝備軟件應(yīng)用范圍及應(yīng)用場景的不斷變化,當前驗證手段已不能滿足對FPGA軟件測評越來越高的要求。
IEEE1364標準(Verilog HDL語言標準)中定義的一種ASCII文件VCD(value change dump),是通用的文件格式。它主要包含變量的預定義,頭信息以及變量值的變化信息。由于它包含信號的變化信息,等同于記錄了整個仿真的信息,VCD文件記錄了信號的完整變化信息[8]。
VCD是一種文本文件,可以使用文本編輯工具將其打開,它的結(jié)構(gòu)比較簡單,主要包含以下信息:
(1)仿真工具名稱及版本信息;
(2)VCD文件仿真生成時間;
(3)時間分辨率(timescale):表示時間單位和精度;
(4)信號的定義:每個信號用一個簡單字符來代表,并指出信號的寬度;
(5)信號的初始狀態(tài);
(6)信號的跳變信息,“#”后的數(shù)字代表動作時間。
VCD波形通用性強,易于生成,故本研究擬采用VCD波形作為設(shè)計輸入。
實物自動化驗證技術(shù)是一種結(jié)合仿真技術(shù)和實物驗證平臺的驗證技術(shù),主要用來彌補軟件仿真和硬件實現(xiàn)之間的缺口[9]。軟件仿真能夠模擬出各種各樣的測試激勵,通過軟件仿真器生成VCD波形文件。實物驗證平臺的軟件部分把VCD文件中的數(shù)據(jù)提取出來,傳給平臺上的母板,由母板把這些數(shù)據(jù)轉(zhuǎn)換為實際的電信號,發(fā)送給被測FPGA[10]。被測FPGA的響應(yīng)又通過母板上的數(shù)據(jù)采集電路讀回上位機,在上位機中進行數(shù)據(jù)的整理和比較[11],來驗證被測FPGA的實際行為和仿真過程中的行為的一致性,具體實現(xiàn)流程見圖1。實物自動化驗證技術(shù)在生成測試激勵時,采用的是和原設(shè)計相同的時鐘,能夠完全模擬出硬件電路的工作狀態(tài),而不是仿真中的軟件計算和仿真加速器中的降頻,使被測電路能夠得到最大程度的可靠性驗證。
圖1 實物自動化驗證原理
實物自動化驗證平臺架構(gòu)如圖2所示,它向被測試對象施加輸入激勵,采集輸出結(jié)果,并將其與期望結(jié)果相比較,如果采樣輸出與期望結(jié)果不一致,系統(tǒng)將生成錯誤報告。本驗證平臺的母板采用XILINX Virtex-7系列芯片(xc7v585t),該芯片具有豐富的I/O口和可用于存儲測試向量和響應(yīng)數(shù)據(jù)的28 Mbit的RAM,同時集成COMe模塊、DDR3模塊、PCI-E總線[12]和FMC接口等。計算機將VCD波形文件通過PCI-E總線傳至COMe模塊,VCD波形數(shù)據(jù)在COMe模塊中被轉(zhuǎn)換、生成測試向量,隨后測試向量在FPGA芯片處被轉(zhuǎn)化為測試激勵,測試激勵經(jīng)FMC接口映射到DUT引腳上。讀取響應(yīng)結(jié)果的過程則相反,F(xiàn)PGA通過FMC模塊讀取DUT的響應(yīng)數(shù)據(jù),并將采集到的響應(yīng)數(shù)據(jù)與預期值進行比對,最后將驗證結(jié)果返回計算機端進行顯示[13]。
圖2 實物自動化驗證平臺架構(gòu)
2.3.1 VCD波形壓縮轉(zhuǎn)換技術(shù)
VCD波形的壓縮和轉(zhuǎn)換過程如圖3所示。
圖3 VCD波形壓縮轉(zhuǎn)換過程
首先VCD波形被壓縮分解成多個dat文件,再根據(jù)時鐘域的劃分選擇其中的部分dat文件,將這些dat文件打包為測試向量,最后將測試向量通過驗證平臺生成為測試激勵注入到被測對象中。
(1)VCD波形分解壓縮技術(shù)。
VCD波形文件包含了全部仿真信息,但信號并非每個時刻都在反轉(zhuǎn),在對數(shù)據(jù)存取時,只需要記錄數(shù)據(jù)變換的過程,就可以完整地復現(xiàn)信號。通過對VCD波形文件內(nèi)部的變量進行提取,生成單變量的dat數(shù)據(jù)文件。dat文件是單引腳波形變化信息,在生成過程中,只需對引腳信號的變化時刻和對應(yīng)值進行記錄,從而實現(xiàn)信號的壓縮[14]。
波形壓縮轉(zhuǎn)換技術(shù)使母板上的FPGA能夠通過硬件電路對信號進行完整的復原,并且避免了每一時刻都需要對所有信號進行記錄的狀況,使系統(tǒng)的整體性能得到提高,確保了信號能夠被以全速率進行發(fā)送和采集。這種技術(shù)也巧妙地避開了數(shù)據(jù)存儲和傳輸?shù)男阅芷款i,使系統(tǒng)能夠以線速生成激勵、采集響應(yīng)。
對于存在多個時鐘域的待測對象,按時鐘域?qū)⒔涌谛盘杽澐譃橄嗷オ毩⒌娜舾山M,每組接口信號均包含inout、input和output信號。對于驗證平臺,同樣以時鐘域?qū)est pattern劃分為若干組,每組pattern對應(yīng)時鐘域接口信號的驅(qū)動。時鐘域的劃分方法如下:
(a)根據(jù)時鐘域pattern被劃分為若干個子pattern,例如pattern_1、pattern_2、pattern_3、pattern_4,每個pattern對應(yīng)一組測試接口信號,子pattern之間相互獨立,每個子pattern具有完整的幀結(jié)構(gòu);
(b)根據(jù)時鐘域?qū)attern加載、存儲,劃分為不同組,例如group1、group2、group3、group4;
(c)每個group均包含若干個PIN_INOUT、PIN_DRIVE和PIN_CAPTURE信號;
(d)CLK模塊提供多個時鐘,例如clk1、clk2、clk3、clk4;
(e)根據(jù)每個group中信號的時鐘,配置寄存器中g(shù)roup的時鐘,例如,如果group信號處于不同時鐘域,可以group1選clk1,group2選clk2,group3選clk3,group4選clk4;如果某兩個或多個group處于同一時鐘域,可以是group1/2都選clk1,group3/4選clk2,等等。
(2)測試向量生成技術(shù)。
測試向量由VCD波形文件轉(zhuǎn)化得到,軟件將測試向量發(fā)送到驗證平臺,驗證平臺將其轉(zhuǎn)化為激勵向量,實現(xiàn)輸入文件到測試激勵的轉(zhuǎn)化。首先定義報文,報文根據(jù)輸入文件的信息結(jié)構(gòu)特征和驗證平臺的工作原理進行設(shè)計。報文定義如圖4所示。
(a)將測試向量定義為幀結(jié)構(gòu),由幀頭和若干條描述行組成;
(b)Pattern_frame_header[31:0]:定義測試向量的基本信息,包括描述行總數(shù)目、測試向量的歸屬時鐘域等;
(c)Pattern_line_header[7:0]:定義描述行的基本信號,包括保持周期數(shù)等,對于有判斷期望值的行保持周期數(shù)必須為1;
(d)Pattern_drive[1:0]:定義PIN_DRIVE信號的驅(qū)動值,00保持原值,01驅(qū)動為高阻,10驅(qū)動為低電平,11驅(qū)動為高電平;
(e)Pattern_capture[1:0]:定義PIN_CAPTURE信號的期望值判斷,00:不關(guān)心,01:不關(guān)心,10:判斷并且期望值為低電平,11:判斷并且期望值為高電平;
(f)Pattern_inout[2:0]:定義PIN_INOUT信號為驅(qū)動或期望值,Pattern_inout[2]為方向位,0:驅(qū)動信號,1:期望值判斷;Pattern_inout[1:0]定義與Pattern_drive[1:0]一致。
圖4 測試向量報文
(3)測試激勵注入技術(shù)。
測試向量文件采用FPGA片上的block RAM搭建雙端口DPRAM組來存儲,DPRAM一端處于PCI-E_slave用戶接口時鐘域,接受來自pattern_load_ctrl寫入的數(shù)據(jù);另一端處于PIN的時鐘域,讀出數(shù)據(jù)給pin_ctrl,用于控制PIN的驅(qū)動和獲取,將測試向量映射到對應(yīng)引腳,完成測試激勵注入,注入過程如圖5所示。
圖5 測試激勵注入過程
2.3.2 輸出波形分析比較技術(shù)
(1)被驗對象輸出波形采集。
測試結(jié)果文件采用FPGA片上block RAM搭建雙端口DPRAM組來存儲。DPRAM一端接受pin_ctrl寫入的測試結(jié)果數(shù)據(jù),處于PIN的時鐘域,另一端讀出數(shù)據(jù)給result_read_ctrl,處于PCI-E_slave用戶接口時鐘域,采集過程與測試激勵注入過程相反。
(2)驗證結(jié)果文件的報文定義。
驗證結(jié)果文件是由驗證平臺生成的,它的輸入為被測對象的各輸出引腳波形。驗證平臺要處理這些波形,包括存儲、格式轉(zhuǎn)換和發(fā)送等操作。
輸出波形到驗證結(jié)果文件的轉(zhuǎn)化要結(jié)合波形信息特征和驗證平臺工作的原理進行。由于使用的是波形,這與測試向量的生成方式類似,因此對驗證結(jié)果文件的報文定義如圖6所示。
圖6 測試結(jié)果報文
(a)測試結(jié)果文件由若干結(jié)果行構(gòu)成;
(b)含有判斷期望值的描述行的所有PIN_CAPTURE信號的真實值,記為PIN_CAPTURE_VALUE[1:0],和PIN_INOUT信號的真實值,記為PIN_INOUT_VALUE[1:0],構(gòu)成一個結(jié)果行;
(c)PIN_CAPTURE_VALUE[1:0]:00,低電平,01,高電平,10/11,高阻;
(d)PIN_INOUT_VALUE[1:0]:00,低電平,01,高電平,10/11,高阻;
(e)每條結(jié)果行包含一個Result_header[15:0],[15]標記是否有判斷期望值不一致的信號,1:有錯,0:無錯,[14:0]為對應(yīng)描述行序號值;
(f)由結(jié)果行頭位置信息可以定位到測試向量的某條描述行,可以得到判斷信號的期望值和真實值。
(3)測試報告的生成方法。
結(jié)合測試向量和測試結(jié)果文件,根據(jù)測試結(jié)果文件每條行頭標記的描述行序號,將測試結(jié)果與測試向量文件進行匹配,標記出測試向量文件中所有包含判斷期望值信號的真實值,得到測試報告[15]。
實物自動化驗證平臺包含子板和母板,外部連接輔助計算機。
首先通過PCI-E接口接收VCD波形文件,驗證平臺將其壓縮轉(zhuǎn)換為測試向量,測試向量如圖7所示。
然后,向測試向量文件中mem[4]、mem[6]注入錯誤行,通過驗證平臺將測試向量加載到被測FPGA芯片。隨后驗證平臺讀取從被測FPGA上返回的輸出數(shù)據(jù),經(jīng)過與期望值比較,得到驗證報告,結(jié)果顯示在列表中。
點擊結(jié)果列表,可顯示驗證平臺波形,通過與注入錯誤行前的原始波形比較,可定位問題。注入錯誤行前原始波形和注入錯誤行后波形如圖8所示。
注入錯誤行前,波形圖中cap_error_valid信號一直為低電平,實測結(jié)果與期望一致。測試向量注入錯誤行后,cap_error_valid信號出現(xiàn)兩處高電平,導致兩處錯誤,兩處錯誤的期望值分別為0x00、0x03,真實值分別為0x02、0x01。
圖7 測試向量
圖8 注入錯誤行前、后波形
借助自動化驗證平臺進行某型星敏感器FPGA軟件測試,通過仿真建模和編寫測試激勵實現(xiàn)常規(guī)仿真測試,生成的VCD文件進行實物自動化驗證。二者進行比較發(fā)現(xiàn),實物自動化驗證平臺工作效率顯著提高,發(fā)現(xiàn)了常規(guī)FPGA仿真測試未發(fā)現(xiàn)的問題,如表1所示。
表1 測試結(jié)果對比
實驗驗證了實物自動化驗證平臺可正確轉(zhuǎn)換VCD波形,并將轉(zhuǎn)換后的測試向量加載至被測器件。通過讀取返回值,與期望值比較后生成測試報告,并可對問題進行追蹤。實驗結(jié)果表明,該平臺能夠正確施加測試激勵,有效檢驗出被測器件的錯誤,具有驗證過程簡單、驗證速度較快等優(yōu)點。
該文提出一種基于VCD波形的FPGA實物自動化驗證技術(shù),用以解決仿真測試和實物測試的弊端。實物自動化驗證技術(shù)突破了數(shù)據(jù)傳輸瓶頸,保證了數(shù)據(jù)實時性,提高了測評效率,同時VCD信號的靈活性保證了測試充分性。該技術(shù)可作為當前FPGA軟件測試的有力補充,并將在未來的FPGA軟件測試中發(fā)揮重要作用。