引言
數(shù)字集成電路隨集成度的提高需求,已經(jīng)發(fā)展成為片上 系統(tǒng)(System On Chip,SOC),后端物理設計一直以來都是依 賴于EDA工具來實現(xiàn)的,在0.18 um工藝節(jié)點前,一般依靠 EDA流程,工具會幫我們解決大部分的后端設計問題,需要 人工干預的比較少,但是進入深亞微米,甚至超深亞微米階 段,后端物理設計如果單純地依靠EDA工具顯然不能解決所 有問題,特別是當今時代電子產(chǎn)品競爭激烈,對芯片的性能、 功耗、成本等提出了更高的要求。如何才能做出一個有競爭力 的SOC芯片,如何適應新工藝的要求,已經(jīng)成為后端物理設 計工程師需要思考的新問題,本文基于65GP (65nm General purpose plus)工藝的實際項目模塊級物理設計,在現(xiàn)超深亞 微米下,針對低功耗、congestion、信號完整性等后端物理設 計的關鍵問題做細致研究,提出了一些新方法和新思想。
1低功耗設計理論研究
隨著工藝特征尺寸的縮小以及復雜度的提高,IC設計面 臨了很多挑戰(zhàn):速度越來越高,面積不斷增大,噪聲現(xiàn)象更 加嚴重等。其中,功耗問題尤為突出,工藝進入130 nm以下 節(jié)點后,單位面積上的功耗密度急劇上升,已經(jīng)達到封裝、散 熱以及底層設備所能支持的極限。隨著工藝進一步達到90nm 以下,漏電流呈指數(shù)級增加。在65 nm設計中,漏電流已經(jīng)和 動態(tài)電流一樣大,曾經(jīng)可以忽略的靜態(tài)功耗成為功耗的主要 部分。功耗已成為繼傳統(tǒng)二維要素(速度、面積)之后的第三 維要素。另外,目前飛速發(fā)展的手持電子設備市場,為了增強 自身產(chǎn)品的競爭力,也對低功耗提出了越來越高的要求;其次 散熱問題、可靠性問題也要求IC的功耗越小越好;最后全球 都在倡導綠色環(huán)??萍祭砟睿Wo環(huán)境,節(jié)約能源。這些都 要求IC設計時必須采用低功耗技術,以有效應對這些挑戰(zhàn)。
0.18 um及以上工藝,在低功耗設計手段上較為有限,主 要原因在于,靜態(tài)功耗很小,基本不用關心。動態(tài)功耗方面, 主要的功耗來自于Switching Power,即與負載電容、電壓以 及工作中的信號翻轉(zhuǎn)頻率相關。減小負載電容,就必須在設計 上下功夫,減少電路規(guī)模。減少信號翻轉(zhuǎn)頻率,除了降低時 鐘頻率外,只有在設計上考慮,能不翻轉(zhuǎn)的信號就不翻轉(zhuǎn)。至 于電壓,由于0.18 um及以上工藝的閾值電壓有一定的限制,因此,供電電壓降低,勢必影響工作頻率。一般說來,在0.18 um 工藝下設計電路,主要有以下幾種對低功耗設計的考慮。
圖1給出了影響芯片功耗的因素。由圖1可見,通常影響 芯片功耗的因素有電壓、漏電流、工作頻率、有效電容等。一 般可以通過降低工作電壓、減少翻轉(zhuǎn)負載以及降低電路翻轉(zhuǎn) 率等來降低動態(tài)功耗;并通過減少工作電壓以及減少漏電流 來降低靜態(tài)功耗。當前,業(yè)界采用了各種方法來降低芯片的 動態(tài)功耗和靜態(tài)功耗。傳統(tǒng)的低功耗技術有時鐘關斷(Clock- Gating), 多域值電壓(Multi-threshold libraries)等;較新的 技術有多電壓(Multi-Voltage)、電源關斷(MTCMOS Power Gating)、帶狀態(tài)保持功能的電源關斷(Power Gating with State Retention),動態(tài)電壓頻率調(diào)整(Dynamic Voltage and Frequency Scaling)。
圖1影響功耗的因素
2低功耗設計方法
電路優(yōu)化(Gate-level Optimization)
在設計實現(xiàn)過程中,自動化的綜合和布局布線工具可以 根據(jù)電路的時序特征,來綜合優(yōu)化每條路徑中用到的所有標準 單元的時序、面積以及功耗。由于輸出電容減小,可以減小動 態(tài)功耗;同時,由于標準單元功耗較小,根據(jù)負載將非關鍵路 徑中的標準單元切換到具有較小驅(qū)動能力的單元MOS管和電 容變小,靜態(tài)漏電流也同時減小。除了變化驅(qū)動能力之外,還 可以通過優(yōu)化電路中的邏輯單元、移動單元物理位置等方法 來達到降低功耗的目的。
多域值電壓庫(Multi-Threshold)
圖2所示是漏電流、單元速度與閾值電壓三者之間的關系。 一般情況下,高域值電壓的標準單元漏電流小但速度慢,低 域值電壓的標準單元則速度快但漏電流大。所以,采用多域值 電壓庫作為設計實現(xiàn)的目標庫,在設計中盡可能多地用高域值 電壓的標準單元,僅在關鍵路徑上為了滿足時序要求采用低域 值電壓的標準單元。這樣就可以最大限度地減小標準單元的 漏電流,從而降低靜態(tài)功耗。
圖2漏電流、單元速度與閾值電壓三者之間的關系
電源關斷(Power-Gating)
芯片中某些模塊在不工作時,可以關斷其電源,在需要工 作時,再將其電源導通,這就是電源關斷技術。它可以使電源 關斷區(qū)域的漏電流降至接近零,極大地減小芯片的靜態(tài)功耗。 現(xiàn)在電源關斷的技術也很多,有片內(nèi)關斷、片外關斷。顧名思 義,片外關斷就是在芯片外部通過切斷電源來關斷芯片內(nèi)部 的某些模塊。片內(nèi)關斷又分為精細關斷(fine-grain)和粗糙關 斷(coarse-grain):精細關斷需要特別庫的支持,可以實現(xiàn)每 個標準單元的精細關斷;而粗糙關斷只需要一些門控單元就可 以實現(xiàn)對某些模塊的電源或地的控制。圖3所示是電源關斷 (Power-Gating)原理圖,該方法用pmos來控制電源,用nmos來控制地。
2.4 基于 UPF 的低功耗設計流程
IEEE1801 標準 Unified Power Format (UPF)是被用于 標準語句描述低功耗意圖的的低功耗實現(xiàn)標準。圖4所示是 Synopsys公司提供的完整的基于UPF的低功耗綜合、物理實 現(xiàn)和驗證流程。該流程始于寄存器傳輸級(RTL)描述的邏輯設計,加上一個獨立的描述低功耗設計意圖的UPF文件。
RTL和UPF描述分別放在獨立的文件中,使它們可以單獨維 護和修改。在這個示例中,UPF是用Design Compiler在綜合階段實現(xiàn)、描述低功耗設計意圖,在IC Compiler中讀入低功 耗意圖的UPF文件,最終通過物理設計流程來實現(xiàn)。
基于UPF的設計流程與傳統(tǒng)流程相比,需要一些庫中 特殊單元的支持以及在lib時序庫中添加電源地的信息。特殊 單元包括 Level-shifter、Isolation Cell、電源關斷單元(Power Gating,也叫 MTCMOS)、Retention-Register 以及 Always-on 單元。下面分別闡述:對于多電壓設計,需要用Level-shifter 來實現(xiàn)不同電壓域之間信號的電平轉(zhuǎn)換。根據(jù)信號電平由高到 低和由低到高的轉(zhuǎn)換,Level-shifter分為兩類,High to Low Level-shifters,Low to High Level-shifters。對于電源關斷技術, 電源關斷區(qū)域的輸出信號在電源關斷時處于不定態(tài),這種不定 態(tài)會導致其負載單元出現(xiàn)內(nèi)部電流,從而導致不期望的功耗, 所以需要在電源關斷區(qū)域的輸出信號上插入Isolation Cell來 實現(xiàn)對不定態(tài)的隔離。對于電源關斷技術,需要Power-Gating Cell(也稱MTCMOS)來實現(xiàn)電源的關斷??梢赃x擇斷開電 源(VDD)或地(VSS)的連接來實現(xiàn)Power-Gating,這兩 種 Power-Gating Cell 被形象地稱為 Header-Switch 和 Footer- Switch。在電源關斷模塊,有可能要求register對關斷前的數(shù) 據(jù)進行鎖存,或者在電源打開后要求對鎖存的數(shù)據(jù)進行恢復, 這就需要特殊的單元Retention-Register。它有兩個電源,一 個用于模塊電源未關斷時的工作用電,一個用于模塊電源關斷 時的用電。它還有兩個控制信號save和restore,用于控制是 否鎖存數(shù)據(jù)或者恢復數(shù)據(jù)。在電源關斷模塊,還有可能需要 有些信號線或邏輯長期工作,比如MTCMOS單元的控制信號 線,Retention-register 的 save/restore 控制信號,isolation cell 的控制信號等。為了實現(xiàn)這種功能,這就需要另外的特殊單元 叫 always-on cell[2]。
3超深亞微米congestion解決方案研究
隨著工藝尺寸降低,模塊面積越來越小,而且單個模塊 的邏輯量可達上億門級別,芯片的繞線將面臨巨大挑戰(zhàn),筆 者以65GP工藝的模塊級物理設計為例來研究超深亞微米下的 congestion解決方案。
3.1 floorplan
一個好的floorplan是一個復雜物理設計成功的一半,好 的floorplan往往可以決定好的QOR (quality of result),往往 可以影響之后的IR drop和EM以及后期timing/drc/power修 復的復雜度,所以筆者在設計之初階段把評估floorplan作為 工作的重點。在65GP工藝的模塊物理設計中,筆者總結(jié)的 floorplan的經(jīng)驗如下:
floorlan的規(guī)劃應該首先根據(jù)前端提供的數(shù)據(jù)流。筆者的 做法是在 IC Comiler 中 write_def 之后 defIn 到 EDI 中,EDI 看數(shù)據(jù)流比較直觀,然后根據(jù)頂層大致定的I/O的位置開始, check哪些module的MACRO和I/O的交互比較多,首先處 理這些MACRO,然后依次查看和這個MACRO相關的其他 的module的交互,直到規(guī)劃完所有的MACRO。floorplan圖 如圖5所示。在floorplan的過程中,要特別注意MACRO之 間的位置,MACRO不應該埋得太深,MACRO之間的間距 要盡量留夠,以防止后期fix timing時沒有足夠的空間或者是 MACRO溝道內(nèi)的noise嚴重。在根據(jù)數(shù)據(jù)流規(guī)劃時要盡量控 制module間的跨層次連線,這樣后期congestion可能會有影響。 總之,floorplan要根據(jù)多次的嘗試的結(jié)果來做改進。
圖 5 floorplan 圖示
3.2 P&R流程下的congestion解決方案
有了一個好的floorplan,有了好的QOR的條件,接下來, 就是需要在P&R的各個流程中去嚴格控制并執(zhí)行congestion 解決方案。根據(jù)項目中的模塊級物理設計,可以從以下幾個方 面來著手:
第一,在run之前,應該檢查EDA工具的運行環(huán)境。一 是工具的版本,版本不同,route后的QOR會有很大的差 距。其次是要check工具的腳本環(huán)境。比如ICC中,要首先 確認繞線的最高層次,以及時鐘線的繞線rule、層次,設 置正確的TOP_LAYER。比如,模塊的是1p8m 5x2z,本 來是8層metal的繞線資源,但是,由于TOP_LAYER要用 于頂層的power規(guī)劃,所以metal8不能用,這時候TOP_ LAYER 應該是 metal7,然后就要去 cts_setting,route_setting 中把metal8相關的信息改為metal7。由于ICC在place階段 是使用的virtual global的繞線,這個時候可以基本決定后期 的congestion。如果在run之前沒有注意,后來place之后改, 在route不一定有好的效果,一定要注意細節(jié)。再者就是檢查 各種約束,包括sdc約束,uncertainty設置是否合理,drc約束, max_transion/cap 是否合理。為了使 place 后的 congestion 有 意義,必須要嚴格控制place之后利用率的過快增長,否則 place的congestion報告完全沒有意義!
第二,在place之前可以首先設置一個option : set_congestion_options -max_ulti 0.75
這個option可以為工具提供導向,控制局部利用率,在 place階段后用tcl腳本來了解初步的congestion情況:
set placer_enable_enhanced_router true
Route_zrt_globle -effort high -congestion_map_only true
Report_congestion -effort high
用此tcl腳本可以得出congestion的map圖,map圖中有 各個metal的overflow的信息。如果congestion出現(xiàn)在std_ cell區(qū)域,那么首先要看floorplan是否合理,如有不合理, 調(diào)整floorplan,之后如果邏輯分散,弓入了跨層次連線,則可 以把分散區(qū)域的hierachical層次加bound約束,然后可以加 適當?shù)膋eepout_margin,這個值要多try幾次,找到最合適的值, 還可以加hard_blockage陣列。如果congestion出現(xiàn)在mem, 則可以將mem附近區(qū)域加大hard_blockage,讓std_cell盡量 遠離mem。
第三,在place開始的各個階段加上-congestion選項, 這樣工具以congestion driven為導向,在psynopt階段可以多 優(yōu)化幾次。對于模塊較高的模塊,可以加上-area_recovery 選項來對non_critical的path進行整合,可以優(yōu)化局部cell_ dencity。
對于前三種解決方案,要根據(jù)實際結(jié)果來調(diào)整,因為 從模塊規(guī)劃初期到最后前端交付final的網(wǎng)表,可能會有比 較大的出入,時序、邏輯量都會有比較大的變化,這些時候 floorplan都可能要做細微的調(diào)整。再者,后期的約束也要根 據(jù)情況調(diào)整,congestion關乎整個后端物理設計!
4超深亞微米信號完整性方法學研究
4.1信號完整性理論研究
隨工藝尺寸降低,芯片復雜度提高,時鐘頻率越來越 高,信號完整性(signal integrity,SI)已經(jīng)同成本、功耗、 性能成為制約芯片設計的關鍵問題。信號完整性是指信號能 可靠地傳輸?shù)侥康牡?,并有能力抵抗周邊線的電磁干擾。SI 主要影響因素有串擾(crosstalk)和信號電遷移(signal electron migration),筆者主要討論串擾帶來的影響及我們的應對策略。 串擾是兩條net間由于電容耦合引起的噪聲,隨芯片特征尺寸 不斷減小,互連線的物理間距也減小,導致互連線的耦合電 容增大,串擾狀況現(xiàn)在深亞微米已經(jīng)很嚴重,串擾往往會導 致芯片的信號延遲和毛刺,信號延遲對于setup/hold余量不大 的timing path后期有很大的violation風險,對于glitch可能 會引起芯片失效。筆者認為主要五個電學特性來影響noise : nets間的寄生耦合電容,aggressor/victim nets的驅(qū)動能力大小, 相對轉(zhuǎn)換時間,nets間總電容,nets間總電阻。如何優(yōu)化和修 復noise,也主要從以上幾個電學特性著手。
4.2信號完整性應對策略 4.2.1流程控制優(yōu)化noise
根據(jù)實際項目的模塊級物理設計,從以下幾個方面來探 討在IC Compiler流程下優(yōu)化noise。
第一,在floorplan規(guī)劃初期應該將noise放在比較重要 的位置,noise同congestion、timing、power都是相互依賴、 相互影響的,所以在初期規(guī)劃時要在這幾個關鍵因素下折中 考慮。對于noise來說,高頻發(fā)區(qū)域主要有兩點,一個就是 congestion area, 一個就是mem溝道區(qū)域,在初期規(guī)劃一定要 重視這兩點。
第二,正確設置各種約束。在sdc約束中,為每個 input_port設置driving_cell,提高timing分析質(zhì)量,并防止 其在 PT 中的 delta delay 偏悲觀,一般不 set_input_transition 0, 會增大input_signal的侵略性。對于clock_path上的transion 約束要合理,因為clock_net頻率高,翻轉(zhuǎn)率也高,具有 很強的侵略性,但是這些設置又和利用率是矛盾的,所以 transition的設置要和利用率尋求tradeoff。如果利用率也允許, 那么可以適當?shù)貙ncertainty加嚴,使timing盡量去優(yōu)化, 增大timing余量,后期由noise引起的timing fail風險將降低。
第三,在place階段,要最大程度地解決congestion的 問題,豐富繞線資源空間。如果noise 一旦發(fā)生在congestion area,那么串擾的修復將是很困難的。
第四,在cts階段,設置合理的transition/cap約束。ck_ cell盡量用X4-X16,不要太小,也不要太大。太小,驅(qū)動太弱; 太大,侵略性太強,而且功耗較大。時鐘繞線用NDR(non_ default_routing)rule,對于頻率高、翻轉(zhuǎn)率高的時鐘線,要單 獨加shielding來防止串擾。腳本如下:
Remove_routing _rule CLK_NDR_shield
Define_routing _rule CLK_NDR_shield
-width{M1 0.18 M2 0.2 M3 0.2 M4 0.2 M5 0.2 M6 0.2 M7 0.4}
-space{Ml 0.18 M2 0.2 M3 0.2 M4 0.2 M5 0.2 M6 0.2 M7 0.4}
Icc_create_shielding VSS $net_list
第五,在route階段也可以設置一些option來優(yōu)化noise, 筆者以ICC中的route腳本為例來說明:
set_si_options -delta_delay true
-static_noise true
-timing_window false
-min_delta_delay false -static_noise_threshold_above_low 0.2 -static_noise_threshold_above_high 0.2 -route_xtalk_prevention true -route_xtalk_prevention_threshold 0.2
Route_opt -xtalk_deduction -incremental -effort high[3] 4.2.2信號完整性的修復策略
盡管在EDA流程中采用一切辦法來優(yōu)化noise,但是不 免在后期還是會出現(xiàn)一些引起timing violation或者是glitch 的noise,這些是必須要全部clean,不然芯片將有很大風險。 對于修復策略,筆者主要總結(jié)了以下幾點:
第一,對于noise的修復,大多數(shù)都比較頭疼,因為不 能完全地依靠EDA工具去fix,大多數(shù)需要人手動干預。對于 noise數(shù)量較多時,可以將noise nets采用double_spacing的 繞線,減少相互影響。具體首先remove_net_routing有noise 的 nets,然后設置 lw2s 的 rule,然后 route_zrt_eco -nets $net_ list。
第二,如果模塊的congestion比較嚴重,那么第一種方 法也不會有特別明顯的效果。這時候就要考慮手動干預,可 以將victim/aggressor net移動減少影響,還可以一方面upsize victim_net, 一方面 downsize aggressor_net,兩者都有一定風險, upsize victim后如果處理不當,可能會成為aggressor,后者, 對timing/transion余量不大會有一定風險,所以noise fix過程 要反復迭代幾次,才能達到很好的效果。比如在下面的例子 中如圖6所示,兩條線并行走線太長,導致noise,修復方式 是將其中一條net移開。
圖 6 crosstalk fix 示意圖
在后期noise修復時,要特別注意時鐘樹上的noise,這 時候修復往往對timing產(chǎn)生很大影響,時鐘樹上的noise和 transition/cap violation要盡早發(fā)現(xiàn),盡早解決,到后期再解 決將使delay風險增大。
5結(jié)語
本文針對SOC進入超深亞微米階段后端物理的幾個挑戰(zhàn) 性的關鍵問題進行了探討,從理論研究再結(jié)合實際項目模塊級 物理設計來總結(jié)了筆者對于這些問題的解決方案,提出了一些 新的方法、新的思想,對于65 nm以下工藝都可以嘗試。限 于筆者水平,有些方法可能在不同模塊不同條件下不一定適用, 這些限于篇幅沒有一一做描述,希望各位同行能發(fā)現(xiàn)其中問 題,歡迎一起探討,探索數(shù)字集成電路后端物理設計的奧秘, 迎接超深亞微米的挑戰(zhàn)!
20211023_61742b3dab615__基于65 nmX藝的SOC物理設計中的關鍵技術研究