郭安華,黃世震
(福州大學福建省微電子集成電路重點實驗室,福州350002)
目前ASIC設(shè)計的規(guī)模及復(fù)雜度正在呈指數(shù)增加,在帶來實現(xiàn)高性能芯片系統(tǒng)可能性的同時,也帶來了前所未有的芯片驗證問題,驗證和調(diào)試所占的時間可以達到總工期的70%以上[1]。驗證的方法有多種可以選擇,如軟件模擬、硬件加速模擬、硬件仿真及基于FPGA原型設(shè)計驗證等,這些方法各有利弊。而FPGA原型驗證方法一方面可使設(shè)計者可以較好的把握硬件設(shè)計的物理特性,硬件平臺能夠重復(fù)利用;另一方面基于FPGA的原型驗證平臺可以比軟件仿真速度高出4~6個數(shù)量級,填補了仿真環(huán)境與實際芯片的巨大差距。因此,F(xiàn)PGA原型驗證具有很高的性價比。
本文主要描述運用ToalRecall技術(shù)結(jié)合FPGA原型的一款鼠標芯片ASIC驗證平臺的實現(xiàn)過程。
傳統(tǒng)的驗證方法有軟件模擬、硬件加速模擬、硬件仿真及基于FPGA原型驗證等[2],軟件模擬成本很低但驗證花費時間長,而基于FPGA的原型設(shè)計驗證方法不僅成本低,而且速度很快。硬件加速模擬及仿真的速度比軟件模擬速度快很多,但比FPGA驗證法慢很多,且其成本要比上述兩種方法高很多,所以基于FPGA原型設(shè)計驗證方法具有最高性價比。但傳統(tǒng)基于FPGA原型設(shè)計驗證的明顯缺點是缺乏對內(nèi)部信號、狀態(tài)及寄存器內(nèi)容的可視性。而結(jié)合ToalRecall技術(shù)的FPGA原型驗證方法提供了100%的可視性,還能以實時硬件速度運行。各種驗證方法的可視性對比如圖1所示。
圖1 各種設(shè)計驗證方法的可視性對比
ASIC,即專用集成電路,是指應(yīng)特定要求和特定電子系統(tǒng)的需要而設(shè)計、制造的集成電路。本文所描述的芯片是一款鼠標芯片。圖2是設(shè)計的鼠標芯片的系統(tǒng)架構(gòu)框圖,它包含 DSP模塊,ROM,SRAM,Sensor,LED 驅(qū)動,系統(tǒng)控制,USB 接口控制器模塊,電壓電路,時鐘電路,復(fù)位電路等。
圖2 ASIC框圖
基于加入TotalRecall技術(shù)FPGA原型驗證的ASIC設(shè)計的基本流程如圖3所示[3]。
圖3 結(jié)合TotalRecall技術(shù)FPGA原型的ASIC設(shè)計的基本流程
由于FPGA技術(shù)的快速發(fā)展,F(xiàn)PGA在資源、速度、性能等方面都得到了較大的改善,F(xiàn)PGA在密度、速度方面和ASIC的相似性使得基于FPGA的原型運行速度接近于現(xiàn)實速度,不僅可以大大提高系統(tǒng)的仿真速度,而且還可以讓我們盡早地來測試應(yīng)用軟件,從而達到節(jié)省整個ASIC開發(fā)時間的目的。
TotalRecall技術(shù)結(jié)合FPGA原型可以解決傳統(tǒng)基于FPGA原型設(shè)計驗證系統(tǒng)的可視性問題,該驗證方法在提供100%可視性的同時,還可保證FPGA以實時硬件速度運行。
TotalRecall技術(shù)的原理是在FPGA內(nèi)部復(fù)制邏輯,然后存儲該復(fù)制邏輯的激勵,同時延遲其應(yīng)用。圖4是TotalRecall的原理,主輸入端的激勵信號直接輸入實際邏輯塊,輸出端的實時響應(yīng)由此邏輯塊產(chǎn)生。同時,原始測試矢量也輸入作為緩沖器的存儲區(qū)。當檢測到輸出端的錯誤響應(yīng)時,復(fù)制邏輯及其相應(yīng)存儲緩沖器將暫停。此時,激勵存儲緩沖器內(nèi)容及復(fù)制邏輯內(nèi)容狀態(tài)由FPGA器件的JTAG端口導(dǎo)出,并用于軟件仿真器。
如圖5所示,F(xiàn)PGA驗證板采用了Altera公司的StratixⅡEP2S30F672C5型號的可編程邏輯芯片,包含27 104個查找表的資源[4],完全可以滿足項目的需要。驗證板上還提供了一般系統(tǒng)的電壓,板級的晶振及板級上電復(fù)位源,為了方便驗證板的使用,驗證板上還集成了一些外設(shè)及常用的系統(tǒng)接口。此外驗證板上還引出了大量FPGA的IO口用于功能擴展。
圖5 FPGA驗證板
采用FPGA原型技術(shù)驗證ASIC設(shè)計時,首先需要把ASIC設(shè)計轉(zhuǎn)化為FPGA設(shè)計。但ASIC是基于標準單元庫,F(xiàn)PGA則是基于查找表,ASIC和FPGA物理結(jié)構(gòu)上的不同,決定了ASIC代碼需要一定的轉(zhuǎn)換才能移植到FPGA上,但這只是由于物理結(jié)構(gòu)不同而對代碼進行的轉(zhuǎn)換,并不改變其功能。需要轉(zhuǎn)換的代碼主要有以下幾個方面:
(1)時鐘單元
ASIC中的時鐘從時鐘源出發(fā),經(jīng)若干層時鐘緩沖器到達每個寄存器的時鐘端,形成所謂的時鐘樹結(jié)構(gòu)。ASIC時鐘樹的插入主要由布局布線工具自動完成,利用代工廠的 PLL進行時鐘設(shè)計。而FPGA中通常配置了一定數(shù)量的PLL宏單元,且有針對時鐘優(yōu)化的全局時鐘網(wǎng)絡(luò),可以保證相同的時鐘沿到達芯片內(nèi)部每個觸發(fā)器的延遲時間差異是可以忽略的,所以時鐘單元是需要轉(zhuǎn)換的。
(2)存儲單元
ASIC中的存儲單元通常用代工廠所提供的Memory Compiler來定制,通常是不能綜合的。而FPGA提供了經(jīng)過驗證并優(yōu)化的存儲單元。所以存儲單元必須要進行代碼轉(zhuǎn)換的。
(3)增加流水
由于實現(xiàn)結(jié)構(gòu)上的不同,PFGA器件內(nèi)部的單元延時遠大于ASIC的基本門單元延時。
從而在同樣設(shè)計的情況下,ASIC可以滿足時序,而FPGA有可能無法滿足。為了驗證的需要,對ASIC實現(xiàn)的流水結(jié)構(gòu)在FPGA實現(xiàn)時需要適當增加流水。
(4)同步設(shè)計
在FPGA設(shè)計中,同步設(shè)計是非常重要的,當從ASIC轉(zhuǎn)向FPGA設(shè)計時,需要進行同步。在ASIC的設(shè)計中,為了減少功耗,使用了門控時鐘,但由于設(shè)計的異步特性,對于FPGA來說,使用這種門控時鐘容易產(chǎn)生毛刺,導(dǎo)致數(shù)據(jù)不正確。所以在FPGA設(shè)計中,使用使能信號的電路來代替門控時鐘電路。
FPGA是現(xiàn)場可編程邏輯器件,只能實現(xiàn)數(shù)字電路,模擬電路無法在FPGA中實現(xiàn)。要驗證這些模擬IP核,可以選用同樣功能的芯片或者這些模擬IP核的樣片來代替,與FPGA共同實現(xiàn)它們的功能,其中比較重要的幾個模擬IP轉(zhuǎn)換的方案如下所述[6]:
(1)系統(tǒng)電源由FPGA驗證板提供的電壓源來實現(xiàn);
(2)系統(tǒng)復(fù)位可由FPGA板級上電復(fù)位源作為系統(tǒng)復(fù)位信號實現(xiàn);
(3)系統(tǒng)中的Sensor和ADC由樣片和相同功能的芯片來實現(xiàn);
(4)系統(tǒng)中ROM和SRAM可由FPGA內(nèi)部的RAM及外部的SRAM實現(xiàn);
(5)系統(tǒng)時鐘由振蕩器提供,采用FPGA板的晶振作為時鐘源。
結(jié)合TotalRecall技術(shù)FPGA原型驗證平臺的整體結(jié)構(gòu)如圖6所示,此平臺主要由PC機、FPGA、Flash、SRAM、Sensor樣片、ADC芯片、按鍵、串口、USB接口及一些其它的外設(shè)等組成。在PC1機上安裝Altera的FPGA軟件 QuartusⅡ,上位機 PC1通過 Altera usb blaster下載線與驗證平臺上FPGA的JTAG接口相連,這樣就實現(xiàn)了上位機上QuartusⅡ軟件與驗證板上FPGA之間的連接,使用QuartusⅡ軟件通過Altera usb blaster下載線把完全編譯好的工程下載到驗證板上。在PC2上TotalRecall也通過JTAG與FPGA板相連,可為FPGA驗證系統(tǒng)提供100%的可視性。
圖6 驗證平臺的整體結(jié)構(gòu)
驗證可以分為模塊級驗證、系統(tǒng)級驗證兩個層次,在進行設(shè)計原型驗證時,首先應(yīng)該保證驗證平臺各個模塊的正確性,對各模塊進行驗證[7]。下面以驗證系統(tǒng)中的USB控制器模塊為例,說明結(jié)合TotalRecall技術(shù)FPGA原型驗證平臺對設(shè)計模塊的驗證。根據(jù)USB2.0協(xié)議,USB鼠標接口主要有四個信號線:電源、地、D+及D-,且它具有兩種通信方式,一種是主機到設(shè)備的通信,另一種是設(shè)備到主機的通信。利用USB鼠標接口的D+和D-信號就可以對其進行通信驗證。具體驗證過程如下:首先,我們在上位機PC1上用VC[8]開發(fā)一個USB調(diào)試助手,由于FPGA原型驗證平臺提供了USB接口的外設(shè),所以可以直接利用此外設(shè)來接受USB調(diào)試助手發(fā)送的數(shù)據(jù)指令,并把這些數(shù)據(jù)指令傳送到USB控制器。同時也可以接受USB控制器模塊反應(yīng)的數(shù)據(jù)指令,并把它傳送到上位機PC1上的USB調(diào)試助手上。我們可以把接受到的反應(yīng)數(shù)據(jù)指令與期望的值做個比較,看兩者是否一致,從而來驗證USB接口控制器模塊的正確性。當接受的響應(yīng)數(shù)據(jù)與期望的值不同時,即發(fā)生了故障,可以利用TotalRecall技術(shù)復(fù)制USB控制器功能塊。如圖7所示TotalRecall技術(shù)應(yīng)用于設(shè)計驗證系統(tǒng)中的功能塊,TotalRecall技術(shù)能夠生成局部Testbench,專門用于測試掛起功能塊。此時,激勵存儲緩沖器內(nèi)容及復(fù)制的邏輯內(nèi)容由FPGA器件的JTAG端口導(dǎo)出,并用于軟件仿真器。TotalRecall技術(shù)可以定位到故障前數(shù)百甚至上千個周期前的狀態(tài)值,用來對軟件仿真器進行初始化設(shè)置。這樣,USB控制器功能塊就能夠在實時硬件速度下提供100%的可視性,并且還能在熟悉的軟件仿真環(huán)境下跟蹤故障,從而快速的定位及解決故障,使USB控制器功能塊得到完全的驗證。
圖7 TotalRecall技術(shù)應(yīng)用于系統(tǒng)功能塊
基于FPGA原型驗證對于ASIC驗證是一個非常實用的方法,結(jié)合TotalRecall技術(shù)的FPGA原型驗證方法可以有效解決傳統(tǒng)FPGA原型驗證可視性差的弊端。該方法不僅能夠快速檢測、調(diào)試并解決深藏的偶發(fā)及間發(fā)故障,這些故障有時會出現(xiàn)在實時激勵的情況下或由軟硬件之間復(fù)雜的非確定性互動引起,而且還能提供我們在熟悉的軟件仿真環(huán)境中跟蹤故障。從而大大提高了芯片驗證的效率,縮短芯片開發(fā)的時間。
[1]馬鳳翔,孫義和.SoC原型驗證技術(shù)的研究[J].電子技術(shù)應(yīng)用,2005.3
[2]姚遠,張曉琳,張展.基于FPGA的可層疊組合式SoC原型系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2009,9
[3]濮津,林孝康.內(nèi)嵌ARM9E內(nèi)核系統(tǒng)級芯片的原型驗證方法[J].微計算機信息,2005.
[4]王誠,蔡海寧,吳繼華.Altera FPFA/CPLD設(shè)計(基礎(chǔ)篇)[M].人民郵電出版社,2011.
[5]章瑋.原型驗證過程中的ASIC到FPGA的代碼轉(zhuǎn)換[J].今日電子,2006,(7).
[6]楊安生,黃世震.基于ARM SoC的FPGA原型驗證[J].電子器件,2011.3
[7]黃麗.百萬門級專用集成電路的FPGA驗證平臺[D].西安:西安電子科技大學,2007.
[8]潘愛明,王國印.Visual C++技術(shù)內(nèi)幕[M].北京:清華大學出版社,1999.