3.3 Floorplanning:在矽上畫出城市的街道#
一座城市的好壞,在第一筆街道圖時就決定了一半。晶片也一樣:floorplanning 是實體設計的第一個動作,它決定了 die 有多大、core 在哪裡、單元列怎麼排、IO pin 落在何處、power 網怎麼鋪。此後 placement 與 routing 的所有掙扎,都是為這一步的判斷付出代價或收取紅利。OpenROAD 把這個階段交給 ifp(initial floorplanning)引擎,加上相鄰的 power 與 pin 工具,構成 ORFS 流程的第二大階段。
Die、Core 與 Utilization#
一切從兩個矩形開始。die area 是晶片的整體邊界,core area 是標準單元可以擺放的內部區域,兩者之間的環帶留給 IO pad、電源環與封裝線。設計者最關心的數字是 utilization(使用率):
utilization 100% 意味著 core 塞得毫無縫隙,placement 與 routing 將無路可走;經驗上,標準單元設計常落在 50%–70%。這個數字是空間與收斂性的交易:utilization 越低,工具越容易收斂,但 die 越大、成本越高。在 130nm 這種成熟製程,晶片面積成本相對便宜,取 45%–55% 是常見的務實選擇;在先進節點,每平方毫米動輒數萬美元,設計者被迫在 70% 以上作業,工具壓力陡增。
在 ORFS 的 config.mk 裡,這個取捨只需要兩行:
export CORE_UTILIZATION = 45
export CORE_ASPECT_RATIO = 1 # core 長寬比
若你想完全手動控制,OpenROAD 的 ifp 命令可以直接指定座標:
initialize_floorplan -die_area {0 0 400 400} \
-core_area {20 20 380 380} -site unithd
-site 指定 row 所用的 site 定義(來自 tech LEF),ifp 會在 core 內鋪出整齊的單元列,每列高度一個 site、可容納電源軌穿插。
Pin Placement 與層次約束#
die 與 core 之後是 IO pin 擺放。Pin 的位置看似小事,實則深刻影響後段:訊號 pin 若擺在與其連接邏輯遙遠的邊上,routing 階段就得拉出漫長繞線,時序與擁塞同時惡化。ifp 的 place_pins 命令(ORFS 中在 floorplan 階段自動執行)會根據 netlist 的連接關係,把 pin 均勻地放到指定金屬層的邊界上:
place_pins -hor_layers met3 -ver_layers met2
這行命令把水平方向 pin 放在 met3、垂直方向放在 met2,工具依各邊的連接需求分配位置。熟練的設計者會在此介入——例如把 clock pin 固定在靠近其緩衝樹的位置——因為自動分配並不理解設計意圖。
Power Planning:流過城市的水系#
Floorplanning 階段還要鋪設電源網:電源環(power ring)沿 core 邊界環繞,電源條(power straps)成網格狀橫貫 core,再與標準單元的電源軌(followpins)相連。電源網設計的核心是 IR drop(電壓降)與 electromigration(電致遷移):金屬線有電阻,電流一來就掉電壓;電流密度過高,金屬原子會被電子風搬走,長期導致斷線。這是物理學直接寫進設計規則的例子——電壓降若吃掉 5% 的供電,cell 變慢、時序崩壞。ORFS 的流程在 floorplan 階段呼叫 OpenROAD 的 pdngen 依 platform 設定自動生成電源網,並在之後的階段反覆驗證。
判斷好壞:與後段的對話#
Floorplanning 沒有單獨的正確答案,它是在為 placement、CTS、routing 的收斂性下注。ORFS 用增量流程讓這種對話變得便宜:
make DESIGN_CONFIG=./designs/sky130hd/gcd/config.mk floorplan
之後啟動 GUI 檢視結果(make ... show),檢查 row 是否整齊、pin 是否合理、power 網是否完整。若 placement 階段出現擁塞或時序崩壞,經常要回到這裡調整 utilization 或 pin 策略,重跑流程。這種「快速迭代、及早驗證」的工作法,正是 OpenROAD 統一資料庫帶來的紅利——每次重跑 floorplan 只需要幾分鐘,而不是商業流程的半天等待。
為什麼這一步長期被輕視#
在教科書敘事裡,floorplanning 常被寫成「設幾個數字」的例行公事,但在真實產業裡,它是架構師與實體設計的交鋒處:macro 擺哪裡、匯流排怎麼走、時脈域怎麼切分,這些判斷牽涉到晶片的架構知識,而不是演算法可以完全代勞。OpenROAD 社群對此的回應是逐步把專家判斷「編碼進工具」——ifp 的啟發式、AutoTuner 對參數的自動搜尋、以及下一章要談的 macro placement 研究。當這些判斷被寫成程式碼,它們就從「老師傅的直覺」變成「可傳授、可複製的方法論」。街道圖一旦畫好,城市的命運已定;而當畫街道的方法公開了,每個學生都可以成為規劃者。