??? 摘 要: 針對當(dāng)前RTL綜合面對的挑戰(zhàn),總結(jié)了實際項目中的經(jīng)驗,可以使綜合工具在更少的時間里產(chǎn)生的網(wǎng)表芯片面積更小、速度更快,而功耗更低。
??? 關(guān)鍵詞: RTL綜合;CMOS電路;設(shè)計自動化
?
?
??? 隨著微電子設(shè)計復(fù)雜度不斷增加,生產(chǎn)工藝的不斷縮小,對設(shè)計自動化工具提出了不斷的挑戰(zhàn)。電子設(shè)計、自動化需要能處理非常復(fù)雜的設(shè)計所產(chǎn)生的挑戰(zhàn)和需求。邏輯綜合更是應(yīng)該滿足這一需求。邏輯綜合工具應(yīng)該可以在合理的時間里處理上百萬甚至千萬門的邏輯電路。而傳統(tǒng)的邏輯綜合理論主要是靠電路綜合轉(zhuǎn)換的反復(fù)試驗,這個過程其實是功效和質(zhì)量的折中,通常不能產(chǎn)生最優(yōu)化的結(jié)果。而且,產(chǎn)生的電路非常依賴于具體的設(shè)計。因此,只有非常有經(jīng)驗的設(shè)計工程師才能綜合出優(yōu)化的電路。面對這些挑戰(zhàn),可以用本文所闡述的方法,在更少的時間里,綜合出速度更快、面積更小、功耗更低的芯片。其技術(shù)是基于新出現(xiàn)的綜合工具,不斷增強的后端工具,更好的計算機資源和更快的操作系統(tǒng)。通過應(yīng)用這些技術(shù),已經(jīng)成功地完成了一個90 nm芯片項目,特別是使用這些技術(shù)產(chǎn)生的網(wǎng)表,可以在后端實現(xiàn)的時候很快地時序收斂,保證了芯片的按時完成。
??? 怎樣指導(dǎo)綜合工具產(chǎn)生想要的電路?當(dāng)使用工具綜合設(shè)計的時候,首先明確的是工具永遠(yuǎn)按照工程師的指導(dǎo)在工作,這就需要工程師在做綜合之前,首先要清楚需要完成什么樣的電路。比如電路的工作頻率,有無低功耗要求,面積要求等;其次要清楚工具會為我們做什么,而不能將工具看成一個萬能的工具;然后要指導(dǎo)約束工具綜合產(chǎn)生出我們需要的電路。接下來介紹應(yīng)用哪些規(guī)則和方法,可以綜合產(chǎn)生更好的電路。
1 重視RTL編碼設(shè)計
??? 第一個規(guī)則就是注重RTL設(shè)計。無論綜合工具提高了多少,多么好的計算機和多快的操作系統(tǒng),都要從設(shè)計剛開始的時候就注重RTL編碼設(shè)計。綜合是將設(shè)計理念從一種表達(dá)形式(RTL功能描述),轉(zhuǎn)換成另一種形式(針對于某一工藝的門級網(wǎng)表),電路在綜合前后具有相同的功能[1]。不能將綜合看成一個黑盒子而不知道里面的內(nèi)容。必須清楚的知道所需要實現(xiàn)的電路、設(shè)計的特殊性、應(yīng)用的綜合工具、還有工具如何處理邏輯電路。不要依賴后端工具來解決時序問題,而是要在開始設(shè)計編碼的時候,就應(yīng)考慮怎么解決這些問題。在項目開始的時候,應(yīng)用從先前芯片設(shè)計中得到的經(jīng)驗,結(jié)構(gòu)化設(shè)計理念,更有可能產(chǎn)生高效的電路。預(yù)先計劃怎樣描述RTL設(shè)計,就不用在后端實現(xiàn)的時候花很多時間進(jìn)行布局布線的設(shè)計。
2 采用自上而下的綜合
??? 綜合工具的性能已經(jīng)提升了很多,能夠在可以接受的時間里完成自上而下(top-down)的綜合,而不用從下而上(bottom-up)的綜合。這樣可以簡化綜合約束的管理,減少編譯設(shè)計所需的綜合腳本,也就減少了使用綜合工具所需的許可證。自上而下的綜合可以使工具在優(yōu)化時知道設(shè)計在模塊間的拓?fù)溥B接、負(fù)載、時序,從而能綜合產(chǎn)生更好的電路。使用自上而下的綜合方法,還可以消除綜合對時序預(yù)算的依賴。
3 只對關(guān)鍵路徑加額外的約束
??? 傳統(tǒng)的綜合流程里,為了能在后端實現(xiàn)時留有一定的余地,通常建議在加約束的時候,將時鐘額外增加10 %,有些設(shè)計甚至增加更多,或者用更大的連線模型,以留有足夠的余地。一些設(shè)計在加約束時,增加了如此多的額外約束[3],以至于雖然設(shè)計在后端實現(xiàn)的時候滿足了時序收斂的要求,但是卻以犧牲面積為代價,而且有些可能是不必要的。
??? 現(xiàn)在的工具可以明確需要在哪些關(guān)鍵路徑上加額外的約束,以使這些路徑在后端實現(xiàn)時能夠滿足時序的要求,而不用將整個時鐘都加額外的約束。如果將時鐘加額外的約束,將會使設(shè)計中使用這個時鐘的電路都被不必要的優(yōu)化,包括那些在后端實現(xiàn)的時候時序已經(jīng)收斂的電路。
??? 在本方法的流程里,定義了實際需要的時鐘,不是將整個時鐘加額外的約束,而是只針對關(guān)鍵路徑加額外約束,如圖1所示。
?
??? 不可否認(rèn),這個流程仍然需要反復(fù),但是通過這個流程綜合產(chǎn)生的網(wǎng)表能夠得到更好的時序收斂結(jié)果。因為在后端實現(xiàn)中的關(guān)鍵路徑在綜合時被加了更快的約束,而非關(guān)鍵路徑?jīng)]有加額外約束,從而減少了芯片面積,降低了成本。
4 重視寄存器與寄存器之間路徑的最優(yōu)化
??? 通常,設(shè)計中的輸入輸出(I/O)成為整個芯片工作頻率的瓶頸,而核心的邏輯能在更快的頻率上工作。所以在綜合時,放松加在I/O上的約束,使綜合工具能夠?qū)W⒃诩拇嫫鞯郊拇嫫髀窂降膬?yōu)化。待路徑優(yōu)化滿足了設(shè)計的需要,再關(guān)注輸入輸出路徑,或者對輸入輸出路徑做一些結(jié)構(gòu)的微調(diào)以滿足產(chǎn)品的需求。通過這種方法,可以使綜合工具先優(yōu)化寄存器到寄存器的路徑,然后再優(yōu)化輸入輸出路徑,達(dá)到設(shè)計要求。
5 利用電容及電阻的物理信息
??? 傳統(tǒng)的基于輸出連線負(fù)載模型不能很好地模擬連線間的延遲。如果設(shè)計的大小在優(yōu)化時發(fā)生了變化,即使是定制的連線負(fù)載模型也是低效的,因為它是“靜態(tài)”的?,F(xiàn)在的綜合工具可以讀入物理庫文件,可以更好地模擬,并動態(tài)地調(diào)整物理連線上的時序。例如,Cadence公司的RTL Compiler在綜合的時候,利用布局評估器(PLE)使用物理信息來計算線延時[2]。雖然PLE沒有芯片的物理布局布線信息,但是可以用讀入的LEF文件,或者電容文件估算出線延時。在綜合時,利用物理信息來估算連線的電容、電阻以計算線延時比用傳統(tǒng)的連線負(fù)載模型更準(zhǔn)確、更高效,而且也容易使用。
6? 設(shè)置正確的時序特例
??? 時序特例(timing exception)是綜合工具默認(rèn)的單周期時序行為的特例。對于設(shè)計中每一個不符合默認(rèn)時序特征的電路,都要設(shè)置聲明時序特例,以使綜合工具不去優(yōu)化這條電路,或用更寬松的約束去優(yōu)化。
??? 時序特例共3種:電路延遲、多周期電路和虛假電路。多周期電路是指需要超過1個時鐘的時間來傳送數(shù)據(jù),需要對這個傳送間隔聲明1個有限個數(shù)的時鐘周期。電路延遲特例是指電路的延遲需要滿足具體說明的延遲[4]。電路存在于設(shè)計中,但是不會被激活,稱為功能虛假電路。綜合工具會優(yōu)化這些功能虛假電路以滿足時序的要求。綜合工具是基于靜態(tài)時序分析的工具。靜態(tài)時序是基于連接關(guān)系,而不是功能。不管這些路徑是否會在芯片中真的用到,時序分析都會基于連接關(guān)系顯示出這些關(guān)鍵路徑??梢酝ㄟ^聲明路徑是功能虛假電路來消除很多不需要的關(guān)鍵路徑。越早清除這些虛假路徑,綜合工具就能越早地優(yōu)化那些真正的路徑,也就能更有效地達(dá)到時序收斂。所以,設(shè)置正確的、有效的時序特例至關(guān)重要。
7 允許新的時序優(yōu)化
??? 新的時序優(yōu)化技術(shù)可以綜合產(chǎn)生出更好的電路,但是通常會有邏輯等效性檢查的問題。為了避免邏輯等效性檢查題,應(yīng)盡量使用最新版本的邏輯等效性檢查工具,或者使用與綜合工具相對應(yīng)版本的邏輯等效性檢查工具。邏輯等效性檢查工具在理解綜合優(yōu)化上已經(jīng)取得了很大的進(jìn)步。邏輯檢查工具現(xiàn)在可以驗證很多綜合優(yōu)化,比如寄存器重新調(diào)整(register retiming)、邊界優(yōu)化、數(shù)據(jù)分支優(yōu)化和時序優(yōu)化等。不要因為這些新的時序優(yōu)化技術(shù)可能產(chǎn)生的邏輯等效性檢查的問題就關(guān)掉這些優(yōu)化,這樣會影響綜合出的電路性能。
8 不要限制對庫單元的選擇
??? 在傳統(tǒng)的綜合中,為了得到更好的網(wǎng)表結(jié)構(gòu),往往限制對庫單元(library cell)的選擇。而現(xiàn)在的綜合工具是基于所加的約束條件和目標(biāo)單元庫來產(chǎn)生邏輯電路。因此,可供選擇的庫單元越豐富,綜合工具就越可能優(yōu)化電路,從而平衡電路的面積、速度和功耗,可以給后端提供更好的電路網(wǎng)表。
本文闡述了多種應(yīng)用在SoC芯片設(shè)計中的綜合技術(shù),應(yīng)用這些技術(shù)和規(guī)則,可以更加充分地利用現(xiàn)代綜合工具和軟硬件環(huán)境,從而能在更短的時間內(nèi),使綜合產(chǎn)生的網(wǎng)表電路速度更快、面積更小、功耗更低,后端實現(xiàn)時也能更快地進(jìn)行時序收斂,從而滿足芯片設(shè)計的要求。今后將繼續(xù)優(yōu)化本文介紹的綜合技術(shù),跟蹤使用新的綜合工具,以優(yōu)化本文的芯片設(shè)計。
參考文獻(xiàn)
[1]?Synopsys Inc. Design compiler reference manual. Release 2006.06, Mountain View, CA, 2006.
[2]?Cadence Inc. RTL compiler reference manual. Release 6.2.2,? Seely Ave., San Jose, CA, 2007.
[3]?YU Xin You, HONG Peng, YAN Hui Yang. Signal integrity timing closure of million gates SOC platform. IEEE ASICON, 2005.
[4]?JUNG J Y, KIM T. Timing variation-aware high-level synthesis IEEE Computer-Aided Design, 2007.