朱巖巖,方建勇,許壽全
(江蘇自動(dòng)化研究所,江蘇連云港 222061)
物理原型驗(yàn)證方法是一種即耗時(shí)又昂貴[1]的ASIC驗(yàn)證方法。對(duì)于每一種芯片,物理原型驗(yàn)證要求要有獨(dú)立的原型設(shè)計(jì),并且在對(duì)這些芯片進(jìn)行實(shí)時(shí)驗(yàn)證時(shí),要考慮所有可能的測(cè)試向量輸入,這是一項(xiàng)十分棘手的工作。
近年來(lái), 隨著現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array,FPGA)技術(shù)的快速發(fā)展,FPGA以其高靈活性、高集成度、高速度、低功耗和低成本[2]的優(yōu)勢(shì),成為物理原型驗(yàn)證方法的良好載體?;贔PGA的物理原型驗(yàn)證方法在ASIC驗(yàn)證領(lǐng)域得到了越來(lái)越廣泛的應(yīng)用。這種方法一方面可使設(shè)計(jì)者可以較好把握硬件設(shè)計(jì)的物理特性[3],另一方面可以獲得相比較于傳統(tǒng)RTL仿真工具1000倍以上的仿真速度[4]。
目前, 國(guó)外許多半導(dǎo)體廠商已經(jīng)使用FPGA完成物理原型驗(yàn)證。如飛思卡爾半導(dǎo)體應(yīng)用基于FPGA的IC原型驗(yàn)證技術(shù), 加速了芯片開(kāi)發(fā)速度、降低了成本、提高了流片成功率[5]。而我國(guó)ASIC驗(yàn)證起步較晚,與發(fā)達(dá)國(guó)家還存在較大差異,隨著芯片驗(yàn)證的需求不斷增加,國(guó)內(nèi)對(duì)FPGA物理原型驗(yàn)證方法的研究也日益重視。VCD(Value Change Dump)波形文件是 Verilog HDL語(yǔ)言標(biāo)準(zhǔn)的一部分,它記錄了仿真過(guò)程中的輸入輸出引腳變化信息[6]。在ASIC驗(yàn)證中,VCD波形文件被廣泛應(yīng)用于功能驗(yàn)證,如ATE(Automatic Test Equipment)測(cè)試設(shè)備[7]等??紤]到FPGA技術(shù)不斷進(jìn)步的優(yōu)勢(shì),針對(duì)中小規(guī)模的ASIC設(shè)計(jì),將VCD波形與FPGA原型驗(yàn)證相結(jié)合,實(shí)現(xiàn)基于VCD波形的FPGA原型驗(yàn)證平臺(tái),能夠替代昂貴的測(cè)試設(shè)備,有效降低成本,且具有較好的靈活性。
基于此種背景,本文研究開(kāi)發(fā)了一套基于FPGA的硬件和相應(yīng)軟件組成的物理原型驗(yàn)證平臺(tái)。驗(yàn)證平臺(tái)的輸入使用了VCD仿真波形文件。在本驗(yàn)證平臺(tái)中,驗(yàn)證平臺(tái)首先對(duì)VCD波形進(jìn)行預(yù)處理,將其下載到FPGA中,并進(jìn)一步應(yīng)用到實(shí)時(shí)環(huán)境中。而從被測(cè)對(duì)象(DUT)返回的響應(yīng)數(shù)據(jù)經(jīng)驗(yàn)證平臺(tái)驗(yàn)證后被傳回上位機(jī),上位機(jī)軟件可顯示該驗(yàn)證結(jié)果。驗(yàn)證人員或設(shè)計(jì)人員可以分析驗(yàn)證結(jié)果,找到設(shè)計(jì)的問(wèn)題所在。本研究所開(kāi)發(fā)的驗(yàn)證平臺(tái)提供了一個(gè)易于使用,驗(yàn)證成本低廉的驗(yàn)證環(huán)境,彌補(bǔ)了模擬仿真與硬件驗(yàn)證之間的不足。
VCD仿真波形文件包含的時(shí)序信息十分豐富。在將VCD波形文件作為驗(yàn)證平臺(tái)的輸入時(shí),要對(duì)VCD波形文件進(jìn)行處理,提取其內(nèi)部的有效信息。處理VCD波形文件的方法是先對(duì)VCD文件進(jìn)行周期化切割,測(cè)試時(shí)序中的定時(shí)沿,最后進(jìn)行向量編譯[8]。本研究對(duì)VCD波形的處理正是采用了這種方法,將VCD波形文件按照其特定格式以時(shí)間周期切割成比特流,測(cè)定其定時(shí)沿后,以報(bào)文形式編譯為測(cè)試向量。
VCD波形文件的處理只是對(duì)其內(nèi)容信息的提取,使用VCD波形文件作為驗(yàn)證平臺(tái)的輸入時(shí)需要另外注意一些問(wèn)題。一般來(lái)說(shuō), 這些問(wèn)題包括[9]:
1) 每次對(duì)數(shù)據(jù)進(jìn)行處理時(shí),數(shù)據(jù)大小是不同的,另外,所有信號(hào)的時(shí)鐘頻率也不盡相同,單獨(dú)操縱它們無(wú)疑會(huì)使硬件設(shè)計(jì)變得非常復(fù)雜;
2) 每個(gè)接口信號(hào)都需要存儲(chǔ),這增加了存儲(chǔ)的需求;
3) 驗(yàn)證平臺(tái)需要存儲(chǔ)每個(gè)時(shí)間的變化以及該時(shí)間點(diǎn)所對(duì)應(yīng)的邏輯值;另一方面,由于時(shí)序信息比較豐富,比對(duì)這些值需要耗費(fèi)較長(zhǎng)的時(shí)間。
由于使用VCD波形文件會(huì)面對(duì)這些問(wèn)題,硬件平臺(tái)的搭建過(guò)程要充分考慮VCD仿真波形文件的特點(diǎn)。本研究正基于此對(duì)驗(yàn)證平臺(tái)進(jìn)行了設(shè)計(jì),提出了合理的硬件結(jié)構(gòu)和具體可行的設(shè)計(jì)方案。
FPGA能夠提供功能驗(yàn)證所需的速度,I/O[10]和可伸縮性[11]。本驗(yàn)證平臺(tái)使用的FPGA芯片是XILINX Virtex-7系列芯片(XC7V585T)。該芯片提供了豐富的I/O口和可用于存儲(chǔ)測(cè)試向量和響應(yīng)數(shù)據(jù)的28 Mbit的RAM。FPGA驗(yàn)證平臺(tái)架構(gòu)如圖1所示。其中包括了COMe模塊、FPGA模塊、DDR3模塊、PCIe總線和FMC接口等。
在工作流程上,COMe模塊對(duì)VCD波形進(jìn)行處理生成測(cè)試向量,測(cè)試向量在FPGA轉(zhuǎn)化為測(cè)試激勵(lì),測(cè)試激勵(lì)經(jīng)FMC接口傳到DUT上。讀取響應(yīng)過(guò)程則相反,FPGA通過(guò)FMC讀取DUT的響應(yīng)數(shù)據(jù),并將其與預(yù)期值進(jìn)行比對(duì),最后將驗(yàn)證結(jié)果返回PC端進(jìn)行顯示。
圖1 FPGA驗(yàn)證平臺(tái)架構(gòu)
FPGA驗(yàn)證輔助軟件用于連接模擬器和硬件環(huán)境。該軟件的體系結(jié)構(gòu)如圖2所示,該軟件獨(dú)立于任何計(jì)算機(jī)輔助設(shè)計(jì)(CAD)環(huán)境,并能運(yùn)行于Windows操作系統(tǒng)中。它需要一個(gè)VCD波形文件作為輸入,該軟件讀取輸入并將其轉(zhuǎn)換為一組兼容的Test Pattern。
軟件首先對(duì)輸入進(jìn)行處理生成Test Pattern,接著將Test Pattern輸出到驗(yàn)證平臺(tái)。驗(yàn)證的結(jié)果從驗(yàn)證平臺(tái)傳回,再通過(guò)軟件處理存儲(chǔ)為標(biāo)準(zhǔn)VCD文件。
圖2 FPGA驗(yàn)證輔助軟件架構(gòu)
由于待測(cè)對(duì)象的接口信號(hào)屬于多個(gè)時(shí)鐘域,如果以時(shí)鐘域的形式將接口信號(hào)劃分為多個(gè)組,每個(gè)組分別對(duì)應(yīng)不同的時(shí)鐘,那么硬件設(shè)計(jì)上不僅會(huì)變得更為簡(jiǎn)單,還可以解決多時(shí)鐘接口信號(hào)的問(wèn)題。
本研究基于FPGA驗(yàn)證平臺(tái)將時(shí)鐘域劃分為相互獨(dú)立的4個(gè)組,每組的接口信號(hào)均包含input、output和inout信號(hào)。對(duì)于驗(yàn)證平臺(tái),同樣以時(shí)鐘域?qū)est Pattern復(fù)制劃分為4個(gè)組,每組Pattern對(duì)應(yīng)于時(shí)鐘域接口信號(hào)的驅(qū)動(dòng)。時(shí)鐘域的劃分方法如下:
1) 根據(jù)時(shí)鐘域?qū)attern劃分為4個(gè)子Pattern,如Pattern-1, Pattern-2, Pattern-3, Pattern-4,每個(gè)Pattern對(duì)應(yīng)一組驗(yàn)證接口信號(hào),Pattern之間相互獨(dú)立,每個(gè)Pattern具有完整的幀結(jié)構(gòu);
2) 主機(jī)依次load這幾個(gè)Pattern,等待所有Pattern完成加載后才可以開(kāi)始驗(yàn)證;
3) 根據(jù)時(shí)鐘域通過(guò)Pin-ctrl模塊將Pattern加載和存儲(chǔ),將此過(guò)程劃分為對(duì)應(yīng)不同時(shí)鐘域的幾個(gè)組,如Group1,Group2,Group3,Group4;
4) 每個(gè)Group均包含若干個(gè)PIN-DRIVE, PIN-CAPTURE, PIN-INOUT信號(hào);
5) CLK模塊提供多個(gè)時(shí)鐘,分別對(duì)應(yīng)于劃分的多個(gè)Pattern,如clk1,clk2,clk3,clk4;
6) 配置寄存器,定義每個(gè)group選用哪個(gè)時(shí)鐘。如果都處于不同時(shí)鐘域,可以是Group1選clk1,Group2選clk2,Group3選clk3,Group4選clk4;如果某兩個(gè)或多個(gè)Group處于同一時(shí)鐘域,可以是Group1/2/3都選clk1,Group4選clk4。
VCD文件中含有豐富的接口信號(hào)信息,在驗(yàn)證過(guò)程中,FPGA需要對(duì)這些接口信號(hào)進(jìn)行不斷處理,但 FPGA上的片上資源有限,不能滿足所有數(shù)據(jù)的處理需求。為解決此問(wèn)題,驗(yàn)證平臺(tái)引入了存儲(chǔ)器來(lái)緩沖數(shù)據(jù)。
驗(yàn)證平臺(tái)在FPGA上外掛兩個(gè)2 G的DDR3存儲(chǔ)器,分別用于緩沖來(lái)自CPU的測(cè)試向量和來(lái)自FPGA的響應(yīng)數(shù)據(jù)。在驗(yàn)證過(guò)程中,CPU產(chǎn)生的測(cè)試向量先寫(xiě)入到一塊DDR3上,FPGA以讀方式讀取此塊DDR3的測(cè)試向量;FPGA產(chǎn)生的響應(yīng)數(shù)據(jù)以寫(xiě)方式寫(xiě)入另一塊DDR3,CPU從這塊DDR3上讀取響應(yīng)數(shù)據(jù)。其工作原理圖如圖3所示。
圖3 數(shù)據(jù)緩沖原理圖
存儲(chǔ)器的引入相當(dāng)于在CPU與FPGA之間插入一個(gè)緩沖器,用來(lái)解決數(shù)據(jù)流量過(guò)大引起的存儲(chǔ)問(wèn)題,減輕了FPGA的負(fù)擔(dān)。這種設(shè)計(jì)方法同時(shí)也改善了CPU與FPGA的數(shù)據(jù)傳輸速度不匹配的問(wèn)題,使得FPGA可以實(shí)現(xiàn)更靈活的程序設(shè)計(jì)。
本驗(yàn)證平臺(tái)采用了CPU+FPGA的架構(gòu),其中CPU負(fù)責(zé)生成測(cè)試向量,FPGA擔(dān)任協(xié)處理器,主要用于測(cè)試向量注入的解算和驗(yàn)證結(jié)果對(duì)比的解算。
在注入解算上,使用FPGA片上Block RAM搭建雙端口DPRAM組(圖4中a1-an)來(lái)存儲(chǔ)測(cè)試向量文件。DPRAM一端接受來(lái)自Pattern-load-ctrl塊寫(xiě)入的數(shù)據(jù);另一端讀出數(shù)據(jù)給Pin-ctrl。其中,Pattern-load-ctrl用于承載測(cè)試向量并進(jìn)行DPRAM的分配,Pin-ctrl能夠控制PIN的驅(qū)動(dòng)和獲取,并選擇對(duì)應(yīng)的接口。圖4中的b1-bn代表這些接口。測(cè)試向量注入解算的流程如圖4所示。
圖4 測(cè)試向量注入解算過(guò)程
響應(yīng)數(shù)據(jù)的接收與測(cè)試向量注入解算過(guò)程相反,這里不再贅述。
在對(duì)比解算上,同樣使用FPGA片上RAM。響應(yīng)數(shù)據(jù)被暫存在一組RAM上(圖5中的m1-mn),期望值數(shù)據(jù)被暫存在另一組RAM上(圖5中的n1-nn),根據(jù)響應(yīng)數(shù)據(jù)中的每條行頭標(biāo)記對(duì)應(yīng)的描述行序號(hào),將兩組RAM進(jìn)行匹配,分別同時(shí)進(jìn)行對(duì)比。其解算過(guò)程如圖5所示。
圖5 驗(yàn)證結(jié)果對(duì)比解算過(guò)程
注入解算和對(duì)比解算利用了FPGA并行的特點(diǎn)。CPU只負(fù)責(zé)測(cè)試向量的生成與響應(yīng)數(shù)據(jù)的讀取,而FPGA將數(shù)據(jù)進(jìn)行分組,以其并行計(jì)算的優(yōu)勢(shì),在較短的時(shí)間內(nèi)同時(shí)處理大量接口信號(hào)的信息,進(jìn)而縮短了驗(yàn)證時(shí)間。
FPGA驗(yàn)證平臺(tái)采用子板加母板架構(gòu),用戶可根據(jù)子板功能對(duì)子板進(jìn)行預(yù)先設(shè)計(jì),免除了對(duì)母板的頻繁修改,FPGA驗(yàn)證平臺(tái)實(shí)物如圖6所示。
圖6 FPGA驗(yàn)證平臺(tái)
為測(cè)試基于VCD波形的FPGA驗(yàn)證平臺(tái)能否正常工作,本文對(duì)一個(gè)已驗(yàn)證好的芯片子板進(jìn)行驗(yàn)證。其結(jié)構(gòu)框圖如下圖7所示。
圖7 實(shí)驗(yàn)驗(yàn)證結(jié)構(gòu)框圖
其中,DUT為包含Counter模塊芯片的被測(cè)子板,FPGA驗(yàn)證平臺(tái)中設(shè)計(jì)了用于與子板通信的三類接口:DRIVE-PINS-CLK、DRIVE-PINS和CAPTURE-PINS。
啟動(dòng)驗(yàn)證過(guò)程中,VCD波形首先被轉(zhuǎn)化為測(cè)試向量,測(cè)試向量文件如圖8所示。
在本次實(shí)驗(yàn)驗(yàn)證中,測(cè)試向量格式被定義如下:
1) 測(cè)試向量.txt文件由若干行組成,每行96 bit數(shù)字,取值1,0或z;行數(shù)與記錄的時(shí)鐘周期數(shù)有關(guān);
2) [95]:reserve,保留位;
3) [94:80]:ptn-line-num,測(cè)試向量文件行號(hào),從零開(kāi)始遞增;
4) [79]:檢查使能;
5) [78:64]:ptn-hold-num,表示該行測(cè)試向量延續(xù)多少個(gè)時(shí)鐘周期;
圖8 測(cè)試向量文件
6) [63:23]:drive-pins的記錄值,FPGA驗(yàn)證平臺(tái)根據(jù)該值驅(qū)動(dòng)drv-pins,1為高電平,0為低電平,z為高阻;
7) [31:0]:cap-pins,FPGA驗(yàn)證平臺(tái)將cap-pins作為待測(cè)FPGA設(shè)計(jì)輸出信號(hào)的期望值,1為高電平,0位低電平,z表示不關(guān)心。
在測(cè)試向量文件中,為了驗(yàn)證FPGA驗(yàn)證平臺(tái)能否正常運(yùn)行,通過(guò)修改mem[4]、mem[6],注入錯(cuò)誤行,在Vivado上觀察前后波形變化:
測(cè)試向量未注入錯(cuò)誤行時(shí),圖9中cap-error-valid信號(hào)一直為低電平,無(wú)錯(cuò)誤發(fā)生。測(cè)試向量注入錯(cuò)誤行后時(shí),圖10中cap-error-valid信號(hào)有兩處高電平,標(biāo)記出兩處錯(cuò)誤,第一個(gè)錯(cuò)誤期望值為0x00,真實(shí)值為0x02;第二個(gè)錯(cuò)誤期望值為0x03,真實(shí)值為0x01。波形圖表明,FPGA驗(yàn)證平臺(tái)能檢測(cè)出VCD轉(zhuǎn)化的測(cè)試向量出現(xiàn)的錯(cuò)誤,驗(yàn)證結(jié)果能夠正確顯示出來(lái)。
通過(guò)本次驗(yàn)證,檢驗(yàn)了基于VCD波形的FPGA驗(yàn)證平臺(tái)的整個(gè)工作流程。實(shí)驗(yàn)結(jié)果證明,基于VCD波形的FPGA驗(yàn)證平臺(tái)各功能模塊能夠正常運(yùn)行,FPGA驗(yàn)證平臺(tái)能夠正常工作。
圖9 注入錯(cuò)誤行前波形
圖10 注入錯(cuò)誤行后波形
本文在VCD波形文件處理的基礎(chǔ)上,通過(guò)分析VCD波形文件特點(diǎn),合理設(shè)計(jì)了FPGA硬件平臺(tái),包括時(shí)鐘域的劃分,數(shù)據(jù)緩沖的實(shí)現(xiàn)以及異構(gòu)解算處理方法等。這些方法對(duì)ASIC驗(yàn)證有一定借鑒意義。如果進(jìn)一步擴(kuò)展,未來(lái)驗(yàn)證平臺(tái)將用于驗(yàn)證小型系統(tǒng)??梢钥紤]在待驗(yàn)板上集成多個(gè)FPGA或ASIC形成DUT,這將更適用于實(shí)際的工程應(yīng)用。