來做一次裝修 之版圖實現(xiàn)第二步 -- Floorplan
掃描二維碼
隨時隨地手機看文章
上一講,我們了解了import步驟,現(xiàn)在開始我們要接觸到物理cell的操作了。如果形象一點講floorplan的話,那我們現(xiàn)在就要開始“裝修”了。
Floorplan的主要步驟如下圖所示:
這里的布局并不是指自動布局,而是手動布局。工具再強大,也一定是基于我們給的一個初始點的,在這一步驟,我們就要給出這個初始點。
第一步:Create die/core area:首先,你必須定義你的die的大小和形狀,工具會根據(jù)這個形狀和你給定的其他選項,結(jié)合前面創(chuàng)建library的技術(shù)文件,來初始化整個die和core,這里邊有下面一些基本概念要搞清楚。
1: die 和core的定義。Floorplan初始化后,die/core就都有了,這兩個名詞還是不同的,大家來感覺一下下圖:
die是用戶創(chuàng)建的邊界空間,是所有可以繞線的區(qū)域總和。core是工具可以使用來放置std-cell的區(qū)域,大家一定要弄清楚這兩句話的區(qū)別。此外,die這個概念在icc2上稍微有調(diào)整,被boundary名稱所取代。
在某些工藝的要求下,die的寬度、高度必須是某一個基礎(chǔ)數(shù)值的整數(shù)倍,這是為了在模塊集成、PG-grid的時候,可以做到無縫對接。比如:你的基礎(chǔ)寬度、高度分別是 ,$w和$h,那么你的die的每一個頂點的x/y坐標,都必須是這個$w/$h的整數(shù)倍。小艾也是最近才接觸到這種工藝的,這樣確實方便,尤其是在做PG、模塊拼接等工作的時候,感興趣的同學(xué)可以了解一下
2:site_row/cell_site:如果初始化成功了,你可以在版圖上看到site_row的信息。如下圖
在這張圖上邊,你能看到水平線(site_row)和垂直線(cell_site),他們的數(shù)值來自于你的技術(shù)文件(*.tf),具體如下圖:
這里height定義了site_row的高度,這個數(shù)值就是你最矮的std-cell的高度(因為有時候你會碰到2X/4X site_row高度的std-cell)。同樣,這里的width定義了cell_site的間距,這個數(shù)值同時也是你的工藝里邊兩條相鄰poly之間的距離。有時候,在同一種工藝里邊,有不同的Tile unit定義,tile越大,cell的性能越好,但是漏電也大。icc/icc2也支持mix-tile的設(shè)計,在一個芯片中,對性能要求高的模塊是很有用處的。
下圖是site_row/cell_sie在die邊界的情況,很明顯可以看到,所有的site_row/cell_site只存在于core區(qū)域內(nèi),這就是為什么,工具只能把std-cell放置到core區(qū)域內(nèi)的原因了。
第二步:Place terminal:這里的terminal是指,當前模塊的頂層設(shè)計所有port的接觸點,就是我們在分離器件上所說的“管腳”。下面截圖示意了兩層水平terminal的擺放:
大家可以看到,所有的terminal都是緊貼著die boundary的,這樣才方便外界訪問本模塊。Terminal說穿了就是一些緊貼邊界的金屬,這些金屬和普通繞線的金屬是一樣的。如果是模塊級別,terminal的放置都是基于頂層push-down的結(jié)果的,因為只有頂層才是模塊terminal的使用者。通常top-layouter會給出一個腳本文件,block只需要直接執(zhí)行就可以產(chǎn)生所有port對應(yīng)的terminal。否則的話,需要使用一些命令來控制工具的自動放入,切記,千萬不要用手一個一個擺,很容易出錯。
如果是full-chip,所有的terminal都是基于IO PAD的,我們會在另外的top-level篇章里邊詳細描述
這里引申出一個track的概念。同樣使用上圖,那些橫向的細線就是當前層的track。所有的繞線層都是有track的,所有的實際繞線也都是壓著track走的。track 之間的距離,也就是這層繞線的pitch距離。在工藝上,一般把track分為prefer和none-prefer track,對應(yīng)的也就是由prefer routing和none-prefer routing。這里的示例是prefer routing的。這里是兩層的terminal,這兩層的track、pitch是一模一樣的,截圖里其實有兩層的track,這里只是被交疊蓋住了,沒有顯示出來而已。
此外,大家還可以看到一個信息,track都是壓在die的邊界上的,這個和site_row是不同的。由于所有的繞線都是基于track的,也就意味著,在core和die的加縫處,是可以走線的,但是卻不能放置std-cell的,這點大家要明白。
在前兩步驟里,我們要清楚三個概念;core、site_row、track。他們?nèi)齻€小伙伴是我們floorplan階段的好幫手,未來也是我們下面步驟的根基,如果你出現(xiàn)了繞線、自動布局等問題,一定記得回過頭看來看一下這些基本的配置。
”裝修“到這里,我們先小結(jié)一下:die就是建筑外圍,core是套內(nèi)面積,site_row/track就是你們家的水路和電路,terminal就是家里的門和窗,是和外界溝通的重要渠道,這些都好了,我們要開始在套內(nèi)面積進行優(yōu)化和布局了。
第三步:Create voltage_area:
在上一講,我們知道了輸入的時候有一個UPF文件,這里的voltage-area就是基于UPF文件里邊定義的power domain來規(guī)劃的。通常來講,本級模塊的頂層default-domain,一般都是Always-On(AO)domain,下邊的power-domain 都是Switch-off(SW)domain
這就像是我們家里的套間格局,你們家有幾個小房間,就有多少的SW power-domain,每一個power-domain對應(yīng)在物理區(qū)域里就是voltage-area,客廳、過道就是default-domain。如果外界要訪問小房間一定要經(jīng)過:大門(terminal)、客廳(AO default domain)然后再到各個小房間(SW domain)。反之亦然,這個流程也就是我們常說的數(shù)據(jù)流向問題,要認識到這一點,對你的floorplan的規(guī)劃會有很好的幫助。下圖是一個簡單的AO, SW domain的規(guī)劃圖,信號通過terminal先進到了AO ,然后再進入SW。
通常情況下,按照數(shù)據(jù)流向的理論,下圖就是一個比較合適的voltage-area的規(guī)劃。
具體到各種實際情況,根據(jù)經(jīng)驗、數(shù)據(jù)流向進行調(diào)整有時候會很好的結(jié)果。
在工具的布局中,所有屬于同一個power domain的子模塊都會被工具放進對應(yīng)VA所定義的區(qū)域,所以VA的布局直接決定了整個floorplan的大方向,做floorplan的時候,需要清楚各個power domain 的相對數(shù)據(jù)流關(guān)系,以方便自己構(gòu)建合適的VA。
套間也布置好了,下面就該 家具、家電進場了。
第四步:Macro placement :
如果說VA決定了floorplan的大方向,那么Macro placement 是決定了具體std-cell的擺放,由于工具的算法永遠都是timing driven的,macro 位置定了,工具會測算相關(guān)std-cell邏輯,然后會根據(jù)TNS/DRC等因素來放置相關(guān)的std-cell。同樣VA,terminal的位置,也會影響std-cell的自動放置。
依據(jù)上圖,這里分三種典型情況來做一說明
A: 屬于AO domain的macro:要盡量放到邊界上,預(yù)留出port access的區(qū)域。中大型模塊,interface的port都會很多,要流出足夠空間來terminal 繞線,其次,不能擋在VA的邊界,這樣會引起AOSW的交互。
B: 在同一個domain下的macro,要按照功能、層級擺放。同樣功能的擺到一起,例如ram放到一塊,rom放到一起;還有就是同樣logical memory放到一起。一般的邏輯memory的容量都很大,具體實現(xiàn)時,會有很多物理的memory cell,如果他們都是屬于同一個邏輯下的,所以要放到一起。
C: 多列macro的擺放:C類型的macro陣列的橫向長度很長(見陰影區(qū)域),所以這個時候,相鄰macro的中間應(yīng)該預(yù)留一些放置buffer的位置,用于buffer tree、cts 的構(gòu)建,這樣的做法對clock skew、timing、logical DRC都有好處。
Macro陣列規(guī)劃:大家來注意如下兩個macro陣列規(guī)劃的選擇:
陣列一:所有的macro都盡量擺成了一個正方形
陣列二:所有的macro都順著長邊分布。
在陣列布局中,第一我們要把macro盡量放到va的邊界,這點比較好理解,沒有人會把大衣柜放在我是中間吧,這兩個例子都滿足。
除此之外,剩下留給std-cell布局的區(qū)域,應(yīng)該是盡量趨近于正方形的,這是因為,大部分工藝的橫向、縱向繞線資源是對等的,所以正方形應(yīng)該是一個比較平衡的選擇。所以這里的陣列一是一個相對正確的選擇。
如果你的工藝在繞線資源上有特殊性,你需要依照具體的要求來規(guī)劃std-cell的可用區(qū)域。
整個floorplan的大體步驟就是這樣,由于這個環(huán)節(jié)很重要,任何細節(jié)都胡以蝴蝶效應(yīng)的方式存在于整個流程中,一定要充分思考。
Floorplan的規(guī)劃,是要基于工藝、物理的考量;更要兼顧設(shè)計需求;同時也要熟悉工具的特點的一個復(fù)合性工作。





