TW202234282A - 使用可滿足性模理論解算器自動產生標準單元之系統及方法 - Google Patents

使用可滿足性模理論解算器自動產生標準單元之系統及方法 Download PDF

Info

Publication number
TW202234282A
TW202234282A TW110147040A TW110147040A TW202234282A TW 202234282 A TW202234282 A TW 202234282A TW 110147040 A TW110147040 A TW 110147040A TW 110147040 A TW110147040 A TW 110147040A TW 202234282 A TW202234282 A TW 202234282A
Authority
TW
Taiwan
Prior art keywords
smt
placement
solution
routing
requirements
Prior art date
Application number
TW110147040A
Other languages
English (en)
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 美商思發科技股份有限公司
Publication of TW202234282A publication Critical patent/TW202234282A/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/10Numerical modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/20Configuration CAD, e.g. designing by assembling or positioning modules selected from libraries of predesigned modules

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本發明提供一種用於積體電路(IC)中之單元內裝置之置放及路由的電子設計自動化工具及其操作方法。大體而言,該方法包括:接收輸入;藉由將該等輸入轉譯成一組可滿足性模理論(SMT)約束來創建用於置放及路由之一SMT問題之一執行個體,該等約束與單元內電晶體之置放及互連件至單元內電晶體之路由相關;呼叫一SMT解算器且使用該組SMT約束而產生該SMT問題的一解決方案;以及若該解決方案滿足該等輸入之要求及由一使用者指定之一預定面積要求,則創建並輸出用於該IC中之單元內電晶體之置放及路由的一佈局。可重複該程序直至發現預定數目個經順位解決方案或一最佳解決方案。亦揭示其他實施例。

Description

