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