徐 敏,劉 陳
(南京郵電大學 電子科學與技術學院,江蘇 南京 210003)
SS序列(Single-Sequence)為一串互不重復的自然數序列,參考文獻[1]中SS解碼規則將SS序列解碼作為相對應的單元分布圖,并利用模擬退火算法[2]以一定的概率隨機改變單元內模塊擺放順序、旋轉度及SS序列,通過SS解碼規則得出各單元模塊的水平/垂直約束圖,利用關鍵路徑算法[3]求出最終芯片的面積。但目前為止SS所解決的只是局限于對矩形硬模塊的布圖問題,而對于非矩形模塊或不規則形狀模塊的布圖尚未有很好的解決方法。隨著集成電路技術快速發展,模塊將不局限在以矩形形式出現,而是有可能以多種多樣的形狀更加靈活地出現在集成電路版圖上,但若仍以矩形的模式處理,必然會導致芯片面積的利用率不高,出現很多空間閑置的現象,因此尋找出一套簡單易行的方法解決不規則模塊擺放的問題意義重大。
對于不規則模塊的先期處理是將其劃分為許多小矩形,從而避免了傳統算法將整個不規則模塊算為1個大矩形而帶來的面積浪費。如圖1所示,由2個矩形合并而成,傳統分割法將其視為1個矩形整體,再利用SS序列算法將其放入版圖,如圖1(a)所示,造成了底面積的浪費。SS序列無法區分模塊空白區域,而是將其視為一整體放入版圖,導致下部空白區域永遠無法被其他模塊空間占用,帶來了較大浪費,隨著模塊面積增大和不規則模塊數量增多,面積浪費現象將更為嚴重。因此在輸入模塊數據前就應將模塊進行劃分,為了程序計算方便,規定為對模塊自上而下、以左邊為基準進行劃分,如圖1(b)所示將該不規則模塊劃分為A、B兩個小矩形輸入數據,在SS算法處理過程中將其視為兩個連在一起不同的模塊,運用區域模塊連接算法使其在變換的過程中始終保持緊密的連接在一起,如此則可充分利用下部空余的面積部分。對于有弧形的不規則模塊,應以弧形最邊緣切線為起點畫一矩形將其包圍,如圖1(c)所示模塊。首先以整體模塊最左邊為基準,即起始點,以上半部弧形右邊最頂點為終點,上弧形最頂點為上邊作一矩形,將該不規則模塊分為上下兩部分矩形。對于更為復雜的不規則模塊也是如此劃分。

圖1 不規則模塊劃分
在劃分模塊后,存在許多相互需要連接在一起的小模塊,這時必須要建立新的序列來反映這些模塊間的相互關系。如圖2所示,SS布圖算法[4]分別變換SS序列及模塊數據序列的排列順序,將模塊數據序列一一對應放入SS序列所生成的單元圖中,使得版圖不斷發生變化。因此加入了模塊區域連接序列后,應在變換模塊數據序列前先將連接在一起的模塊放入SS序列所生成的單元中。算法規則如下:
(1)將劃分過的小矩形根據輸入的順序編號,將同一不規則模塊的小矩形歸為一組,不同組間由0相隔,從而生成反映模塊間相互連接關系的模塊區域連接序列。
(2)變換SS序列后,由于模塊是自上而下的劃分,因此需要找出SS單元圖中呈上下連接關系的單元號先放入不規則模塊。首先隨機選取1個SS序列號A,找出其相鄰下方的單元且水平位置最接近A的單元號B,即滿足公式 Mbl(A)-1=Mas(B)并且 Min(|Mbs(A)-Mbs(B)|)的SS序列號。
(3)將模塊區域連接序列中對應的模塊(劃分后的小矩形)放入規則(2)所找出的單元中。
(4)根據模塊區域連接序列,交換與規則(2)所得的單元號相對應的模塊數據序列。
(5)生成版圖。

圖2 SS解碼算法對應關系
在SS解碼算法中還需將模塊翻轉以獲得更好地擺放位置。由于不規則模塊被劃分成許多小矩形,翻轉時不能簡單改變矩形的長寬順序,而應結合模塊區域連接序列進行整體翻轉。不同于簡單矩形模塊只有0°和90°2種狀態,而不規則模塊要復雜得多,其中包括 0°、90°、180°和 270°4種翻轉狀態,如圖 3所示。

圖3 不規則模塊的翻轉
180°翻轉情況相對較為簡單,從圖 3中可看出180°翻轉僅僅是在原始狀態的基礎上改變了劃分的小矩形的上下位置關系,并沒有改變這些小矩形的長寬數據,因此只需改變模塊區域連接序列中對應組的順序。設有模塊區域連接序列:XXXX0ABCD0XXX0XXX0XXX,要使矩形組ABCD組成的模塊進行180°翻轉,只需將序列改變為XXXX0DCBA0XXX0XXX0XXX即可,如圖4所示。

圖4 模塊 180°翻轉
90°翻轉的情況較為復雜,不僅涉及到模塊區域連接序列,而且由于其改變了小矩形的長寬數據,同時要改變模塊數據序列。首先要對模塊重新進行劃分:
(1)在原有模塊數據序列中找出長度最小的模塊,將其寬加上改組中所有模塊寬度,作為一個新的小矩形。
(2)找出原有模塊數據序列中長度第2小的模塊,將其長減去(1)中矩形的長作為其新的長度,其寬改為原來寬度加上改組中所有模塊寬度再減去(1)中長度最小的模塊的寬度。
(3)重復以上步驟直至所有矩形被處理。
(4)將修改過的模塊數據序列中長寬數據對換。
(5)修改模塊區域連接序列使其與現在的模塊數據序列相對應。
模塊90°翻轉如圖5所示。

圖5 模塊 90°翻轉
270°相當于在 90°翻轉的基礎上再次 180°翻轉,因此只需在3.2節的基礎運用3.1節的算法進行翻轉即可。
本文在SS序列算法的基礎上進行了改進,使原有算法在只能進行簡單矩形模塊布圖的基礎上,可以對一些復雜的不規則模塊進行布圖,大大增加了SS算法的實用能力和處理復雜模塊的能力,為將來集成電路布圖的靈活多變打下了基礎。本文提出了新的模塊劃分概念,并提出了模塊區域連接算法、不規則模塊翻轉算法、模塊區域連接序列等新的算法和概念。充實了SS序列算法,增加了SS序列算法的功能,大大改進了SS算法的實用性和處理復雜情況的應變能力。
[1]KAJITANI Y.The Single-Sequence that unifies placement and floorplanning[M].Presented at the Presession Meeting of ASP-DAC.Asian Semi-conductor University Cooperations,2003.
[2]KIRKPATRICK S.Optimization by simulated annealing[J].Science, 1984,34(5):975-986.
[3]嚴蔚敏,吳偉民.數據結構[M].北京:清華大學出版社,1992.
[4]ZHANG X,KAJITANI Y.Theory of T-junction floorplan in terms of single-sequence[J].IEEE Int.Symp.on Circuits and Systems, 2004:341-344.