專利名稱:用于在分層集成電路設計系統中產生模塊的設計約束的方法
背景技術:
在電子計算機輔助設計(ECAD)軟件系統中,集成電路設計規范和實施數據必須作為一組數據庫記錄來存儲,并且根據運行所述軟件的計算機的虛擬存儲器的容量,這些記錄具有某個有限的最大尺寸。此外,ECAD軟件的執行時間一般隨著設計的大小而增加。表示一個非常大的集成電路設計的數據可能太大而不能裝入計算機的存儲器中,或者用于設計或模擬整個設計所需的執行時間是不能接受的。當集成電路內的元件(即門)的數量和伴隨的連接為幾千萬或幾萬萬數量級時,尤其如此。
分層分解或“分割”是一種可以用于減少大的集成電路設計規范的復雜性,使得存儲器與/或用于完成設計所需的執行時間保持可以控制的技術,代替把設計表示為一個平面的數據庫,把設計分割成片,通常被稱為“塊”,這些塊可被獨立地設計和檢驗。在給定的單層分層下,設計規范由一組塊和這些塊之間的頂層互連構成。在多層分層下,這些塊本身由較小的子塊及其互連構成。
層次分解也可以由設計組簡單地用作一種組織工具,作為在若干個設計者當中分割一個設計項目的方法。不過,由設計組按照設計規范提出的這種邏輯分層不必和用于劃分所述設計以便執行所用的物理分層相同。通常是,邏輯分層比物理分層深得多。可以使用塊的展平處理把邏輯分層變換成合適的物理分層。
常規的分層設計方案一般按照兩個主要步驟進行自頂向下的設計步驟和隨后的自底向上的檢驗步驟。如果在自頂向下階段期間實現塊本身(即每個塊在其子塊之前被實現),則該流程圖被稱為自頂向下流程。相反,如果在自底向上階段期間實現這些塊(即每個塊在其所有的子塊完成之后被實現),則該流程圖被稱為自底向上流程。自頂向下流程和自底向上流程各自具有其優點和缺點。不失去一般性,在本文的其余部分以自頂向下流程為例。自底向上流程可以使用相同的技術來實現。
圖1表示一個一般的自頂向下的塊設計和實施的流程圖。其從劃分設計網表開始,把邏輯層變換為物理層,確定要實現的頂層塊和一組子塊(步110)。然后對每個子塊指定寬度和高度值以及在平面布置圖中的布置(步115)。然后對每個子塊上的引腳指定位置,該位置代表網格和子塊的邊界相交的位置(步120)。這步之后是時間預算步驟,用于指示時鐘周期的哪一部分被分配給和子塊邊界相交的定時通道(步135)。
在自頂向下流程中的這一點,在頂層塊被設計之后,準備實施所述塊的處理。對由該塊具有的全部葉子單元(標準的單元和宏指令)指定一種布置,并且對由該塊具有的全部網格進行布線(步140)。如果任何網格要在子塊的上方布線(所謂的“饋通網格”),則這些線被向下推入它們重疊的子塊,并在子塊上在所述線和子塊邊界相交的位置產生新的引腳(步145)。然后,按照相同的處理遞歸地實現子塊(步150)。這涉及在像頂層塊那樣處理每個子塊的同時遞歸地執行步110-170。
為了成功地完成上述處理,指定給每個塊的形狀、引腳位置和時間預算(步115-135)必須具有可實現的約束。否則,系統便不能按照塊的規范完成某些塊的實施。在這種情況下,可能需要對規范進行改進,并且可能在可以實現正確的實施之前需要重復自頂向下的處理。這種交互的改進是費時的,因而應當避免。因而,在這些步驟中用于實現高質量的結果的方法是至關重要的。
當遞歸的自頂向下的設計和實施步驟完成時,可以開始自底向上的檢驗處理。處理從最低層的塊朝向頂層進行,獨立地分析每個塊的邏輯正確性,并分析其定時和電性能,并和其規范比較(步155)。在塊的所有的子塊被獨立地檢驗之后,可以在假定所有子塊都是正確的前提下分析塊本身(步170)。
為了對各個模塊繼續進行處理,設計者或軟件工具需要模塊的操作環境的表示。這包括模塊所在的空間的物理形狀,其輸入引腳和輸出引腳的位置,電源和其它的重要信號的布線信息,操作條件(溫度和電壓),用于制造所述模塊的預期的處理細節,以及在模塊和其環境之間的接口的定時特性。這種方法的焦點在于提供定時特性的表示。由于這種表示必須在其它的模塊或頂層網表完成之前產生,這個問題被復雜化了。其結果是,用于設計的定時特性必須是最終產品的定時特性的近似。
這一組定時特性被稱為模塊的“時間預算”。好的時間預算必須具有以下特征完整性,平衡,以及可實現性。
完整性描述在塊的邊界預算的特性。一個完整的時間預算描述一個塊的全部相關的情況。其應當包括所有輸入引腳(包括雙向引腳)的信號到達時間約束,以及所有輸出引腳(也包括雙向引腳)的信號所需時間約束。其應當包括所有時鐘的說明,這些時鐘是作為設計的輸入施加的、在所述設計內產生的、或者作為在模塊的輸出端施加的定時約束的參考而被使用的。還應當包括任何其它的必須在模塊內滿足的特定的約束,例如對信號轉換時間的總的限制(即轉換限制)。當模塊的時間預算不完整時,沒有這部分內容模塊便不能被完整地設計,因而最終的設計可能包含和違反的從預算中遺漏的約束相關的錯誤。這是對時間預算的最低要求。
接著,為了成功地集成頂層設計,必須平衡一組時間預算。平衡描述在預算、頂層定時和設計中的其它預算之間的關系。平衡的時間預算確保如果所有模塊的定時約束都被滿足,則頂層定時約束也將被滿足。當時間預算不平衡時,則迫使設計者重新進行最終的設計,以便解決在集成頂層期間出現的問題。這種重新設計通常在設計處理的非常晚的時候發生,并且可能需要急劇的和痛苦的改變。不能產生平衡的時間預算可以被認為是缺乏設計訓練,這在設計方法學上延遲了定時關閉(timing closure)。
完整性和平衡的要求使得可實現性成為時間預算問題的最具有挑戰性的方面。可實現性涉及時間預算和應用時間預算的塊之間的關系。困難在于產生可實現的同時又保持平衡和完整性的預算。為了使設計快速結束,重要的是設計者或者設計工具具有滿足為每個模塊規定的定時約束的能力。當模塊的時間預算不能實現時,便迫使設計者進入預算的迭代實施和重新商議的困難循環。每次迭代都試圖解決頂層網表的定時要求和設計中的其它模塊之間的沖突和在實施正在設計的模塊中遇到的困難。不能測量可實現性是當今設計組面臨的最大問題,并且是在當代的設計方法學中經歷的不能實現定時關閉的主要原因。
需要提供一種時間預算解決方案,其能夠以有利于利用資源的方式較好地符合所需的完整性、平衡和可實現性。
發明內容
本發明披露了一種用于在進行集成電路設計中預算定時的方法。所述電路設計具有寄存器單元和組合邏輯單元,并具有被分解成頂層和多個塊的一種表示。所述多個塊中的至少一些能夠被進一步按照層次分解。所述寄存器單元和組合邏輯單元具有至少一個單元引腳。這些塊具有邊界,并且這些塊的邊界由至少一個塊引腳表示。所述方法包括1)優化至少一個通過一個塊引腳的通路,所述優化產生沿著所述通路的所有單元的分配的增益;2)在所述通路上進行定時分析,所述定時分析使用所述分配的增益,以便產生信號在塊引腳的到達時間;以及3)借助于檢查在塊引腳的估算的到達時間導出時間預算。在一些實施例中,所述定時分析按照零松弛修整算法進行,所述算法調整單元的增益,直到使松弛收斂到零的一個確定的允差附近。
本發明的這些和其它的目的、特征和優點通過結合附圖閱讀下面的詳細說明可以更好地理解,其中
圖1表示一種示例的分層設計處理;圖2表示在使用抽象的分層設計流程中的時間預算規則;圖3表示可用于產生一個設計模塊的抽象的分層系統中的時間預算方法;圖4表示按照本發明的至少一個或幾個實施例的時間預算處理;圖5表示按照本發明的一個或幾個實施例的零松弛的“修整”算法;以及圖6表示可以使用本發明的一個或幾個實施例評價其時間預算方案的示例的電路;以及圖7表示能夠實施本發明的一個或幾個實施例的計算機系統。
具體實施例方式
實施自頂向下的分層設計處理的一種方法如圖2的分層設計流程圖所示。圖2所示的設計流程圖是圖1所示的自頂向下的流程圖的改進,其中增加了3個步驟230,260,和265。所述的改進涉及用于在自頂向下的預算和塊實現步驟以及自底向上的檢驗步驟期間,在其父母塊和兄弟塊的環境下,建模子塊的方法。這些步驟在流程圖中表示清楚的分層邊界被違反因而需要進行交叉邊界分析的位置。沒有有效的用于管理這種交叉邊界分析的技術,分層設計處理的主要優點-能夠減少設計大規模集成電路所需的存儲器和運行時間-將被失去。
在自頂向下的預算步驟期間,一個目標是分析跨過一個或幾個層邊界的組合的邏輯通路(在寄存器(鎖存器與/或觸發器)之間的組合的邏輯門),并確定時鐘周期的哪部分應當被預算用于所述通路的每一段。
在自頂向下的塊實現步驟期間,在一個塊的子塊被實現之前放置所述的塊并布線。在大多數情況下,所述放置和布線跨過層的邊界被完全解耦。不過,許多現代的制造方法要求布線服從一組被稱為“天線規則”的規則,其要求在分層邊界的兩側存在的布線的詳細知識。
在自底向上的檢驗處理期間,也需要分析跨過邊界的組合的邏輯通路。當分析一個包含子塊的塊時,希望利用子塊已被預先檢驗過這個事實,使得不需在分析子塊的父母的同時重新分析這些子塊。
為此,本發明的一些實施例披露了利用被減小的模型,被稱為塊的“抽象”,其足夠詳細地捕捉和其父母塊連接的塊的結構和行為,因而可以正確地分析其兄弟塊。抽象的目的是減少在層次中對一個塊的祖先表示所述的塊所需的存儲器的數量,并減少在塊的父母塊和兄弟塊的環境下用于分析塊的每個例子所需的執行時間的數量。
如上所述,在這方面,圖1的分層設計流程圖借助于附加的步驟230,260和265被補充和增強。在步230中,在進行時間預算步驟之前,產生每個子塊的抽象供預算期間使用。因為子塊尚未被實現,其不包括物理的實現數據,而只有其網表的描述。因此在預算期間使用的抽象旨在只建模子塊的邏輯行為,還不能得到物理行為和電氣行為的細節。這種初始的抽象在預算期間使用,然后便被丟棄。
在自頂向下塊實施流程圖和自底向上塊實施流程圖之間的一個主要區別在于,在前者中,塊在其孩子之前被實現,而在后者中,塊則在其孩子之后被實現。圖2中的分層實現的流程圖將被修改,使得把塊240和245置于塊265和270之間。主要的影響是,在自頂向下的流程圖中頂層塊在其孩子的實現完成之前被實現。因此,本發明在實現父母塊時利用其子塊的預算作為理想的優化目標。在自底向上的流程圖中,在另一方面,塊必須在其父母或兄弟塊的實現被已知之前被實現。因此還必須利用其時間預算作為一個理想的優化目標。
這種設計方法在2002年6月10日申請的名稱為“Representingthe Design of a Sub-module in a Hierarchical Integrated CircuitDesign and Analysis System”(代理人的號碼是054355-0293259)共同待審的專利申請中更加詳細地說明了。在整個設計處理中的一個主要步驟是時間預算(如步235所述)。
圖3表示一種可以用于分層系統中的產生塊或上述的塊的抽象的時間預算方法。在塊能夠被分層地分解時,其中所示的時間預算方法可用于塊未被抽象的情況下。根據定義,其中的“單元”指的是“寄存器”單元例如鎖存器和觸發器,或者指“組合邏輯”單元,例如與門、或門和其它的非存儲器電路元件。這些單元的每一個具有輸入“引腳”和輸出“引腳”。此處的引腳指的是一種表示互連的方式,例如實際的引腳與/或導線。“頂層”指的是不是由本身之外的塊包含的集成電路結構的部分。頂層和塊都具有在其中包含的單元。此外,如上所述,每個塊具有可以是邏輯的或者是物理的或者是邏輯的和物理的“邊界”。
在本發明的一個實施例中,首先,按照步310,時間預算優化頂層的寄存器單元和塊的與/或塊的抽象的寄存器單元之間的通路。接著,按照步312,把塊選擇地劃分為組(cluster),此外,選擇地,不論是否進行步312,按照步314,進行組(如果有的話)或單元在設計中的布置。接著,在步316,選擇地進行在布置的單元之間的布線。這種布線通常被稱為全面布線。然后,按照塊320,選擇地緩沖在塊之間的長的網格。接著進行頂層的和塊的(與/或抽象)定時分析(塊330),從而得到到達時間。本發明的一個關鍵方面在于,定時分析基于單元的增益。最后,可以通過分配延遲(利用增益),使得達到零松弛,并檢驗在塊的邊界上的引腳的到達時間,可以導出時間預算(塊340)。
上述的時間預算方法可以借助于在一個公共平臺上集成幾個元件來實現。這些包括(1)定時分析引擎。定時引擎支持分層設計描述的增加的定時分析,并合并各種延遲模型。
(2)用于作為增益的函數表征單元延遲的引擎和方法。具有等效邏輯功能的單元的族被分成一組,并被特征化,以便作為其增益的函數表達其單元的延遲,這是一個被規定和一個單元驅動的電容與其輸入電容的比成比例的數量。增益被標稱化,使得1.0的延遲相應于被認為是最佳的加載。在這個表征下,單元的延遲和其負載無關。這表示進行定時分析不需要特定的單元尺寸或導線電容信息。這使得能夠把尺寸確定推遲到設計處理的后期,還給出可用于測量一個設計的可實現性的重要的度量。
(3)被稱為“修整”的基于增益的零松弛處理。修整算法來自邏輯成果的理論(Theory of Logical Effort),其認為當沿著一個通路的單元的增益相等時,獲得所述增益的最佳性能。為了獲得零松弛解決,響應由定時分析引擎提供的局部松弛信息,修整算法平滑地增加和減少增益。
(4)任選的聚類處理。單元被選擇地分組,并被置于組中,以便加快整個的布置。
(5)任選的粗的單元放置者,這種放置者包括來自每個先前所述的元件的信息,從而允許使用近似的單元尺寸產生具有最小重疊的放置。一旦能夠得到初始的布置,定時分析引擎便開始,通過使用導線電容、電阻和基于引腳之間的曼哈頓距離的延遲的模型包括所述布置的效果。
(6)任選的粗布線工具。其還結合來自每個先前元件的導航,從而對頂層設計中的導線分配位置。如果包括,則其允許在由定時引擎進行的分析中包括基于全部布線拓撲的布線模型。
對于輸入,圖3的時間預算處理將包括下述內容(1)初始網表。這個網表應當相應于所需的分層設計結構按照層次劃分。層中的每個塊必須最好由網表表示,或者以預表征的塊的形式表示,例如可以在標準的單元庫中找到的。兩種表示僅僅是塊的最終特性的估算。雖然一般的分層設計利用兩級分層來實現,重要的是注意到,這種方法可以任意的級數用于設計。
(2)單元庫的描述。這應當包括由每個塊執行的邏輯功能的描述,使得把單元分組而成為幾類具有等效輸入、輸出和功能的單元。單元庫描述也應當包括使得能夠作為其驅動的負載電容的函數計算每個單元的延遲的信息,以及其它任選的參數,例如在單元輸入端的信號過渡時間。
(3)處理技術例如VLSI設計技術的描述。首先,這應當包含足夠的信息,使得能夠根據導線長度和布線層計算導線電容和電阻。
(4)對于頂層網表的定時約束。這些包括規定在設計中使用的任何的時鐘、頂層輸入和輸出信號定時約束、定時分析的標準規則的任何例外情況、以及對由定時分析計算的數量的限制或其它約束,例如信號過渡時間。
圖4表示按照本發明的至少一個或幾個實施例的時間預算處理。首先,在步401,所有的輸入被讀入。這包括讀入庫描述、分層網表和頂層定時約束。庫可以以文本的格式表示,具有可在庫中得到的單元,每個單元的功能,以及可用于計算每個單元的延遲和輸出信號過渡時間的信息。網表可以用硬件描述語言(例如Verilog)表示。接著,如果需要一個塊網表的被減少的描述(在步415檢查),則可以通過除去對邊界定時沒有影響的各個網表的元件使塊減小(步420)。這個步驟將減少用于處理設計所需的資源的數量。
按照本發明的一個方面,下一步是處理庫從而產生“超單元”(塊425)。超單元指的是具有公共引腳和功能的一類門。這類門在理論上包括一個寬范圍的器件尺寸,具有不同的輸入電容和輸出驅動強度。超單元的延遲被表征為其增益以及,如果可以得到,超單元的輸入過渡時間的函數。為了容易分析,延遲被表征為一個換算的增益的函數,所述換算的增益使得能夠認為1.0的增益是一個“好的”增益。這個單位增益和用于驅動一個“典型的”大約為4的扇出的一個反相器的增益松散地相關。延遲隨增益大致線性地改變,并隨增益的增加而增加,隨增益的減小而降低。
如果需要聚類、布置或布線中的任何一個或幾個(在步430檢查),則執行這些選擇的程序(步435)。聚類減少被布置的對象的數量,這可以改善整個布置步驟的性能。布置給出所有單元的初始位置。如果單元作為類的一部分被布置,其位置便從類的位置中選取。這個整體的布置將被“虛擬地展平”,而不顧分層的邊界。整體布線增加導線模型的精度。
接著,調節增益,直到頂層定時約束滿足(步440)。增益可以借助于使用增強的零松弛修整算法來調整,這在下面參照圖5進行討論。此外,按照本發明的優選實施例,可以檢查這些增益,以便測量可實現性(步445)。在實施本發明的實施例時,作為一個條件,沒有小于0.2的增益,盡管在許多情況下,較緊密的邊界可能是更合適的。一般地說,可實現性作為在設計中單元的增益分布的函數被測量,并且觀察設計實驗表示,當增益小于1.0的單元的百分比增加到2.5%以上時,便逐漸難于實現設計收斂,并且注意到,當所有的單元都具有大于1.0的增益時,實際上便能保證設計成功。
基于零松弛的分析用于產生預算的最優選的定時分析結果是其中在設計中的所有松弛都是零的那些結果。松弛測量一個定時約束被滿足的程度。正的松弛表示約束被滿足,具有等于松弛值的安全裕度。具有正松弛的電路通常被認為是超安全標準設計的,因為松弛表示該電路可以在較高的速度下操作,或者被重新設計用于利用較小的面積或功率在相同的速度下操作。負松弛表示約束未被滿足,并且除非電路中的延遲被改變所述松弛的數量,約束便不能被滿足。在理想情況下,零松弛表示約束被精確地滿足,沒有對于誤差的裕度,并且沒有不必要浪費的資源。不過,很少發現一個電路其所有的定時約束都具有精確的零松弛。即使在一個設計中的大多數重要的通路具有零松弛時,大多數其余的通路也具有正的松弛,具有一個大的裕度。
本發明在各個實施例中利用一種新的零松弛算法,用于沿著一個通路分配松弛。零松弛算法一般對于單個的門和導線通過操作增加或減少延遲預算,直到根據預算的延遲電路的松弛為0為止。雖然流行著許多不同的常規的零松弛算法,它們通常是試探式算法,即由算法的設計者邊試邊改,以便獲得用于修改門延遲的最好的方法。下面參照圖5說明提出的新的零松弛算法的細節。
圖5說明按照本發明的一個或幾個實施例的零松弛“修整”算法。首先,將所有增益都設為標準值(塊510)。接著,使用靜態定時分析獲得每個單元上的松弛(塊520)。方法檢查看獲得的松弛的任何一個是否是非零松弛(塊525)(非零在此指的是大于零附近的某個允差限制)。如果是,則調整具有非零松弛的單元的增益(530)(在一個可行的范圍內)。在用這種方式調整增益之后,流程控制轉向塊520,再次使用靜態定時分析獲得每個單元上的松弛。這個定時分析可以是遞增的,但是注意,即使只有幾個單元的增益改變時,也可能影響許多單元的松弛。下面詳細討論這種修整算法。
修整算法在超單元的網絡上操作。每個超單元代表一類門的延遲(例如2個輸入的與門)。超單元的延遲是其增益的函數,其確定輸出電容對門輸入電容的比。增加超單元的增益則增加其延遲,而減少增益則減少延遲。
修整算法調節門的驅動強度,直到電路中的所有的松弛都為0,或者所有要被改變的門都處于其最大或最小可允許增益下。其從所有超單元被初始化到一個標準增益值開始(510)。然后,使用靜態定時分析計算每個門上的最壞的定時松弛(520)。然后,把每個門的增益調整一個取決于這個松弛值的數量,如果這個松弛值是非零值的話(525和530)。具有負松弛的門使其增益減小(使門加快),而具有正松弛的門則使其增益增加(使這些門變慢)。選擇每個增益調整的大小,使得調整處理平滑地收斂。每個改變的數量都和松弛的大小相關;對具有較大的負松弛的門比具有小的負松弛的門減少較大的增益。類似地,對具有較大正松弛的門比具有小的正松弛的門增加較大的增益。每個改變的數量還和通過每個門的主要通路的長度有關。對位于長的通路(具有大量的門的通路)上的門比位于較短通路上的門進行較小的改變。在進行這些改變之后,進行新的靜態定時分析,并進行新的一組增益調整。當不再進行改變時,處理停止,或者是因為所有的松弛都為0(因而不需要改變),或者所有要被改變的門都已經被設置為具有其最大或最小的可能的增益。
雖然修整算法專用于調節單元的延遲,其也可以影響導線的延遲。當在披露的預算過程中進行初始布置和布線時,這種影響是可能的。一種布置允許模擬作為單元之間的距離的函數的導線延遲。如果也進行布線,借助于跟隨每個導線的全部布線通路,定時分析甚至可以更精確地模擬導線延遲。甚至可以在修整算法的步驟之間交錯整個布置和布線,使得布置和尺寸同時收斂。
圖6表示可以利用本發明的一個或幾個實施例估算時間預算解答的示例的電路。所示的電路在邏輯上被分成塊650,其和頂層部分中的其它的元件相連。頂層部分包括輸出到緩沖器611的寄存器元件D10。緩沖器611和未標明的其它信號作為與門612的輸入。與門的結果通過613被緩沖,此后其接近塊650的邊界。613的輸出和塊650內部的緩沖器614的輸入相連。緩沖器614和未標明的信號用作與門615的輸入。與門615的輸出被送到寄存器元件620。寄存器元件620的輸出送到其它組合邏輯625,其輸出送到寄存器630。寄存器610,620和630都由時鐘信號CLK(未示出)同步。
這個電路的定時取決于在塊的內部和在塊的外部發生的事情。不過,塊650的內部和外部的一些通路和在塊650的邊界處的定時無關。在預算期間,這些通路可被完全忽略。例如,通過組合邏輯塊625的通路被彎曲包含在塊內。除去時鐘輸入之外,這個通路的定時不受在塊的邊界的所有信號的影響。并且只要時鐘周期保持恒定,這個通路的定時便不受時鐘信號進入塊的特定時刻的影響。
那些對在邊界的定時無影響的門/元件可以按照上述的抽象處理被丟棄。這種抽象保留所需的寄生信息,同時放棄無關的信息。例如在圖6中,在定時分析和修整期間,在塊625內的邏輯便可被除去或者忽略。此時修整算法將調整門611-615的延遲,直到在從610-620的通路上的松弛為0。在塊650的邊界上信號的到達時間將成為這一輸入的預算到達時間。
初始的布置提供在設計中的導線延遲的有用的估算。當在網表中具有許多要單獨放置的單元時,可以利用聚類算法將它們合并成組,然后根據組之間的連接性布置這些組。然后從布置的組的位置導出各個單元的位置。
在初始布置下,可以使用基于曼哈頓的導線模型計算設計中的各個導線的估算的電阻、電容和延遲。雖然這里提出的單元延遲模型和電容無關,導線延遲估算對于改進零松弛修整算法是極其有用的,所述算法試圖通過調節每個單元的增益來優化設計。
修整算法迭代地交錯整個定時分析和可以潛在地調整設計中的每個單元的增益的增益調整步驟。在每個增益調整步驟中,每個門的增益被平滑地增加或減少一個和在該門的局部松弛成比例、和通過該門的最大拓撲通路的長度成反比的量。這確保沿著主要通路的增益平滑地且同時地朝向其最終的修整值移動,并確保沿著主要通路每個單元的修整增益相等。
修整算法不是唯一的可用于定時優化的工具。作為其中修整處理會危險地降低增益的工作區,可以執行任選的步驟,用于固定網表中的結構問題。這些步驟包括.再變換.體系結構選擇(單元中交換).加速重構這些操作的每一個都離散地改變需要進一步修整的電路,以便在各個門延遲預算中平滑地吸收非零松弛。
可以使用外殼抽象切掉在接口不可見的模塊的部分。這些部分應當被從頂層定時分析和在頂層進行的任何修整或結構優化中排除。類似地,頂層網表可以被刪改,使得除去對于需要預算的特定的塊是不可見的網表的部分。
對模塊產生定時約束通過把頂層模塊的性能變換成較下層模塊的約束可以產生預算(450)。當獲得零松弛定時解時,在電路的每個節點達到時間和所需時間相等。在模塊邊界,這些時間可被解釋為預算的值。對于模塊輸入,它們代表到達時間,從環境向塊邊界呈現信號過渡的最晚的或最早的時間。對于模塊輸出,這些時間表示所需的時間,不會引起電路的另一部分的定時故障在模塊的輸出信號過渡可能發生的最晚時間或最早時間。
輸入到達時間和輸出所需時間可以相對于一個或幾個參考時鐘,時鐘可以進入模塊用于控制內部存儲元件。結果,在定時預算中還需要包括這些時鐘的定義。這些時鐘的定義由在被預算的模塊的定時模型中描述時鐘的特定的約束表示。每個時鐘的理想時間和時鐘到達輸入端的實際時間之間的差由規定時鐘的外部等待時間的另一個特定的約束表示。
在頂層定時模型中的幾個其它的各種各樣的定時約束被復制在模塊的定時預算中。用戶規定的約束表示某些網格總是處于恒定的邏輯值。這表示在這些網格上的信號過渡的定時可被忽略,并且還使得通過組合用戶規定的約束和設計中的門的邏輯函數導出其它的約束。所有影響模塊的用戶規定的或者導出的約束都被包括在其預算中。此外,任何表示限制和裕度的約束也被復制到模塊的定時預算中。
有一種另外類型的必須在定時預算中被表達的約束,這些約束被稱為通路例外。通路例外描述對于定時分析的通常規則的例外情況并被用于電路中用戶規定的通路。它們識別偽通路、多周期通路和被約束而具有最小或最大規定延遲的通路。所有影響模塊的通路例外都應當被包括在其預算內。不過,許多通路例外可能指模塊本身外部的引腳。這要求把這些異常重新寫成適合于模塊的定時分析的形式。
為了解釋所述的重寫,考慮一種其中可在靜態定時分析器中支持通路例外的方式。為了正確地應用通路例外,需要把在一個引腳的信號到達時間分成兩組,一組受所述例外的影響,而一組不受所述例外的影響。為了啟動這個分割,使被稱為“標記”的特定的符號和在通路例外中被命名的每個引腳相關聯。每個引腳可以具有一個唯一的標記,或者為了減少使用的資源,可以把標記分配給引腳的組。此時這些標記和在每個標識的引腳的信號到達時間相關聯,并被向取決于標識的引腳的等待時間的所有到達時間傳播。在一個設計中的任何引腳都可以具有許多和其相關的不同的到達時間,每個到達時間利用標記的不同的組合被識別。這是可能發生的,因為對一個設計中的任何引腳可能具有許多不同的通路,并且這些通路的一些可能受通路例外的影響,雖然另一些不受。因為每個標識的到達時間可以受不同的通路例外的影響,和一個引腳相關聯的每個標識的到達時間可以具有不同的需要時間和相應的松弛值。
例如,由命名為“A”的引腳規定的并通過命名為“B”的引腳的多周期通路約束將對由通過引腳A的通路產生的所有的到達時間產生一個標記,并對由通過引腳B的通路產生的所有到達時間產生第二個標記。在任何端點,只有具有兩種標記A和B的到達時間受所述例外的影響。
當一個例外指的是模塊外部的引腳時,便通過利用相關聯的標記的名稱代替對外部引腳的每個參考進行修改。所述標記基本上是所述外部引腳的別名。其被明確地包括進去是因為不能直接地參考所述外部引腳。
為了支持交叉模塊輸入的通路例外,使在模塊輸入端的到達時間約束明確地使標記和提供給模塊輸入端的到達時間關聯。因而每個模塊輸入端具有許多到達時間,這使得我們能夠把不同的到達時間和通過塊輸入的不同的通路相關聯。
為了支持交叉模塊輸出的通路例外,使在模塊輸出端的所需的時間約束明確地使標記和在模塊的輸出端強制的所需時間關聯。每個被標識的所需時間將只用于具有完全相同的標識的到達時間。這使得能夠把不同的所需時間和通過塊的輸出的不同的通路相關聯。如果通路例外完全被包含在模塊的內部,則其不需要被修改,因為所有相關聯的引腳都可以在模塊的內部得到。
圖7表示能夠實施本發明的一個或幾個實施例的計算機系統。所示的是一種計算機系統710,其可以是任何通用的或專用的計算用計算機或數據處理計算機,例如可以選擇地和網絡700相連的PC(個人計算機)。計算機系統710的存儲器711用于預算整個的電路設計可能是不夠的,因而,預算處理可能需要被分解。用這種方式,可以由幾個不同的計算機系統處理預算的片段,其中每個計算機系統類似于計算機系統710。
本領域普通技術人員可以對計算機710編程,用于通過按照本發明的各個實施例提出的零松弛修整算法和靜態定時分析執行預算任務。這種程序代碼可以使用處理器712例如CPU(中央處理單元)和存儲器711例如RAM(隨機存取存儲器)執行,所述存儲器用于存儲/加載指令、地址和所需的結果數據。用于執行時間預算功能和定時分析功能的應用程序可以從由一種語言例如C++寫的源代碼編輯的可執行文件導出。所述可執行文件可被裝入存儲器711中,其指令由處理器712執行。相應于進行時間預算和定時分析所需的指令的所述可執行文件的指令可被存儲在盤718上,例如軟驅、硬驅或光驅717或者存儲器711。各種輸入例如網表、約束、延遲、電容、導線模型、單元庫和其它這種信息可被以數據庫的形式或以平面文件的形式寫入盤718、光驅717甚至通過網絡700,或者從這些中取得。
計算機系統710具有用于幫助在處理器712和存儲器711之間傳遞信息的系統總線713以及和I/O總線715相連的橋714。I/O總線715使各個I/O裝置例如網絡接口卡(NIC)、盤718和光驅717與系統存儲器711和處理器712相連。在本發明內可以利用I/O裝置、總線和橋的許多組合,所示的組合僅僅是用于說明的一種可能的組合。
上面結合本發明的優選實施例對其進行了說明,不過,這只是為了說明的目的,本發明并不限于此。的確,在本發明的范圍和構思內,本領域普通技術人員可以容易地作出許多改變和改型。
權利要求
1.一種用于在進行集成電路設計中預算定時的方法,所述電路設計具有寄存器單元和組合邏輯單元,并具有按層次被分解成頂層和多個塊的一種表示,所述多個塊中的至少一些能夠被進一步按照層次分解,所述寄存器單元和組合邏輯單元具有至少一個單元引腳,所述塊具有邊界,所述塊的邊界由至少一個塊引腳表示,所述方法包括優化至少一個通路,所述通路通過一個塊引腳,所述優化對于沿著所述至少一個通路的所有單元產生指派的增益;在所述至少一個通路上進行定時分析,所述定時分析使用所述指派的增益,以便產生信號在所述塊引腳的到達時間;以及借助于檢查在所述塊引腳的所述到達時間導出定時預算。
2.如權利要求1所述的方法,還包括在塊之間的緩沖長網格。
3.如權利要求1所述的方法,還包括把所述塊分割成組。
4.如權利要求3所述的方法,還包括布置所述的組。
5.如權利要求4所述的方法,還包括布置包含在所述頂層和所述塊中的單元。
6.如權利要求5所述的方法,還包括如果所述單元被布置,在所述單元當中布線。
7.如權利要求1所述的方法,其中所述優化包括零松弛修整,以便沿著所述至少一個通路分配松弛。
8.如權利要求7所述的方法,其中所述零松弛修整包括把所述指派的增益設置為一個標準值;以及根據這些指派的增益獲得每個單元的松弛值。
9.如權利要求8所述的方法,還包括調整具有發散超過零值附近的一個確定的允差的松弛值的單元的所述指派的增益;以及重復獲得和調整,直到所有單元具有在零附近的所述確定的允差之內的松弛值,或者直到在單元上的指派的增益達到其限制。
10.如權利要求9所述的方法,其中的調整包括減少其獲得的松弛值是負的的單元上指派的增益;以及增加其獲得的松弛值是正的的單元上指派的增益。
11.如權利要求10所述的方法,其中指派的增益被調整的數量和獲得的松弛值的大小成比例。
12.如權利要求11所述的方法,其中指派的增益被調整的數量還和通過單元的主要通路的長度有關。
13.如權利要求7所述的方法,其中所述修整包括考慮導線延遲的影響。
14.如權利要求7所述的方法,其中在所述修整之前進行包括再變換、體系結構選擇和加速重構的結構優化的至少一個步驟。
15.如權利要求1所述的方法,其中在所述塊引腳的所述定時預算借助于保存來自所述定時分析的在塊輸入的到達時間和在塊輸出的所需時間被導出。
16.如權利要求15所述的方法,其中所述的輸入到達時間和輸出所需時間通過在所述定時預算中包括參考時鐘的定義被考慮。
17.如權利要求1所述的方法,其中所述定時預算包括用戶規定的約束、導出的約束和表示限制和裕度的約束中的至少一個。
18.如權利要求1所述的方法,其中所述定時預算還包括通路例外。
19.如權利要求18所述的方法,其中所述通路例外包括偽通路、多周期通路和被約束而具有特定的延遲限制的通路。
20.如權利要求19所述的方法,其中參考所述塊的外部的引腳的通路例外被修改使得參考唯一地相應于外部引腳或引腳組的標記。
21.如權利要求20所述的方法,其中對于標記的每個可能的組合,各自的到達時間被在每個塊的邊界規定,它們可以相應于在塊輸入的扇入組中的引腳。
22.如權利要求20所述的方法,其中對于標記的每個可能的組合,各自的所需時間被在每個塊的輸出規定,它們可以相應于在塊輸出的扇入組中的引腳。
23.如權利要求1所述的方法,還包括讀入和所述設計相關的一組輸入。
24.如權利要求23所述的方法,其中的優化包括選擇地進行所述塊的抽象;以及處理所述的一組輸入,從而產生超單元。
25.如權利要求23所述的方法,其中所述一組輸入包括初始網表、單元庫的描述、要使用的處理技術的描述,以及對于頂層網表的定時約束中的至少一個。
26.一種包括計算機可讀介質的產品,所述可讀介質具有在其上存儲的指令,用于實施一種在生產一種集成電路設計中使用的預算時間的方法,所述電路設計具有寄存器單元和組合邏輯單元,并具有按層次被分解成頂層和多個塊的一種表示,所述多個塊中的至少一些能夠被進一步按照層次分解,所述寄存器單元和組合邏輯單元具有至少一個單元引腳,所述塊具有邊界,所述塊的邊界由至少一個塊引腳表示,所述指令當被執行時使得優化至少一個通路,所述通路通過一個塊引腳,所述優化對于沿著所述至少一個通路的所有單元產生指派的增益;在所述至少一個通路上進行定時分析,所述定時分析使用所述指派的增益,以便產生信號在所述塊引腳的到達時間;以及借助于檢查在所述塊引腳的所述到達時間導出定時預算。
27.如權利要求26所述的產品,還使緩沖在塊之間的長網格。
28.如權利要求26所述的產品,還使把所述塊分割成組。
29.如權利要求28所述的產品,還使布置所述的組,如果有的話。
30.如權利要求29所述的產品,還使布置包含在所述頂層和所述塊中的單元。
31.如權利要求30所述的產品,還使如果所述單元被布置,在所述單元當中布線。
32.如權利要求26所述的產品,其中所述優化包括零松弛修整,以便沿著所述至少一個通路分配松弛。
33.如權利要求32所述的產品,其中所述零松弛修整包括把所述指派的增益設置為一個標準值;以及根據這些指派的增益獲得每個單元的松弛值。
34.如權利要求33所述的產品,還使調整具有發散超過零值附近的一個確定的允差的松弛值的單元的所述指派的增益;以及重復獲得和調整,直到所有單元具有在零附近的所述確定的允差之內的松弛值,或者直到在單元上的指派的增益達到其限制。
35.如權利要求34所述的產品,其中的調整包括減少其獲得的松弛值是負的的單元上指派的增益;以及增加其獲得的松弛值是正的的單元上指派的增益。
36.如權利要求35所述的產品,其中指派的增益被調整的數量和獲得的松弛值的大小成比例。
37.如權利要求36所述的產品,其中指派的增益被調整的數量還和通過單元的主要通路的長度有關。
38.如權利要求32所述的產品,其中所述修整包括考慮導線延遲的影響。
39.如權利要求32所述的產品,其中在所述修整之前進行包括再變換、體系結構選擇和加速重構的結構優化的至少一個步驟。
40.如權利要求1所述的產品,其中在所述塊引腳的所述定時預算借助于保存來自所述定時分析的在塊輸入的到達時間和在塊輸出的所需時間被導出。
41.如權利要求40所述的產品,其中所述的輸入到達時間和輸出所需時間通過在所述定時預算中包括參考時鐘的定義被考慮。
42.如權利要求26所述的產品,其中所述定時預算包括用戶規定的約束、導出的約束和表示限制和裕度的約束中的至少一個。
43.如權利要求26所述的產品,其中所述定時預算還包括通路例外。
44.如權利要求43所述的產品,其中所述通路例外包括偽通路、多周期通路和被約束而具有特定的延遲限制的通路。
45.如權利要求44所述的產品,其中參考所述塊的外部的引腳的通路例外被修改使得參考唯一地相應于外部引腳或引腳組的標記。
46.如權利要求45所述的產品,其中對于標記的每個可能的組合,各自的到達時間被在每個塊的輸入規定,所述標記可以相應于在塊輸入的扇入組中的引腳。
47.如權利要求45所述的產品,其中對于標記的每個可能的組合,各自的所需時間被在每個塊的輸出規定,它們可以相應于在塊輸出的扇入組中的引腳。
48.如權利要求26所述的產品,還包括讀入和所述設計相關的一組輸入。
49.如權利要求26所述的產品,其中的優化包括選擇地進行所述塊的抽象;以及處理所述的一組輸入,從而產生超單元。
50.如權利要求49所述的產品,其中所述一組輸入包括初始網表、單元庫的描述、要使用的處理技術的描述,以及對于頂層網表的定時約束中的至少一個。
51.如權利要求1所述的方法,其中所述塊可以用一個或幾個抽象表示。
52.如權利要求26所述的產品,其中所述塊可以用一個或幾個抽象表示。
53.如權利要求1所述的方法,其中所述的優化以并行的方式在跨越塊邊界的所有通路當中進行。
54.如權利要求26所述的產品,其中所述的優化以并行的方式在跨越塊邊界的所有通路當中進行。
全文摘要
本發明披露了一種用于在分層分解集成電路設計中預算定時的方法,所述方法包括1)優化至少一個通過塊引腳的通路,所述優化對于沿著所述通路的所有單元產生分配的增益;2)在所述至少一個通路上進行定時分析,所述定時分析使用所述分配的增益,以便產生信號在所述塊引腳的到達時間;以及3)借助于檢查在所述塊引腳的所述到達時間導出時間預算。
文檔編號H01L21/822GK1539114SQ02815293
公開日2004年10月20日 申請日期2002年6月10日 優先權日2001年6月8日
發明者蒂莫西·M.·布爾克斯, 邁克爾·A.·瑞普, 海密德·薩沃扎, 羅伯特·M.·斯旺森, 卡恩·E.·瓦特拉, 路卡斯·梵·金尼肯, A. 瑞普, M. 斯旺森, 梵 金尼肯, 薩沃扎, E. 瓦特拉, 蒂莫西 M. 布爾克斯 申請人:美格馬自動控制設計公司