使用可滿足性模理論解算器自動產生標準單元之系統及方法
相關申請案之交叉參考
本國際申請案主張2020年12月16日申請之美國臨時專利申請案第63/126,260號的優先權,該申請案之全文係以引用方式併入本文中。 發明領域
本揭露內容大體而言係關於積體電路設計,且更特定言之,係關於用於包括多層電晶體之複雜電路中之元件之設計、佈局及路由的電子設計自動化(EDA)工具。
發明背景
最新的積體電路(IC)通常包括數億或數十億個電路元件或組件,使得電子設計自動化(EDA)工具(亦被稱作電子電腦輔助設計(ECAD))對於其在製造之前之設計及驗證係必不可少的。在標準單元庫設計程序期間,設計者將電路中之一或多個單元之初始佈局方案或模板連同組件清單(接線對照表)鍵入至EDA工具中且識別用於該佈局之一組設計要求(技術設計規則)。EDA工具執行多個功能測試或模擬,以確保設計執行其預期功能且產生用於IC之子電路或單元內之組件的多種可能佈局或單元內置放,以及單元內之組件之間的電氣連接或路由。設計者可接著檢閱用於單元內置放及單元內路由之可能佈局清單且選擇最佳滿足設計準則的設計。
圖1A為示出用於界定待製造或印刷於半導體基體或晶圓上之單一單元 104(圖1A及圖1B中所示出)之模板 102的方塊圖。通常,各單元 104包括一或多個電子積體電路(IC)裝置,諸如電晶體、電容器或電阻器,其各自由多個不同的圖案化半導電層、絕緣層及導電層形成。該模板界定不同層上之若干形狀;最值得注意的是,至單元之電力軌係由表示VDD 106或正電力接腳之頂部形狀及表示VSS 108、GND或負電力接腳之底部形狀界定。包圍單元 104之矩形界定單元面積且具有高度 110及寬度或間距 112。矩形外部的任何物都可被相鄰單元重疊。如圖1B及圖1C中所示出,通常各單元 104為單一高度單元,該單元可具有與圖1A中所示出之模板相同的高度但具有不同的寬度 112。圖1B中所示出之單元 104使用2個間距,而圖1C中所示出之單元使用7個間距。參看圖1D,模板定義使得在合成之後單元 104有可能在列 114中並列地鄰接且經由一或多個互連層電耦合以構成設計。此設計為隨後「印刷」於晶圓上之設計。
儘管現有EDA工具及方法已足夠良好地工作以用於設計僅包括單一高度單元之電路,但包括或需要使用多高度單元(亦稱為多列單元)的IC設計之新近發展已證實有問題。圖1E為示出總高度等於圖1A之模板高度之大於一之整數倍的一個此類多高度單元的方塊圖。當前,用於設計包括多高度單元(亦即標準單元庫)之IC的單元之程序仍在很大程度上由設計工程師手動地進行,設計工程師繪製個別多邊形以表示各單元。由於此為手動的努力,因此係極耗時的且易於出現人為誤差。除了生產率缺點之外,品質及一致性亦有所減弱,尤其是在設計包括多高度單元之IC時。
因此,需要一種用以設計包括多高度單元之IC的EDA工具,其相比於使用現有EDA工具及手動方法可能出現的情形,能夠產生客觀較好的佈局、具有改良之度量(諸如減小之面積)、較高電路密度或路由層中之較高金屬利用率。進一步需要EDA工具及其操作方法經由與先前手動方法相比減少設計時間及改良一致性而提供更大生產率。
發明概要
本發明之目標係提供一種電子設計自動化工具及其操作方法,其經提供以用於包括多高度單元之積體電路(IC)中的單元內裝置或電晶體之置放及路由以增加生產率且改良所遞送結果之一致性。
在一個實施例中,該方法包括:接收包括一接線對照表、模板定義及技術設計規則之輸入;基於該經接收輸入藉由將單元內電晶體之置放轉譯成用於一面積最小解決方案之一可滿足性模理論(SMT)置放問題、呼叫一SMT解算器且產生用於該等電晶體之置放之一佈局,來判定一置放解決方案;以及基於該經接收輸入及該佈局藉由將單元內電晶體之間的電氣連接之單元內路由轉譯成用於該等技術設計規則之一SMT路由問題、呼叫該SMT解算器且產生用於該等單元內電晶體之置放及路由之一佈局,來判定用於該等單元內電晶體之一路由解決方案。該方法可進一步包括:重複該判定該置放及路由解決方案預定次數或直至符合滿足一預定義度量的一置放及路由解決方案;及基於該預定義度量對該等所產生之置放及路由解決方案進行自動順位並輸出經順位解決方案之一清單。
在另一實施例中,該方法可分裂成二個單獨的SMT問題及解決方案,包括純粹用於多個電晶體之置放的一選用第一SMT置放問題及解算器,接著為可將該解決方案用於該第一SMT置放問題以限制電晶體之可能位置的一第二SMT置放及路由問題。應理解,藉由執行將可能的電晶體位置限制在由該第一SMT執行個體提供之SMT置放周圍的SMT置放及路由問題,可減少總體解決方案時間。
簡言之,此方法可包括:(i)接收輸入;(ii)藉由將該等輸入轉譯成一第一組SMT約束來創建一SMT置放問題之一第一執行個體,該等約束與該IC中之多個單元內電晶體之置放相關;(iii)呼叫一第一SMT解算器且產生該SMT置放問題的一第一解決方案;以及(iv)若該SMT置放問題的該第一解決方案滿足該等輸入之要求,則使用該SMT置放問題的該第一解決方案來創建一SMT置放及路由問題之一第一執行個體;以及(v)呼叫一第二SMT解算器且產生該SMT路由問題的一第一解決方案。若該SMT路由及問題的該第一解決方案滿足該等輸入之要求及由一使用者指定之一面積要求,則創建用於該IC中之單元內電晶體之置放及路由的一第一佈局且向該使用者輸出該第一佈局。若該SMT置放及路由問題之該第一解決方案不滿足該等輸入之要求,則最後或最新解決方案無效且使用該等輸入之要求創建該SMT置放問題之另一執行個體,呼叫該第一SMT解算器且產生不同於先前發現之所有解決方案的該SMT置放問題的一第二解決方案。此第二解決方案接著用以創建該SMT置放及路由問題之一第二執行個體,呼叫該第二SMT解算器且產生該SMT置放及路由問題的一第二解決方案。
如同以上所描述之方法,在任擇地具有有限電晶體定位之相同SMT執行個體上使用置放及路由的方法可進一步包括:重複判定該置放及路由解決方案達預定次數或直至符合滿足一預定義度量的一置放及路由解決方案;以及基於該預定義度量自動地對所產生之置放及路由解決方案進行順位並輸出經順位之解決方案之一清單。
在另一態樣中,本揭露內容之發明進一步係針對一種非暫時性電腦可讀媒體,其具有用於一IC中之單元內電晶體之置放及路由的程式指令。較佳地,該電腦可讀媒體儲存於一電子設計自動化(EDA)工具中或該電子設計自動化(EDA)工具之部分中,該工具包括用於執行該等程式指令之至少一個處理器。簡言之,該電腦可讀媒體包括:用於接收包括一接線對照表、模板定義及技術設計規則之輸入的程式指令;用於藉由將該等輸入轉譯成一組可滿足性模理論(SMT)約束來創建用於置放及路由之一SMT問題之一第一執行個體的程式指令,該等約束與多個單元內電晶體之置放及互連件至該等多個單元內電晶體之路由相關;用於呼叫一SMT解算器且使用該組SMT約束而產生該SMT問題的一第一解決方案的程式指令;以及在該第一解決方案滿足該等輸入之要求及由一使用者指定之一預定面積要求的情況下,用於創建並輸出用於該IC中之單元內電晶體之置放及路由的一第一佈局的程式指令。
較佳實施例之詳細說明
提供一種用於積體電路(IC)中之單元內裝置之置放及路由的電子設計自動化工具及其操作方法。
在以下描述中,出於解釋之目的,闡述許多特定細節以便提供對本發明之透徹理解。然而,對於熟習此項技術者將顯而易見,可在無此等特定細節之情況下實踐本發明。在其他情況下,未詳細示出或以方塊圖形式示出熟知結構及技術以便避免不必要地混淆對本說明書之理解。
在本說明書中對「一個實施例」或「一實施例」之參考意謂結合實施例所描述之特定特徵、結構或特性包括於本發明之至少一個實施例中。片語「在一個實施例中」在本說明書中的各種地方處的出現未必皆指同一實施例。如本文中所使用之術語耦接可包括用以直接電氣連接二個或多於二個組件或元件及用以經由一或多個介入組件間接連接二個或多於二個組件或元件二種情況。
在高層級處,製造積體電路(IC)之程序開始於產品想法,該產品想法接著在使用電子設計自動化(EDA)軟體之反覆且通常勞動密集設計程序中實現。當設計完成時,執行製造程序以及封裝及組裝程序,最終產生成品IC晶片。
簡言之,在設計程序中,設計者描述待實施之功能性、使用諸如VHDL或Verilog碼之高層級描述語言(HDL)碼來寫入用於系統設計中之邏輯之模組,且檢查設計以確保其回應於特定輸入刺激而產生正確的輸出。接下來,藉由被稱為技術映射之程序將VHDL/Verilog碼轉譯成接線對照表,該程序將標準單元庫視為輸入,且建構用於晶片之總體平面佈置圖或佈局且置放或定位電路元件。
在標準單元庫之開發期間,定位或置放裝置(單元內置放)或在IC中之單元內,及裝置之間的連接之路由(單元內路由)在庫包括多高度單元(意謂單元之總高度等於模板高度之大於一的整數倍)時可尤其成問題且耗時。
圖2為適合供本揭露內容之EDA軟體及方法使用以用於在包括多高度單元之IC中之單元內裝置之置放及路由的電腦系統或工具的簡化方塊圖。參看圖2,電腦系統 210通常包括至少一個處理器 214,該等至少一個處理器經由匯流排子系統 212與多個周邊裝置通訊。此等周邊裝置可包括儲存子系統 224、使用者介面輸入裝置 222、使用者介面輸出裝置 220及網路介面子系統 216,該儲存子系統 224包含記憶體子系統 226及檔案儲存子系統 228。輸入及輸出裝置允許使用者與電腦系統 210互動。網路介面子系統 216提供至外部網路之介面,包括至通訊網路 218之介面,且經由通訊網路 218耦接至其他電腦系統中之對應介面裝置。通訊網路 218可包含許多互連電腦系統及通訊鏈路。此等通訊鏈路可為有線鏈路、光學鏈路、無線鏈路或用於資訊之通訊的任何其他機構。雖然在一個實施例中,通訊網路 218係網際網路,但在其他實施例中,通訊網路 218可為任何合適的電腦網路。
使用者介面輸入裝置 222可包括鍵盤、諸如滑鼠之指標裝置、軌跡球、觸控板或圖形平板電腦、掃描器、併入至顯示器中之觸控螢幕、諸如語音辨識系統之音訊輸入裝置、麥克風及其他類型之輸入裝置。一般而言,術語「輸入裝置」之使用意欲包括將資訊輸入至電腦系統 210中或至通訊網路 218上的所有可能類型之裝置及方式。
使用者介面輸出裝置 220可包括顯示子系統、印表機、傳真機或諸如音訊輸出裝置之非視覺顯示器。顯示子系統可包括陰極射線管(CRT)、諸如液晶顯示器(LCD)之平板裝置、投影裝置或用於產生可見影像之某其他機構。顯示子系統亦可諸如經由音訊輸出裝置提供非視覺顯示器。一般而言,術語「輸出裝置」之使用意欲包括用以將資訊自電腦系統 210輸出至使用者或至另一機器或電腦系統的所有可能類型之裝置及方式。
儲存子系統 224儲存提供本文中所描述之EDA工具中之一些或全部之功能性的基本規劃及資料建構,包括應用於對縮減之接線對照表之分析的接線對照表縮減技術及驗證工具。此等軟體模組通常藉由處理器 214執行。
記憶體子系統 226通常包括多個記憶體,包括用於在程式執行期間儲存指令及資料的主隨機存取記憶體(RAM) 230及其中儲存固定指令的唯讀記憶體(ROM) 232。檔案儲存子系統 228提供對程式及資料檔案之持久性儲存,且可包括硬碟機、軟碟機以及相關聯抽取式媒體、CD-ROM驅動機、光碟機或抽取式媒體盒。實施某些實施例之功能性的資料庫及模組可由檔案儲存子系統 228儲存。
匯流排子系統 212提供用於使電腦系統 210之各種組件及子系統按預期彼此通訊的機制。儘管匯流排子系統 212經示意性地示出為單一匯流排,但匯流排子系統之替代實施例可使用多個匯流排。
電腦可讀媒體 240可為與檔案儲存子系統 228相關聯及/或與網路介面子系統 216相關聯的媒體。電腦可讀媒體可為硬碟、軟碟、CD-ROM、光學媒體、抽取式媒體卡匣或電磁波。電腦可讀媒體 240經示出為儲存電路設計 280,包括例如電路設計之HDL描述,及運用所描述技術創建的縮減之接線對照表。亦示出藉由所描述技術創建的電路 290
電腦系統 210自身可屬於變化類型,包括個人電腦、攜帶型電腦、工作站、電腦終端、網路電腦、電視、大型主機,或任何其他資料處理系統或使用者裝置。歸因於電腦及網路之不斷改變之本質,出於示出較佳實施例之目的,圖2中所描繪之電腦系統 210的描述僅意欲作為特定實例。具有比圖2中所描繪之電腦系統更多或更少之組件的電腦系統 210之許多其他組態係可能的。
現在將參看圖3之簡化流程圖描述根據本揭露內容之實施例的用於電晶體之單元內置放的程序或方法。參看圖3,該方法藉由根據或使用由設計者提供之輸入(步驟 304)將接線對照表中之多個組件或子電路之潛在多高度單元內電晶體置放問題轉譯成可滿足性模理論(satisfiability modulo theory,SMT)問題(步驟 302)。所提供之輸入包括接線對照表(步驟 306)、模板定義(步驟 308)及一或多個技術設計規則(步驟 310),所有輸入經由使用者介面輸入裝置 222及/或來自檔案儲存子系統 228。通常,接線對照表指定用於經設計之電路之參數(包括各組件之面積或佔據面積)、功能及要求且包括可供在IC中使用之電子組件之清單以及組件連接至之節點之清單。模板定義意謂應用於庫上之所有單元的共同特性,諸如用於接腳連接之水平及豎直間距、單元高度及電力軌特性以及其他。單元可包括單個單元及多高度單元二者。多高度單元意謂總高度等於模板高度之大於一之整數倍的單元。亦即,各單元可包括彼此鄰近重複形成的模板之多個執行個體。技術設計規則指定約束,諸如定時約束,及組件之間的最小寬度或間距規則。
簡言之,創建用於置放之SMT問題執行個體(步驟 302)包括在電路描述語言(Circuit Description Language,CDL)格式檔案中描述電路之組件及連接性,且對於各組件(電晶體)界定一組SMT常數,包括整數常數及佈林(Boolean)常數,其表示組件在假想柵格上方之位置。為了界定柵格大小,設計者必須在輸入(接線對照表 306)中指示預期佈局是將包括單個單元抑或多高度單元。
在已鍵入所有輸入(步驟 304)及創建用於置放之SMT問題執行個體(步驟 302)之後,呼叫SMT解算器或次常式(步驟 312)。簡言之,SMT問題執行個體包括確保無二個組件或電晶體置放於相同柵格座標上且分析組件之連接性以避免產生短路的約束。SMT解算器可包括多個可用SMT解算器中之任一者,包括例如CVC3、MathSAT、Yices或Z3。
用於創建用於置放之SMT問題執行個體(步驟 302)及呼叫及執行SMT解算器的方法之最小實例在以下實例A中示出。 實例A-最小置放實例
考慮將由3個PMOS電晶體及3個NMOS電晶體構成之AND2接線對照表作為輸入,其中連接性由以下CDL格式檔案片段描述: .SUBCKT AND2 A B Z VDD VSS *.PININFO A:I B:I Z:O VDD:P VSS:G MT1 VDD A ZN VDD PMOS MT2 VDD B ZN VDD PMOS MT3 VDD ZN Z VDD PMOS MT4 N1 A ZN VSS NMOS MT5 VSS B N1 VSS NMOS MT6 VSS ZN Z VSS NMOS .ENDS
此電路之示意圖在圖4A中示出。參看圖4A,對於各電晶體Tn,定義一組SMT常數:二個整數常數(T_n_x及T_n_y)及一個佈林常數(T_n_f),其表示電晶體在假想柵格上方之位置及其翻轉狀態。當電晶體之源極接腳在汲極接腳左側時,翻轉狀態經任意選擇為假,否則為真。對於以上實例,SMT2檔案格式中之常數之宣告將看起來像: (declare-const T_1_x Int) (declare-const T_1_y Int) (declare-const T_1_f Bool) (declare-const T_2_x Int) (declare-const T_2_y Int) (declare-const T_2_f Bool) (declare-const T_3_x Int) (declare-const T_3_y Int) (declare-const T_3_f Bool) (declare-const T_4_x Int) (declare-const T_4_y Int) (declare-const T_4_f Bool) (declare-const T_5_x Int) (declare-const T_5_y Int) (declare-const T_5_f Bool) (declare-const T_6_x Int) (declare-const T_6_y Int) (declare-const T_6_f Bool)
為了確保電晶體之適當置放,確證所有X及Y位置將在預定義柵格限制內。為了界定柵格大小,吾人必須選擇預期佈局將為單高度抑或多高度。
作為單一高度置放公式化之實例,定義所有NMOS電晶體將置放於列0上方且所有PMOS電晶體將置放於列1上方。此外,界定單元將具有不多於3行電晶體,此係由於預先已知此對於此電路係足夠的。可使用對SMT2語言之最佳化擴展或藉由外部反覆來將尋找此限制之程序實施為最佳化。
在此情形下,將產生以下SMT2碼: (assert (and (>= T_1_x 0) (<= T_1_x 2))) (assert (and (>= T_2_x 0) (<= T_2_x 2))) (assert (and (>= T_3_x 0) (<= T_3_x 2))) (assert (and (>= T_4_x 0) (<= T_4_x 2))) (assert (and (>= T_5_x 0) (<= T_5_x 2))) (assert (and (>= T_6_x 0) (<= T_6_x 2))) (assert (= T_1_y 1)) (assert (= T_2_y 1)) (assert (= T_3_y 1)) (assert (= T_4_y 0)) (assert (= T_5_y 0)) (assert (= T_6_y 0))
另一實例可具有雙高度單元,其中NMOS電晶體將在列0或3上,且PMOS電晶體將在列1或2上。在此狀況下,所需行之最小數目為2,從而產生以下SMT2碼: (assert (and (>= T_1_x 0) (<= T_1_x 1))) (assert (and (>= T_2_x 0) (<= T_2_x 1))) (assert (and (>= T_3_x 0) (<= T_3_x 1))) (assert (and (>= T_4_x 0) (<= T_4_x 1))) (assert (and (>= T_5_x 0) (<= T_5_x 1))) (assert (and (>= T_6_x 0) (<= T_6_x 1))) (assert (or (= T_1_y 1) (= T_1_y 2))) (assert (or (= T_2_y 1) (= T_2_y 2))) (assert (or (= T_3_y 1) (= T_3_y 2))) (assert (or (= T_4_y 0) (= T_4_y 3))) (assert (or (= T_5_y 0) (= T_5_y 3))) (assert (or (= T_6_y 0) (= T_6_y 3)))
接著,以下SMT2碼確保無二個電晶體將置放於相同座標上。由於PMOS電晶體及NMOS電晶體並未共用列,因此其無法重疊,因此相同類型電晶體的所有對經確證為處於相異的位置: (assert (not (and (= T_1_x T_2_x) (= T_1_y T_2_y)))) (assert (not (and (= T_1_x T_3_x) (= T_1_y T_3_y)))) (assert (not (and (= T_2_x T_3_x) (= T_2_y T_3_y)))) (assert (not (and (= T_4_x T_5_x) (= T_4_y T_5_y)))) (assert (not (and (= T_4_x T_6_x) (= T_4_y T_6_y)))) (assert (not (and (= T_5_x T_6_x) (= T_5_y T_6_y))))
且最後,為了避免產生短路,分析電晶體之連接性,且以下SMT2碼確保對於給定電路,當共用擴散屬於同一網路時,推薦僅側向鄰接電晶體: (assert (implies (and (= T_1_y T_2_y) (= T_1_x (+ T_2_x 1))) (not (= T_1_f T_2_f)))) (assert (implies (and (= T_1_y T_2_y) (= T_2_x (+ T_1_x 1))) (not (= T_1_f T_2_f)))) (assert (implies (and (= T_1_y T_3_y) (= T_1_x (+ T_3_x 1))) (and (not T_1_f) T_3_f))) (assert (implies (and (= T_1_y T_3_y) (= T_3_x (+ T_1_x 1))) (and T_1_f (not T_3_f)))) (assert (implies (and (= T_2_y T_3_y) (= T_2_x (+ T_3_x 1))) (and (not T_2_f) T_3_f))) (assert (implies (and (= T_2_y T_3_y) (= T_3_x (+ T_2_x 1))) (and T_2_f (not T_3_f)))) (assert (implies (and (= T_4_y T_5_y) (= T_4_x (+ T_5_x 1))) (and (not T_4_f) (not T_5_f)))) (assert (implies (and (= T_4_y T_5_y) (= T_5_x (+ T_4_x 1))) (and T_4_f T_5_f))) (assert (not (and (= T_4_y T_6_y) (= T_4_x (+ T_6_x 1))))) (assert (not (and (= T_4_y T_6_y) (= T_6_x (+ T_4_x 1))))) (assert (implies (and (= T_5_y T_6_y) (= T_5_x (+ T_6_x 1))) (and (not T_5_f) T_6_f))) (assert (implies (and (= T_5_y T_6_y) (= T_6_x (+ T_5_x 1))) (and T_5_f (not T_6_f))))
可任擇地編碼額外約束,從而限定非想要解決方案之類型或縮減問題之對稱性。舉例而言,以下SMT2碼確證,對於此電路,豎直相鄰之PMOS及NMOS電晶體必須共用閘極網路: (assert (and (= T_1_x T_4_x) (= (abs (- T_1_y T_4_y)) 1))) (assert (and (= T_2_x T_5_x) (= (abs (- T_2_y T_5_y)) 1))) (assert (and (= T_3_x T_6_x) (= (abs (- T_3_y T_6_y)) 1)))
在自SMT解算器收集結果之後,吾人可評估所產生模型以找到用於各電晶體之座標及翻轉狀態,該等座標及翻轉狀態連同電晶體之尺寸及柵格定義一起可界定給定電路之經置放佈局。
針對以上單一高度公式化由SMT解算器產生的模型之實例可為: (model (define-fun T_1_f () Bool false) (define-fun T_1_x () Int 0) (define-fun T_1_y () Int 1) (define-fun T_2_f () Bool true) (define-fun T_2_x () Int 1) (define-fun T_2_y () Int 1) (define-fun T_3_f () Bool false) (define-fun T_3_x () Int 2) (define-fun T_3_y () Int 1) (define-fun T_4_f () Bool true) (define-fun T_4_x () Int 0) (define-fun T_4_y () Int 0) (define-fun T_5_f () Bool true) (define-fun T_5_x () Int 1) (define-fun T_5_y () Int 0) (define-fun T_6_f () Bool false) (define-fun T_6_x () Int 2) (define-fun T_6_y () Int 0))
其可以圖形方式解譯,如圖4B中所示出。
接下來,再次參看圖3,作出由SMT解算器產生之解決方案是否成功的判定(步驟 314)。若解決方案不成功,則結束用於單元內置放之方法(步驟 316)。然而,若經識別解決方案成功,亦即組件中無一者重疊或需要引起短路之連接,則使用先前提供於輸入步驟(步驟 304)中之接線對照表、模板定義及技術設計規則創建經置放佈局(步驟 318),且在輸出步驟(步驟 320)中經由使用者介面輸出裝置220將該經置放佈局提供給設計者及/或經由網路介面子系統 216將該經置放佈局作為輸入提供至下文參看圖4所描述的用於實施用於單元內路由之方法的模組或次常式。通常,如圖3中所示出,經置放佈局 322可為提供至用於單元內路由之模組或次常式的多個佈局中之一者。
EDA軟體接著等待接線對照表中的接下來多個組件或子電路(步驟 324),且程序藉由藉由添加先前創建之經置放佈局 322之輸入來創建用於接線對照表 306中的下一電路或多個組件之置放的SMT問題執行個體(步驟 302)而繼續。
現在將參看圖5之簡化流程圖描述根據本揭露內容之實施例的用於包括多高度組件之單元中之單元內路由的程序或方法。參看圖5,該方法藉由將用於包括多個多高度組件或電晶體之設計中之經置放佈局的路由問題轉譯成用於自輸入路由(步驟 502)或用作輸入(步驟 504)的SMT問題執行個體,及執行或呼叫SMT解算器或次常式(步驟 512)而開始。簡言之,SMT問題執行個體含有約束以確保同一網路之所有端子將被連接,但不同網路將不被連接,從而避免短路。其亦可包括用以對最終路由佈局強加設計規則之程式碼。輸入可包括使用圖3之方法導出的經置放佈局(步驟 506),及由設計者提供的包括模板定義(步驟 508)及一或多個技術設計規則(步驟 510)的輸入。如同以上所描述之圖3之方法一樣,所有輸入係經由使用者介面輸入裝置 222及/或自檔案儲存子系統 228提供或鍵入。
用於創建用於路由之SMT問題執行個體(步驟 502)及呼叫及執行SMT解算器(步驟 512)之方法的最小實例在以下實例B中示出。 實例B-最小路由實例
在給出具有經置放電晶體之佈局的情況下,第一步驟為界定與可用路由資源相容之柵格。經置放佈局及路由柵格之實例在圖6A中示出。
將此柵格之各交叉點稱作節點,連接二個交叉點之各點線稱作邊緣,且用圓點標記之各連接點稱作端子。
在此實例中,柵格經選擇以使得其每二行可具有一個電晶體。最頂列及最底列為電力保留,且存在四個(4個)內部路由軌道。
在此實例中,在多晶矽及金屬1中存在路由層,因此此柵格被複製二次且堆疊,亦在橫越層之節點之間創建邊緣,表示通孔層。以此方式,任何節點可在座標系統中被稱作3D點(x, y, z),其中x表示行,y表示列及z表示層。在此實例中,層0為多晶矽且層1為金屬1。自層0至層1交叉的任何邊緣皆將變成通孔層中之形狀。
相反地,各邊緣可由三個座標及一方向(北、南、東、西、上、下)來參考。舉例而言,邊緣(x, y, z,上)表示節點(x, y, z)與節點(x, y, z + 1)之間的邊緣,或邊緣(x, y, z,西)表示連接節點(x - 1, y, z)與(x, y, z)的邊緣。藉由此定義,在且僅在以下準則中之一者為真的情況下才存在連接二個節點(x 1, y 1, z 1)與(x 2, y 2, z 2)之邊緣: |x1 - x2| = 1且y1 = y2且z1 = z2 x1 = x2且|y1 - y2| = 1且z1 = z2 x1 = x2且y1 = y2且|z1 - z2| = 1
網路以任意整數值加索引,對於「無網路」保留0。在此實例中,可能的表示為:{0: no_net, 1: VDD, 2: VSS, 3: A, 4: B, 5: N1, 6: ZN, 7: Z}。
若一網路具有多於2個端子,則推薦將該網路進一步分解成多個子網路,該等子網路以所有端子皆由子網路接合之方式連接端子對。一網路所需之子網路的最小數目比該網路之端子的數目小一。此等子網路亦任意地以整數值加索引。作為一實例,網路ZN具有四個端子:{(0, 1, 0), (2, 4, 0), (5, 1, 0), (5, 4, 0)}。一組可能的子網路為:{0: {(0, 1, 0), (2, 4, 0)}, 1: {(2, 4, 0), (5, 1, 0)}, 2: {(5, 1, 0), (5, 4, 0)}}。
對於柵格上之各邊緣,將產生一組SMT常數:表示在給定邊緣上方是否存在電線的佈林常數 E _used、表示哪一網路由該邊緣路由(若使用)的整數常數 E _net及表示 E _net之哪些子網路由該邊緣路由(若使用)的位元向量常數 E _subnet。遵循用於一個通用邊緣之SMT2碼之實例,其中用於一網路之子網路之最大數目為4: (declare-const E_used Bool) (declare-const E_net Int) (declare-const E_subnet (_ BitVec 4))
網路變數具有有限的有效值,因此存在限定該等值之條項。網路可在0與網路之數目(在吾人之實例中為7)之間變化。遵循為各邊緣定義此等限制的SMT2碼之實例: (assert (and (>= E_net 0) (<= E_net 7))) 對於各邊緣,若存在與其相關聯之網路,則必須使用該邊緣: (assert (implies (> E_net 0) E_used))
為了確保不存在與網路所不相關聯的子網路相關聯的邊緣,必須針對各邊緣添加以下條項: (assert (implies (not (= E_subnet #b0000)) (> E_net 0)))
現在,必須亦編碼連接性。為此,推薦查看二種不同的狀況:若節點為子網路之端子,則連接至節點的其中 E _subnet含有子網路的邊緣之數目確切為1。作為一實例,考慮具有3個連接之邊緣(E1、E2及E3)的通用節點,其為網路7及子網路0之端子。此可在SMT2中經編碼為: (assert (let ( (e1 (ite (and (= E1_net 7) (= (bvand E1_subnet #b0001) #b0001)) 1 0)) (e2 (ite (and (= E2_net 7) (= (bvand E2_subnet #b0001) #b0001)) 1 0)) (e3 (ite (and (= E3_net 7) (= (bvand E3_subnet #b0001) #b0001)) 1 0)) ) (= (+ e1 e2 e3) 1) ))
節點並非 子網路之端子,則連接至節點的其中 E _subnet含有 子網路的邊緣之數目為2或0。遵循與之前相同的實例,現在考慮所討論之節點並非用於網路7及子網路0之端子。 (assert (let ( (e1 (ite (and (= E1_net 7) (= (bvand E1_subnet #b0001) #b0001)) 1 0)) (e2 (ite (and (= E2_net 7) (= (bvand E2_subnet #b0001) #b0001)) 1 0)) (e3 (ite (and (= E3_net 7) (= (bvand E3_subnet #b0001) #b0001)) 1 0)) ) (or (= (+ e1 e2 e3) 0) (= (+ e1 e2 e3) 2) ))
最後,為了避免短路發生,吾人必須確保若二個所使用邊緣會合,則其需要被指派給同一網路。作為一實例,考慮具有連接至其之3個邊緣的節點。在SMT2中編碼此之可能方式為: (assert (implies E1_used (and (implies E2_used (= E_2_net E1_net)) (implies E3_used (= E_3_net E1_net)) ))) (assert (implies E2_used (and (implies E1_used (= E_1_net E2_net)) (implies E3_used (= E_3_net E2_net)) ))) (assert (implies E3_used (and (implies E1_used (= E_1_net E3_net)) (implies E2_used (= E_2_net E3_net)) )))
可類似地編碼額外限定,諸如設計規則或模板定義。彼之實例可為金屬1中之電力軌的定義。在此情況下,層1中之最頂列中的各水平邊緣必須在網路1中: (assert (= E_net 1))
在將問題執行個體發送至SMT解算器引擎之後,吾人可藉由查看各邊緣之「使用」變數來解譯結果,其若為真則指示在對應於界定彼邊緣之節點的位置之間存在電線。
儘管正確,但結果仍可具有不良度量,諸如導線長度。在確保存在解決方案之後,吾人可以選擇視需要使用最佳化引擎以根據預定義成本函數來調諧結果。
最後,可藉由添加額外層來容易地表示埠,其中僅一個節點連接至來自緊接在下方之層的所有節點。此新的層免於短路之約束。
完整實例之輸出的一個實例可以圖形方式在圖6B至圖6D中所示出來解譯,其中圖6B示出多晶矽層之佈局;圖6C示出通孔層中之通孔之置放;及圖6D示出金屬層之佈局。
接下來,再次參看圖5,作出由SMT解算器產生之解決方案是否成功的判定(步驟 514)。若解決方案不成功,則結束用於單元內路由之方法(步驟 516)。然而,若所識別解決方案成功,亦即所有所需端子已連接且不存在導致短路之連接,則使用先前在輸入步驟(步驟 504)中鍵入的經置放佈局、模板定義及技術設計規則來創建經路由佈局(步驟 518),且經由網路介面子系統 216將經置放及路由之佈局 520提供於輸出緩衝器 522中。一般而言,如圖5中所示出,經置放及路由之佈局 520可為儲存於輸出緩衝器 522中之多個佈局中之一者。
EDA軟體接著判定是否已經達成所要數目個結果(經置放及路由之佈局 520) (步驟 524),且若否,則針對使用圖3之方法導出的另一經置放佈局 506重複用於路由之SMT問題執行個體(步驟 502)。若達成所要數目個結果,則單元內路由完成且程序結束(步驟 526)。可接著經由使用者介面輸出裝置220將經置放及路由之佈局 520輸出給設計者及/或經由網路介面子系統 216輸出至電腦可讀媒體 240,作為作為在IC設計程序期間之設計之合成期間所使用的標準單元庫之可讀媒體。
圖7為示出根據本揭露內容之實施例的用於電晶體之單元內置放及在包括多高度組件之單元中之單元內路由的總體程序或方法的簡化流程圖。參看圖7,該方法開始於對新電晶體置放之請求(步驟 702),其係使用圖3之方法實現。接下來,若經置放佈局完成(步驟 704),則使用先前在圖3及/或圖4之方法之輸入步驟(步驟 708)中鍵入的經置放佈局、模板定義及技術設計規則來實現經置放佈局之單元內路由(步驟 706)。若經置放佈局未完成,則程序結束。接下來,接著作出用於新電晶體置放之經路由佈局是否完成之判定(步驟 710)。若經路由佈局未完成,則請求新電晶體置放(步驟 702)。若經路由佈局完成,則在輸出步驟(步驟 714)中儲存結果(步驟 712),且作出是否已達成所要數目個結果(亦即佈局 716)之判定(步驟 718),且若否,則請求新電晶體置放(步驟 702)且針對另一經置放佈局重複程序。若達成所要數目個結果,則結束程序(步驟 720)。
現在將參看圖8及圖10描述用於使用儲存於非暫時性電腦可讀媒體中且使用至少一個處理器執行之程式指令自動化地置放及路由積體電路(IC)中之單元內電晶體的總體程序或方法之其他實施例。
圖8為示出根據本揭露內容之實施例的用於單元中之整合式置放及路由之程序或方法的簡化流程圖。參看圖8,該方法開始於接收包括接線對照表 804、模板定義 806及一或多個技術設計規則 808之輸入 802。任擇地或較佳地,輸入可進一步包括由電路設計者或使用者指定的預定面積要求 810。如同以上所描述之實施例一樣,所有輸入皆可經由使用者介面輸入裝置 222及/或自檔案儲存子系統 228鍵入。通常,接線對照表指定正設計之電路的功能及要求且包括電子組件之清單及該等組件連接至之節點之清單。模板定義意謂應用於庫上之所有單元的共同特性,諸如用於接腳連接之水平及豎直間距、單元高度及電力軌特性以及其他。單元可包括單個單元及多高度單元二者。多高度單元意謂總高度等於模板高度之大於一之整數倍的單元。亦即,各單元可包括彼此鄰近重複形成的模板之多個執行個體。技術設計規則指定約束,諸如組件之間的最小寬度或間距規則。
在已鍵入所有輸入之後,創建用於置放及路由二者之單一SMT問題執行個體(步驟 812)。簡言之,創建用於置放及路由之SMT問題執行個體包括在電路描述語言(Circuit Description Language,CDL)格式檔案中轉譯或描述電路之組件及連接性,且對於各組件(電晶體)界定一組SMT常數,包括整數及佈林常數,其表示組件在假想柵格上方之位置。為了界定柵格大小,設計者必須在輸入(接線對照表 804)中指示預期佈局是將包括單個單元抑或多高度單元。其亦包括確保需要遵循之恰當連接性及技術設計規則的程式碼。
用於創建用於置放及路由之SMT問題執行個體之方法的最小實例在以下實例C中示出。 實例C-最小整合式置放及路由實例
在此實例中,目標為將排序及路由問題融合為單一SMT問題。因此,在給出輸入接線對照表的情況下,SMT解算器可產生經置放及路由之單元,或證實運用當前接線對照表、路由柵格及技術相依參數不可能達成此結果。
主要想法為連接排序演算法及路由演算法二者(在實例A及B中呈現),其方式為使得不論何時電晶體藉由排序約束而置放於一位置處,路由約束皆可辨識該電晶體且確保其端子之路由。為了進行此連接,使用實例A中所呈現之相同排序約束,加上用於路由之特殊常數及約束。在可在路由柵格中置放有經排序電晶體端子的各位置處定義常數。此等位置將被稱作端子候選者。使用與在實例B中相同的路由柵格,端子候選者之定義之實例在圖9中示出。
參看圖9,在此實例中,位置C1、C3、C5、C7、C8、C10、C12及C14為擴散端子,且其餘位置為多晶矽端子。對於各端子候選者,定義指示其當前網路的整數常數。 (declare-const C1_net Int) (declare-const C2_net Int) (declare-const C3_net Int) (declare-const C4_net Int) (declare-const C5_net Int) (declare-const C6_net Int) (declare-const C7_net Int) (declare-const C8_net Int) (declare-const C9_net Int) (declare-const C10_net Int) (declare-const C11_net Int) (declare-const C12_net Int) (declare-const C13_net Int) (declare-const C14_net Int)
另外,需要指示哪個電晶體與各多晶矽端子候選者相關聯的整數常數: (declare-const C2_xtor Int) (declare-const C4_xtor Int) (declare-const C6_xtor Int) (declare-const C9_xtor Int) (declare-const C11_xtor Int) (declare-const C13_xtor Int)
接著將電晶體與排序常數連接。舉例而言,當電晶體MT1置放於排序位置(0, 0)且不翻轉時,C2_xtor必須為MT1、C1_net必須為網路VDD (網路索引1)、C2_net必須為網路A (網路索引3)、C3_net必須為ZN (網路索引6)。並且: (assert (implies (and (= T_1_x 0) (= T_1_y 0) (= T_1_f false)) (and (= C2_xtor 1) (= C1_net 1) (= C2_net 3) (= C3_net 6)))
類似地,當MT1處於相同位置但翻轉時: (assert (implies (and (= T_1_x 0) (= T_1_y 0) (= T_1_f true)) (and (= C2_xtor 1) (= C1_net 6) (= C2_net 3) (= C3_net 1)))
當MT1處於位置(1, 0)時,端子映射至C3、C4及C5: (assert (implies (and (= T_1_x 1) (= T_1_y 0) (= T_1_f false)) (and (= C4_xtor 1) (= C3_net 1) (= C4_net 3) (= C5_net 6)) (assert (implies (and (= T_1_x 1) (= T_1_y 0) (= T_1_f true)) (and (= C4_xtor 1) (= C3_net 6) (= C4_net 3) (= C5_net 1)))
為了涵蓋所有可能的排序,必須針對各電晶體創建類似的約束,從而將其連接至其可佔據之各候選端子。
關於路由約束,使用如實例B所示出之相同約束,惟以下二個差異除外:(1)基於電晶體而非經置放端子產生子網路;(2)連接性約束取決於候選端子常數。
若在輸入接線對照表中一網路出現在多於2個電晶體中,則該網路進一步分解成多個子網路,該等子網路以所有電晶體皆由子網路接合之方式連接電晶體對。一網路所需之子網路的最小數目比含有彼網路作為端子之電晶體的數目小一。此等子網路亦任意地以整數值加索引。作為一實例,網路ZN呈現在五個電晶體中:{MT1, MT2, MT3, MT4, MT6}。一組可能的子網路為:{0: {MT1, MT2}, 1: {MT2, MT3}, 2: {MT4, MT6}, 3: {MT3, MT6}}。
對於並非端子候選者之各節點,判定該節點相對於各子網路之邊緣度的約束保持與實例B相同:該度必須為零或二。另一方面,對於端子候選節點,度定義係基於藉由排序約束而指派給彼端子的網路。對於任何子網路 s,若端子經指派有網路及屬於 s之電晶體,則候選節點相對於 s之度必須為一。對於不符合此描述的任何其他候選節點,相對於s之度必須為零或二。
作為一實例,考慮針對網路A (網路索引3)及電晶體MT1與MT4之間的子網路對多晶矽端子候選者C2的子網路度約束。若C2經指派有網路A及任一電晶體MT1或MT4,則該度必須為一。否則,該度必須為零或二。 (assert (let ( (subnet_degree (+ ; edge to the west of C2 (ite (and (= E_010_110_net 3) (= (bvand E_110_210_subnet #b0001) #b0001)) 1 0) ; edge to the south of C2 (ite (and (= E_100_110_net 3) (= (bvand E_200_210_subnet #b0001) #b0001)) 1 0) ; edge to the east of C2 (ite (and (= E_110_210_net 3) (= (bvand E_210_310_subnet #b0001) #b0001)) 1 0) ; edge to the north of C2 (ite (and (= E_110_120_net 3) (= (bvand E_210_220_subnet #b0001) #b0001)) 1 0) ; via connecting C2 to the layer above (ite (and (= E_110_111_net 3) (= (bvand E_210_211_subnet #b0001) #b0001)) 1 0))) (ite (and (= C2_net 3) (or (= C2_xtor 1) (= C2_xtor 4)) (= subnet_degree 1) (or (= subnet_degree 0) (= subnet_degree 2)))))
此處, E_ijk_xyz_net表示與連接位置( i,j,k)及( x,y,z)處之節點的邊緣相關聯的網路常數。 E_ijk_xyz_subnet為與同一邊緣相關聯的子網路常數。
當處理擴散端子時必須特別小心,此係由於不必要路由擴散共用狀況。以下實例定義針對網路N1 (網路索引5)及電晶體MT4與MT5之間的子網路之端子候選者的子網路度。若左側電晶體(C2_xtor)為MT4且右側電晶體(C4_xtor)為MT5或左側電晶體為MT5且右側電晶體為MT4,則此為擴散共用狀況且因此,無需路由此子網路,子網路度為零或二。需要路由此子網路的唯一狀況為在子網路之電晶體中的僅一者連接至電流擴散時才進行路由。 (assert (let ( (subnet_degree (+ ; edge to the west of C3 (ite (and (= E_110_210_net 5) (= (bvand E_110_210_subnet #b0001) #b0001)) 1 0) ; edge to the south of C3 (ite (and (= E_200_210_net 5) (= (bvand E_200_210_subnet #b0001) #b0001)) 1 0) ; edge to the east of C3 (ite (and (= E_210_310_net 5) (= (bvand E_210_310_subnet #b0001) #b0001)) 1 0) ; edge to the north of C3 (ite (and (= E_210_220_net 5) (= (bvand E_210_220_subnet #b0001) #b0001)) 1 0) ; via connecting C3 to the layer above (ite (and (= E_210_211_net 5) (= (bvand E_210_211_subnet #b0001) #b0001)) 1 0))) ) (ite (and (= C3_net 5) (= (+ (ite (or (= C2_xtor 4) (= C4_xtor 4))) (ite (or (= C2_xtor 5) (= C4_xtor 5)))) 1)) (= subnet_degree 1) (or (= subnet_degree 0) (= subnet_degree 2)))))
為了確保各網路將被正確地路由,必須針對具有輸入接線對照表之各網路之各子網路的各端子候選者創建類似的子網路約束。
一旦藉由SMT解算器發現解決方案,則可藉由以與實例A及B中所解釋相同之方式讀取常數之結果來解譯排序及路由結果。
在已鍵入所有輸入 802且創建用於置放及路由之SMT問題執行個體(步驟 812)之後,呼叫SMT解算器或次常式且產生解決方案(步驟 814)。簡言之,SMT解算器包括確保無二個組件或電晶體置放於相同柵格座標上且分析組件之連接性以避免產生短路的約束。
接下來,作出由SMT解算器產生之解決方案是否成功的判定(步驟 816)。若解決方案滿足輸入要求及由使用者指定之預定面積要求,則該解決方案係成功的。若解決方案不成功,則方法結束,且通知使用者。然而,若經識別解決方案成功,亦即組件中無一者重疊或需要引起短路的連接,則使用先前所提供之接線對照表、模板定義及技術設計規則來創建用於包括經置放之單元內電晶體及經路由之單元內電晶體二者的IC之佈局 820(步驟 818),且在輸出步驟(步驟 822)中經由使用者介面輸出裝置 220將該佈局輸出給設計者。
在一些實施例中,一旦發現滿足輸入要求及預定面積要求的解決方案,就將與該解決方案相關的佈局傳達給使用者,且方法結束且並不再次呼叫SMT解算器以試圖尋找滿足輸入要求及預定面積要求的另一更佳解決方案。
在其他實施例中,如圖8中所示出,經置放佈局 820為在輸出步驟(步驟 822)中創建並輸出給使用者的多個佈局中之一者。通常,在此等實施例中,在創建佈局(步驟 818)之後,作出是否已達成所要數目個結果(亦即,佈局)之判定(步驟 824)。若尚未達成所要數目個結果或佈局,且最新解決方案並不滿足輸入之要求,則最後或最新解決方案無效,且使用輸入之要求創建SMT置放問題之另一執行個體(步驟 812)、呼叫SMT解算器(步驟 814)且產生不同於先前發現之所有解決方案的SMT置放問題之另一解決方案。重複該程序直至已創建多個佈局及/或至少一個解決方案滿足輸入及預定面積要求。創建另一佈局(步驟 816)並輸出該另一佈局(步驟 822)。
任擇地,在一個實施例中,方法可進一步包括根據所創建並輸出之佈局 820,基於例如IC所需之面積、基於佈局之複雜度(諸如製造電路所必需之遮罩數目)或基於接線對照表或技術設計規則來判定最佳解決方案,且向使用者識別與該最佳解決方案相關的佈局。
在其他實施例中,方法可進一步包括基於包括佈局所需之面積、製造電路所必需之遮罩數目及/或IC之效能的預定義度量,對所創建之佈局 820進行順位並輸出經順位解決方案之清單。
圖10為示出根據本揭露內容之其他實施例的用於在單元中具有有限電晶體定位的情況下之整合式置放及路由的另一程序或方法的簡化流程圖。參看圖10,該方法開始於接收包括接線對照表 1004、模板定義 1006及一或多個技術設計規則 1008之輸入 1002 任擇地或較佳地,輸入可進一步包括由電路設計者或使用者指定的預定面積要求 1010。如同以上所描述之實施例一樣,所有輸入皆可經由使用者介面輸入裝置 222及/或自檔案儲存子系統 228鍵入。通常,接線對照表指定正設計之電路的功能及要求且包括電子組件之清單及該等組件連接至之節點之清單。模板定義意謂應用於庫上之所有單元的共同特性,諸如用於接腳連接之水平及豎直間距、單元高度及電力軌特性以及其他。單元可包括單個單元及多高度單元二者。多高度單元意謂總高度等於模板高度之大於一之整數倍的單元。亦即,各單元可包括彼此鄰近重複形成的模板之多個執行個體。技術設計規則指定約束,諸如組件之間的最小寬度或間距規則。
在已鍵入所有輸入之後,創建用於置放之SMT問題(SMT置放問題)之執行個體(步驟 1012)。簡言之,創建用於置放之SMT問題執行個體包括在電路描述語言(Circuit Description Language,CDL)格式檔案中轉譯或描述組件,且對於各組件(電晶體)界定一組SMT常數,包括整數及佈林常數,其表示組件在假想柵格上方之位置。為了界定柵格大小,設計者必須在輸入(接線對照表 1004)中指示預期佈局是將包括單個單元抑或多高度單元。
在已鍵入所有輸入 1002之後,創建用於置放之SMT問題執行個體(步驟 1012)且呼叫第一SMT解算器或次常式且產生解決方案(步驟 1014)。簡言之,類似於以上所描述之SMT執行個體的第一SMT執行個體可包括確保無二個組件或電晶體置放於相同柵格座標上的約束。
接下來,作出由第一SMT解算器發現之解決方案是否成功的判定(步驟 1016)。若經置放組件或電晶體中無一者重疊且解決方案滿足輸入要求及由使用者指定之預定面積要求,則該解決方案係成功的。若解決方案不成功,則方法結束,且通知使用者。
若所識別解決方案成功,則創建用於在具有有限置放的情況下之置放及路由的SMT問題執行個體(步驟 1018),呼叫第二SMT解算器或次常式且產生解決方案(步驟 1020)。簡言之,類似於以上所描述之SMT執行個體的第二SMT執行個體可包括確保無二個組件或電晶體置放於相同柵格座標上且分析組件之連接性以避免產生短路的約束。有限置放意謂SMT問題執行個體將允許藉由在添加一些自由度的情況下藉由在步驟 1014中產生之解決方案成功置放的組件或電晶體之置放來限定置放。舉例而言,所允許之最終電晶體位置可為原始位置:向左平移一個間距的原始位置或向右平移一個間距的原始位置。應注意,此實施例僅為示範性的且可使用其他限定。
接下來,作出由第二SMT解算器發現之解決方案是否成功的判定(步驟 1022)。若組件中無一者重疊或需要引起短路的連接且解決方案滿足所有輸入要求及使用者指定之面積要求,則該解決方案係成功的。
若在用於具有有限置放的情況下之置放及路由之SMT問題執行個體的解決方案並不成功,則創建SMT問題置放之另一執行個體(步驟 1012),呼叫第一SMT解算器且產生新的有限置放解決方案(步驟 1014)。若用於置放之新的解決方案成功,亦即組件或電晶體不重疊且滿足輸入及面積要求,則創建用於在具有有限置放之情況下之置放及路由的另一SMT問題執行個體(步驟 1018)、呼叫第二SMT解算器及產生新的解決方案(步驟 1020)。
若解決方案係成功的,則使用先前所提供之接線對照表、模板定義及技術設計規則來創建用於包括經置放之單元內電晶體及經路由之單元內電晶體二者的IC之佈局 1026(步驟 1024),且在輸出步驟(步驟 1028)中經由使用者介面輸出裝置 220將該佈局輸出給設計者。
用於創建用於在具有有限電晶體定位的情況下之置放及路由之SMT問題執行個體的方法之最小實例在以下實例D中示出。 實例D-藉由限定之電晶體移動實例之最小整合式置放及路由
此演算法之目標為在給出具有初始排序之接線對照表的情況下,尋找可路由之排序,同時允許解算器在一定程度上擾動初始排序。實務上,此係藉由使用實例C中所示出之演算法加上對所允許之電晶體位置之一些約束來達成。
可使用實例A中所示出之方法獲得輸入接線對照表之初始排序。自此排序,將關於允許各電晶體之範圍的約束添加至整合式置放及路由演算法。
作為一實例,假定值T_i_x0表示電晶體 i在初始排序中的位置。若需要限制電晶體位置使得其僅被允許自初始位置移動一行,則將以下約束添加至解算器: (assert (and (>= T_1_x (- T_1_x0 1)) (<= T_1_x (+ T_1_x0 1)))) (assert (and (>= T_2_x (- T_2_x0 1)) (<= T_1_x (+ T_2_x0 1)))) (assert (and (>= T_3_x (- T_3_x0 1)) (<= T_1_x (+ T_3_x0 1)))) (assert (and (>= T_4_x (- T_4_x0 1)) (<= T_1_x (+ T_4_x0 1)))) (assert (and (>= T_5_x (- T_5_x0 1)) (<= T_1_x (+ T_5_x0 1)))) (assert (and (>= T_6_x (- T_6_x0 1)) (<= T_1_x (+ T_6_x0 1))))
在排序雙高度單元時,電晶體可經進一步約束使得其單元高度並不改變: (assert (= T_1_y T_1_y0)) (assert (= T_2_y T_2_y0)) (assert (= T_3_y T_3_y0)) (assert (= T_4_y T_4_y0)) (assert (= T_5_y T_5_y0)) (assert (= T_6_y T_6_y0))
替代地,可藉由將適當額外約束添加至SMT問題執行個體而將任何類別之限定應用於最終排序。
在一些實施例中,一旦發現滿足輸入要求及預定面積要求的解決方案,就將與該解決方案相關的佈局傳達給使用者,且方法結束且並不再次呼叫SMT解算器以試圖尋找滿足輸入要求及預定面積要求的另一更佳解決方案。
在其他實施例中,如圖10中所示出,經置放佈局 1026為在輸出步驟(步驟 1028)中創建並輸出給使用者的多個佈局中之一者。通常,在此等實施例中,在創建佈局(步驟 1024)之後,作出是否已達成所要數目個結果(亦即,佈局)之判定(步驟 1030)。若尚未達成所要數目個結果或佈局,則創建SMT問題之另一執行個體(步驟 1018)、呼叫SMT解算器且產生新的解決方案(步驟 1020)。若新的解決方案成功(步驟 1022),亦即,若其滿足輸入及預定面積要求,則創建另一佈局 1026(步驟 1024)並輸出該另一佈局(步驟 1028)。重複該程序直至已創建所要數目個佈局為止。
如在以上所描述之實施例中,方法可進一步包括根據所創建並輸出之佈局 1026,基於例如IC所需之面積、基於佈局之複雜度(諸如製造電路所必需之遮罩數目)或基於接線對照表或技術設計規則來判定最佳解決方案,且向使用者識別與該最佳解決方案相關的佈局。
替代地,方法可進一步包括基於包括佈局所需之面積、製造電路所必需之遮罩數目及/或IC之效能的預定義度量,對所創建之佈局 1026進行順位並輸出經順位解決方案之清單。
已描述了用於IC中之單元內裝置之置放及路由的EDA工具及其操作方法的實施例。儘管已參考特定示範性實施例描述了本揭露內容,但將顯而易見的是,可在不脫離本揭露內容之較廣精神及範疇的情況下對此等實施例作出各種修改及改變。因此,應在例示性意義而非限制性意義上看待本說明書及圖式。
提供本揭露內容之摘要以符合37 C.F.R. §1.72(b),要求摘要將使得讀者快速確定技術揭露內容之一或多個實施例的性質。遵從以下理解:其將不用以解譯或限制申請專利範圍之範疇或涵義。另外,在前述實施方式中,可看到出於精簡本揭露內容之目的在單個實施例中將各種特徵分組在一起。不應將此揭示方法解譯為反映以下意圖:所主張之實施例需要比各請求項中明確敍述更多的特徵。確切而言,如以下申請專利範圍所反映,本發明主題在於單一所揭示實施例之少於全部的特徵。因此,以下申請專利範圍特此併入實施方式中,其中各請求項就其自身而言作為一單獨實施例。
本說明書中提及「一個實施例」或「一實施例」意謂結合該實施例描述之特定特徵、結構或特性包括於電路或方法的至少一個實施例中。片語一個實施例在本說明書中之各個地方處的出現未必皆指同一實施例。
102:模板 104:單元 106:VDD 108:VSS 110:高度 112:間距/寬度 114:列 210:電腦系統 212:匯流排子系統 214:處理器 216:網路介面子系統 218:通訊網路 220:使用者介面輸出裝置 222:使用者介面輸入裝置 224:儲存子系統 226:記憶體子系統 228:檔案儲存子系統 230:主隨機存取記憶體(RAM) 232:唯讀記憶體(ROM) 240:電腦可讀媒體 280:電路設計 290:電路 302,304,306,308,310,312,314,316,318,320,324,502,504,506,508,510,512,514,516,518,524,526,702,704,706,708,710,712,714,718,720,812,814,816,818,822,824,1012,1014,1016,1018,1020,1022,1024,1028,1030:步驟 322:經置放佈局 520:經置放及路由之佈局 522:輸出緩衝器 716,820,1026:佈局 802,1002:輸入 804,1004:接線對照表 806,1006:模板定義 808,1008:技術設計規則 810,1010:預定面積要求 A,N1,ZN:網路 C1,C3,C5,C7,C8,C10,C12,C14:擴散端子 C2,C4,C6,C9,C11,C13:多晶矽端子 T1,T2,T3,T4,T5,T6:電晶體
將自以下實施方式及自隨附圖式及下文提供之隨附申請專利範圍更充分地理解本發明之實施例,其中:
圖1A為示出界定基體上之單一單元之模板的方塊圖;
圖1B及圖1C為方塊圖,其各自示出具有與圖1A之模板定義相同的高度但具有不同寬度的單一高度單元;
圖1D為示出多個單元的方塊圖,該等單元在基體上以列形式並列地鄰接且各自具有與模板定義相同的高度;
圖1E為總高度等於圖1A之模板高度之大於一之整數倍的單一多高度單元的方塊圖。
圖2為適合供本揭露內容之EDA軟體及方法使用以用於置放及路由IC中之單元內裝置的電腦系統或工具之簡化方塊圖;
圖3為根據本揭露內容之實施例的示出用於電晶體之單元內置放之程序或方法的簡化流程圖;
圖4A為用於根據圖3之方法的最小置放實例之電路之示意圖的實施例;
圖4B為根據圖3之方法由SMT解算器產生之模型之實例的圖形解譯;
圖5為示出根據本揭露內容之實施例的用於單元中之單元內路由之程序或方法的簡化流程圖;
圖6A為根據圖5之方法的用於最小路由實例之經置放佈局及路由柵格的實施例;
圖6B示出用於根據圖5之方法的最小路由實例之多晶矽層之佈局;
圖6C示出用於根據圖5之方法的最小路由實例之通孔層中之通孔的置放;
圖6D示出用於根據圖5之方法的最小路由實例之金屬層之佈局;
圖7為示出根據本揭露內容之實施例的用於電晶體之單元內置放及單元中之單元內路由的總體程序或方法的簡化流程圖;
圖8為示出根據本揭露內容之實施例的用於單元中之整合式置放及路由之程序或方法的簡化流程圖;
圖9為根據圖8之方法的用於最小整合式置放及路由實例之端子候選者之路由柵格的實施例;及
圖10為示出根據本揭露內容之其他實施例的用於在單元中具有有限電晶體定位的情況下之整合式置放及路由的程序或方法的簡化流程圖。
802:輸入
804:接線對照表
806:模板定義
808:技術設計規則
810:預定面積要求
812,814,816,818,822,824:步驟
820:佈局

Claims (19)

  1. 一種用於一積體電路(IC)中之單元內電晶體之置放及路由的方法,該方法包含: 接收包括一接線對照表、模板定義及技術設計規則之輸入; 藉由將該等輸入轉譯成一組可滿足性模理論(SMT)約束來創建用於置放及路由之一SMT問題之一第一執行個體,該等約束與多個單元內電晶體之置放及互連件至該等多個單元內電晶體之路由相關; 呼叫一SMT解算器且使用該組SMT約束而產生該SMT問題的一第一解決方案;以及 若該第一解決方案滿足該等輸入之要求及由一使用者指定之一預定面積要求,則創建並輸出用於該IC中之單元內電晶體之置放及路由的一第一佈局。
  2. 如請求項1之方法,其中若該第一解決方案不滿足該等輸入之要求及該預定面積要求,則該方法結束且通知該使用者。
  3. 如請求項1之方法,其中若該第一解決方案滿足該等輸入之要求及該預定面積要求,則該方法結束且不會再次呼叫該SMT解算器以試圖尋找滿足該輸入之該等要求及該預定面積要求的另一更佳解決方案。
  4. 如請求項1之方法,其進一步包含若尚未創建預定數目個佈局,則: 創建該SMT問題之另一執行個體; 呼叫該SMT解算器且產生另一解決方案,且若該解決方案滿足該輸入及該等預定面積要求,則創建並輸出用於該IC中之單元內電晶體之置放及路由的另一佈局;以及 重複該SMT問題之執行個體的該創建、產生另一解決方案以及創建並輸出用於該IC中之單元內電晶體之置放及路由的另一佈局,直至已創建該等預定數目個佈局。
  5. 如請求項4之方法,其進一步包含基於所需之一面積或基於該接線對照表或該等技術設計規則,自所創建並輸出之該等佈局判定一最佳解決方案,及向該使用者識別與該最佳解決方案相關的該佈局。
  6. 如請求項4之方法,其進一步包含基於包括該佈局所需之遮罩之一數目、該佈局所需之面積及/或該IC之效能中之一或多者的預定義度量對所創建並輸出之該等佈局進行順位,及輸出經順位之解決方案之一清單。
  7. 如請求項1之方法,其進一步包含在創建用於置放及路由之該SMT問題之該第一執行個體之前: 針對該等多個單元內電晶體創建一SMT置放問題; 呼叫該第一SMT解算器; 產生該SMT置放問題的一解決方案;以及 若該SMT置放問題的該解決方案滿足該等輸入之該等要求,則在針對該等多個單元內電晶體之有限置放的情況下創建用於置放及路由之該SMT問題的該第一執行個體。
  8. 一種用於一積體電路(IC)中之單元內電晶體之置放及路由的方法,該方法包含: 接收輸入,其包括可用於該IC中之組件之一接線對照表、該等組件之模板定義及由一使用者指定的該IC之一預定面積要求,以及指定該等組件之設計要求的技術設計規則; 藉由將該等輸入轉譯成與該IC中之多個單元內電晶體之該置放相關的一第一組可滿足性模理論(SMT)約束,來創建一SMT置放問題之一第一執行個體; 呼叫一第一SMT解算器且產生該SMT置放問題的一第一解決方案; 若該SMT置放問題的該第一解決方案滿足該等輸入之要求,則使用該SMT置放問題的該第一解決方案來創建一SMT置放及路由問題之一第一執行個體; 呼叫一第二SMT解算器且產生該SMT置放及路由問題的一第一解決方案;以及 若該SMT置放及路由問題的該第一解決方案滿足該等輸入之要求,則創建並輸出用於該IC中之單元內電晶體之置放及路由的一第一佈局。
  9. 如請求項8之方法,其中若該SMT置放問題的該第一解決方案不滿足該等輸入之要求,則該方法結束且通知該使用者。
  10. 如請求項8之方法,其進一步包含判定是否已創建預定數目個佈局,且若否,則: 創建該SMT置放問題之一第二執行個體; 呼叫該第一SMT解算器且產生該SMT置放問題的一第二解決方案; 若該SMT置放問題的該第二解決方案滿足該等輸入之該等要求,則使用該SMT置放問題的該第二解決方案來創建該SMT置放及路由問題之一第二執行個體; 呼叫該第二SMT解算器且產生該SMT路由問題的一第二解決方案; 若該SMT置放及路由問題的該第二解決方案滿足該等輸入之要求,則創建並輸出用於該IC中之單元內電晶體之置放及路由的一第二佈局;以及 重複該等以上步驟,直至已創建該等預定數目個佈局為止。
  11. 如請求項10之方法,其進一步包含基於所需之一面積或基於該接線對照表或該等技術設計規則,自所創建並輸出之該等佈局判定一最佳解決方案,及向該使用者識別與該最佳解決方案相關的該佈局。
  12. 如請求項10之方法,其進一步包含基於包括該佈局所需之遮罩之一數目、該佈局所需之面積及/或該IC之效能中之一或多者的預定義度量對所創建並輸出之該等佈局進行順位,及輸出經順位之解決方案之一清單。
  13. 如請求項8之方法,其中若該第一SMT解算器與該第二SMT解算器為相同的SMT解算器。
  14. 一種非暫時性電腦可讀媒體,其具有用於一積體電路(IC)中之單元內電晶體之置放及路由的程式指令,該電腦可讀媒體包含: 用於接收包括一接線對照表、模板定義及技術設計規則之輸入的程式指令; 用於藉由將該等輸入轉譯成一組可滿足性模理論(SMT)約束來創建用於置放及路由之一SMT問題之一第一執行個體的程式指令,該等約束與多個單元內電晶體之置放及互連件至該等多個單元內電晶體之路由相關; 用於呼叫一SMT解算器且使用該組SMT約束而產生該SMT問題的一第一解決方案的程式指令;以及 在該第一解決方案滿足該等輸入之要求及由一使用者指定之一預定面積要求的情況下,創建並輸出用於該IC中之單元內電晶體之置放及路由的一第一佈局的程式指令。
  15. 如請求項14之電腦可讀媒體,其中若該第一解決方案不滿足該等輸入之要求及該預定面積要求,則該電腦可讀媒體進一步包含用於通知該使用者且停止執行另外程式指令的程式指令。
  16. 如請求項14之電腦可讀媒體,其中若該第一解決方案滿足該等輸入之要求及該預定面積要求,則該電腦可讀媒體進一步包含用於停止執行另外程式指令且不試圖尋找滿足該輸入之該等要求及該預定面積要求之另一更佳解決方案的程式指令。
  17. 如請求項14之電腦可讀媒體,其進一步包含用以進行以下操作之程式指令: 判定是否已創建預定數目個佈局,且若否:則創建該SMT問題之另一執行個體; 呼叫該SMT解算器且產生另一解決方案,且若該解決方案滿足該輸入之該等要求及該預定面積要求,則創建並輸出用於該IC中之單元內電晶體之置放及路由的另一佈局;以及 重複該SMT問題之執行個體的該創建、產生另一解決方案以及創建並輸出用於該IC中之單元內電晶體之置放及路由的另一佈局,直至已創建該等預定數目個佈局。
  18. 如請求項17之電腦可讀媒體,其進一步包含用以基於所需之一面積或基於該接線對照表或該等技術設計規則,自所創建並輸出之該等佈局判定一最佳解決方案,並向該使用者識別與該最佳解決方案相關的該佈局的程式指令。
  19. 如請求項17之電腦可讀媒體,其進一步包含用以基於包括該佈局所需之遮罩之一數目、該佈局所需之面積及/或該IC之效能中之一或多者的預定義度量對所創建並輸出之該等佈局進行順位,及輸出經順位之解決方案之一清單的程式指令。
TW110147040A 2020-12-16 2021-12-15 使用可滿足性模理論解算器自動產生標準單元之系統及方法 TW202234282A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202063126260P 2020-12-16 2020-12-16
US63/126,260 2020-12-16

Publications (1)

Publication Number Publication Date
TW202234282A true TW202234282A (zh) 2022-09-01

Family

ID=82058053

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110147040A TW202234282A (zh) 2020-12-16 2021-12-15 使用可滿足性模理論解算器自動產生標準單元之系統及方法

Country Status (4)

Country Link
EP (1) EP4264477A1 (zh)
JP (1) JP2024500315A (zh)
TW (1) TW202234282A (zh)
WO (1) WO2022132937A1 (zh)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009151934A1 (en) * 2008-05-24 2009-12-17 Tabula, Inc. Decision modules
US8341567B1 (en) * 2008-12-29 2012-12-25 Cadence Design Systems, Inc. Boolean satisfiability based verification of analog circuits

Also Published As

Publication number Publication date
JP2024500315A (ja) 2024-01-09
WO2022132937A1 (en) 2022-06-23
EP4264477A1 (en) 2023-10-25

Similar Documents

Publication Publication Date Title
US11574105B1 (en) Using a barycenter compact model for a circuit network
Roy et al. Min-cut floorplacement
US7269803B2 (en) System and method for mapping logical components to physical locations in an integrated circuit design environment
US6815811B2 (en) Semiconductor integrated circuit with dummy patterns
US11853676B2 (en) Layout context-based cell timing characterization
US20130219353A1 (en) Concurrent placement and routing using hierarchical constraints
US7308667B2 (en) LSI physical designing method, program, and apparatus
CN114611452B (zh) 基于电路原理图在版图中自动生成Sub Cell的方法
US20130290914A1 (en) Methods and Apparatus for Floorplanning and Routing Co-Design
US20180150585A1 (en) Method for layout generation with constrained hypergraph partitioning
US8738335B1 (en) Solving a circuit network in hierarchical, multicore, and distributed computing environment
EP4220471A1 (en) Method of designing layout of semiconductor integrated circuit and design system performing same
TW202234282A (zh) 使用可滿足性模理論解算器自動產生標準單元之系統及方法
US9293450B2 (en) Synthesis of complex cells
US7284223B2 (en) Wiring method, program, and apparatus
Bunglowala et al. Performance evaluation and comparison and improvement of standard cell placement techniques in VLSI design
US11144700B1 (en) Grouping nets to facilitate repeater insertion
US20230267261A1 (en) Design system, design method and method of manufacture of semiconductor device
Kai et al. Tofu: A two-step floorplan refinement framework for whitespace reduction
White et al. Electrically aware design methodologies for advanced process nodes
Pan et al. System Aware Floorplanning for Chip-Package Co-design
CN113779923A (zh) 具有最佳化胞元布置的装置布局
Lomelí-Illescas et al. A tool for the automatic generation and analysis of regular analog layout modules
Wardle et al. A declarative design approach for combining macrocells by directed placement and constructive routing
JPH04255075A (ja) Vlsiレイアウト設計支援装置