本篇文章將進入芯片的Physical Domain,后面的幾篇文章也都是物理設(shè)計相關(guān)的內(nèi)容,本系列文章側(cè)重于從電路的角度去思考,而不是從EDA的領(lǐng)域思考,對這方面的實現(xiàn)算法特別感興趣的可以看EDA相關(guān)的課程。本篇文章有一些圖片也來自下面這兩個知乎文章介紹的一些課程(請見閱讀原文),不一一說明了,在此表示感謝。接下來進入課程內(nèi)容:
本節(jié)課的課程大綱如下所示:
1、Moving to physical domain在之前的文章中,我們已經(jīng)講解了芯片的前端設(shè)計流程,現(xiàn)在我們將正式進入芯片后端的學(xué)習(xí)。芯片后端設(shè)計,也稱為物理設(shè)計,是在前端設(shè)計完成后進行的。它涉及到將前端設(shè)計得到的網(wǎng)表轉(zhuǎn)換為實際的幾何形狀,即進行布局和布線(Place and Route, P&R)。后端設(shè)計還包括芯片的時序分析、功耗分析、信號完整性分析、熱分析等多個方面。后端設(shè)計工程師需要確保芯片的物理設(shè)計滿足所有性能和制造的要求。
1.1、Floorplanning我們看一下后端每一步的流程。物理設(shè)計的基石,同時也是第一步,便是Floorplanning,中文名一般叫做布局規(guī)劃。這個過程包括了對設(shè)計中較大的或重要的部分進行空間分配和布局決策,比如數(shù)字、模擬電路的位置、面積、形狀等的規(guī)劃,更具體點,比如各種IP核、輸入輸出、電源網(wǎng)絡(luò)、特殊的線路等的大致位置所在。
1.2、Placement在完成floorplan以后,下一步是Placement即布局過程,其實就是解決邏輯Cell怎么放的問題。這個階段的任務(wù)是將設(shè)計的各個邏輯門和模塊放置到芯片上的具體位置。
其主要包括:
全局布局:進行粗略的布局優(yōu)化。詳細布局:進一步優(yōu)化每個標準單元和宏單元的位置。優(yōu)化:針對時序、功耗等進行局部優(yōu)化。驗證:設(shè)計規(guī)則檢查(DRC):確保布局滿足所有工藝和設(shè)計規(guī)則,電氣規(guī)則檢查(ERC):確保布局不會導(dǎo)致電氣問題(例如,電流密度過高)。在Placement過程中,需要重點考慮以下幾個關(guān)鍵因素:
擁塞(Congestion):擁塞是指在芯片布局中某些區(qū)域可能會出現(xiàn)過多的邏輯門和連接線,導(dǎo)致布線困難。在放置過程中,需要盡量減少擁塞,確保布線通道的暢通,避免在后續(xù)的布線階段出現(xiàn)嚴重的問題;
時序(Timing):時序是指信號在芯片中傳播的時間。在放置過程中,需要確保所有的時序要求都能得到滿足,以保證芯片能以預(yù)定的速度運行。通常涉及到對關(guān)鍵路徑優(yōu)化。很多時候我們說讓后端修時序,就是指這個。但實際上后端能做的有限,前端設(shè)計盡可能不要出現(xiàn)時序違例。
1.3、Clock Tree Synthesis在完成place以后,下一步是時鐘樹綜合過程。時鐘樹綜合(Clock Tree Synthesis, CTS)是芯片物理設(shè)計中的一個重要環(huán)節(jié),它的目的是確保時鐘信號能夠均勻且同步地到達芯片上的所有觸發(fā)器。時鐘樹的目的是減少時鐘偏斜(clock skew),即時鐘信號到達不同觸發(fā)器的時間差異,因為時鐘偏斜會限制芯片的最大工作頻率,影響性能。時鐘樹設(shè)計的主要步驟包括:
時鐘樹綜合:使用電子設(shè)計自動化(EDA)工具對時鐘網(wǎng)絡(luò)進行分析和設(shè)計,以確定如何將時鐘源分配到所有的觸發(fā)器。工具會嘗試最小化時鐘偏斜,同時考慮到時鐘網(wǎng)絡(luò)的功耗和插入延遲(insertion delay);
時鐘樹插入:在時鐘源和觸發(fā)器之間插入緩沖器(buffers)和驅(qū)動器(drivers),以構(gòu)建時鐘樹。這些緩沖器和驅(qū)動器會幫助均衡時鐘信號,確保信號能夠以最小的偏斜到達每個觸發(fā)器。此外還包括一些后續(xù)的優(yōu)化。大家這里可以簡單理解時鐘樹綜合,其實際上就是插各種各樣的buffer,以避免不希望的clock skew。
1.4、Routing在完成時鐘樹綜合以后,下一步是布線即routing過程。也就是應(yīng)該如何連。布線的目的是將所有放置好的邏輯門和模塊之間的連接線(nets)連接起來,確保信號可以正確地在芯片上傳播。在布線過程中,需要遵循一定的規(guī)則和約束,主要包括:
設(shè)計規(guī)則檢查(Design Rule Checks, DRC):DRC是一系列制造工藝相關(guān)的規(guī)則,它們確保芯片設(shè)計可以在這個工藝下正確制造。布線時必須遵守這些規(guī)則,比如線寬、線間距、金屬層的垂直交叉規(guī)則等,以避免制造過程中的問題;
時序(Timing):布線時需要考慮信號的傳播延遲,確保所有信號的時序滿足設(shè)計要求。時序分析工具會幫助設(shè)計者識別并解決可能導(dǎo)致時序問題的問題,如過長的布線或擁塞區(qū)域;
噪聲(Noise):布線過程中還需要考慮信號完整性問題,包括電磁干擾(EMI)和功率噪聲。合理的布線策略可以減少信號之間的干擾,避免信號失真和性能下降。
我們通過一個圖總結(jié)一下上述的幾個概念:
后面的文章會重點再講解Placement、時鐘樹綜合以及Routing。
在tapeout之前,我們必須完成上述的任務(wù),確保沒有不可控的error和warning。
下圖是上述流程的一個具體示意圖?梢钥吹狡鋵訉舆f進,從網(wǎng)表一直到最后的版圖。
1.5、物理設(shè)計前的一些準備工作在完成邏輯設(shè)計以后,我們進入芯片的物理設(shè)計。Floorplanning是是物理設(shè)計的第一步,它定義了芯片的大致布局。在這個階段,設(shè)計者會決定哪些組件放在哪里,如何安排電源和時鐘網(wǎng)絡(luò),以及如何優(yōu)化信號流。這些決策將直接影響芯片的性能和制造難度。
在Floorplan之前,我們還可以認為有導(dǎo)入設(shè)計這一步,這一步其實就可以理解為準備原材料,我們簡單過一下這一部分PPT即可。
在邏輯設(shè)計階段的綜合部份,我們認為芯片面對的世界是相對理想的。如下所示,我們很多東西都沒有考慮。我們通常不會過多考慮電源網(wǎng)絡(luò)的設(shè)計和分布,如電源線、地線的布局,以及電源噪聲對電路性能的影響。也不涉及具體的物理連線,如金屬層的布線、通孔(vias)的使用,以及信號在芯片上的實際路徑。
但是既然已經(jīng)進入物理設(shè)計了,那自然而然需要考慮很多物理特性,這也是一些更底層的東西。
首先需要定義“全局網(wǎng)絡(luò)”及其如何連接到物理實例:全局網(wǎng)絡(luò)通常指的是那些需要在整個芯片上傳播的信號,如時鐘信號和復(fù)位信號。需要定義這些信號如何連接到芯片上的各個物理實例,例如邏輯單元和宏單元。
提供技術(shù)規(guī)則和單元抽象(LEF文件):LEF(Library Exchange Format)文件包含了工藝庫中標準單元、宏單元等物理信息,如尺寸、布局和電氣特性。這些信息對于物理設(shè)計至關(guān)重要,因為它們決定了設(shè)計中的各個組件如何在物理層面上實現(xiàn)。
提供物理單元,這些單元對邏輯功能不是必需的,綜合的時候往往會禁用這些單元:這些單元包括:Tie cells: 用于提供邏輯上的高電平或低電平。P/G pads: 用于芯片與外部電源的連接。Decaps: 用于電源和地之間的噪聲過濾。Filler cells: 用于填充芯片上的空白區(qū)域,以提高制造良率。
定義保持約束以及所有操作模式和條件(MMMC):在理想的時鐘模型中,保持約束很容易滿足,因此通常不會進行檢查。但在物理實現(xiàn)中,需要考慮時鐘的非理想性,如時鐘偏斜和抖動,并定義相應(yīng)的約束。
設(shè)置“低功耗”定義,例如電壓域、電源門控等:為了實現(xiàn)低功耗設(shè)計,需要定義電壓域,即芯片中不同部分可以獨立操作的不同電壓級別。此外還包括power gates,body taps等。
2、A bit about Multiple Voltage Domains
為了節(jié)省能耗,目前芯片設(shè)計普遍采用多Power Domain。對于每個電源域,需要確定連接到該域的電源(如VDD1, VDD2)和地(如GND1)的單元列表。這些單元在電源域中共同開啟或關(guān)閉。然后需要繪制電壓域,在芯片的布局中,需要明確地標識出每個電源域的范圍。這通常涉及到在芯片布局圖上繪制電源域的邊界,以及確定電源和地網(wǎng)絡(luò)的連接方式。
接著需要放置宏單元(macros)。宏單元通常指的是較大的設(shè)計模塊,如處理器核心、內(nèi)存塊、模擬電路等。以下是在放置宏單元時需要考慮的因素:
路由擁塞(Routing Congestion):在放置宏單元時,需要考慮芯片上的路由通道,避免在某些區(qū)域放置過多的宏單元,導(dǎo)致路由通道擁塞,影響后續(xù)的布線。
方向(Orientation):宏單元可以有不同的放置方向。在放置時,需要根據(jù)宏單元的連接需求和芯片的整體布局來選擇最佳的方向,以減少信號線的長度和交叉,優(yōu)化布線。
手動放置通常優(yōu)于自動放置(Manual usually better than Auto):雖然現(xiàn)代EDA工具可以自動放置宏單元,但在某些情況下,手動放置可以提供更好的布局和布線結(jié)果。手動放置允許設(shè)計者根據(jù)經(jīng)驗和設(shè)計特定要求來進行優(yōu)化。
然后需要放置開關(guān):對于需要電源管理的電源域,需要放置電源開關(guān)(power switches),這些開關(guān)用于控制電源域的開啟和關(guān)閉。放置時需要考慮開關(guān)的位置,以便于與電源域中的單元連接,并確保開關(guān)的動作不會影響其他電源域。
接下來是多電壓域用到的模塊:Level Shifters,上篇文章我們已經(jīng)簡單介紹過,具體的內(nèi)容大家可能需要學(xué)習(xí)一些模擬IC的東西才能掌握清楚,這里簡單看一下即可。
為了提高能效比,設(shè)計師通常會將芯片劃分為多個電源域,每個電源域可以在不需要時關(guān)閉電源,從而降低整體功耗。這也就是Power Gating。
到目前為止,我們已經(jīng)大概了解了多電壓域的一些東西。我們?nèi)绾味x它們?用的比較多的是UPF文件格式。這一部分大家可以自行搜索相關(guān)資料(B站直接搜UPF就有一些視頻),本門課程本質(zhì)還是一門通識課程,所以不會所有內(nèi)容都具體深入講解。
3、Floorplanning
我們首先看一下Floorplanning。其將邏輯描述(netlist)映射到物理描述(floorplan)。在這個過程中,設(shè)計師需要將抽象的邏輯設(shè)計轉(zhuǎn)換為具體的物理布局,確保設(shè)計的可行性、性能和可制造性。
我們直接看Floorplan做了些什么內(nèi)容:
Arrange the blocks on a chip:將芯片上的各種功能模塊(如處理器核心、內(nèi)存、模擬電路等)合理地放置在芯片上,以優(yōu)化性能和減少互連的復(fù)雜性。
Decide the location of the I/O pads:確定芯片與外部通信的輸入/輸出端口(I/O pads)的位置,以便于與外部設(shè)備的連接,并考慮到信號完整性、電磁干擾(EMI)和熱管理等因素。
Decide the location and number of the power pads:確定電源和地端口的位置和數(shù)量,以確保電源網(wǎng)絡(luò)的性能和效率,同時考慮到電源噪聲和芯片的功耗。
Decide the type of power distribution:選擇合適的電源分配網(wǎng)絡(luò)類型,如全局電源網(wǎng)格、局部電源網(wǎng)格或電源島(power islands),以支持不同電源域的需求和低功耗設(shè)計。
Decide the location and type of clock distribution:確定時鐘信號分布網(wǎng)絡(luò)的位置和類型,包括時鐘樹的布局和時鐘緩沖器的放置,以減少時鐘偏斜和時鐘抖動,保證時鐘信號的同步性和穩(wěn)定性。
我們最終要達到一個什么要的目標呢?實際上和綜合比較類似,讓芯片面積盡可能小,延遲盡可能低,盡可能減少路由擁塞。
我們來看一個實際的例子:通過這個圖我們可以看到芯片的大小,金屬層的數(shù)量,接口信息,各種各樣的IP在哪個位置等等。Floorplan的周圍是芯片PAD。PAD實際上指的是芯片引腳的一塊金屬,通過它可以將芯片焊接在電路板上。
我們接著看Floorplanning的輸入和輸出。這一部分我就不一一解釋了,相信大家能夠看懂。我重點講一下什么是Design ready for standard cell placement。
在完成Floorplan以后,芯片的整體布局已經(jīng)確定,包括宏單元(如處理器核心、內(nèi)存塊等)的位置、I/O端口的位置、電源和時鐘分布網(wǎng)絡(luò)等。此時我們的標準Cell怎么放還沒確定下來,所以Floorplan的下一步將會是Place。
其實Floorplan已經(jīng)完成了一定的Place工作,通俗來講,F(xiàn)loorplanning 關(guān)注的是芯片的宏觀布局,而 Placement 關(guān)注的是邏輯單元的微觀布局。Floorplanning 為 Placement 提供了一個基本的設(shè)計框架,而 Placement 則在這個框架內(nèi)進行詳細的設(shè)計優(yōu)化
我們鞏固一下概念,通過下面這個圖,結(jié)合上面的講解,相信大家可以理解Floorplanning和Placement的區(qū)別。可以說二者確實有很多共同之處,Placement是在Floorplanning的基礎(chǔ)之下進行的。
我們再來看一下什么是IO RING。I/O RING(I/O 環(huán))是指芯片封裝邊緣上的一個環(huán)形區(qū)域,其中包含了芯片與外部世界通信的輸入/輸出(I/O)引腳。這些引腳可以是數(shù)據(jù)信號、電源信號、接地信號或其他類型的信號。
芯片的引腳分配通常由前端設(shè)計師決定,他們會根據(jù)芯片的邏輯功能和系統(tǒng)要求來規(guī)劃引腳。同時,物理設(shè)計工程師和封裝工程師也會參與進來,因為需要考慮到引腳的物理實現(xiàn)、封裝的限制、信號完整性、電源和地分配、熱管理等因素。
IO并不像摩爾定律一樣,呈現(xiàn)指數(shù)級別增長,IO的成本是很高的,非常占據(jù)面積。在floorplanning階段,對I/O引腳的規(guī)劃是一個非常關(guān)鍵和核心的步驟,需要考慮到信號連接、電源供應(yīng)以及整體系統(tǒng)設(shè)計的兼容性。
有關(guān)IO RING我們先簡單看到這里,我們先看別的內(nèi)容。
我們應(yīng)該如何選擇芯片的大小呢?下面這張圖告訴我們,我們的芯片不可避免的會出現(xiàn)“Core limited"和”Pad Limited"的情況。(左邊那個中心區(qū)域不夠用,右邊PAD不夠用)
所以為了量化這一點,我們要引入一個指標,利用率Utilization。通俗來講就是盡可能把能用的面積都利用上,避免浪費。當(dāng)然利用率特別高的時候,會存在一些路由阻塞的問題。尤其是對于pin-dense的Cell,比如一個4選1的mux,它有6個pin,由于引腳數(shù)量較多,可能會在布局時占據(jù)較大的空間,從而導(dǎo)致其他邏輯單元的利用效率并不完全能反映芯片的實際面積需求。
所以在考慮芯片面積時,僅僅通過邏輯單元的利用率來確定是不夠的。設(shè)計者需要考慮到多路復(fù)用器等具有密集引腳的單元可能會占據(jù)更多的空間,從而影響芯片的整體布局和面積。在設(shè)計時需要綜合考慮這些因素,以確保芯片的布局既高效又滿足性能要求。
此外在物理設(shè)計中,還應(yīng)該保證網(wǎng)表是唯一的。網(wǎng)表是唯一的意味著每個子模塊在網(wǎng)表中只能夠被引用一次,我們看下面這個例子。左邊那個圖,m1和m2因為都是amod,其下面的例化都是u1。此時認為amod子模塊被引用了兩次,也就是non-unique。因此在物理設(shè)計階段,會將兩個同時優(yōu)化,而不可以優(yōu)化其中一個固定另外一個。比如我們讓m1/u1變大一點,此時m2/u1也會變大。因為m1和m2調(diào)用的是一個sub-module,也就是amod。
為了解決這個問題,將其中一個模塊叫做amod1,另外一個模塊叫做amod2,這樣sub-module的對應(yīng)就是唯一的了。這個過程叫做uniquifying the Netlist,實際上綜合工具會為我們做這一點,因此大家只要了解即可。
我們看一下如何擺Hard Macros。我們一般將其放在一側(cè),這樣剩下的形狀有利于后續(xù)的Placement進行,就比如下圖的左側(cè)紅色線條包裹區(qū)域,這么一大片區(qū)域有助于后續(xù)的Placement。就好比蓋房子,最好是留下來一整塊的地方,而不是這里一點,那里一點。
擺好以后認為它們已經(jīng)固定好了,后續(xù)不要再去改動這一部分Hard Macros。
Placement Regions 指的是在芯片設(shè)計中為邏輯單元指定特定的放置區(qū)域或集群區(qū)域。有個時候我們希望可以根據(jù)具體的設(shè)計要求和目標來指定 Placement Regions,以幫助布局和布線工具更好地實現(xiàn)設(shè)計目標。P&R工具一般提供了下面的指導(dǎo)方式,具體看圖即可。
還有一些地方我們不能放邏輯單元。Placement Blockages是芯片設(shè)計中需要特別注意的區(qū)域,這些區(qū)域不允許邏輯單元放置。例如,某些區(qū)域可能被用于電源和地網(wǎng)絡(luò)的布局,或者用于時鐘分布網(wǎng)絡(luò),或者因為制造工藝的限制而不適合放置邏輯單元。在布局過程中,這些區(qū)域會被視為不可放置的障礙,布局和布線工具會避開這些區(qū)域。
而Halos是一種布局策略,它涉及在芯片的邊緣或特定區(qū)域內(nèi)設(shè)置一個邊界,以限制邏輯單元的放置。設(shè)置 Halos 的目的是為了保護芯片的邊緣區(qū)域,防止邏輯單元過于靠近邊緣,從而影響芯片的封裝和性能。
更加具體的分類我們直接看下圖即可。
我們再看一個示意圖加深一下概念:
類似的,還可以將這個概念引入到Routing。
我們來總結(jié)一下,F(xiàn)loorplan中一些優(yōu)秀的設(shè)計思想:
Single large core area:將邏輯核心區(qū)域(如處理器核心、內(nèi)存模塊等)設(shè)計為一個單一的大型區(qū)域,這樣可以減少互連的復(fù)雜性,提高性能;
RAMS out of the way in the corner:將存儲器單元放置在芯片的角落或邊緣,這樣可以減少它們對核心邏輯區(qū)域的干擾,同時保持核心區(qū)域的連通性;
Large routing channels:在芯片布局中保留寬大的布線通道,這樣可以減少布線擁塞,提高信號的傳輸效率;
Avoid constrictive channels:避免在布局中創(chuàng)建狹窄的布線通道,這樣可以減少信號的延遲和干擾,提高信號質(zhì)量;
Avoid many pins in the narrow channel:在布局中避免在狹窄的通道中放置太多的引腳,這樣可以減少布線沖突,提高信號的傳輸效率;
Rotate for pin accessibility:根據(jù)引腳的訪問需求,考慮旋轉(zhuǎn)芯片的布局,以便于引腳的布局和布線;
Pins away from corners:將引腳遠離在芯片的邊緣或角落,這樣可以減少引腳與芯片邊緣的干擾,提高引腳的布局和布線效率;
Use blockage to improve pin accessibility:在布局中使用blockage來改善引腳的訪問性,例如,將引腳放置在障礙物附近,以便于引腳的布局和布線;
4、Hierarchical Design
如果設(shè)計太大的話,我們可以將其分成多個Block。其具體如下圖右邊所述。我們可以看看Flat和Hierarchical的優(yōu)點和缺點:
Flat Design:
優(yōu)點:
簡單直觀,易于理解和維護。整個設(shè)計是一個單一的實體,不需要額外的層次結(jié)構(gòu);
缺點:當(dāng)設(shè)計變得非常大時,可能需要更長的運行時間,因為需要處理大量的數(shù)據(jù),可能需要更多的內(nèi)存來運行EDA工具;
設(shè)計更改(ECO,Engineering Change Order)的周轉(zhuǎn)時間可能較長,因為需要重新分析整個設(shè)計
Hierarchical Design:
優(yōu)點:
設(shè)計可以被分割成更小的、易于管理的部分,這些部分可以獨立地分析和優(yōu)化;
運行時間更快,因為只需要處理當(dāng)前工作區(qū)域的數(shù)據(jù);
內(nèi)存需求較低,因為不需要存儲整個設(shè)計的數(shù)據(jù);
設(shè)計重用更加容易,因為可以單獨替換或修改某個子模塊。
缺點:層次結(jié)構(gòu)可能使得全芯片時序收斂變得更加困難,因為需要確保所有子模塊的時序都能滿足要求;
設(shè)計規(guī)劃需要更加密集,因為需要處理多個層次的反饋和重用;
需要生成feedthrough、repeater insertiom、timing constraint budgeting等,這些都是確保時序收斂的關(guān)鍵步驟;
我們來看一下層次化設(shè)計中的時間預(yù)算問題。如果采用整體設(shè)計的話,所有的設(shè)計都是一個整體,只需要確定一組input delay和output delay即可。但如果采用層次化設(shè)計的話,要注意這些問題。
芯片級約束映射到塊級約束:在層次化設(shè)計中,芯片級的時序約束需要正確地映射到各個塊級約束。例如,如果芯片級時序要求某個關(guān)鍵路徑的時延不超過某個值,那么這個約束需要被分解并分配給相關(guān)的塊級時序約束。同樣,I/O約束也需要被正確地映射到塊級約束,以確保芯片的I/O端口能夠滿足設(shè)計要求。
接口邏輯模型(Interface Logic Models, ILMs):ILMs 是一種簡化設(shè)計時間和資源的方法,它允許設(shè)計者使用簡化的模型來表示復(fù)雜的接口邏輯。它可以快速地評估接口邏輯對時序的影響,而不需要詳細地分析整個設(shè)計。使用 ILMs 可以顯著加快設(shè)計時間。我們直接看下面這個圖,原本的網(wǎng)表是比較復(fù)雜的,這里將中間的邏輯都簡化了,僅僅剩下入口和出口,還有直通邏輯。
我們再來看一看Pin的規(guī)劃。對于Pin,我們要使用相應(yīng)的約束,這些約束包括以下參數(shù):層(Layers):指定引腳所在的層,如信號層、電源層、接地層等。間距(Spacing):指定引腳之間的最小間距,以確保電氣隔離和防止短路。大。⊿ize):指定引腳的物理尺寸,如寬度、長度等。重疊(Overlap):指定引腳與其他元素(如布線、電源和地線等)的重疊要求,以避免電氣沖突。
Pin constraints 還包括以下內(nèi)容:網(wǎng)絡(luò)組(Net groups):將具有相似特性或連接需求的引腳分組,以便于布局和布線工具進行處理。引腳指南(Pin guides):指定引腳的放置方向和位置,以指導(dǎo)自動布局工具的放置。
Pin可使用以下兩種優(yōu)先級的約束:基于放置的約束(Placement based):使用飛線(flightlines)來指導(dǎo)引腳的放置,確保它們在芯片上的布局符合特定的規(guī)則;诓季的約束(Route based):指定嘗試布線(trial route)和邊界交叉(boundary crossings),以指導(dǎo)引腳的布線路徑。
Feedthrough路徑定義從頂層I/O引腳進入和穿過Block,以減少長路由和擁塞。中繼器需要被添加到這些路徑中,以保持信號強度并避免max slew和扇出違規(guī)。
5、Power Planning我們再來看一個重要的話題,Power Planning,中文名一般叫做電源規(guī)劃。其基本可以認為是Floorplanning的一部分。(大部分電源規(guī)劃可能已在Floorplanning階段完成,但在Placement階段也可能需要進行一些細致的調(diào)整。例如,為了滿足特定模塊或邏輯塊的電流需求,可能需要添加額外的電源或地連接。)
初步Power Planning主要包括:
電源網(wǎng)格設(shè)計(Power Grids):創(chuàng)建電源和地網(wǎng)格來提供電流和參考電壓。
電源環(huán)(Power Rings):在芯片外圍設(shè)計電源環(huán),用于電源和地的分發(fā)。電源鋪墊(Power Pads):確定用于外部電源連接的電源和地鋪墊的位置。
Power planning 的目標是在芯片上創(chuàng)建一個高效的電源和地網(wǎng)絡(luò),以確保電源和地能夠有效地分布到芯片的各個部分,同時考慮到電源噪聲和信號完整性。
我們來具體看一下什么是IR-Drop。IR Drop 是指在電源線(power line)長度上,由于電源線電阻導(dǎo)致的電源電壓(supply voltage)下降。IR Drop 是電源規(guī)劃和設(shè)計中需要考慮的一個重要因素,因為它會影響到芯片的性能和可靠性。
我們應(yīng)該怎么分析這個問題呢?通常采用矩陣的方式進行求解。
電阻矩陣的構(gòu)建:在電源網(wǎng)絡(luò)中,電源線和電源層之間存在電阻,這些電阻會導(dǎo)致電壓下降。設(shè)計者需要構(gòu)建一個電阻矩陣,其中包含電源網(wǎng)絡(luò)中每個節(jié)點的電阻值。
平均電流的考慮:每個邏輯門的平均電流是計算 IR Drop 的重要參數(shù)。設(shè)計者需要考慮每個邏輯門的平均電流,以計算在電源線上的電壓下降。
矩陣求解:一旦構(gòu)建了電阻矩陣并考慮了平均電流,設(shè)計者可以使用矩陣求解的方法來計算每個節(jié)點上的電流。通過矩陣求解,設(shè)計者可以確定電源線上的電壓下降,即 IR Drop。
我們再來看一個概念,電遷移。在集成電路后段會部署大量金屬連線結(jié)構(gòu),本來這些金屬連線的作用就是讓電子遷移,實現(xiàn)導(dǎo)電。但反過來,電子的流動會造成金屬材料遷移,最終導(dǎo)線被“掐斷”:
這種現(xiàn)象就叫做電遷移,其可通過形成空隙或小丘來改變導(dǎo)體的物理結(jié)構(gòu),從而導(dǎo)致短路、開路、性能劣化或設(shè)備故障。隨著流經(jīng)互連器件的電流密度增大,電遷移率也隨之增加,這使得電遷移成為一個失控過程。事實上,電遷移是電路故障的主要原因。
為了避免電子組件中金屬遷移所帶來的失敗和危險,芯片設(shè)計人員可以采用以下幾種方法:
增加互連寬度,以降低電流密度。
使用具有高電遷移耐力的材料,如金和銅。
使用冗余通孔來分流電流強度。
減少互連器件之間的間距。
設(shè)計低電壓水平的電路。
[/ol]
Power Distribution Network(PDN)是芯片設(shè)計中的一個關(guān)鍵組成部分,其功能包括:
從焊盤(pads)向芯片上的晶體管傳輸電流:PDN負責(zé)將電流從芯片的輸入/輸出(I/O)端口傳輸?shù)叫酒瑑?nèi)部的邏輯單元。
保持電壓穩(wěn)定并降低噪聲:PDN設(shè)計需要確保芯片的電壓穩(wěn)定,以支持邏輯單元的正常工作。同時,它還需要降低電源噪聲,以避免對芯片性能的影響。
提供平均和峰值功率需求:PDN需要能夠滿足芯片在正常操作和峰值負載下的功率需求。
為信號提供電流返回路徑:PDN設(shè)計需要確保芯片上的信號可以有效地返回電源和地,以支持信號的正確傳輸和處理。
避免電遷移(electromigration)和自加熱導(dǎo)致的磨損:PDN設(shè)計需要考慮電源線和地線的布局,以減少電遷移和自加熱導(dǎo)致的材料損壞和壽命縮短。
占用芯片面積和線寬最小:PDN設(shè)計需要優(yōu)化電源線和地線的布局,以最小化對芯片面積和線寬的占用。
易于布局:PDN設(shè)計需要考慮到布線的便利性,以便于后續(xù)的布局和布線工作。
我們還可以看到,更寬的Power Lines,可以降低IR DROP,可以減少電遷移。但同時會導(dǎo)致routing變得困難。
我們來看一個實際的例子。假設(shè)在金屬層1有一個1毫米長的電源軌,我們根據(jù)給出的條件可以算出其電阻為1000歐姆。進而求出對應(yīng)的IR DROP。由于電遷移會導(dǎo)致電源軌的電阻增加,從而引起IR Drop,因此需要采取措施來減少這種影響。
一種方法是增加電源軌的寬度,這樣可以降低電流密度,從而減少電遷移的影響。另一種方法是增加電源軌的厚度,因為更厚的電源軌可以承受更高的電流密度。綜合考慮,設(shè)計者通常會盡可能地使電源軌寬和厚,以減少電遷移和IR Drop的影響。
下圖是一個實際的圖片,在增加寬度以后,IR DROP效應(yīng)變小了。
我們再來看一下電源和地網(wǎng)絡(luò)的一些設(shè)計規(guī)則。
電源和地信號的連接:
每個標準單元或宏單元都需要與電源和地信號連接,以確保它們能夠從電源源(如電源分配網(wǎng)絡(luò))接收所需的電壓。
電源/地網(wǎng)格(Power/Ground mesh):
電源/地網(wǎng)格允許電源和地信號通過多個路徑從源到達目的地,這樣可以減少串聯(lián)電阻,提高電源和地網(wǎng)絡(luò)的性能。
電源/地網(wǎng)格從高層金屬層到低層金屬層,形成一個層次化的網(wǎng)絡(luò),以提供有效的電源和地分布。
在不同層之間需要多個通孔(vias)來連接電源和地網(wǎng)絡(luò)。
電源和地布線的規(guī)則性:
電源和地布線通常是比較規(guī)則的,因為它們需要在整個芯片上均勻分布,以提供穩(wěn)定的電源和地參考。
電源和地布線資源的預(yù)留:
由于電源和地布線是芯片設(shè)計中的基礎(chǔ),因此通常會預(yù)留足夠的布線資源來確保電源和地網(wǎng)絡(luò)的性能。
我們再來看一下Power Routing中的一些經(jīng)典方法:
我們再來看一下電源網(wǎng)絡(luò)中的一些權(quán)衡點:
最后我們做一個總結(jié),如何在Cadence的EDA工具Innovus中做FLoorplanning:
系列文章入口——
【芯片設(shè)計】SoC 101(一):緒論 | 【芯片設(shè)計】FIFO漫談(零)從無處不在的FIFO開始說起 | 【芯片設(shè)計】計算機體系結(jié)構(gòu)(一)虛擬內(nèi)存 | 【芯片設(shè)計】深入理解AMBA總線(零)緒論
| 【芯片設(shè)計】握手協(xié)議的介紹與時序說明 | 【芯片設(shè)計】復(fù)位那些小事 —— 復(fù)位消抖 | 【芯片設(shè)計】快速入門數(shù)字芯片設(shè)計UCSD ECE111(一)Introduction | 【芯片驗證】UVM源碼計劃(零)下定決心讀源碼前的自測環(huán)節(jié)
| 【芯片設(shè)計】異步電路碎碎念(一) 到底什么是異步電路
| 【芯片設(shè)計】從RTL到GDS(一):Introduction
| 其他文章鏈接——
【芯片驗證】sva_assertion: 15道助力飛升的斷言練習(xí) | 【芯片驗證】可能是RTL定向驗證的巔峰之作 | 【芯片驗證】RTL仿真中X態(tài)行為的傳播 —— 從xprop說起 | 【芯片驗證】年輕人的第一個systemVerilog驗證環(huán)境全工程與解析 |
【芯片設(shè)計】verilog中有符號數(shù)和無符號數(shù)的本質(zhì)探究
| 【芯片設(shè)計】論RTL中always語法的消失術(shù) | 【芯片設(shè)計】代碼即注釋,注釋即代碼 | 【芯片設(shè)計】700行代碼的risc處理器你確實不能要求太多了 |
入職芯片開發(fā)部門后,每天摸魚之外的時間我們要做些什么呢 | 如何計算系統(tǒng)的outstanding 和 burst length? | 芯片搬磚日常·逼死強迫癥的關(guān)鍵詞不對齊事件 | 熟人社會里,一群沒有社會價值的局外人 |
|