曾幾何時,要驗證 FPGA 的邏輯設(shè)計,可以先編譯、寫入,然后按下評估板上的復(fù)位按鈕。但是,隨著FPGA規(guī)模的增大,這種被Xilinx公司軟件產(chǎn)品營銷總監(jiān)Hitesh Patel 稱為“blow and go”(逃生法)的驗證方式已不能滿足要求。要做出一個近乎完美的有百萬個門的設(shè)計,達到可以從封裝引腳就可以調(diào)試的地步,成功的機會非常之渺茫。因此,F(xiàn)PGA設(shè)計組也開始采取ASIC設(shè)計組已使用多年的方法,采用基于軟件的設(shè)計模擬。
但是這種方法也引出了一系列重要的問題: FPGA設(shè)計中模擬的作用應(yīng)該跟在ASIC設(shè)計中一樣嗎?驗證人員是否還是要在某個時刻將設(shè)計裝入產(chǎn)品FPGA并馬上開始測試它?如果是這樣,這個時刻是在什么時候?為了弄清設(shè)計團隊現(xiàn)在都在做什么,我們詢問了一些工作中與FPGA用戶關(guān)系最緊密的人。作為參考,我們還詢問了幾個在驗證過程中采用FPGA 原型來進行ASIC設(shè)計團隊,以了解他們的意見。
優(yōu)點和缺點
多數(shù)人討論驗證流程時,首先會比較模擬和在FPGA內(nèi)驗證的優(yōu)劣。盡管有經(jīng)驗的讀者可能會覺得乏味,本文也還是采用類似的模式。
模擬的一個很大的優(yōu)點自然是它的訪問能力。該方法可以以時鐘周期分辨率觀察RTL (寄存器傳輸層)設(shè)計中任何信號。只要有必要,對設(shè)計狀態(tài)的控制可以達到任何水平。達到可觀性和可控性的唯一限制就是對RTL的了解程度和對模擬環(huán)境的掌握程度。你可以在有限的設(shè)計領(lǐng)域交互式地工作,也可以構(gòu)建運行好幾天的大型試驗。構(gòu)建的模擬項目運行相對較快,所以可以快速地對很多東西進行試驗。
模擬的另一優(yōu)點是現(xiàn)在的多數(shù)模擬環(huán)境都可以很好地使用OVL(開放驗證庫,Open Verification Library)或SystemVerilog斷言。經(jīng)常可以找到直接的方法將這些斷言輸入到模擬環(huán)境中。隨著基于斷言的驗證日益普遍,這點就越發(fā)重要。此外,通過模擬環(huán)境還可以將設(shè)計的激勵和測量部分與設(shè)計本身分割開。這看起來似乎不是主要問題,但是,在密集驗證工作中,這一特點對于保證設(shè)計的完整性會很重要。
但是,模擬比較慢?!叭绻阍谧鲆粋€有2百萬或3百萬個門的塊,模擬非常好,” 硬件仿真設(shè)備廠商Eve的營銷副總裁Lauro Rizzatti說?!暗牵谟卸鄠€塊的層次,模擬會變慢,最終達到完全不可用的程度?!?/p>
設(shè)計的復(fù)雜度并不是唯一的限制因素。Altera公司技術(shù)營銷高級經(jīng)理Phil Simpson指出,如果設(shè)計本身就需要大量數(shù)據(jù)來進行驗證,即使在塊的級別模擬也會變得不實用。他以視頻編解器為例說明這個問題。在視頻編解器中內(nèi)部狀態(tài)非常之多,所以可能只有在15分鐘的視頻短片中間才能表露出問題。但是,對15分鐘高清視頻壓縮和解壓的模擬會非常費勁。
對電路內(nèi)方法的討論
FPGA 內(nèi)驗證方法的優(yōu)劣與模擬正好相反。首先, 顯然FPGA 很快。人們經(jīng)??梢砸匀龠\行設(shè)計。不過,在某些情況下,這樣做就意味著時序收斂問題會較多,超乎設(shè)計早期預(yù)期的程度。另外,與模擬不同,將多個模塊綜合到設(shè)計中時,F(xiàn)PGA 并不會降速。這樣就可以測試整個設(shè)計,而非單個塊,并且可以以大量的實際數(shù)據(jù)集來運行測試,而不是采用精心編制的測試用例。
由于FPGA速度較快,而且它的I/O部件就是實際應(yīng)用所需要的I/O部件,所以也可以采用系統(tǒng)中測試設(shè)計:可以在裝入目標(biāo)系統(tǒng)的FPGA開發(fā)板上測試,或者,如果目標(biāo)PCB(印刷電路板)可以用的話,就在目標(biāo)PCB上測試。這樣的測試可以消除測試用例是否能夠如實反映設(shè)計工作環(huán)境的疑慮。另外,在實際使用的電路板上測試設(shè)計可以暴露出I/O方面的問題——例如電氣問題、信號完整性問題,或是在高速串行協(xié)議下不兼容問題。這些問題用其他方法幾乎無法檢測,而系統(tǒng)內(nèi)測試則會形成一個軟件測試平臺,帶來額外的好處。
這些優(yōu)點都是系統(tǒng)級驗證方面的。但Altera公司的Simpson指出:在芯片內(nèi)測試塊也有一些有用的優(yōu)點?!耙坏⒛硞€塊裝入FPGA,就可以使用嵌入式處理器核(如Nios)來輔助調(diào)試過程,” Simpson說?!袄纾幚砥骱丝梢允箶?shù)據(jù)進出芯片,可以控制測試時序。這樣,在塊周邊電路還沒做好的時候就可以單獨測試某個塊。”
“在我們的自有IP(知識產(chǎn)權(quán))開發(fā)部門,我們編寫了在Nios核上運行的事務(wù)處理器,以此來生成偽隨機測試,” Simpson 接著說。“據(jù)我所知,這樣的做法在用戶中還不普遍,但它非常有價值?!?/p>
既然FPGA有這么多優(yōu)點,您可能會覺得疑惑:直接將編好的核裝入FPGA、為它編寫一個試件(test fixture),然后開始測試 ,這樣做會有什么問題呢?這個問題的答案在于FPGA的一些缺點。
FPGA的缺點
最明顯的突出的問題是可見性。理論上說, FPGA中每個邏輯元件都可以通過芯片的調(diào)試接口觀察。但是,廠商估計只有一半的FPGA用戶在設(shè)計中加入了調(diào)試接口并將其用于驗證??紤]到內(nèi)置調(diào)試口提供的功能是如此強大,這非常令人吃驚。Xilinx公司的Patel認(rèn)為,隨著FPGA規(guī)模變大,人們會更普遍地使用調(diào)試接口。
因此,在多數(shù)情況下,如果想觀測設(shè)計中的某個信號,就必須先把它引出到一個引腳,然后用邏輯分析儀分析它。由于邏輯分析儀的特點,可能還需要引出大量其他信號,如內(nèi)部時鐘。這樣做就會有很多額外的工作,另外,如果要觀測的信號是一個與I/O塊相隔甚遠的快信號,可能還必須降低FPGA上的時鐘頻率。因此,一些經(jīng)理認(rèn)為:在原始驗證方案中包括對FPGA信號可觀性的要求是很重要的。
訪問信號所需的附加設(shè)計工作是該方法的一個缺點。芯片內(nèi)部節(jié)點的激勵和觀測還涉及另一個問題,那就是需要修改設(shè)計、重建和重新綜合測試,因此有可能導(dǎo)致設(shè)計和測試部分不能清楚地分割開。如果不能仔細地將調(diào)試代碼和設(shè)計代碼分開和切實做好版本控制,就可能無法跟蹤這些修改,有可能發(fā)生類似于外科醫(yī)生把手術(shù)工具留在患者體內(nèi)的情況。
另外,建立測試的時間也是個弱項。規(guī)模較大的設(shè)計中,綜合時間并不短,而插入測試設(shè)備、重建、重新綜合和重新繪圖的時間也會是個重要因素,可以影響到是否進行某個試驗。這里采用增量綜合(Incremental-synthesis)工具會有所幫助,但是對于有2千萬個門的設(shè)計,構(gòu)造和合成過程可能需要一晚上的時間。
最后,將測試平臺從模擬環(huán)境轉(zhuǎn)向FPGA環(huán)境也有問題。此時,激勵模塊需要有電路,而非一組模擬命令。觀測某個節(jié)點需要的不僅是命令,還需要有電路和物理儀器。盡管基于斷言的驗證被越來越多的人接受,但似乎還沒人開發(fā)出哪種方法可以系統(tǒng)性地將斷言從模擬環(huán)境移植到FPGA。 “現(xiàn)在還沒有可以自動將斷言移植到FPGA的解決方案,但是我們收到的對該功能的要求在不斷增加,” Simpson說。
覆蓋尺度也是一個弱項。雖然對于模擬環(huán)境正在開發(fā)完善的工具來測評驗證覆蓋情況和來自不同類工具的熔斷測量值(fuse measurement),但在FPGA領(lǐng)域,幾乎就沒什么覆蓋的概念,也沒有現(xiàn)存的工具可用于測評測試設(shè)計的覆蓋情況并將數(shù)據(jù)報告給中心覆蓋收斂(coverage-closure)系統(tǒng)。
對ASIC開發(fā)組的觀察
因此,簡言之,每種方法都有優(yōu)缺點。根據(jù)這些信息,有經(jīng)驗的ASIC設(shè)計組(即經(jīng)常在其驗證流程中采用FPGA者)是如何在模擬測試和基于FPGA的測試間做出平衡的呢?
視頻處理器廠商Ambarella有一個例子來回答這個問題。執(zhí)行副總裁Didier LeGall 說,“多數(shù)情況下,我們根本就不使用FPGA 仿真。根據(jù)我們的經(jīng)驗,必須得有非常成熟的RTL仿真才會有用。但是,目前流程階段,將設(shè)計輸入 FPGA和建立測試平臺(的過程)是一件事倍功半的事?!?/p>
但是,實際應(yīng)用情況可能會使LeGall 的看法有所調(diào)整。Ambarella 公司的SOC (片上系統(tǒng)) 用于以高幀速率處理高清視頻和10M像素靜止圖像,需要采用非??斓膬?nèi)部時鐘和復(fù)雜的算法。但是,LeGall 在對FPGA 仿真做出評論后,又對整個驗證過程的目標(biāo)提出了一個非常有趣的看法?!靶峦瞥鯥C成功的關(guān)鍵不在于完美的驗證工作,” LeGal說。“而在于軟件”:也就是說,要知道設(shè)計中哪部分比較容易出問題,并且在開始,而不是事后,就做好軟件解決計劃。這種策略下,驗證工程師經(jīng)過廣泛的基于FPGA的測試所獲得的很多信息的確會變得比較沒用。
LSI Corp的存儲元件部門提出了另一個觀點。該部門的副總裁和總經(jīng)理Bill Wuertz敘述了他們是如何做SCSI (小型計算機系統(tǒng)接口)和SAS (串行連接)控制器的。
Wuertz 說LSI采用了幾乎是并行的過程,一個驗證小組進行模擬實現(xiàn)一些目的,而另一組則采用FPGA實現(xiàn)另外一些目的。“在設(shè)計早期,我們建立一個稱為試驗 RTL(trial RTL)的步驟,” Wuertz 說?!拔覀円繰TL基本工作正常、各個塊互相已連接好,這是第一個點。在此階段,驗證工作分為兩個方向。模擬小組編寫他們的工具所用的設(shè)計,并繼續(xù)對單個的塊進行模擬。另一個組,即系統(tǒng)工程組,則通過綜合RTL得到內(nèi)部開發(fā)FPGA 版——我們現(xiàn)在正在設(shè)計第五代板卡——然后開始在系統(tǒng)級進行徹底的壓力測試?!?/p>
如Wuertz所述,這兩個組具有不同的工作目的。模擬組要努力確保電路正確。系統(tǒng)組通常不考慮電路,但要確保芯片在變化異常大和非常復(fù)雜的存儲網(wǎng)絡(luò)環(huán)境下可以工作。Wuertz 說FPGA 原型會與一屋子的磁盤和磁帶驅(qū)動器相連運行幾天的測試?!斑@些測試已經(jīng)過了20多年的發(fā)展,”他說?!拔覀冎溃赡苄枰獙Σ煌疟P驅(qū)動器組合進行很長時間的測試后才可以產(chǎn)生暴露設(shè)計問題的時間匹配異常情況?!?/p>
LSI 已開發(fā)了自有的將兩種環(huán)境聯(lián)系起來的內(nèi)部工具。例如,通過這些工具,系統(tǒng)組可以捕捉到導(dǎo)致故障的跟蹤數(shù)據(jù),并將此數(shù)據(jù)轉(zhuǎn)換為模擬組可用的激勵文件。反過來說,模擬組可以根據(jù)它在設(shè)計中所發(fā)現(xiàn)的危險,給系統(tǒng)組發(fā)出提醒。在兩個工作于不同環(huán)境的驗證組間建立聯(lián)系是LSI公司兩方向測試方法的關(guān)鍵。在整個過程中,兩個組會交換數(shù)據(jù),而且,最后設(shè)計晶粒需要兩個組的結(jié)論。
一種可為大家接受的方法
根據(jù)與FPGA廠商和用戶的討論,我們可以看到對模擬和仿真(圖1)混合驗證流程大家基本達成一致意見。這種流程首先對設(shè)計開始元件塊級的模擬——不是傳統(tǒng)上ASIC所用的那種窮舉式的力求完美的模擬,而更像是對實際情況進行檢查。其目標(biāo)是驗證元件塊可用、引腳工作基本正確、在實驗環(huán)境中可滿足FPGA 的時序需要。
在此階段,很多開發(fā)組將某個版本的塊轉(zhuǎn)入FPGA并開始更為徹底的電路中測試。如果此電路塊(如視頻編解器)需要很長的高速數(shù)據(jù)流來驗證功能或是包括高速I/O功能,則該方法尤為常見。在其他情況下,繼續(xù)對塊進行模擬工作,直到所有問題都經(jīng)過驗證,可以進行集成為止。
根據(jù)大家的一致意見,當(dāng)開發(fā)組開始將塊集成時——建立試驗系統(tǒng)時——FPGA 才真正被更多人使用。這里,可能就是因為設(shè)計太大才無法進行快速模擬,或是對于已知可正常工作的塊,在FPGA上解決集成問題可能要比在模擬器上效率更高點。
但是,根據(jù)大家的意見,從模擬轉(zhuǎn)到仿真并不是單步的可逆步驟。正如軟件開發(fā)中并行進行模擬一樣,模擬工作在系統(tǒng)仿真期間也在繼續(xù)。多數(shù)開發(fā)組利用FPGA 仿真捕捉和隔離缺陷,然后將其送回模擬組診斷。在FPGA上做詳細診斷是非常痛苦的工作。
這里先總體敘述當(dāng)前的情況,然后指出該方法的幾個嚴(yán)重缺點。首先,在兩個環(huán)境間來回傳送測試平臺數(shù)據(jù)很困難。似乎還沒有方法可以將創(chuàng)建測試的模擬指令自動映射到實施同一測試的 FPGA 結(jié)構(gòu)。第二,各大 FPGA 廠商都可提供的嵌入式RISC核資源似乎遠沒有得到充分利用,它可以管理數(shù)據(jù)和控制測試,但是又是與模擬測試平臺分開的。理論上說,模擬組可以將其轉(zhuǎn)為嵌入式處理器核的C代碼,而不是轉(zhuǎn)為FPGA的RTL。第三,沒有簡單的途徑可以將FPGA 試驗中開發(fā)組收集的數(shù)據(jù)送回模擬平臺。最后,隨著模擬領(lǐng)域基于斷言的驗證工作不斷增多,F(xiàn)PGA 側(cè)急需一種類似的基于斷言的工具。
基于 FPGA的仿真系統(tǒng)銷售廠商對這些問題提出了應(yīng)對措施(見附文《解決覆蓋空隙的一些思路》),證明了這些問題是確實存在的。這里的例子有Eve公司的系統(tǒng);模擬加速器,如GateRocket;以及“big- iron”(大型的)仿真盒,如Cadence的Palladium。至于這個基礎(chǔ)平臺會發(fā)展為FPGA驗證領(lǐng)域常見的那種專用板卡級仿真平臺,還是仍然會是昂貴的加速器和仿真系統(tǒng)的一種變形,我們尚無法知道。
附文 解決覆蓋空隙的一些思路
人人都喜歡FPGA 內(nèi)仿真的速度。但是在FPGA中建立系統(tǒng)、控制和觀測試驗的難度過大,這常常迫使人們將費力費時的測試工作轉(zhuǎn)回到模擬環(huán)境中。在實際中,有些人會搭建一個驗證平臺,結(jié)合FPGA執(zhí)行速度高和模擬方法易于構(gòu)造和訪問數(shù)據(jù)的優(yōu)點。毫不奇怪,有些廠商已經(jīng)瞄準(zhǔn)了這個目標(biāo)。
首次這么做還是 ASIC時代早期的事,這也就是 “big-iron”邏輯仿真系統(tǒng)。從效果上說,這些系統(tǒng)就是一組專用的巨型計算機,其中由定制微處理器或定制可編程元件分別模擬或仿真邏輯操作。這類系統(tǒng)的代表是Cadence Palladium。此系統(tǒng)執(zhí)行速度為模擬的很多倍,同時其廠商聲稱它對被測設(shè)計的訪問能力至少與模擬相當(dāng)。但是,這些系統(tǒng)的容量有限,不會比通常模擬的塊規(guī)模大很多——除非你有非常多的錢。這些設(shè)備是主要的耗資設(shè)備,因此多數(shù)最終設(shè)計面向FPGA的設(shè)計團隊都無力支付高昂的費用。
近年來,有大量系統(tǒng)進入市場(例如Eve等公司的產(chǎn)品),這些系統(tǒng)可以在使用商業(yè)FPGA的簡單環(huán)境下進行邏輯仿真。這類系統(tǒng)具有不同的特點,有些是小型化巨型機仿真系統(tǒng),有些基本上就是帶支持調(diào)試軟件的FPGA評估卡。在所有情況下,它們都試圖提供一個設(shè)計中邏輯開銷低于big-iron仿真系統(tǒng)的 FPGA執(zhí)行環(huán)境。由于邏輯開銷較低,通?;贔PGA的系統(tǒng)運行速度可以比巨型機仿真系統(tǒng)快一到幾個數(shù)量級??偟膩碚f,運行速度越快,保留的模擬的方便性就越少。但是,當(dāng)單個FPGA的設(shè)計(包括調(diào)試開銷)變得過大時,它們就會表現(xiàn)出局限性。將設(shè)計分區(qū)是很復(fù)雜的,而且經(jīng)常涉及到FPGA間信號的多路復(fù)用,這會將所有工作都拖慢。
這些系統(tǒng)中,確實提供了將測試平臺和數(shù)據(jù)在FPGA 系統(tǒng)和模擬環(huán)境來回傳送所需的軟件支持。例如,Eve就報道說正在開展工作,以便能將斷言也導(dǎo)入到其環(huán)境中。
GateRocket 的系統(tǒng)是一個很有趣的產(chǎn)品,它使當(dāng)前的這個狀況發(fā)生了改變。該公司將其定位為既可以充當(dāng)模擬加速器,也可以充當(dāng)電路中仿真器。作為模擬加速器時,該系統(tǒng)會試圖插入用戶的模擬環(huán)境,加速耗時的RTL (寄存器傳輸級) 邏輯部件的模擬,而不會影響模擬環(huán)境的特性。如果假設(shè)90/10法則正確(也就是說,90%模擬時間花在10%的代碼上),通過這種加速能力,可以使驗證工程師們繼續(xù)使用模擬環(huán)境,將其用于在無加速時基本無法實現(xiàn)的檢驗流程中。GateRocket聲稱,該系統(tǒng)可以支持名為“可綜合斷言子集”的特性。
責(zé)任編輯:gt
評論
查看更多