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