跳轉到

5.6 腳位指派與電源網:擺放之後的兩個小問題#

擺放演算法的主戲——全域擺放、散開、合法化——落幕之後,還有兩件容易被初學者忽略、卻足以決定晶片生死的工作:把 net 正確地「接」到 cell 的實體 pin 上(以及把 I/O 訊號安置在晶片邊界),以及鋪設一條能把電流送到每個電晶體的電源網。這兩個問題在教科書篇幅上總是「小節」,在工程失敗案例中卻是大宗。本節依序檢視,並為下一章的靜態時序分析(STA)鋪路。

Pin assignment:從 netlist 到金屬接點#

在理想化的擺放模型裡,net 的線長以 cell 中心(或 pin 群質心)計算;但實體電路中,每個 cell 的輸入輸出 pin 位於特定金屬層與特定座標——標準 cell 的 A 腳在左側、Y 腳在右側,這是 cell library 設計者決定的,擺放工具不能改。所謂 pin assignment 有兩層:對於內部 cell,是多 pin net 與等效 pin(equivalent pins,功能可互換的輸入腳)之間的選擇;對於晶片邊界,則是把頂層設計的輸入輸出訊號指派到 I/O ring 上的 pad 位置。

內部 pin 指派是典型的「小事難做」:一個 4 輸入 NAND 的兩個等效輸入腳選哪個,會改變該 net 數十微米的線長;乘以數十萬個 cell,累積效應可觀。標準做法是在 detail placement 階段以局部搜尋處理:對每個 cell,枚舉其等效 pin 的排列(通常每 cell 不超過幾個),估計相鄰 net 的 HPWL 變化,選最小的;與 cell 位置的微調交替迭代。在 FPGA 世界,這層問題以「cluster 內 pin placement」的面貌出現:一個 slice 內 LUT/FF 到內部位置的指派會影響通往開關盒的 pin 距離,多倫多大學在 T-VPack 之繼者中即以最小化到 switch box 的距離為目標做 pin 指派,VPR 的擺放成本函數也部分吸收了這個效應。

晶片邊界的 I/O pad assignment 則是更老的問題,可追溯到 1970–80 年代的雙列直插封裝(DIP)時代:封裝腳位已由系統板設計固定,晶片設計者要決定哪個訊號走哪個腳。這是一個二次指派問題的近親:訊號 \(s\) 指派到 pad \(p\) 的成本,取決於 \(p\) 到 \(s\) 所連接的內部 cell 群的距離。經典做法包含逐 pad 的貪心指派、以線性規劃/匈牙利演算法求解的批量指派,以及把 pad 固定為「準 fixed cell」直接納入二次擺放的邊界條件——這正是 5.1 節 \(Ax=b\) 中右端項 \(b\) 的來源。實務順序往往是反的:先根據封裝與訊號完整性(同步開關雜訊,SSN)把電源/地 pad 定下來,再以分析式擺放解出其餘訊號 pad 的位置。Pin assignment 與繞線的關聯在於:它決定了每條 net 的起訖幾何,global route 的擁塞估計、乃至 STA 中每條路徑的金屬電容估計,都以 pin 位置為輸入。pin 動得晚,後面全部重算。

電源網:不做也會壞的隱形工程#

如果說訊號網是把「0 與 1」送到該去的地方,電源網(power grid)就是把「電」送到每個電晶體——而且它的設計品質沒有「比較好」的灰色地帶,只有「夠用」與「晶片報廢」兩種結局。電源網失效的兩大機制是 IR drop 與電遷移(electromigration, EM)。

IR drop 來自電源網自身的金屬電阻:電流 \(I\) 流過電阻 \(R\) 產生壓降 \(V = IR\) ,使下游電晶體實際拿到的電壓低於標稱值。壓降直接吃掉速度與噪聲餘裕——標稱 1.0V 的電源若局部掉到 0.92V,位於該區的路徑延遲可能增加 10% 以上,時序簽核就此破功。電遷移則是長期效應:大電流密度下,電子流對金屬原子的「電子風」效應使導線局部空洞化或形成凸起,日積月累造成開路或短路。EM 的可靠度準則以電流密度上限(如 SKY130 製程的 PDK 中對每層金屬規定的 max current density)來約束,這在 5.x 之後的 DRC/LVS 章節還會再遇到。

電源網的設計因此是一個「結構先於優化」的問題。工業標準是網格(mesh)結構:在頂層金屬鋪橫向的電源/地條(strap),中層鋪縱向條,交錯形成網格,再以 via 階梯向下延伸至標準 cell row 的電源軌(power rail,即 std cell library 定義的 VDD/VSS 軌道)。網格的密度(strap 間距)、寬度、via 數量,決定了等效電阻與電流承載能力。其生成流程大致如下:

1. 依每個區域的預估功耗, 計算總電流需求
2. 選定 strap 間距與寬度 (常以 "每 100µm 一條 M7" 之類的經驗值起步)
3. 生成頂層環 (power ring) 圍繞 block/core
4. 鋪設內部 mesh, 連接 power ring 與 cell row rails
5. 以 IR 分析驗證: 建立電阻網路, 解 V = R·I
   → 若最大 IR drop 超標, 加密/加寬 mesh, 回到 2

第 5 步的數學是一個電阻網路的節點分析:把電源網離散為節點與電阻,電晶體負載等效為電流源,解線性系統 \(G v = i\) ( \(G\) 是對稱半正定的電導矩陣——讀者會認出這與 5.1 的 Laplacian 系統同構,物理上都是「網絡上的擴散」)。現代工具(乃至開源流程中的 OpenROAD power grid 工具與 veryl2chip 這類簡化 ASIC 後端對 SKY130 的電源條生成)都以這個框架做迭代加密。電源網與繞線共用金屬資源,因此它的佈局必須在 global route 之前或同時確定,這是「擺放之後、繞線之前」這個時序點的由來。

為何這兩個「小問題」值得歷史一筆#

把 pin assignment 與電源網放進演算法史的敘事,是因為它們體現了 EDA 學科的一個結構性特徵:演算法的「難度等級」與工程的「失敗等級」不成正比。Legalization 的數學比 pin assignment 難,但 pin assignment 做錯會直接讓繞線與時序全盤重來;ePlace 的數學比電源網生成深,但電源網不足會讓tape-out 後的晶片在實驗室裡當場失效。歷史上,IR drop 與 EM 曾在 1990 年代末的 0.18µm 世代成為量產良率的主要殺手,迫使各家公司把電源網分析從「tape-out 前的手動檢查」升級為「流程內建的自動迭代」,這是製程微縮(科技)透過良率經濟(經濟)反推設計流程制度化(制度)的又一例證。

至此,擺放的幾何工作全部完成:每個 cell 有合法位置、每個 pin 有實體座標、電源有路可走。但是「位置正確」不等於「速度正確」——電流跑得快不快、訊號到得及時不及時,需要另一套以時間為座標的分析工具。下一章,我們進入靜態時序分析(STA)的世界。