數字IC后端零基礎入門基礎理論(Day1)
Placement Blockage: cell擺放阻擋層。它是用來引導工具做placement的一種物理約束或手段,目的是希望工具按照我們的要求來做標準單元的擺放。
它主要有三種類型,分別是hard placement blockage,soft placement blockage和partial placement blockage。
hard blockage所在的位置工具是無法擺放任何標準單元的,soft blockage所在位置只能擺放buffer和inverter,partial blockage所在位置可以擺放任何cell,但是工具工具可以根據我們設置的擺放比例,比如某個區域擺放太多標準單元可能會導致繞線問題,但近擺放buffer和inverter又浪費面積,那我們就可以設置一個可以擺放cell的比例來控制這區域的density密度來緩解潛在的繞線問題。
數字后端零基礎入門系列 | Innovus零基礎LAB學習Day1
數字后端零基礎入門系列 | Innovus零基礎LAB學習Day2
Halo:它和hard placement blockage功效是一致的。當我們給memory添加Halo時,隨著memory的移動,這個Halo也會隨著移動。而blockage則沒有這個特性。
Routing Blockage: 繞線阻擋層。它是用來引導工作做routing繞線的一種物理約束或手段,目的是希望工具按照我們的要求來做routing。
所以placement blockage和Routing blockage相同的地方是它們都是作為阻擋層的約束條件,區別是前者是阻擋工具做擺放的阻擋層,后者是阻擋工具做繞線的阻擋層。
Innovus 支持四種類型的物理布局約束,即soft guide,guide,region和fence。它們都是用來guide引導工具做placement的一種物理約束條件。
Soft Guide: 除了沒有固定位置外,soft guide約束類似于guide 約束。這為同一soft guide下的實例提供了更強的分組。soft guide約束不像fence 或region 約束那樣嚴格,因此如果某些實例與其他模塊有連接,則可能會將其放置得更遠。
Guide: guide 約束是innovus中所有約束中最松散的約束。它大致定義了一個區域,您指示工具在該區域內放置給定模塊的單元。
當模塊移動或放置在core區域內時,guide約束會自動分配給該模塊。如果未充分利用該區域,則不屬于該guide的模塊單元也可以放置在guide內部。同樣地,如果所述區域利用率過高,來自guide的模塊單元也可以被放置在該區域的外部。總而言之,guide是標準單元布局的軟指標,可以認為該區域“可以進,可以出”
Region: region約束也是一個松散約束。然而,它比guide更強大。定義region 時,它要求將region中所包含的所有單元都放置在指定的region區域中。如果該區域中有額外的空間,則可能放進其他模塊的單元。總而言之,一個region是標準單元布局的強約束,可以認為該區域“可以進,不可以出”
Fence:fence約束是Innovus 中最強的約束。即使未充分利用該區域,fence 約束也不允許將其他模塊的單元放置在該區域內。此外,fence 區域中的單元格不能放置在定義的區域之外。
fence具有是排他性的,盡管不是完全的。總而言之,fence 是單元位置的最強約束,可以認為該區域“不可以進,不可以出”。
在標準的Innovus GUI中,fences是深棕色的。
在innous中創建soft guide,guide,region和fence的命令:
createInstGroup groupName
addInstToInstGroup groupName hInstName or instName or groupName
createSoftGuide <moduleName/groupName>
createGuide <moduleName/groupName> llx lly urx ury
createRegion <moduleName/groupName> llx lly urx ury
createFence <moduleName/groupName> llx lly urx ury
Gcell(GRC): 全稱global routing cells。工具會把設計拆分成很多個Gcell,基于每個Gcell可以提供的繞線資源和實際需要占用的繞線資源來估算出每個Gcell的繞線是否可以繞通,所以它是工具用來估算Congestion用的。
對于特定大小的芯片,它的routing resource就是每層金屬的Pref Routing Track和Non-Pref Routing Track之和。而且工具在做繞線時會優先在Pref的routing track上走線。
Routing Track: 它是指金屬走線的通道。工藝庫中會指定好每層金屬的track,它有默認方向的走線方向,比如M2的優先走線為水平方向,那么工具在走M2 routing的時候就會優先走水平方向。因此,對于一個給定大小的設計,繞線資源是固定的,即每層金屬的繞線track都是定好的。
數字后端零基礎入門系列 | Innovus零基礎LAB學習Day6
GR: Global Route。它又分為Early Global Route和Global Route。前者是指在placement,cts等階段做的虛擬繞線。
我們知道繞線過程可分為global route(全局繞線)和detail route(詳細繞線)。global route以gcell cell作為繞線參考網格,工具在繞線時會試圖尋找gcell中的最短path, gcell是用來產生congestion map(擁堵圖表),提前預估出當前設計是否存在繞線的風險。
Congestion: 從字面意思看就是擁塞,它是用來表征設計是否可以繞通。當我們說設計中存在較大congestion,往往就是指當前設計繞線大概率繞不通的情況。
Overflow:它是用來描述設計的congestion情況的。Overflow = Demand -Capacity。這個Overflow值工具會分成垂直方向和水平方向的Overflow,一般Overflow在1.5%內大概率是可以繞通。這個Overflow值一般可以在每個階段的Log中報出。
GRC為正方形,每個邊的尺寸通常為標準單元高度的兩倍。它會計算出GRC每條邊可用于布線的布線通道(track)的數目(Capacity),以及布線需要的布線通道的數目(Demand)。圖中畫出了一個GRC,邊上的數值即為Demand/Capacity。Demand – Capacity即為溢出(Overflow)的數目,如果存在Overflow,則Congestion Map中就會將GRC的那條邊進行高亮,Overflow越大,則顏色越偏向于暖色調(即紅色)。
HotSpot: hotspot表征的是設計中congestion的熱點,它是用面積來表示hotspot的分數。如果這個分數越高代表的是這個位置有congestion的點比較多。所以這個位置附近就有比較聚集的congestion問題。
工具跑完會報出設計中最差的五個hotspot點。這里如果報出來的五個點的hotspot值小于150,我們認為當前設計不存在非常聚集性的congestion。此時,如果overflow值大于2%,也是有機會能繞通的。
Macro/Block(宏單元):是一種由邏輯單元和物理單元組成的封裝單元。它可以看作是一個可重復使用的功能單元,包括多個邏輯電路單元的封裝,其功能一般比較復雜,比如存儲器、算術運算單元等。Macro一般包含Memory,第三方IP和我們自己做的子模塊。在Innovus中Macro和Block是同一個概念。
Std Cell: Standard Cell標準單元,它是foundary代工廠提供library中的基本功能cell,比如BUF,INVERTER都是標準單元cell。Std cell具有簡單的功能、相對較小的面積和較短的設計周期,適用于芯片設計中一些基本電路的設計。現在大部分的芯片設計都是基于foundary提供的library的Std cell的設計。
Macro擺放是需要工程師自己來擺放,不能用工具自己做placement。在擺放Macro時需要遵守以下幾大原則。
1.在core外圍放置宏單元
由于會產生大量的detour布線,在core內部放置宏單元會在布線過程中造成嚴重后果。這是因為宏單元等于布線的一個大blockage。同樣,將宏單元放置在core外圍使向這些宏單元供電變得更加容易,并減少了消耗大量功率的宏單元出現IR drop問題的可能性。
- 放置宏單元時考慮與已固定位置的單元之間的連接
當您決定宏單元位置時,您必須注意與已固定位置的單元 (如I/O和已布局的宏單元) 的連接。根據數據流,最好將宏單元放置在有關聯的已固定位置的單元附近。可以通過在EDA工具中的圖形用戶界面中顯示線路連接關系來檢查連接。
- 調整宏單元的方向實現最小化引腳之間的距離
在確定宏單元的方向時,還必須考慮引腳的位置和相應的連接。
- 在宏單元周圍預留足夠的空間
對于常規的網絡布線和電源布線,您必須在宏單元周圍保留足夠的布線空間。在這種情況下,精確估計布線資源非常重要。使用擁塞圖來識別宏單元之間的hotspots ,并根據需要調整位置。
- 盡可能減少宏單元之間的空白區域
除預留布線資源外,減少宏單元之間的空白區域可以增加標準單元的利用面積。選擇不同的寬高比 (如果該選項可用) 可以消除宏單元之間的空白區域。
- 為電源網絡預留空間
所需電源布線的數量會根據功耗而變化。您必須估算功耗并為電源網絡預留足夠的空間。如果您低估了電源網絡所需的空間,則可能會遇到布線問題。
IO Port /IO Terminal:
首先通過兩個圖來說明port和terminal的概念。port其實就是block level模塊的端口或接口信號。
在netlist會這樣來描述。module design_name (port1,port2,port3, …,portn ); 這里的port1直至portn為當前設計模塊的輸入和輸出端口。對應描述的就是一個帶功能的黑盒子。
但在數字后端PR實現時需要把這個邏輯連接轉成物理連接,即要做metal的連接。顯然這個port是邏輯的存在,無法與metal進行一個物理連接。因此,PR階段就引入了terminal的概念,在擺放port時會在這個port上面create一個terminal,即一塊metal shape,而且這個terminal是和這個port是一一對應的。這樣后續工具繞線時就可以通過這個terminal的metal shape進行實際的物理連接。
而pin是指對于cell來說的,比如下面這塊AOI cell,它總共有四個pin,其中有三個輸入pin,分別是A2,B1,B2,還有一個輸出pin ZN。 每個cell都有它的功能,所謂的功能就是這個cell它能干什么。功能可以根據標準單元庫文檔的真值表得知。舉個簡單的例子,普通inverter,它的功能就是起到數據取反的功能。一個cell要具備特定的功能就肯定要有特定的引腳,就是這里說的pin。這里就可以理解成人要有正常的功能,它就必須有手有腳。通過手腳大腦等才能充分發揮人的功能。