佈局規劃(floorplanning)
佈局規劃是物理設計的第一步——在任何一個標準單元落到矽晶片上之前,你就要先做這件事。想像一個城市規劃師站在一塊空地前:在蓋第一棟房子之前,你得先定下這塊地有多大、高速公路和那些大地標(體育場、發電廠)擺在哪裡,以及自來水和電的主幹管線大致怎麼走。在晶片上你做的正是這件事。你定下晶粒(die)和核心區(core)的面積,親手擺放那些大塊的巨集單元(macro)——SRAM 塊、PLL、類比 IP,凡是太大或太特殊、不能像普通邏輯閘那樣自動擺放的東西;你把 I/O 焊墊或凸塊接腳沿著晶片邊緣排布好,再勾畫出供電網路(那些把電流送到各處的環和帶)。只有等這副骨架立起來之後,自動佈局器才開始往空蕩蕩的核心區裡填進幾百萬個微小的邏輯單元。
為什麼要費這份功夫親手來做?因為下游每一個自動化步驟都繼承了你的這些決定,而且很難再翻盤。把兩個「話很多」的巨集單元擺在對角兩端,繞線器就得跟導線延遲沒完沒了地糾纏;把單元塞得太緊,又留不出時脈樹緩衝器或繞線軌道的空間,時序收斂就成了不可能完成的任務。所以你還要預留出喘息的餘地:一個常見的起步目標是核心使用率大約 60-75%,意思是標準單元只填滿核心區的這個比例,其餘留空,給後面才加進來的繞線、緩衝和時脈樹用。巨集單元周圍會加上禁佈暈環(keepout halo),免得單元擠到它的接腳上;你還會在不想讓佈局器進入的地方加上佈局阻擋(placement blockage)。一份好的佈局規劃,能讓佈局、時脈樹合成(CTS)和繞線幾乎自己就順暢地跑下去;一份糟糕的,則會悄悄毒害隨後的每一項簽核檢查。
使用率是你在佈局規劃時轉定的那個旋鈕:轉得太低,浪費矽晶片面積;轉得太高,又會餓著繞線器、讓時序收斂崩盤。
佈局規劃至今仍是整個後端流程裡最依賴人工、最講究判斷力的一步——工具能幫忙,但巨集單元的擺放和供電方案,依然是經驗豐富的工程師真正體現價值的地方。