摘 要: 一種針對大規(guī)模SoC設(shè)計的高效FPGA驗證流程,分析了該流程所涉及的關(guān)鍵技術(shù):通用硬件平臺" title="硬件平臺">硬件平臺設(shè)計、FPGA軟件環(huán)境設(shè)計和軟硬件協(xié)同驗證等。采用這些技術(shù),F(xiàn)PGA平臺可以快速且真實地模擬芯片應(yīng)用平臺,從而實現(xiàn)軟硬件并行設(shè)計和協(xié)同驗證。該驗證流程已靈活應(yīng)用于大規(guī)模SoC項目設(shè)計中,大大提高了SoC產(chǎn)品的研發(fā)效率。
關(guān)鍵詞: SoC FPGA驗證 軟硬件協(xié)同驗證
隨著SoC(System on Chip)設(shè)計的規(guī)模不斷擴(kuò)大以及市場競爭日趨激烈,如何更快速設(shè)計出更高性能的SoC產(chǎn)品已經(jīng)成為IC設(shè)計公司能否成功的關(guān)鍵。這其中,驗證的工作量平均占據(jù)總設(shè)計工作量的80%甚至更多,對于一個大規(guī)模SoC系統(tǒng),驗證的效率和可靠性往往決定了項目的成敗。
最常用的驗證方法是通過軟件仿真驗證設(shè)計的功能,但由于軟件仿真速度和仿真模型" title="仿真模型">仿真模型的局限性,驗證往往難以達(dá)到令人滿意的要求。而FPGA驗證憑借速度和真實性的優(yōu)勢,已經(jīng)成為VLSI設(shè)計中非常重要的環(huán)節(jié)。
對于IC設(shè)計,一般來說有三種FPGA驗證方式,如圖1所示。
流程(a)只適用于結(jié)構(gòu)簡單且對設(shè)計周期要求不高的應(yīng)用。IC設(shè)計經(jīng)過簡單的仿真即可嘗試在FPGA上運行,若實現(xiàn)結(jié)果真實可靠,再進(jìn)行IC后端設(shè)計,然后流片。但當(dāng)芯片比較復(fù)雜時,在FPGA開發(fā)板上的調(diào)試將花費大量時間,且由于FPGA本身的局限性,并不能完美地驗證SoC設(shè)計中的某些特殊任務(wù),如低功耗設(shè)計、多時鐘域交互、數(shù)?;旌偷?。
對于大規(guī)模且有特殊設(shè)計要求的IC設(shè)計可采用流程(b),它要求建立一個完善的SoC軟件仿真環(huán)境,IC設(shè)計的主要功能都可以在軟件虛擬平臺上得到比較全面的驗證。之后再把SoC設(shè)計在FPGA平臺上實現(xiàn),憑借FPGA速度快和結(jié)果真實的優(yōu)勢,可在FPGA平臺上運行大量的測試程序,以提高驗證的完備性。但該流程要求花費很多經(jīng)費和時間構(gòu)建硬件平臺,并且在驗證過程中,研究如何產(chǎn)生激勵和分析FPGA運行情況也將花費非常多的時間??紤]到項目周期和經(jīng)費等因素,這種FPGA驗證流程很難對SoC設(shè)計進(jìn)行徹底的驗證。同時,軟件人員必須在流片后才能在真實的環(huán)境下調(diào)試應(yīng)用程序,這也就增加了項目風(fēng)險和研發(fā)周期。
隨著市場競爭日趨激烈,SoC設(shè)計公司越來越需要找到一種更加完備的設(shè)計與驗證方法來提高SoC設(shè)計的效率和可靠性,驗證流程(c)則是最好的選擇。它是一個可適應(yīng)于各種項目的通用的FPGA硬件驗證平臺,不必經(jīng)常重新設(shè)計硬件平臺。該平臺具有強(qiáng)大驗證能力,可以非常真實地模擬各種SoC設(shè)計的功能和應(yīng)用平臺,從而可以對其進(jìn)行全面的驗證。該流程要求建立一個完善的FPGA綜合與仿真環(huán)境,與IC設(shè)計的環(huán)境統(tǒng)一起來,使得任何一個仿真的激勵都可以類比地在IC設(shè)計前端仿真、在IC后端仿真和在FPGA后端仿真。通過比較它們的結(jié)果,很容易地找到設(shè)計中的缺陷。這樣,整個驗證工作都將變得輕松而且透明。
在成功建立FPGA軟硬件設(shè)計環(huán)境后,軟件研發(fā)人員就可以并行的在該平臺上開發(fā)和調(diào)試應(yīng)用軟件,并及時把系統(tǒng)級調(diào)試結(jié)果反饋到IC設(shè)計前端,這大大提高了研發(fā)效率,也非常全面地驗證了整個IC設(shè)計。同時,還可以在FPGA中加入某些監(jiān)測分析模塊,真實地反饋芯片內(nèi)部的運行數(shù)據(jù),如處理器執(zhí)行效率、總線利用率、帶寬等,這些對SoC項目的決策都是至關(guān)重要的。
下面將詳細(xì)闡述通用硬件平臺建設(shè)、軟件環(huán)境建設(shè)和軟硬件協(xié)同驗證等相關(guān)技術(shù)。
1 FPGA硬件平臺建設(shè)
對于不同項目情況,F(xiàn)PGA硬件平臺建設(shè)有所不同,但主要應(yīng)考慮FPGA邏輯資源、應(yīng)用資源、擴(kuò)展能力、PCB信號質(zhì)量、易于調(diào)試、組態(tài)和成本等方面因素。下面結(jié)合項目實例(圖2)進(jìn)行介紹。
1.1 FPGA邏輯資源
該硬件平臺采用Xilinx公司FPGA芯片 virtex2 6000(X2V6000)和spartan3 5000(X3S5000)各一片,它們分別具有600萬門和500萬門的邏輯資源。virtex2 6000面向于高端應(yīng)用,時鐘和存儲資源更多、速度更快,主要用于實現(xiàn)對性能要求較高的DSP內(nèi)核;spartan3 5000具有更低的成本,用于實現(xiàn)對性能要求稍低的片上IP應(yīng)用模塊。該平臺還包含一片Altera公司的FPGA芯片EPXA1,該芯片包含ARM922T硬核,它將保證該FPGA硬件平臺能驗證ARM+DSP等多核的SoC項目,也方便了驗證和調(diào)試。
1.2 應(yīng)用資源
為了能更廣泛地適應(yīng)SoC應(yīng)用方案,兩片大容量FPGA都各自與SRAM相連,以彌補(bǔ)片內(nèi)RAM資源的不足。該硬件平臺還包含一個公共存儲器總線,用于連接常用的RAM和FLASH資源。這樣硬件平臺基本滿足了SoC應(yīng)用方案對存儲資源的需求。
1.3 擴(kuò)展能力
一個SoC的應(yīng)用方案可能用到各種特殊的資源,通用的FPGA硬件平臺應(yīng)該能承載這些資源。示例中采用了兩種擴(kuò)展方式:一種是功能擴(kuò)展,由三個96針的插座構(gòu)成,它們與FPGA的距離近、延遲小、連接FPGA的I/O" title="I/O">I/O數(shù)量多,可用于連接功能擴(kuò)展板,也可以通過該插座使兩塊FPGA板互連,使FPGA資源加倍,從而驗證更大規(guī)模的SoC設(shè)計。另一種是接口擴(kuò)展,用于擴(kuò)展SoC的外設(shè)資源,如SoC中常用到的USB總線收發(fā)器、以太網(wǎng)控制器等,都可以單獨作為子板來擴(kuò)充,這些子板尺寸相同、引腳排列相似、且大多可采用兩層板實現(xiàn),即靈活又降低了風(fēng)險和成本。
1.4 PCB信號質(zhì)量
由于FPGA具有非常多的I/O資源,使得保證PCB信號質(zhì)量成為難點。該硬件平臺設(shè)計為14層板,采用Cadence公司的軟件Allegro進(jìn)行PCB設(shè)計,采用sigXplore進(jìn)行信號完整性分析。對各種拓?fù)淝闆r下的信號質(zhì)量仿真表明,由于FPGA自帶數(shù)控匹配電阻,兩點互連線可以得到較好的信號質(zhì)量,加大布線間距后,串?dāng)_也可以小到令人滿意的水平,但連接多個器件的信號反射比較嚴(yán)重。對于公共存儲器總線,布局時應(yīng)盡量拉近芯片間的距離,并設(shè)置最大線長約束。當(dāng)線長足夠短時,經(jīng)仿真,信號質(zhì)量可以達(dá)到要求。對于三個FPGA間的互連線,由于線數(shù)非常多,很難全部縮短它們的長度,這時應(yīng)設(shè)置布線約束,如圖2,使AC與BC的距離相等,從而使A點和B點對C點的反射貢獻(xiàn)相同,AD或BD可以得到較好的通信質(zhì)量。然而AB間的通信質(zhì)量卻由于D點的反射而變得很差,但這兩塊FPGA間可以通過EF點來通信。這樣,三片F(xiàn)PGA間的通信就都可獲得較好的信號質(zhì)量。
綜上所述,F(xiàn)PGA硬件驗證平臺的搭建應(yīng)根據(jù)項目情況有所不同,但所考慮的因素大體上可以分為以上四類,本文所提出的開發(fā)平臺示例已經(jīng)針對這四個方面提出了較好的解決方案,該硬件平臺已成功應(yīng)用于FPGA驗證項目中。
2 FPGA軟件環(huán)境建設(shè)
FPGA軟件環(huán)境部分的工作,不僅包括對特殊的RTL代碼及相關(guān)約束的修改,如門控" title="門控">門控時鐘處理、硬IP核替換等,還要根據(jù)特定的硬件平臺,增加FPGA相關(guān)的約束,并搭建一個能夠自動仿真和驗證的環(huán)境。因為在這一過程中RTL代碼和約束要經(jīng)過多次版本的變化,靠手工進(jìn)行維護(hù)非常容易出錯,這些錯誤很難檢驗,甚至可能損壞開發(fā)板。所以必須建立一個足夠完善的軟件環(huán)境,能夠在人的稍微干預(yù)下,自動完成以上處理,并易于定位錯誤。圖3所示是FPGA軟件環(huán)境設(shè)計流程圖,下面將分類介紹搭建軟件環(huán)境的幾個重要環(huán)節(jié)。
2.1 門控時鐘的處理
在SoC的設(shè)計中,經(jīng)常會用到門控時鐘。如圖4(a)所示,當(dāng)en為‘1’時,時鐘clk可傳送到gclk;當(dāng)en為‘0’時,gclk恒為‘0’。為了防止真實芯片中en和clk延遲差異可能造成的毛刺,該電路還需要一個latch鎖住en的狀態(tài)。對于SoC設(shè)計,使用者可以根據(jù)芯片使用情況把一些不用的模塊的時鐘關(guān)閉,這大大降低了芯片的功耗。
由于FPGA芯片特定的結(jié)構(gòu),它的全局時鐘線數(shù)非常有限,并且經(jīng)過與門輸出的信號傳輸?shù)饺謺r鐘需要很大的額外延時,這使得圖4(a)電路很難在FPGA中實現(xiàn)。通常的辦法是,在FPGA中采用如圖4(b)所示的電路來代替門控時鐘的功能,該電路把源時鐘clk和en信號分別接到每個觸發(fā)器端。當(dāng)en信號為‘0’時,clk信號雖不停止,但觸發(fā)器并不觸發(fā),這使得該電路的功能與4(a)相同。該方法把芯片內(nèi)的時鐘線數(shù)大大縮小,使之可以采用全局時鐘線布線,這充分利用了FPGA中全局時鐘0偏斜的特點,避免了由于時鐘線的延時所產(chǎn)生的時序問題,提高了系統(tǒng)的性能。目前,DC_FPGA綜合工具可以支持門控時鐘的自動處理,它要求把RTL代碼中門控時鐘單元改寫成特定的風(fēng)格,并增加幾條約束語句,即可自動實現(xiàn)如圖3所示的處理。該方法使時鐘樹非常復(fù)雜的SoC設(shè)計的FPGA驗證變得簡單,在實用中取得了非常好的效果。
2.2 硬IP核替換與RTL重新整合
在SoC設(shè)計中,經(jīng)常會使用一些硬IP核,如PLL、SRAM、ADC、USB transceiver等,這些電路大部分屬于模擬電路,無法在FPGA中實現(xiàn)。對于PLL、SRAM等模塊,一般采用FPGA內(nèi)部的時鐘管理資源和存儲資源來實現(xiàn),只要在RTL調(diào)用關(guān)系上作些調(diào)整即可。對于其他硬IP核,需要在開發(fā)板上選用同樣功能的芯片,與FPGA共同實現(xiàn)它們的功能。在RTL級,首先要取消對硬IP核的調(diào)用,然后在ISE軟件約束中,把原先連接IP的信號綁定" title="綁定">綁定到FPGA的I/O上,并與功能芯片的特定信號相接。由于用于替換硬IP的資源很難做到在引腳和功能上完全一致,還需要根據(jù)具體情況對RTL代碼稍作修改。
對于多FPGA驗證,需要把SoC設(shè)計分成幾個部分,分別在不同的FPGA上實現(xiàn)。這時主要應(yīng)考慮FPGA資源的合理利用以及功能的完整性,讓各個FPGA完成相對獨立的功能,這將簡化RTL代碼的分割,也使調(diào)試工作變得相對容易。
2.3 約束的移植
在IC的后端設(shè)計中,需要加入很多時序、功能等約束,如最大時鐘周期、false path、重命名等。這些約束在FPGA實現(xiàn)過程中也要求有效,但因FPGA工具軟件約束語法不同,需要進(jìn)行約束的移植。在漢芯的FPGA驗證項目中,綜合工具DC_FPGA與DC的約束語法兼容,可以直接采用DC的約束語句。DC_FPGA綜合生成EDIF文件,在ISE下進(jìn)行布局與布線操作,這時應(yīng)采用perl語言把DC中的時序相關(guān)約束轉(zhuǎn)換成ISE的約束,這種做法減少了人為錯誤,提高了執(zhí)行效率。
另外,還要加入FPGA的相關(guān)約束,主要包括FPGA后端布局布線策略的設(shè)置、存儲器初始化和I/O的綁定等約束。對于前兩種,可根據(jù)項目的要求和ISE的語法加入適當(dāng)約束即可。但對于I/O非常多的FPGA,I/O綁定約束靠手工維護(hù)很容易出錯,而且如果綁定到錯誤的位置,有可能造成比較大的故障,甚至損壞硬件。這里建議在RTL級為每塊FPGA寫一個通用的頂層模塊,信號的命名與原理圖中一致,并在約束文件中綁定到正確位置,再由該頂層文件調(diào)用實際的SoC設(shè)計代碼,這種做法將會大大降低版本變更中人為出錯的可能。
2.4 自動仿真環(huán)境搭建
FPGA后端仿真對于檢驗FPGA操作流程中各個步驟的正確性是至關(guān)重要的一步,沒有一個比較完善的后端仿真,SoC設(shè)計就很難成功地在FPGA平臺上實現(xiàn)。在漢芯的項目中,RTL代碼的前端仿真環(huán)境已經(jīng)實現(xiàn)了激勵的自動生成與結(jié)果的自動比對功能。如圖3所示,驗證人員把測試各個模塊的匯編程序和RTL代碼輸入,仿真環(huán)境會自動編譯程序并把生成的指令和數(shù)據(jù)初始化到RAM中,并開始仿真。在仿真過程中會自動把所要求的寄存器或RAM中的內(nèi)容與正確的值相比較,并給出正確與否的結(jié)論,同時也會生成相應(yīng)的波形和日記文件以供分析。對于FPGA后端仿真環(huán)境,應(yīng)該具備前端仿真環(huán)境的驗證功能,并且與前端仿真環(huán)境保持一致,這保證了同一個激勵程序分別在前后端的環(huán)境下仿真,可以得到相同的結(jié)果。當(dāng)出現(xiàn)不一致時,比較生成的波形就很容易定位FPGA后端操作中的問題。
基于上述分析,建立FPGA后端仿真環(huán)境首先要求在FPGA后端工作的每個步驟中,從層次結(jié)構(gòu)、命名規(guī)則等方面都要與前端RTL代碼保持一致,這可以通過工具軟件中相應(yīng)的約束來實現(xiàn)。另外,仿真中要求能把匯編程序下載到片內(nèi)RAM中,而ISE軟件生成的仿真模型中,片內(nèi)RAM已經(jīng)變成了由很多塊block RAM拼成,對它們的初始化會很復(fù)雜。一個好的解決方案是在后端靜態(tài)時序分析都正確的前提下,把ISE軟件生成的仿真模型文件中的RAM替換成與前端仿真模型中的RAM相一致,這即保證了與前端一致,也方便了對其初始化和檢測內(nèi)容。
3 軟硬件協(xié)同驗證
下面將結(jié)合項目實例介紹軟硬件協(xié)同驗證技術(shù),如圖5所示。該項目采用具有10級流水線的低功耗高性能DSP核,與ARM922T構(gòu)成雙核的SoC,面向移動平臺應(yīng)用。由于在仿真環(huán)境中難以對整個系統(tǒng)進(jìn)行充分的分析和驗證,故將該SoC在FPGA平臺上實現(xiàn)。該平臺通過以太網(wǎng)采用DMA方式把圖像數(shù)據(jù)傳給DSP,由DSP程序?qū)崿F(xiàn)各種圖像處理的算法,并把處理結(jié)果從以太網(wǎng)傳回PC機(jī),同時通過UART報告處理進(jìn)度。利用該驗證平臺可實現(xiàn)如下任務(wù)。
3.1 系統(tǒng)驗證
進(jìn)一步驗證在真實應(yīng)用情況下整個SoC設(shè)計的功能的正確性。由于ARM具有一套完善的開發(fā)工具,可以非常容易地控制它產(chǎn)生激勵并監(jiān)測DSP和外圍模塊的運行情況。首先,通過ARM實現(xiàn)調(diào)試DSP的功能,在DSP內(nèi)部加入DEBUG模塊后,就可以通過它對DSP進(jìn)行程序下載、單步、斷點等功能調(diào)試。另外,還可以在ARM上運行測試程序,把系統(tǒng)運行到特定時間和步驟的執(zhí)行結(jié)果提取出來并自動比較是否正確,然后把這些信息通過UART傳到PC機(jī),這將使整個系統(tǒng)的運行完全透明。
3.2 架構(gòu)分析
對于一個SoC設(shè)計,架構(gòu)的設(shè)計是至關(guān)重要的,它要求根據(jù)SoC具體應(yīng)用情況對芯片的功耗、帶寬、成本等多方面因素進(jìn)行折中,超過實際需要的性能或帶寬將會帶來成本和功耗的增加,這些都將影響產(chǎn)品的市場競爭力。通過加入一些特定的分析監(jiān)測模塊,就可以在FPGA平臺上更加容易地分析系統(tǒng)架構(gòu)的性能。如圖5所示,AHB分析器可以把AHB總線上的主從設(shè)備的切換頻率和效率、最大總線利用率等細(xì)節(jié)情況真實地反饋到PC機(jī),為SoC架構(gòu)的分析提供非常真實的資料。
3.3 軟件優(yōu)化與分析
對于一個SoC平臺系統(tǒng),軟件的設(shè)計與優(yōu)化也是非常重要的。在FPGA平臺上有上述提到的多種手段監(jiān)控和分析軟件運行情況,這樣可以更好地優(yōu)化軟件,發(fā)揮SOC平臺的最大潛力。還可以通過分析不同功能的應(yīng)用軟件對系統(tǒng)帶寬和處理能力的真實需求,研究增加硬件協(xié)處理功能的可行性和必要性,做到真正的軟硬件協(xié)同設(shè)計與驗證。
上述SoC項目實例已在FPGA開發(fā)板上實現(xiàn),成功地運行了小目標(biāo)檢測等多個圖像處理程序,并實時反饋了DSP指令流水中斷、DMA數(shù)據(jù)搬移、AHB總線競爭等許多芯片運行情況的信息。其中,基于對AHB總線競爭信息的分析,優(yōu)化了軟件的數(shù)據(jù)調(diào)度機(jī)制,同時改進(jìn)了總線仲裁機(jī)制,切實地提高了AHB總線的數(shù)據(jù)吞吐率。
參考文獻(xiàn)
1 Hauck S, Borriello G.Pin Assignment for Multi FPGA Sys-tems.IEEE Transactions on Computer-aided Design of Integ-rated Circuit and Systems, 1997;16(9)
2 Gschwind M. FPGA Prototyping of a RISC Processor Core for Embedded Applications. IEEE Transactions on Very Large Scale Integration (VLSI) Systems,2001;9(2)
3 Synopsys. Design Compiler FPGA user guide. CA: Synopsys Inc., Mar., 2004
4 Synopsys. VCS user guide. CA: Synopsys Inc., Sep., 2003