Physic Design:Floorplan演算法概覽

1234Vector發表於2020-06-03

僅用於學習交流,轉載請聯絡本人。

 

1 floorplan是什麼

floorplan常被翻譯成布圖規劃,是指在晶片級別上對模組進行佈局,也就是哪個單元放在什麼地方,但是單元內部的具體佈局並不關心。該步驟為晶片版圖設計中的關鍵步驟之一,因為在這一步會影響晶片的面積、能否成功布線以及佈線線長等諸多關鍵指標和步驟。

布圖規劃就是確定這些Block的形狀和相對位置,但是對Block內部不關注,一個Block可能是一個加法器或者其它什麼。圖片引用自http://www.signoffsemi.com/floorplan-placement-2/

圖1. 布圖規劃就是確定這些Block的形狀和相對位置,但是對Block內部不關注,一個Block可能是一個加法器或者其它什麼。至於圖中所示的三種型別(臨接,通道、臨界+通道),目前是不重要的。圖片引用自 http://www.signoffsemi.com/floorplan-placement-2/

 

2 目標是什麼

floorplan的首要目標就是給模組指定一個最佳的形狀(如果需要指定的話),給出模組間的最佳的相對位置關係。這裡需要先區分一個概念,module和block(這裡對應的中文我記成模組磚塊)。一個加法器的原理圖是一個模組,也就是我們知道一個加法器是由一個半加器和進位電路組成的,但是在版圖中這個加法器長寬分別是多少,我們是不知道的。當其長寬確定下來之後,就稱成為一個磚塊(Block),就相當於磚,和建房子的磚沒啥區別,就是說可以用這個磚塊來構建版圖啦,所以翻譯成磚塊。在設計好晶片的邏輯關係後,更具輸入的是磚塊還是模組可能面臨三種狀況:

(1)輸入的物件都是磚塊(block)。也就是說,構建版圖時,使用的基本構圖單元(加法器)已經被規定好了,只能使用,不能改變形狀和大小。但是這些磚塊間的位置是floorplan需要去確定的。

(2)輸入的物件是模組(module)。也就是說,構建版圖時,使用的基本構圖單元(加法器)沒有被規定死,可以指定其長寬比例(面積基本上變不了,因為加法器裡的東西需要地方放)。這種情況下,floorplan需要為這些模組指定長寬比例使得模組變成磚塊,然後還要指出這些磚塊之間的相對位置。

(3)當然是混合型,輸入既有磚塊又有模組。略。

 

但是這裡有一個問題就是什麼樣算是最佳?或者換一種說法,顯然floorplan是一個優化問題,那麼優化的目標是什麼呢?一般來說有一下幾點:

(1)使晶片面積最小;

(2)使得模組之間的連線最短,這也就意味著延遲小;

(3)模組之間擁塞儘可能小,也就是說,模組之間有足夠的空間讓互連線通過;

優化目標可能是其中一個也可能是其中的很多,如果要同時滿足多個優化目標的話,可以為這些目標分配權重,形成一個綜合的優化目標函式。(但筆者認為,這實在是一種有些天真但在一定程度上可接受的做法,相當於超引數)

f=a*area+b*wirelength+c*congestion (a+b+c=1)

3 常見的演算法有哪些

在這裡,再重述一遍floorplan的主要目標,(1)指定模組的形狀,(2)給出模組間的相對位置。目前幾乎所有的數字晶片設計都會使用物理設計EDA工具,其中自然就包含floorplan工具,既然是自動化工具,就比然有相應的演算法。總體上來說,floorplan可以分為三類(Susmita Sur-Koay):

(1)構造型演算法。這一類演算法旨在指出磚塊之間的相對位置。這一類演算法有slicing embedding,hierarchical enumeration和dual graph等。

(2)迭代型演算法。這一類演算法旨在將模組變成磚塊,也就是為模組確定長寬比。這一類演算法有模擬退火,遺傳演算法,力導向等。

(3)基於特定知識的演算法。這一類演算法企圖同時完成這兩件事情。

 

參考文獻

Susmita Sur-Koay. Handbook of Algorithms for Physical Design Automation. p140.