TWI797713B - 佈局方法、電腦程式產品與非暫態電腦可讀取儲存媒體 - Google Patents

佈局方法、電腦程式產品與非暫態電腦可讀取儲存媒體 Download PDF

Info

Publication number
TWI797713B
TWI797713B TW110129658A TW110129658A TWI797713B TW I797713 B TWI797713 B TW I797713B TW 110129658 A TW110129658 A TW 110129658A TW 110129658 A TW110129658 A TW 110129658A TW I797713 B TWI797713 B TW I797713B
Authority
TW
Taiwan
Prior art keywords
group
layout
grid
indicates
bounding box
Prior art date
Application number
TW110129658A
Other languages
English (en)
Other versions
TW202307719A (zh
Inventor
蔡振發
林哲立
林家民
黃崇瑋
詹量棋
Original Assignee
創意電子股份有限公司
台灣積體電路製造股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 創意電子股份有限公司, 台灣積體電路製造股份有限公司 filed Critical 創意電子股份有限公司
Priority to TW110129658A priority Critical patent/TWI797713B/zh
Priority to US17/455,013 priority patent/US11861283B2/en
Publication of TW202307719A publication Critical patent/TW202307719A/zh
Application granted granted Critical
Publication of TWI797713B publication Critical patent/TWI797713B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/394Routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/394Routing
    • G06F30/3947Routing global

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Evolutionary Computation (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Architecture (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Auxiliary Devices For Music (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本發明提出一種積體電路設計的佈局方法。每個連線被視為可移動軟模組,當連線覆蓋更多的壅塞區域時,此連線會收到更多懲罰。因此,可以更容易的把連線從壅塞的區域移開。此外,為了解決局部壅塞,本揭露提出了新的膨脹方法,藉此根據一個群內部連線強度以及此群所佔據的佈線壅塞程度來增加群的面積。藉此,可以得到更佳的可佈線性以及線路長度。

Description

佈局方法、電腦程式產品與非暫態電腦可讀取儲存媒體
本揭露是有關於積體電路設計的佈局方法,可以解決全局佈線壅塞以及局部佈線壅塞。
在現代超大規模積體(very-large-scale integration,VLSI)設計中,單元佈局(cell placement)仍然是物理設計中最重要的階段。佈局結果會直接影響晶片的線長、可佈線性(routability)和時序性。儘管在過去的幾十年裡已經開發了許多演算法,但佈局仍然是最具挑戰性的問題,並且有很大的空間改進。
為了降低設計複雜度,許多研究將佈局劃分為三個階段,分別包括全局佈局(global placement,GP)、合法化(legalization,LG)和詳細佈局(detailed placement,DP)。全局佈局的目標是在放置區域上放置標準單元,同時優化一些特定的問題,例如線長和可佈線性,其結果對其餘階段具有關鍵影響。佈線壅塞(routing congestion)是當代全局佈局演算法的主要考量,因為佈局品質對佈線期間的可佈線性有直接影響。然而,在佈局中考慮可佈線性是相當複雜的,因為佈線壅塞可能來自不同的來源,稱為全局(global)佈線壅塞和局部(local)佈線壅塞。圖1繪示了一個範例來說明不同原因引起的佈線壅塞。每一種情境110、120、130繪示了在區域中有25個繞線網格(g-cell),每個繞線網格中可能會產生繞線壅塞,而一個繞線壅塞區域可能包含一個或多個壅塞的繞線網格。具體來說,情境110包含四個產生繞線壅塞的繞線網格(用點狀的背景來表示),情境120包含三個產生繞線壅塞的繞線網格,並且情境130包含兩個產生繞線壅塞的繞線網格。我們將情境110和120視為局部佈線壅塞,因為它們可以通過將單元從壅塞區域移開來解決。然而,情境130中的壅塞不能通過移動單元來消除,這被認為是全局佈線壅塞。為了能夠解決佈局期間的佈線壅塞,我們必須分別處理全局和局部佈線壅塞。
本揭露的實施例提出一種積體電路設計的佈局方法,用於電腦系統。佈局區域被劃分為多個網格,多個單元組成多個連線,每一個連線連接至少兩個單元。此佈局方法包括:將單元當作多個群,並且從下至上在多個層級中的每一個層級合併群;進行初始化的佈局;以及從上至下在每一個層級中解開群並執行第一佈局程序。第一佈局程序包括:為每一個連線建立一個包圍盒,包圍盒覆蓋第一網格;對於每一個連線,根據包圍盒與第一網格的重疊面積以及第一網格的溢出值計算一繞線壅塞懲罰;以及根據連線的繞線壅塞懲罰建立第一目標函數並決定群的位置使得第一目標函數有極值。
在一些實施例中,合併群的步驟包括:產生一新群以包含第一群與第二群;以及至少將第一群的內部連線強度、第二群的內部連線強度以及第一群與第二群之間的一分數相加以得到新群的內部連線強度,其中分數與第一群以及第二群之間的連線的分支數負相關。
在一些實施例中,當第一群或第二群屬於層級中的一最低層級時,對應的內部連線強度為0。上述的分數也與第一群的面積以及第二群的面積負相關。
在一些實施例中,第一佈局程序還包括:更新每一個網格的溢出值;以及對於每一個群,取得網格中與群有最大重疊的第二網格,根據第二網格的溢出值以及群的內部連線強度計算膨脹比例,並根據膨脹比例調整群的大小。
在一些實施例中,第一佈局程序還包括:在計算膨脹比例時,將對應的群的內部連線強度乘上一權重,此權重與目前層級正相關。
在一些實施例中,膨脹比例是根據以下數學式所計算。
Figure 02_image002
Figure 02_image004
Figure 02_image006
其中 l表示目前層級,
Figure 02_image008
表示在目前層級的第i個群,
Figure 02_image010
表示第i個群
Figure 02_image008
的膨脹比例,
Figure 02_image012
表示層級的數目。
Figure 02_image014
Figure 02_image016
Figure 02_image018
以及
Figure 02_image020
為預設的實數。
Figure 02_image022
表示第i個群
Figure 02_image008
所對應的第二網格的溢出值,
Figure 02_image024
表示第i個群
Figure 02_image008
的內部連線強度,
Figure 02_image026
為網格中的最大溢出值,
Figure 02_image028
表示群的最大內部連線強度。
在一些實施例中,佈局方法還包括:在第一佈局程序之前執行第二佈局程序。第二佈局程序包括:對於每一個群,計算群的膨脹比例,並根據膨脹比例調整群的大小;以及建立第二目標函數並決定群的位置使得第二目標函數有極值,其中第二目標函數不包括繞線壅塞懲罰。
在一些實施例中,每一個連線的繞線壅塞懲罰是由根據以下數學式所計算。
Figure 02_image030
其中
Figure 02_image032
表示連線中第i個連線的繞線壅塞懲罰,
Figure 02_image034
表示第i個連線所對應的包圍盒,
Figure 02_image036
表示網格所形成的集合,
Figure 02_image038
表示網格中被包圍盒
Figure 02_image034
所覆蓋的網格。
Figure 02_image040
表示網格
Figure 02_image038
與包圍盒
Figure 02_image034
之間的重疊面積與包圍盒
Figure 02_image034
的面積之間的比例,
Figure 02_image042
表示網格
Figure 02_image038
的溢出值。
以另一個角度來說,本揭露的實施例提出一種電腦程式產品,由電腦系統載入並執行以完成上述的佈局方法。
以另一個角度來說,本揭露的實施例提出一種非暫態電腦可讀取儲存媒體,用以儲存多個指令,這些指令用以被執行以完成上述的佈局方法。
關於本文中所使用之「第一」、「第二」等,並非特別指次序或順位的意思,其僅為了區別以相同技術用語描述的元件或操作。
圖2是根據一實施例說明單元與連線的示意圖。圖2繪示了四個單元201~204,這些單元201~204組成了連線(net)211~214。每個連線用以連接單元201~204上的接腳(pin),每個連線會連接至少兩個單元。例如,連線211用以連接單元201的一個輸入接腳與單元202的一個輸出接腳,以此類推。在此,連線的分支數定義為所連接的接腳數,例如連線211的分支數為2,而連線214的分支數為3。在此實施例中單元201~204為邏輯閘,但在其他實施例中也可以為正反器或其他任意合適的電路。
在此提出的佈局方法,是要在一個佈局區域中散佈所有的單元,也就是決定每個單元的位置。圖3是根據一實施例繪示佈局方法的流程圖。請參照圖3,在此提出的佈局方法是基於多層級的框架,共包括了三個步驟301~303。步驟301亦稱為粗化(coarsening),用以把所有的單元當作多個群(cluster),並且從下至上在每個層級中合併這些群。在步驟302中,進行初始化的佈局,在此可以採用任意習知的做法,例如任意的二次佈局(quadratic placement)演算法。步驟303亦稱為去粗化(uncoarsening)或細化(refinement),用以從上至下在每個層級中解開群並決定每個群的位置。以下將舉實施例詳細說明。
圖4繪示了步驟301的詳細流程圖。在步驟401,建立設計階層樹(Design Hierarchy Tree,DHT),此步驟可以參照論文Lin, Jai-Ming, Szu-Ting Li, and Yi-Ting Wang. "Routability-driven Mixed-size Placement Prototyping Approach Considering Design Hierarchy and Indirect Connectivity Between Macros." Proceedings of the 56th Annual Design Automation Conference 2019。在此用 l來表示層級,此層級被初始化為0。在層級0,每個單元被當作一個群,表示為
Figure 02_image044
在此要被合併的兩個群分別表示為
Figure 02_image046
以及
Figure 02_image048
,而產生的新群則表示為
Figure 02_image008
。在步驟402,產生一個新群
Figure 02_image008
以包含群
Figure 02_image046
以及群
Figure 02_image048
,其中群
Figure 02_image046
以及群
Figure 02_image048
之間具有最大的分數
Figure 02_image050
,計算方式如以下數學式1。 [數學式1]
Figure 02_image052
其中
Figure 02_image054
表示群
Figure 02_image046
的面積,
Figure 02_image056
表示群
Figure 02_image048
的面積。
Figure 02_image058
表示所有群的平均面積。
Figure 02_image060
為預設(可由使用者決定)的實數。
Figure 02_image062
表示連接群
Figure 02_image046
以及群
Figure 02_image048
的連線所形成的集合。
Figure 02_image064
表示連接群
Figure 02_image046
以及群
Figure 02_image048
的其中一個連線。
Figure 02_image066
表示連線
Figure 02_image064
的分支數。較大的分數
Figure 02_image050
表示群
Figure 02_image068
有較小的面積以及比較強的連接強度(數學式1中的第二個項次)。在此,分數
Figure 02_image050
與群
Figure 02_image068
的面積負相關。特別的是,分數
Figure 02_image050
與連線的分支數
Figure 02_image066
負相關,這是因為如果一個連線的分支數比較小,則表示對應的兩個群只依靠比較少的線路連接,因此兩者之間的連接強度比較強;相反的如果連線的分支數比較大,表示對應的兩個群可以透過多條線路連接,因此兩者之間的連接強度比較弱。
在步驟403,計算新群的內部連線強度(internal connectivity intensities,ICI),如以下數學式2所示。 [數學式2]
Figure 02_image070
其中
Figure 02_image024
表示新群
Figure 02_image008
的內部連線強度,
Figure 02_image072
表示群
Figure 02_image046
的內部連線強度,
Figure 02_image074
表示群
Figure 02_image048
的內部連線強度。以另一個角度來說,將群
Figure 02_image046
的內部連線強度、群
Figure 02_image048
的內部連線強度以及這兩個群之間的分數
Figure 02_image050
相加可得到新群的內部連線強度。當群屬於最低層級( l=0)時,群的內部連線強度為0,也就是
Figure 02_image076
。值得注意的是,較大的分數
Figure 02_image050
會產生較大的內部連線強度
Figure 02_image024
在步驟404,判斷是否停止合併。在一些實施例中由於群的數目會越來越小,因此可以根據群的數目來判斷是否要繼續合併。例如,可以判斷
Figure 02_image078
是否成立,其中
Figure 02_image080
為群在層級 l的初始數目,
Figure 02_image082
為群的目前數目,
Figure 02_image084
為使用者決定的實數(例如為1.7),如果上述不等式成立則停止合併(進行步驟408),否則繼續合併(進行步驟405)。
在步驟405中,判斷是否沒有合適的群可以進行合併,基於設計階層樹的演算法,在此只會挑選設計階層樹中同一個階層的群。如果步驟405的結果為是,在步驟406中修改設計階層樹,接著進行步驟407,處理設計階層樹中新的階層。如果步驟405的結果為否,則回到步驟402。關於步驟405~407的詳細內容可以參照設計階層樹的論文,在此不再詳細贅述。
在步驟408中,判斷是否停止建立新的層級。在一些實施例中也可以根據群的數目來判斷是否要停止,例如可以判斷
Figure 02_image086
是否成立,其中
Figure 02_image088
為使用者決定的實數,在此實施例中
Figure 02_image090
。如果此不等式的結果為是,則結束流程,否則進行步驟409,進行下一個層級,也就是 l= l+1。
在此實施例是採用設計階層樹來合併群,但在其他實施例中也可以採用任意的演算法來合併群,只要在每個層級計算群的內部連線強度都符合本揭露的精神。換言之,在合併群時也可以採用不同於數學式1的其他分數計算。除此之外,在合併群時所採用的分數以及計算內部連線強度時所採用的分數也可以不相同,在計算內部連線強度時只要分數
Figure 02_image050
與兩個群之間的連線強度正相關就符合本揭露的精神。更進一步來說,在上述的實施例是用連線的分支數來表示連線強度,而連線的分支數與連線強度負相關,本領域具有通常知識者當根據上述揭露而設計出不同的分數
Figure 02_image050
接下來要進行去粗化,在一些習知技術中為了避免局部佈線壅塞會使用膨脹(inflation)的技術來增加單元的大小,藉此單元可能會從壅塞的區域中移出,這樣的作法需要仰賴壅塞圖(congestion map),壅塞圖是根據網格的溢出值(overflow)來決定。然而,在高層級的壅塞圖並不準確。圖5是根據一實施例繪示高層級與低層級的佈局結果以及對應的壅塞圖。請參照圖5,佈局區域510繪示了在高層級的佈局結果,壅塞圖520也是在高層級計算的結果。此外,佈局區域530是在低層級的佈局結果,壅塞圖540是在低層級計算的結果。從圖5可以看出壅塞圖520與壅塞圖540有很大的差異,這是因為在群內部的壅塞是不可知的。在此實施例中,是根據壅塞圖以及群的內部連線強度來執行膨脹,藉此可以減少局部佈線壅塞。
圖6是根據一實施例繪示了步驟303的詳細流程圖。在步驟601,更新壅塞圖,此壅塞圖包含了每個網格的溢出值,溢出值是定義為一個網格所需要的線路數目減去此網格所能提供的線路數目,溢出值越大則表示此網格越壅塞,每個網格的溢出值都會根據目前的佈局而被更新。本領域具有通常知識者當可理解壅塞圖,在此不詳細贅述。
在步驟602,解開目前層級 l中的群。在步驟603,根據壅塞圖與內部連線強度計算每個群的膨脹比例。具體來說,膨脹比例可以根據以下數學式3~5來計算。 [數學式3]
Figure 02_image092
[數學式4]
Figure 02_image004
[數學式5]
Figure 02_image006
其中
Figure 02_image010
表示群
Figure 02_image008
的膨脹比例。由於群
Figure 02_image008
可能會重疊多個網格,在此僅考慮和群
Figure 02_image008
有最大重疊的網格,表示為 g,而
Figure 02_image022
表示網格 g的溢出值。
Figure 02_image094
表示正規化的溢出值,
Figure 02_image026
表示所有網格中最大的溢出值。
Figure 02_image024
表示群
Figure 02_image008
的內部連線強度,
Figure 02_image096
表示正規化的內部連線強度,
Figure 02_image028
表示所有群中最大的內部連線強度。此外,
Figure 02_image018
Figure 02_image020
Figure 02_image014
Figure 02_image016
為預設(可由使用者決定)的實數,
Figure 02_image012
表示所有層級的數目。在一些實施例中是限制膨脹比例介於1至2之間,因此可設定
Figure 02_image098
Figure 02_image100
。在一些實施例中,
Figure 02_image020
為在目前層級 l中所有群的內部連線強度的平均的兩倍。
值得注意的是,數學式3中的
Figure 02_image102
為一權重,此權重與目前層級 l正相關,由於在去粗化的過程中目前層級 l是逐漸減少,因此權重
Figure 02_image102
是從最高層級的1一直遞減到最低層級的0(因為在最低層級時每個群只包含一個單元)。權重
Figure 02_image102
被設定為遞減是因為在高層級的時候一個群具有更多的內部連線強度,且溢出值並不準確。相反的,在較低層級時一個群具有較少的內部連線強度,而溢出值較準確。在計算膨脹比例
Figure 02_image010
以後,便可以根據此膨脹比例來調整群
Figure 02_image008
的大小(即在佈局區域中所佔據的面積)。
在步驟604中,執行以線路長所驅動的分散方法。具體來說,可建立一目標函數並決定群的位置使得此目標函數有極值,此目標函數可表示為以下數學式6。 [數學式6]
Figure 02_image104
在此實施例中,佈局區域被分為多個槽(bin),槽的大小可以大於、等於或小於網格的大小。
Figure 02_image106
表示線路的總長。
Figure 02_image108
表示在槽 b中的單元的面積總和。
Figure 02_image110
表示在槽b中所允許的最大單元面積。
Figure 02_image112
Figure 02_image114
為使用者定義的實數。上述數學式6的詳細內容可以參照論文Chen, Tung-Chieh, et al. "NTUplace3: An analytical placer for large-scale mixed-size designs with preplaced blocks and density constraints." IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems 27.7 (2008): 1228-1240,在此不詳細贅述。
在步驟605中,判斷是否已經足夠分散。若是的話則進行步驟606,否則回到步驟604。在一些實施例中,可以計算每個槽的溢出面積,定義為槽中所有單元(群)的面積總和減去槽的面積,當溢出面積越小則表示壅塞的程度較低。將所有槽的溢出面積總和除以所有可移動模塊(群)的面積總和則會得到一面積溢出比例,如果此面積溢出比例小於一預設值(例如為0)則判斷已經足夠分散。
在步驟606中,更新每個網格的溢出值。在步驟607中,對於每個群,根據網格的溢出值以及群的內部連線強度計算膨脹比例,並根據此膨脹比例調整群的大小,此步驟607可參照步驟603,在此不重複贅述。
在步驟608,執行以可佈線性所驅動的佈局方法。由於只考慮線路長度時無法解決全局壅塞的問題,在此將每個連線視為可移動且形狀可改變的包圍盒。圖7是根據一實施例繪示連線與包圍盒的示意圖。請參照圖7,連線710連接了接腳721~724,而包圍盒730是能夠涵蓋所有接腳721~724的最小矩形。在此實施例中,根據每個連線所佔據的區域可以給予一個懲項,當包圍盒730涵蓋更多個壅塞區域時對應的連線會得到更多的懲罰。如此一來,包圍盒730的位置與形狀都會自動的改變,將連線移動到低壅塞的區域。圖8是根據一實施例繪示連線與壅塞區域的示意圖。請參照圖8,情境810繪示了習知作法的佈局結果,情境810包含了三個壅塞區域821~823與三個連線831~833。透過此揭露所提出的方法,連線可改變形狀與位置,結果如情境820所示,連線831~833的形狀可改變,並且會移動到低壅塞的區域。
具體來說,在此用
Figure 02_image116
來表示第i個連線,而
Figure 02_image034
表示連線
Figure 02_image116
所對應的包圍盒。在給定的佈局位置下,連線
Figure 02_image116
所對應的繞線壅塞懲罰(作為一懲罰項)由以下數學式7所計算。 [數學式7]
Figure 02_image030
其中
Figure 02_image032
表示連線
Figure 02_image116
的繞線壅塞懲罰。G表示所有網格所形成的集合。
Figure 02_image038
表示包圍盒
Figure 02_image034
所覆蓋的網格,
Figure 02_image042
表示網格
Figure 02_image038
的溢出值。
Figure 02_image040
表示網格
Figure 02_image038
與包圍盒
Figure 02_image034
之間的重疊面積與包圍盒
Figure 02_image034
的面積之間的比例。舉例來說,圖9是根據一實施例繪示包圍盒與網格重疊的示意圖。請參照圖9,其中繪示了四個網格901~904,其中網格901的溢出值為1.41,網格902的溢出值為1.02,網格903的溢出值為0.9,而網格904的溢出值為0.89。包圍盒910重疊於網格901~904,包圍盒910有15%的面積重疊於網格901,有22%的面積重疊於網格902,有28%的面積重疊於網格903,有35%的面積重疊於網格904。因此,包圍盒910所對應的連線
Figure 02_image116
的繞線壅塞懲罰為
Figure 02_image118
。當連線
Figure 02_image116
覆蓋更多的壅塞區域時,它會得到更多的懲罰。換言之,在此實施例中是用繞線壅塞懲罰來表示可佈線性,當繞線壅塞懲罰越大表示可佈線性越低。為了將上述數學式7表示為單元的座標,可將數學式7轉換為以下數學式8。 [數學式8]
Figure 02_image120
其中
Figure 02_image122
表示網格
Figure 02_image038
所貢獻的懲罰,可由以下數學式9來計算。 [數學式9]
Figure 02_image124
其中
Figure 02_image126
為包圍盒
Figure 02_image034
與網格
Figure 02_image038
之間的重疊區域的寬度,
Figure 02_image128
為包圍盒
Figure 02_image034
與網格
Figure 02_image038
之間的重疊區域的高度。由於
Figure 02_image126
Figure 02_image128
不可微分,可根據鐘型函數(bell-shaped potential function)來將他們替換為
Figure 02_image130
Figure 02_image132
,如以下數學式10、11所示。
Figure 02_image132
可根據類似的方式來計算。 [數學式10]
Figure 02_image134
[數學式11]
Figure 02_image136
Figure 02_image138
其中
Figure 02_image140
表示包圍盒
Figure 02_image034
的中心與網格
Figure 02_image038
的中心之間在X軸上的距離。
Figure 02_image142
表示包圍盒
Figure 02_image034
的寬度。
Figure 02_image144
表示網格
Figure 02_image038
的寬度。為了計算距離
Figure 02_image140
,需要取得包圍盒
Figure 02_image034
的中心座標,表示為(
Figure 02_image146
,
Figure 02_image148
),由以下數學式12所計算。而寬度
Figure 02_image142
由以下數學式13所計算。 [數學式12]
Figure 02_image150
[數學式13]
Figure 02_image152
其中
Figure 02_image154
表示連線
Figure 02_image116
中的一個單元。
Figure 02_image156
表示單元
Figure 02_image154
的中心的X座標。由於函數
Figure 02_image158
以及
Figure 02_image160
不可微分,因此可採用對數總和指數函式(log-sum-exp function)來計算。
根據上述揭示內容,步驟608所建立的目標函數可以表示為以下數學式14。 [數學式14]
Figure 02_image162
數學式14與上述數學式6的不同之處在於繞線壅塞懲罰
Figure 02_image164
,定義如以下數學式15。 [數學式15]
Figure 02_image166
其中
Figure 02_image168
表示包含所有連線的清單。在一些實施例中,
Figure 02_image112
以及
Figure 02_image114
設定如以下數學式16、17。
Figure 02_image170
為預設(可由使用者決定)的實數,在一些實施例中可設定為1。 [數學式16]
Figure 02_image172
[數學式17]
Figure 02_image174
在一些實施例中,為了讓單元平均的分佈在佈局區域,
Figure 02_image112
以及
Figure 02_image170
是固定的,而
Figure 02_image114
可在每次迭代中增加(例如乘以2)。在一些實施例中,數學式14可透過共軛梯度(conjugate gradient,CG)方法來計算出每個群的座標x、y,藉此讓目標函數有極值(在此例子中為最小值),但本揭露並不限制用什麼方法來求解數學式14。
在步驟609,判斷是否為最低層級,若是的話結束流程,否則進行步驟610,進行更低的層級,也就是 l= l-1。
步驟603~605可以合稱為第二佈局程序620,步驟606~608可以合稱為第一佈局程序630。在此實施例中,在步驟608中的目標函數包含繞線壅塞懲罰
Figure 02_image164
,但步驟604的目標函數則沒有包含繞線壅塞懲罰,這是因為在佈局初始階段所有的群會擠在一起,此時無法考慮繞線壅塞懲罰,必須先考慮線路長度將這些群分散開來。然而,本揭露並不限於圖6的流程圖,在其他實施例中步驟604可以採用任意的目標函數,或者第二佈局程序620可省略。此外,本揭露也不限於上述數學式14的目標函數,任意合適的目標函數只要包含了繞線壅塞懲罰
Figure 02_image164
都符合本揭露的精神。
以另外一個角度來說,本發明也提出了一電腦程式產品,此產品可由任意的程式語言及/或平台所撰寫,當此電腦程式產品被載入至電腦系統並執行時,可執行上述的佈局方法。本發明也提出一種非暫態電腦可讀取儲存媒體,例如為隨機存取記憶體、唯讀記憶體、快閃記憶體、軟碟、硬碟、光碟、隨身碟、磁帶、可由網路存取之資料庫等,此儲存媒體中儲存有多個指令,當這些指令被執行時可完成上述的佈局方法。
本揭露至少有三個特點。第一,我們在多層級的框架下採用不同的策略來解決全局壅塞以及局部壅塞的問題。第二,我們提出了一個以壅塞作為連線懲罰的模型來減少全局壅塞。第三,我們提出了新的膨脹技術,同時考慮一個群的內部連線強度以及此群所佔據的壅塞值,藉此減輕局部壅塞。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
110,120,130:情境
201~204:單元
211~214:連線
301~303,401~409,601~610:步驟
510,530:佈局區域
520,540:壅塞圖
710:連線
721~724:接腳
730:包圍盒
810,820:情境
821~823:壅塞區域
831~833:連線
901~904:網格
910:包圍盒
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖示作詳細說明如下。 圖1繪示了一個範例來說明不同原因引起的佈線壅塞。 圖2是根據一實施例說明單元與連線的示意圖。 圖3是根據一實施例繪示佈局方法的流程圖。 圖4繪示了步驟301的詳細流程圖。 圖5是根據一實施例繪示高層級與低層級的佈局結果以及對應的壅塞圖。 圖6是根據一實施例繪示了步驟303的詳細流程圖。 圖7是根據一實施例繪示連線與包圍盒的示意圖。 圖8是根據一實施例繪示連線與壅塞區域的示意圖。 圖9是根據一實施例繪示包圍盒與網格重疊的示意圖。
810,820:情境 821~823:壅塞區域 831~833:連線

Claims (10)

  1. 一種積體電路設計的佈局方法,用於一電腦系統,其中一佈局區域被劃分為多個網格,多個單元組成多個連線,每一該些連線連接該些單元的至少其中之二,該佈局方法包括: 將該些單元當作多個群,並且從下至上在多個層級中的每一個層級合併該些群; 進行初始化的佈局;以及 從上至下在每一該些層級中解開該些群並執行一第一佈局程序,該第一佈局程序包括: 為每一該些連線建立一包圍盒,該包圍盒覆蓋該些網格中的至少一第一網格; 對於每一該些連線,根據該包圍盒與該至少一第一網格的重疊面積以及該至少第一網格的溢出值計算一繞線壅塞懲罰;以及 根據該些連線的該些繞線壅塞懲罰建立一第一目標函數並決定該些群的位置使得該第一目標函數有一極值。
  2. 如請求項1所述之佈局方法,其中合併該些群的步驟包括: 產生一新群以包含該些群中的第一群與第二群;以及 至少將該第一群的內部連線強度、該第二群的內部連線強度以及該第一群與該第二群之間的一分數相加以得到該新群的內部連線強度,其中該分數與該第一群以及該第二群之間的該些連線的分支數負相關。
  3. 如請求項2所述之佈局方法,其中當該第一群或該第二群屬於該些層級中的一最低層級時,對應的該內部連線強度為0, 該分數也與該第一群的面積以及該第二群的面積負相關。
  4. 如請求項3所述之佈局方法,其中該第一佈局程序還包括: 更新每一該些網格的溢出值;以及 對於每一該些群,取得該些網格中與該群有最大重疊的一第二網格,根據該第二網格的該溢出值以及該群的該內部連線強度計算一膨脹比例,並根據該膨脹比例調整該群的大小。
  5. 如請求項4所述之佈局方法,其中該第一佈局程序還包括: 在計算該膨脹比例時,將對應的該群的該內部連線強度乘上一權重,該權重與該些層級中的一目前層級正相關。
  6. 如請求項5所述之佈局方法,其中該膨脹比例是根據以下數學式所計算:
    Figure 03_image092
    Figure 03_image004
    Figure 03_image006
    其中 l表示該目前層級,
    Figure 03_image008
    表示在該目前層級的第i個群,
    Figure 03_image010
    表示該第i個群
    Figure 03_image008
    的膨脹比例,
    Figure 03_image012
    表示該些層級的數目, 其中
    Figure 03_image014
    Figure 03_image016
    Figure 03_image018
    以及
    Figure 03_image020
    為預設的實數, 其中
    Figure 03_image022
    表示該第i個群
    Figure 03_image008
    所對應的該第二網格的該溢出值,
    Figure 03_image024
    表示該第i個群
    Figure 03_image008
    的該內部連線強度,
    Figure 03_image026
    為該些網格中的最大溢出值,
    Figure 03_image028
    表示該些群的最大內部連線強度。
  7. 如請求項6所述之佈局方法,還包括: 在該第一佈局程序之前執行一第二佈局程序,其中該第二佈局程序包括: 對於每一該些群,計算該群的該膨脹比例,並根據該膨脹比例調整該群的大小;以及 建立第二目標函數並決定該些群的位置使得該第二目標函數有極值,其中該第二目標函數不包括該些繞線壅塞懲罰。
  8. 如請求項1所述之佈局方法,其中每一該些連線的該繞線壅塞懲罰是由根據以下數學式所計算:
    Figure 03_image030
    其中
    Figure 03_image032
    表示該些連線中第i個連線的該繞線壅塞懲罰,
    Figure 03_image034
    表示該第i個連線所對應的該包圍盒,
    Figure 03_image036
    表示該些網格所形成的集合,
    Figure 03_image038
    表示該些網格中被該包圍盒
    Figure 03_image034
    所覆蓋的網格, 其中
    Figure 03_image040
    表示該網格
    Figure 03_image038
    與該包圍盒
    Figure 03_image034
    之間的重疊面積與該包圍盒
    Figure 03_image034
    的面積之間的比例,
    Figure 03_image042
    表示該網格
    Figure 03_image038
    的該溢出值。
  9. 一種電腦程式產品,由一電腦系統載入並執行以完成請求項1所述之積體電路設計的佈局方法。
  10. 一種非暫態電腦可讀取儲存媒體,用以儲存多個指令,該些指令用以被執行以完成請求項1所述之積體電路設計的佈局方法。
TW110129658A 2021-08-11 2021-08-11 佈局方法、電腦程式產品與非暫態電腦可讀取儲存媒體 TWI797713B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
TW110129658A TWI797713B (zh) 2021-08-11 2021-08-11 佈局方法、電腦程式產品與非暫態電腦可讀取儲存媒體
US17/455,013 US11861283B2 (en) 2021-08-11 2021-11-15 Placement method and non-transitory computer readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW110129658A TWI797713B (zh) 2021-08-11 2021-08-11 佈局方法、電腦程式產品與非暫態電腦可讀取儲存媒體

Publications (2)

Publication Number Publication Date
TW202307719A TW202307719A (zh) 2023-02-16
TWI797713B true TWI797713B (zh) 2023-04-01

Family

ID=85178135

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110129658A TWI797713B (zh) 2021-08-11 2021-08-11 佈局方法、電腦程式產品與非暫態電腦可讀取儲存媒體

Country Status (2)

Country Link
US (1) US11861283B2 (zh)
TW (1) TWI797713B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108846187A (zh) * 2018-05-25 2018-11-20 福州大学 基于广义增广拉格朗日的集成电路全局布局优化方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6085032A (en) * 1996-06-28 2000-07-04 Lsi Logic Corporation Advanced modular cell placement system with sinusoidal optimization
US6480991B1 (en) * 2001-04-11 2002-11-12 International Business Machines Corporation Timing-driven global placement based on geometry-aware timing budgets
US7117468B1 (en) * 2002-01-22 2006-10-03 Cadence Design Systems, Inc. Layouts with routes with different spacings in different directions on the same layer, and method and apparatus for generating such layouts
US8863062B2 (en) * 2012-04-30 2014-10-14 Taiwan Semiconductor Manufacturing Company, Ltd. Methods and apparatus for floorplanning and routing co-design
CN107526860B (zh) * 2017-03-31 2019-12-31 福州大学 基于电场能建模技术的vlsi标准单元布局方法
US11675333B2 (en) * 2020-06-26 2023-06-13 Autodesk, Inc. Generative design shape optimization with singularities and disconnection prevention for computer aided design and manufacturing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108846187A (zh) * 2018-05-25 2018-11-20 福州大学 基于广义增广拉格朗日的集成电路全局布局优化方法

Also Published As

Publication number Publication date
US11861283B2 (en) 2024-01-02
US20230046865A1 (en) 2023-02-16
TW202307719A (zh) 2023-02-16

Similar Documents

Publication Publication Date Title
CN101187957B (zh) 设计集成电路的公共时钟域中的多个锁存器的布图的系统和方法
US7266796B1 (en) Fastplace method for integrated circuit design
Hsu et al. Routability-driven analytical placement for mixed-size circuit designs
US7484199B2 (en) Buffer insertion to reduce wirelength in VLSI circuits
US7934188B2 (en) Legalization of VLSI circuit placement with blockages using hierarchical row slicing
US11853676B2 (en) Layout context-based cell timing characterization
US7401313B2 (en) Method and apparatus for controlling congestion during integrated circuit design resynthesis
US7296252B2 (en) Clustering techniques for faster and better placement of VLSI circuits
Huang et al. Detailed-routing-driven analytical standard-cell placement
Lin et al. Routability-driven global placer target on removing global and local congestion for VLSI designs
Murali et al. ART-3D: Analytical 3D placement with reinforced parameter tuning for monolithic 3D ICs
TW202409879A (zh) 具有人類專家質量的基於學習的宏安置
TWI797713B (zh) 佈局方法、電腦程式產品與非暫態電腦可讀取儲存媒體
US9594859B1 (en) Apparatus and associated methods for parallelizing clustering and placement
US12079558B2 (en) On-the-fly multi-bit flip flop generation
US6557144B1 (en) Netlist resynthesis program based on physical delay calculation
WO2023130434A1 (zh) 用于设计布局的方法、装置、设备、介质以及程序产品
US11704467B2 (en) Automated balanced global clock tree synthesis in multi level physical hierarchy
Chang et al. Flexible multiple-objective reinforcement learning for chip placement
US10970452B2 (en) System for designing semiconductor circuit and operating method of the same
US9177090B1 (en) In-hierarchy circuit analysis and modification for circuit instances
CN115705458A (zh) 布局方法与计算机系统
Pandini et al. Global and local congestion optimization in technology mapping
Zang et al. ATLAS: A two-level layer-aware scheme for routing with cell movement
Zhu et al. High-performance 3D Placement Engine with Physical-aware Incremental Partitioning