Place Route相关
DEF
現在的綜合一般分為logic synthesis和physical synthesis,為了讓我們綜合出來的netlist和PR做完place& route后的netlist有更強的correlation,目前都會采用physical synthesis
DC TOPO & DC Graphical
這是DC的兩種綜合模式,DC graphical相比DC Topo mode,有這更強的correlation,并且在綜合階段就考慮到congestion的問題;
我們會在后續的文章中介紹DCG 和DC Topo的區別!
Physical constraints
既然是physical synthesis,那么我們就需要讀入physcial constraints,首先通過read_def讀入事先準備好的def,然后通過extract_physical_constraints命令抽取DEF中的physical constraints;
下面詳細介紹DEF中的相關內容
Macro Location & Orientation
顧名思義,macro location和orientation用于描述design中macro的擺放位置以及方向信息;
這些信息都在COMPONENTS中描述;
Keepout Margins
在marco和macro執念,有一些區域是不能做place的,我們需要在DEF中描述,通過HALO描述,如下
FIXED
這里的marco用來FIXED來描述,表示這個cell已經出于placed狀態了,后續的操作都不能移動他;
另外,在DEF中,還會有其他的術語來描述cell的place狀態,具體如下表
UNITS DISTANCE MICRONS
這個units的值并不是隨便定義的,其值應該小于等于Tech lef中指定的值,通常情況下,兩者的值應該是相等的,在先進工藝節點下,如果兩者的值不相等,會造成VIA 偏移;
下面是DEF中的描述
UNITS DISTANCE MICRONS = 2000;
這里的2000并不是實際的距離,其意義為:
1um = 2000 units;
所以通過這個變量,可以根據DEF中的坐標信息,去計算實際的距離,計算方法為:
實際距離 = 坐標 / 2000;
Placement Bound
placement bound是一個約束,用于控制placement的擺放,通常情況下,在同一個bound區域內的cell,會擺得更近一點;
DEF中通過REGIONS來描述bound,并將指定的cell放入該bound中,這些cell通過GROUPS來指定,如下圖所示
這里我們創建了c20_group這個placement bound,并指定其type為FENCE,以及相關的坐標;
另外,在GROUPS內指定了三個cell,這些cell關聯的placement bound為c20_group,另外,這個bound為SOFT;
Port Location & Orientation
顧名思義,這個變量用于描述design的port的location和orientation信息,使用PINS描述;
例如
這里的port為hard_resetb,其net也是hard_resetb,direction為input,并且還指定了這個net所屬的layer為M11;
Site Array Information
我們知道,site是DEF中最小的單位,用于擺放最小的cell,而ROW則由一行site組成,也可以稱為site array,而site arrays就組成placement的area;
上圖中的site為TS05_DST;
Routing Track
Tracks define the routing grid for standard cell-based designs,也就是tracks用于給standard cell做routing grid;
Tracks是走線的軌道,兩條track之間的距離則是pitch;
提供tracks信息,可以更準確得預估congestion,可以讓DC和ICC的結果更加接近;
Wiring keepouts
顧名思義,wiring keepouts指的是不能布線的區域
Site name matching
首先是site的定義,如下圖
1、這里一行代表Row,而Row內部有很多小矩形,這些小矩形就是Site,也就是說,Row是由Site組成的;
2、工具在橫向移動cell時,site最小的移動距離,也就是說,cell移動的距離不能比Site的橫向寬度要小,并且移動的距離應該是Site的整數倍距離;
3、Site是最小的standcell的單位;
我們在綜合過程中,會讀入milkway reference lib,這個lib中也有site unit,DEF中也有site unit,如果兩個site unit對應不上的話,需要進行下面的設置
set mw_site_name_mapping {def_site_name mw_ref_lib_site_name}
這里我們設置了三組mapping關系,分別是:
1、CORE & TS05_DST
2、Core & TS05_DST
3、core & TS05_DST
4、unit & TS05_DST
Blockage
Blockage意為阻塞物,在這里就是指防止工具觸碰的區域。總的來說blockage可以分為兩類:placement blockage和routing blockage。Placement blockage的區域禁止tool擺放cell進來,routing blockage的區域禁止繞線。需要注意routing blockage是要分層的,包括via層也可以上routing blockage。而placement blockage是和cell擺放相關,就不會分層;
Hard & Soft & Partial Blockage
Hard pblk區域是tool不論在任何階段都不能放cell進來,最終出來的database一定是沒有任何cell在hard pblk里的,除非user手動加。Soft pblk指的是tool擺cell的時候不能擺進來,但是之后的legalization和optimization就可以放進來了。Partial pblk就是tool可以擺進來一定數量的cell,其面積不能超過partial pblk所規定的百分比;
Blockage的概念很簡單,但確實能幫我們方便地指導tool的工作。比如在很多時候,我們不希望在某些區域出現std cell,我們就會上一些hard pblk。最常見的區域有macro的周圍,macro與macro之間的narrow channel,以及macro與core邊界圍起來的區域,總之,一切可能發生congestion或者IR不好的區域都可以設置blockage;
這里參考了下面的文章:
原文鏈接:https://blog.csdn.net/weixin_52636726/article/details/122501706
Halo
Halo與Blockage有點類似,也稱為或者keep out margin;它不是加在floorplan上的,而是加在特定instance上的。比如我給一個macro加了一個寬度1um的halo,它的作用其實也等效于加寬度1um的pblk;
但是halo是加載instance上的,意思是如果我們移動了instance,其halo也會跟著一起移動,永遠保證它周圍1um范圍不會有cell;而pblk不一樣,instance動的話和pblk沒關系。
Halo能幫我們方便地處理某些情況,比如我們不希望某一類cell靠在一起,就可以給這類cell左右兩邊加halo;
OBS
在讀取cell或者macro的lef的時候會出現OBS,它是obstruct的簡寫,其作用就類似于routing blockage。如果這個macro的出pin層就希望直接連via上去,不希望pin層有任何走線,這個macro在設計的時候可能就會把pin之外的所有區域蓋上OBS,這樣tool在繞線的時候就不會繞到OBS里,所以tool就一定會先打一個via在pin上,再連出來。如果繞線時發生了DRC,經常要檢查一下是不是OBS在搗亂
原文鏈接:https://blog.csdn.net/weixin_52636726/article/details/122501706
Core Area & Die Area
在使用initialize_floorplan創建floorplan時,需要指定-boundary,例如
initialize_floorplan -boundary {{0 0} {800 800}}
這樣就創建了一個800800(umum)的floorplan,這里的800*800是指floorplan的Die Area;
而往往Die Area和Core area往往會有一個gap,為什么呢?
答:
因為Core Area和site與row有關,Core area必須是Site寬度和Row高度的整數倍;
而我們在生成Die Area時往往不是Site和Row的整數倍,所以會造成兩者之間有gap;
而這個gap我們可以通過**-core_offset**指定,例如
initialize_floorplan -boundary {{0 0} {800 800}} -core_offset {0 0.240}
這就意味著在core和die在Y軸方向上有0.240的偏差;
注意:
橫向offset必須是site的寬度的整數倍,縱向offset必須是site高度的整數倍;
Site在tech lef或者tf文件中有定義;
這里有兩種site:core和bcore,其中core的寬度為0.051,高度為0.210;bcore這個site的寬度為0.051,高度則為0.420;
Layers使用方法
在route時,需要用到layer,例如M0到M11,有12層layer,每層layer都有不同的使用方法!
M0 layer
通常來說,M0 layer往往用于做power rail,也就是VDD和VSS;
M1 layer
Legalize
在做place時,擺放cell時,需要判斷該該cell是否legalized,那么判斷cell是否legalized的條件是啥?
答:
1、首先要判斷cell是否在Row上;
2、cell要和site對齊,在橫向移動cell時,需要移動的距離應該是Site的整數倍;
3、cell的寬度必須是site橫向寬度的整數倍;
4、cell的高度必須是Site高度的整數倍;
5、不能和其他的std cell有overlap;
6、不能有spacing規則的違反;
7、cell orientation必須與Site規定的一致;
Cell orientation
Orientation也就是朝向,這里我們指的是std cell的朝向,cell的朝向會影響其pin的位置以及對應的連接關系;
對于已經擺放好的cell,可以通過orientation這個屬性獲取其朝向;
目前orientation允許的值包括:
1、R0
2、R90
3、R180
4、R270
5、MX
6、MXR90
7、MY
8、MYR90
其中,R0,R180,MX,MY用的比較多;
那么這些值代表的實際意義是什么呢?
答:
R所代表的的意義就是Rotate,也就是轉,后面的數字就是代表這個Cell轉多少度;
M則是Mirror的意思,就是鏡像,MX也就是以X軸做鏡像,MY則是以Y軸做鏡像;
為什么做cell orientation會失敗?
Site & Row是有legal orientation的,也就是當前Site所允許的orientation是有限制的,比如說這個site的legal orientation只允許R0這個orientation,那么我們對這個cell做其他類型的orientation就會失敗;
那么能不能添加site的legal orientation呢?
答:
可以,在tech lef中我們可以查詢site的信息,如下圖
這里可以看到core這個 SITE的SYMMETRY為Y,也就是說這個SITE是支持Y軸鏡像的,如果是X則支持X軸鏡像;如果是X和Y,那么是X軸鏡像和Y軸鏡像都支持;
再通過set_attribute設置其symmetry為Y,這個site支持的legal orientation變為:RO和MY了!
End Cap
總結
以上是生活随笔為你收集整理的Place Route相关的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论文答辩愁没模板?看看这份毕业答辩PPT
- 下一篇: E5061B矢量网络分析仪VNA概念