硬件仿真自動(dòng)化原型驗證平臺提高定制設計FPGA式原型板的驗證效率
預制與定制FPGA式原型板加入協(xié)同仿真(co-emulatiON and co-simulation)功能,能夠提供高速、高能見(jiàn)度平臺,實(shí)現SoC的快速、早期驗證。
系統芯片(SoC)設計的規模與復雜度不斷地攀升。同時(shí),產(chǎn)品在市場(chǎng)上的存活時(shí)間不斷地緊縮,當今的電子市場(chǎng)也對于上市所需的前置時(shí)間非常敏感。這些全都加深了SoC設計與驗證團隊的壓力。事實(shí)上,現在廣為接受的說(shuō)法就是,驗證占了整體SoC開(kāi)發(fā)時(shí)間的70%。所以,能夠降低驗證成本、加速驗證執行以及在開(kāi)發(fā)初期盡早進(jìn)行驗證的作法,都是眾人注目的焦點(diǎn)。
這篇文章首先介紹構成典型SoC設計與驗證環(huán)境的主要因素;也會(huì )說(shuō)明傳統驗證解決方案的優(yōu)缺點(diǎn),包括軟件仿真、硬件輔助加速與仿真,還有FPGA式原型板的使用。接著(zhù)會(huì )說(shuō)明創(chuàng )新而且價(jià)格合理的做法,讓標準FPGA式原型板能夠轉變成為完善的桌上型硬件仿真器。我們推薦的這種做法是一種典范轉移(paradigm shift),能使既有的硬件仿真 (in-circuit emulation) 功能自動(dòng)化,并且增添全新協(xié)同仿真功能,大幅提高預制與定制設計FPGA式原型板的驗證效率。
典型的SoC設計與驗證環(huán)境
首先,讓我們來(lái)看看典型SoC設計與驗證環(huán)境的前端部分。至少,這包含某些形式的設計輸入、軟件仿真方式的功能驗證,還有邏輯綜合,如圖1所示。甚至,這種設計環(huán)境現在大多也包括SpringSoft的Verdi?自動(dòng)化偵錯系統。Verdi系統讓用戶(hù)能夠分析自己軟件仿真器1的結果并執行偵錯,還可以自動(dòng)使任何門(mén)級結果與對應的RTL源代碼發(fā)生關(guān)連。
圖1. 簡(jiǎn)化的SoC前端設計與驗證環(huán)境。
各式各樣功能驗證的問(wèn)題之一,就是要收集與儲存的數據量。以軟件仿真器為例,監視大量信號會(huì )大幅拖慢仿真速度,而且冗長(cháng)的仿真進(jìn)度又會(huì )導致更大量的數據;所以,許多設計與驗證環(huán)境都使用了SpringSoft的Siloti?能見(jiàn)度自動(dòng)增強系統,來(lái)減少記錄設計中許多信號數據的負擔。Siloti系統用來(lái)找出仿真進(jìn)行中最低限度必須記錄的信號;然后Siloti系統會(huì )運用這些信號,自動(dòng)且迅速的產(chǎn)生所有需要但未記錄的信號數據。
軟件仿真的主要優(yōu)勢就是對設計有完全的能見(jiàn)度;而主要的缺點(diǎn)就是慢,即使在威力強大、高階工作站上執行,并采用Siloti能見(jiàn)度自動(dòng)增強技術(shù) - 當今大型SoC設計的軟件仿真只能勉強達到幾Hz的仿真速度 (也就是說(shuō),每秒鐘只能有幾次設計的實(shí)時(shí)主系統頻率周期)。這表示,軟件仿真通常僅適用于設計的一小部分,或者適用于全芯片設計的數十個(gè)頻率周期而已。但是,完全驗證現代化SoC需要成千上萬(wàn)甚至數百萬(wàn)頻率周期,這時(shí)就需要某種形式的硬件輔助驗證,如圖2所示。
圖 2. 簡(jiǎn)化的SoC前端設計與驗證環(huán)境,增添某種形式的硬件輔助驗證。
傳統的硬件輔助驗證解決方案
各種硬件輔助驗證解決方案具備不同的功能、優(yōu)點(diǎn)與缺點(diǎn)。也有許多方法可以運用不同的系統,來(lái)解決不同類(lèi)型的問(wèn)題;包括硬件仿真(in-circuit emulation) 、交易級協(xié)同仿真以及HDL協(xié)同仿真。
一般而言,傳統的硬件輔助驗證解決方案僅包括硬件加速器與/或仿真器。FPGA式原型板通常不被視為可行的替代方案,因為缺乏與工作站連結的能力,而且無(wú)法提供足夠的設計能見(jiàn)度以供偵錯使用。
傳統的硬件加速與/或仿真系統都是專(zhuān)屬系統,利用定制設計的芯片、或標準FPGA,來(lái)建構特殊目的系統。這些系統的目的是要盡可能如同軟件仿真器一般運作,包括能見(jiàn)度與偵錯功能等因素。這些系統運用能夠駕馭其定制芯片或架構的特殊軟件,提供大型容量與相當快速的編譯時(shí)間,讓設計能夠映像到硬件上;他們也提供相當優(yōu)良的設計能見(jiàn)度 (可見(jiàn)度與可控制度)。但是,這些系統非常昂貴,難以讓許多使用者、項目與團隊廣泛的運用。再者,一旦采用這種系統之后,就很難升級到新一代的系統;除了新版定制設計芯片與系統需要耗費時(shí)間來(lái)開(kāi)發(fā)之外,還必須考慮高昂的過(guò)渡成本等其他因素。
轉移到FPGA式原型板
作為硬件加速器與仿真器的替代方案,許多設計業(yè)者運用可以現成購買(mǎi)的,或者由SoC驗證團隊定制設計FPGA式原型板。如圖3的例子,設計在工作站上編譯 (綜合) 后;映射、布局與繞線(xiàn);然后將結果的FPGA配置文件 (或者是系統包含許多FPGA時(shí)的文件) 下載到原型板上。典型的運用模型適合于SoC設計 (或部分設計模塊)驗證時(shí)使用硬件仿真(in-circuit emulation)的方式;也就是說(shuō),如圖3所示,運用實(shí)際輸入/輸出 (I/O) 信號來(lái)驅動(dòng)。除了由外部系統所驅動(dòng) - 和帶動(dòng)之外,也可以掌握實(shí)際的I/O信號以供邏輯分析器等來(lái)進(jìn)行后續分析。
圖 3. 以硬件仿真(in-circuit emulation)方式運作的傳統FPGA式原型板環(huán)境的高階呈現。
傳統FPGA式原型板的主要優(yōu)勢就是高效能,而且相對而言比較便宜,所以能夠讓許多使用者、項目與團隊廣泛的運用。此外,這些原型板能夠運用最新一代的FPGA技術(shù),讓使用者能夠快速而輕松地轉移到新一代原型板。而其主要缺點(diǎn)就是難以設定,而且無(wú)法與工作站連結以支持協(xié)同仿真 (co-emulation and/or co-simulation)。再加上只能提供極有限的設計能見(jiàn)度,所以缺乏精密的偵錯功能。
強化傳統FPGA式原型板
傳統FPGA式原型板通常都配備J-Connector,希望讓原型板能夠連接到外埠裝置。本文提出的作法就是利用這個(gè)J-Connector,建立能與其連接的特殊適配卡,以扮演主機工作站與FPGA式原型板之間的橋梁,如圖4所示。
圖4. 新增適配卡與某些軟IP (soft IP)。
FPGA式原型板與工作站之間的所有通訊都可以運用某些專(zhuān)屬總線(xiàn)而建置起來(lái),提供仿真與協(xié)同仿真所需的高性能。由于這種互連技術(shù),使用者擁有可架構和運用不同原型板以搭配同一J-Connector的絕佳彈性。這種能力也表示,使用者能夠快速而且輕易地轉移到更快速和更龐大的FPGA式原型板,可以完全免除傳統硬件輔助驗證解決方案相關(guān)的限制。
接下來(lái)看看圖4所示的軟IP模塊 (soft IP)。這些IP模塊可下載至原型板上的各FPGA,然后可用來(lái)控制和監視FPGA式原型板與工作站之間的數據流動(dòng)。因操作模式 (硬件仿真、協(xié)同仿真) 的不同,可以自動(dòng)插入適當且必要的「特色」IP模塊。這些IP模塊可以編譯到設計中,用來(lái)監控用戶(hù)指定的任意信號。如此一來(lái),就可以掌握和分析來(lái)自數千信號仿真數百萬(wàn)頻率周期的數據。
除了互連技術(shù)之外,本文的作法也需要如圖5所示在工作站上執行的特殊軟件來(lái)執行許多功能,例如自動(dòng)建立包含多顆FPGA的原型板。這個(gè)建立流程涵蓋讀取設計的RTL源代碼 (以VHDL、Verilog、SySTemVerilog或混合式語(yǔ)言)、分析FPGA內部與外部的內存、轉換SoC頻率已產(chǎn)生無(wú)hold-time問(wèn)題的設計在FPGA中使用、分割完整SoC設計的RTL以便放入多顆FPGA,以及調整RTL來(lái)搭配軟IP模塊與要監控的信號。
圖5. 增添在工作站上執行的特殊軟件。
在驗證途中,軟件可以依據建立時(shí)指定的操作模式 (硬件仿真、協(xié)同仿真),控制和管理FPGA式原型板與工作站之間的通訊與數據流動(dòng)。另外,能快速修改所監控信號的能力也很重要,這樣才能夠快速且輕易地新增監控的信號,不必重復編譯整個(gè)設計。最后,就是原型板上FPGA內部狀態(tài)的能見(jiàn)度,這包括在特定時(shí)間或以逐一頻率周期為基準所提供的寄存器 (registers) 與內存輸出,在進(jìn)階偵錯時(shí)非常實(shí)用。
設計原型的「桌上型」驗證
為了更完全了解因本文所討論互連與軟件自動(dòng)化技術(shù)而實(shí)現的各種功能與使用模式,讓我們來(lái)看一些范例情境。最簡(jiǎn)單的例子就是圖6所示的純粹硬件仿真應用。在桌上型工作站上執行的軟件會(huì )自動(dòng)分割設計,并準備原型板。在建立過(guò)程中,會(huì )在設計中置入所有必要的探測點(diǎn),以便在執行時(shí)掌握特定信號數據。
圖6. 硬件仿真情境的范例。
此外,使用者也可以選擇性的運用Siloti能見(jiàn)度自動(dòng)增強系統,來(lái)幫助判斷需要觀(guān)察的最少信號量。以及運用Verdi自動(dòng)化偵錯系統來(lái)分析FPGA式硬件原型板的結果,并執行偵錯。由于設立軟件會(huì )自動(dòng)將任何門(mén)級信號關(guān)連至對應的RTL信號,Verdi系統搭配RTL源代碼可以加速偵錯的進(jìn)度。
交易級協(xié)同仿真是可以大幅加速驗證流程,其速度比僅使用軟件仿真要快上數百或數千倍,常見(jiàn)的狀況是testbench (或許是設計的一部份) 常駐在工作站上,而大量 (或全部) 設計被加載到原型板。工作站上執行的軟件會(huì )自動(dòng)分割設計,自動(dòng)建立原型板,然后插入適當的協(xié)同仿真基礎架構 (例如SCEMI式處理裝置)。在前述情境中,建立時(shí),所有必要的探測點(diǎn)都會(huì )置入設計中,以便在執行時(shí)能夠掌握特定的信號數據?;蛘?,協(xié)同仿真可以暫停,也可以設置軟件在特定時(shí)間或按照逐一頻率周期,將FPGA內部狀態(tài)的完全能見(jiàn)度輸出,如圖7所示。
圖7. 交易級協(xié)同仿真情境的范例。
最后,讓我們看看HDL協(xié)同仿真,這種加速驗證流程,其速度比單僅使用軟件仿真要快上數十倍。同樣地,testbench (或許是設計的一部份) 常駐在工作站上,而大量 (或全部) 設計被加載到原型板。在這個(gè)情境中,工作站上執行的軟件會(huì )自動(dòng)分割設計,建立原型板,和產(chǎn)生可供軟件仿真器連接的包裝器(wrapper)。執行時(shí),軟件會(huì )控制原型板與ModelSim、NC或VCS等業(yè)界標準軟件仿真器之間的協(xié)同仿真互動(dòng)。如同前面幾個(gè)情境中的討論一般,透過(guò)軟件與FPGA內部技術(shù)的組合,可在特定時(shí)間或按照逐一頻率周期,將原型板上FPGA內部狀態(tài)的能見(jiàn)度,包括寄存器與內存輸出,如圖8所示。
圖8. HDL協(xié)同仿真情境的范例。
新一代原型驗證平臺的優(yōu)點(diǎn)
產(chǎn)品在市場(chǎng)上的存活時(shí)間及上市前置時(shí)間不斷縮短造成了當今SoC設計與驗證團隊的莫大壓力。軟件仿真提供對設計內部的100%能見(jiàn)度,但是只適合于設計的一小部分,或者整個(gè)設計的數十個(gè)頻率周期而已。然而,完全驗證現代SoC需要耗費成千上萬(wàn)甚至百萬(wàn)頻率周期,所以需要某種形式的硬件輔助驗證。各式各樣的硬件輔助驗證解決方案具備不同的功能、優(yōu)點(diǎn)與弱點(diǎn)。表1提供了各種硬件輔助驗證技術(shù)的大略比較。
傳統硬件加速器與仿真器提供大容量、相對快速的編譯時(shí)間,以及相當良好的設計能見(jiàn)度。然而,這些系統太昂貴而難以廣泛運用,而且因為轉移成本高昂,也難以與時(shí)俱進(jìn)地升級至新一代解決方案。比較上,傳統FPGA式原型板提供高效能,而且比較便宜;但是,缺乏設計能見(jiàn)度與精密的偵錯功能,無(wú)法克服當代SoC的復雜度,而且通常僅以硬件仿真模式來(lái)運用。
表1. 硬件輔助驗證技術(shù)的比較。
為了解決這些問(wèn)題,我們建議一種SoC驗證的新方法,將傳統FPGA式原型板轉變成桌上型加速器/仿真器。這需要創(chuàng )新的互連技術(shù),能夠提供對預制與定制設計板的通用連結;還有特殊化的軟件自動(dòng)化,在工作站上以硬件仿真、協(xié)同仿真模式執行,并具備極高的設計能見(jiàn)度。
運用強化上述功能的FPGA式原型板,SoC開(kāi)發(fā)人員可快速驗證個(gè)別模塊 (包括內部與第三方IP模塊) 和設計模塊是否正常運作,甚至于整個(gè)SoC設計的驗證。這個(gè)新一代原型驗證平臺可提高FPGA式原型版的投資報酬率及生產(chǎn)力,提供更高驗證效率與彈性,并能快速轉移到配備最新FPGA技術(shù)的原型板。
評論