電子設計自動化演算法

電路分割(circuit partitioning)

電路分割就是把龐大的晶片網表——數百萬個彼此連線的閘——切成幾個較小的區塊,目標是讓被切斷的連線(割線)盡量少。想像一張錯綜複雜的城市地圖,你得畫一道圍籬把人口分成兩半:你希望兩邊大致相等,但也希望圍籬穿過的道路愈少愈好,因為每條被穿過的道路都會變成一座昂貴的橋。在晶片裡,每一條被切斷的連線都得在區塊之間長途跋涉,付出面積、延遲與功耗的代價。

經典引擎是 Kernighan–Lin/Fiduccia–Mattheyses(FM)啟發式:先隨意做一個兩路分割,再反覆把「最能減少割線」的那一個元件搬到另一邊並鎖定,好讓演算法跳出區域最小值,同時保留過程中看過的最佳結果。現代工具把它包進「多層次」架構——先把緊密相連的元件聚成群把網表變粗,在極小的粗化圖上分割,再逐層還原並細修——這正是 hMETIS 這類分割器能在數秒內處理上千萬節點設計的祕訣。分割是平面規劃、跨多晶片 FPGA 映射、甚至擺置器如何劃分版圖的基礎。

minimize cut(A,B) = Σ edges crossing subject to |A| ≈ |B|

平衡圖二分割是 NP-hard,因此實務分割器從不尋找真正最佳的割線,而是快速追求「夠好」的解;FM 的巧妙之處在於一個精巧的資料結構(增益桶),讓每一輪移動選擇都能在線性時間內完成。

又称
graph partitioningmin-cut partitioning分割演算法