一種面向系統(tǒng)芯片的FPGA協(xié)同驗證方法
1引 言
隨著SOC(系統(tǒng)芯片)設(shè)計任務(wù)復(fù)雜度的提高,功能驗證已成為系統(tǒng)設(shè)計中最大的瓶頸。對于百萬門級的SOC芯片,每次投片的NRE是巨大的,預(yù)計,在未來兩年,驗證在設(shè)計中所占的比重將達(dá)到50%以上。由于SOC系統(tǒng)普遍涉及實時環(huán)境下的應(yīng)用,現(xiàn)有的仿真工具不可能解決所有的功能驗證問題,有必要利用FPGA在接近實時的條件下進行軟硬件協(xié)同驗證。基于多片F(xiàn)PGA實現(xiàn)的驗證往往面臨系統(tǒng)分割的挑戰(zhàn)。盲目的、缺少優(yōu)化的系統(tǒng)分割,不僅很可能在綜合、分割、板上實現(xiàn)出現(xiàn)多次反復(fù),浪費大量的時間,而且也難以保證FPGA驗證結(jié)果與ASIC設(shè)計的一致性。
本文在傳統(tǒng)邊界劃分的基礎(chǔ)上,通過靜態(tài)時序分析工具,利用關(guān)鍵路徑時延信息,對分割過程進行約束。新的驗證策略注重系統(tǒng)分割在時序收斂、面積、數(shù)量和管腳數(shù)等方面的平衡,目的是使分割結(jié)果趨于合理,驗證環(huán)境更加接近SOC設(shè)計原型,避免傳統(tǒng)FPGA驗證在系統(tǒng)分割、綜合和設(shè)計等環(huán)節(jié)的反復(fù)迭代,實現(xiàn)了驗證和SOC開發(fā)調(diào)試的同步。文章同時討論了該方法對于信號完整性分析的貢獻。
最后,通過一個分割實例,就分割效率與傳統(tǒng)方法進行了對比。
2傳統(tǒng)的FPGA驗證流程
傳統(tǒng)的FPGA驗證流程如圖1所示。這種綜合與分割相互無關(guān)的驗證流程存在諸多缺陷。首先,從ASIC結(jié)構(gòu)到FPGA結(jié)構(gòu)的轉(zhuǎn)換存在差異,例如,很多SOC系統(tǒng)設(shè)計經(jīng)常會處理時鐘信號穿越“與”、“或”、“與非”等門的情況,如圖2所示。
此時,綜合工具一般不會自動選用FPGA專有的時鐘結(jié)構(gòu),其結(jié)果是產(chǎn)生時鐘歪斜(clockskew),導(dǎo)致ASIC代碼和綜合出來的FPGA在功能上不一致。即,如果忽略時鐘樹在時鐘域范圍的擴散效應(yīng),分割時很有可能導(dǎo)致從ASIC結(jié)構(gòu)到FPGA結(jié)構(gòu)的轉(zhuǎn)換的不一致。這個例子同時說明,類似的問題同樣會在其它電路網(wǎng)絡(luò)中發(fā)生,RTL設(shè)計在滿足時序收斂要求的開發(fā)過程中,無論采用的是動態(tài)驗證還是靜態(tài)驗證技術(shù),都應(yīng)當(dāng)重視電路網(wǎng)絡(luò)中路徑延遲的影響。傳統(tǒng)FPGA驗證的系統(tǒng)分區(qū)分割策略通常采用沿自然邊界劃分的方式,設(shè)計者主觀上通常過分依賴幾何拓?fù)潢P(guān)系和層次化的系統(tǒng)模塊劃分,特別是忽略了分割過程與綜合和時序分析的關(guān)系。這種過于簡單化的分割策略很可能會導(dǎo)致不合理的結(jié)果,FPGA驗證所映射的可能是沒有意義的ASIC結(jié)構(gòu)。
3 基于關(guān)鍵路徑時延約束的FPGA驗證流程
3.1關(guān)鍵路徑時延提取
關(guān)于FPGA驗證,我們認(rèn)為,高效率的系統(tǒng)分割至少應(yīng)該具備兩個條件:找到最佳的分割點和在系統(tǒng)級上逼近設(shè)計。首先,分割在技術(shù)上是可行的,允許將設(shè)計劃分為多個適于單個FPGA實現(xiàn)的模塊,在接近實時的環(huán)境下進行驗證。目前最大的FP2GA標(biāo)準(zhǔn)封裝可提供400到440個I#710;O,對I#710;O的管腳數(shù)目的支持不再成為分割的瓶頸,這也為傳統(tǒng)的沿著內(nèi)核或模塊的邊界進行直接劃分提供了空間。在確定最佳分割點的反復(fù)迭代過程中,我們發(fā)現(xiàn),利用靜態(tài)時序分析獲得的關(guān)鍵路徑時延信息,完全可以用于實現(xiàn)收斂性更好的系統(tǒng)分割。靜態(tài)時序分析是一種檢查ASIC設(shè)計邏輯和時序的工具,其主要目的是計算各通路的性能,識別可靠的蹤跡,診斷建立和保持時間的配合。靜態(tài)時序分析會分析報告所有關(guān)鍵路徑,包括一些重要的調(diào)試信息,比如每個網(wǎng)絡(luò)節(jié)點的扇出或容性負(fù)載等。
通過實踐發(fā)現(xiàn),利用關(guān)鍵路徑時延信息對系統(tǒng)分割和綜合進行約束,可以保證分割按照相對確定的標(biāo)準(zhǔn)進行,獲得時序優(yōu)化的結(jié)果,從而有效地減少了功能驗證過程中的反復(fù)。同時,為使驗證過程更為接近ASIC功能,分割時盡量做到面積、晶體管數(shù)量和管腳的匹配,保證分割的結(jié)果對面積和I#710;O利用而言都是合理的故障定位要求。這些措施均優(yōu)化了FPGA驗證過程,所獲得的綜合分區(qū)和時序收斂結(jié)果更好,為最終物理版圖驗證鋪平了道路。我們采用的具體辦法是,首先根據(jù)靜態(tài)時序分析報告確定關(guān)鍵路徑的分區(qū)門限,然后原則上沿著功能邊界將延遲長的路徑分割到同一個FPGA分區(qū),通過更進一步的綜合分區(qū),獲得收斂性更好的路徑。其結(jié)果是,可以將需要驗證的探測點更多地分割到FPGA邊界,達(dá)到提高I#710;O利用率的目的。顯然,高的I#710;O利用率能夠有效地拓寬FPGA驗證范圍。經(jīng)過改進的FPGA驗證流程如圖3所示。
該流程的優(yōu)勢在于:分割是按照確定的標(biāo)準(zhǔn)進行的,針對傳統(tǒng)驗證流程的時序分析,僅僅對布局布線有效的缺陷,圍繞時序分析這個中心,將邏輯實現(xiàn)和物理實現(xiàn)有機地結(jié)合在一起,著重考慮了關(guān)鍵路徑時延對FPGA分割效率的影響,使分割結(jié)果更為合理。此外,新流程通過在綜合、時序仿真過程、分割驗證中交互進行靜態(tài)時序分析,實現(xiàn)了綜合、分割、驗證、設(shè)計的高效同步。在關(guān)鍵的時延信息和邊界條件約束下,經(jīng)過迭代,功能塊延時和布線延時,能夠取得與實際比較一致的效果,多片F(xiàn)PGA實現(xiàn)時的代碼修改量也得到減少。Xilinx、Altera等FPGA生產(chǎn)商大多支持兼容的第三方時序分析工具,應(yīng)用時選用Synopsys的PrimeTime進行靜態(tài)時序分析。該工具的優(yōu)勢在于不要求用戶輸入激勵或測試矢量,可通過調(diào)用db格式的網(wǎng)表文件,方便地查看關(guān)鍵路徑或指定通路的時序。
3.2 信號完整性的保證
新流程對SOC驗證效率的另一貢獻,是提供了一種在代碼級優(yōu)化信號完整性的途徑,有利于在綜合和板級驗證的過程中對信號完整性實施動態(tài)的控制,及早發(fā)現(xiàn)設(shè)計中隱藏的嚴(yán)重的信號完整性缺陷。信號完整性(SignalIntegrity,SI)是指傳輸線上的信號質(zhì)量及信號定時的準(zhǔn)確性。SOC芯片設(shè)計一般要求數(shù)據(jù)必須在時鐘觸發(fā)沿建立之前穩(wěn)定,才能保證邏輯控制的準(zhǔn)確性。應(yīng)當(dāng)注意到,摩爾定律所隱藏的另一層含義是,RTL系統(tǒng)設(shè)計要隨時應(yīng)付工藝實現(xiàn)條件的變化,因為設(shè)計不可能總是針對最新的工藝條件實現(xiàn)的。
新的工藝條件可能會給原設(shè)計帶來影響。例如,設(shè)計從0125Lm工藝轉(zhuǎn)向0118Lm工藝實現(xiàn)時,就存在信號完整性問題。隨著系統(tǒng)速度和處理帶寬的增加,信號完整性的影響會表現(xiàn)得更加突出。另一方面,傳統(tǒng)的RTL設(shè)計在設(shè)計和驗證環(huán)節(jié)存在與信號完整性分析脫節(jié)的現(xiàn)象,難以發(fā)現(xiàn)并修正信號完整性缺陷,或者在向更高標(biāo)準(zhǔn)工藝遷移時,由于代碼修改量太大,勢必加重系統(tǒng)驗證等環(huán)節(jié)的負(fù)擔(dān),從而使設(shè)計效率大打折扣。因此,我們的出發(fā)點是,爭取以最小的代碼修改量,實現(xiàn)RTL代碼與FPGA的直接映射,保證FPGA功能驗證的要求;同時,將信號完整性的影響在驗證過程中以更直觀的方式體現(xiàn)出來。
分析表明,最直觀的信號完整性問題通常與電路模塊之間的互連點有關(guān),這在靜態(tài)時序分析中實際上有所反映。特別需要指出的是,新的FPGA驗證流程是建立在經(jīng)過優(yōu)化的系統(tǒng)分割基礎(chǔ)上的。正如上一節(jié)所指出,延遲長的路徑基本約束在同一個FPGA分區(qū)。經(jīng)過這樣的優(yōu)化處理,實際上,一方面是對信號完整性有一定的優(yōu)化;另一方面,由于I#710;O利用率的提高,更多的故障探測點分割到了FPGA的邊界,信號完整性在協(xié)同驗證中會得到更多的反映,通過軟件全速仿真,比較容易查找和定位設(shè)計缺陷,及早消除設(shè)計隱患;同時,為RTL代碼的動態(tài)優(yōu)化提供了依據(jù),有利于在設(shè)計前期盡量減少信號完整性缺陷,使之適應(yīng)工藝條件變化的能力更強,提高設(shè)計的穩(wěn)健性。通過采取以上措施,我們在原SOC設(shè)計的基礎(chǔ)上,以較小的代碼修改量,實現(xiàn)了從0125Lm向0118LmCMOS工藝的平滑過渡,并通過了系統(tǒng)后仿真。
4 系統(tǒng)分割驗證結(jié)果
FPGA分割選用XilinxISE基于網(wǎng)表的集成驗證環(huán)境,采用三種XC4000系列器件(XC4003、XC4005、XC4010)生成驗證原型。該系列器件能生允許范圍內(nèi)的任意頻率,可方便地提取片上和片外的精確50#710;50占空比的時鐘,時鐘邊緣的定時精度達(dá)到1%。加之經(jīng)過改進的時鐘布線,驗證環(huán)境比較接近高性能SOC的實際要求,能夠保證驗證環(huán)境與SOC系統(tǒng)保持最大限度的一致。圖4是采用地址#710;數(shù)據(jù)復(fù)用實現(xiàn)的PCI接口模塊的FPGA分割結(jié)果。其中,PCI控制單元采用兩級控制流水方式實現(xiàn)與FIFO的高速數(shù)據(jù)交換,流水線控制信號完全約束在FPGA邊界內(nèi)部。圖5是FPGA在布局布線后,50MHz系統(tǒng)時鐘下PCI接口64字節(jié)數(shù)據(jù)緩沖存儲器讀操作的后仿真結(jié)果。
這種更為準(zhǔn)確的分割驗證同樣會給板級測試帶來方便。硬件仿真時,可以利用邏輯分析儀的數(shù)據(jù)接口測試流到探測頭的信號,也可以通過串口或以太網(wǎng)接口對邏輯分析信道進行采集分析,便捷地測試FPGA之間的傳遞信號。經(jīng)過改善的FPGA分割驗證策略比較準(zhǔn)確地反映了信號網(wǎng)中的路由拓?fù)?包括FPGA內(nèi)部組合邏輯延遲、信號通過FPGA邊界所需的時間;故障的定位也相對容易,某些故障還可以提前預(yù)知。在進一步的驗證工作中,使用了6片XC4000對一個基于Verilog語言實現(xiàn)的的SOC系統(tǒng)(包括VLIW處理器核、總線控制器、I#710;O接口等)進行了分割(設(shè)計是以較小粒度的方式實現(xiàn)的,這樣分割效果更為理想)。全芯片軟件固化激勵測試的結(jié)果與RTL測試結(jié)果完全一致。表1列出了改進方案與傳統(tǒng)分割結(jié)果的數(shù)據(jù)對比。結(jié)果表明,I#710;O利用率有明顯的提高,邏輯控制塊的利用率也有所改進,進一步證明了方案的有效性。
5結(jié) 論
本文探討了一種經(jīng)過優(yōu)化的SOC系統(tǒng)的FP2GA協(xié)同驗證策略,依靠靜態(tài)時序分析工具,利用關(guān)鍵路徑時延對分割過程進行約束,顯著改善了傳統(tǒng)的沿自然邊界分割的效率,驗證結(jié)果更為接近SOC運行環(huán)境。新的協(xié)同驗證流程實現(xiàn)了SOC設(shè)計與FPGA驗證的同步,減少了不必要的反復(fù)迭代環(huán)節(jié),有利于排除系統(tǒng)設(shè)計階段可能導(dǎo)致系統(tǒng)失效的因素,加大了系統(tǒng)設(shè)計生產(chǎn)調(diào)試一次成功的可能性。
評論