日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Place Route相关

發布時間:2024/1/1 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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相关的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。