李雪艷,廖一鵬
(1.福州大學 陽光學院,福建 福州 350015;2.福州大學 物理與信息工程學院,福建 福州350108)
在數字集成電路設計中,基于標準單元的ASIC設計具有成本低、移植性好、上市時間短等優點,在各種芯片設計領域占據了越來越重要的地位[1]。ASIC設計的廣泛應用使得EDA的方法在IC設計中得到了充分的發展。在工藝進入深亞微米之后,對芯片設計尤其是芯片的物理設計提出了更高的要求,芯片的時序收斂周期也變得越來越長。本文所研究的時鐘偏差規劃基于標準單元ASIC設計流程,能夠提高芯片的性能。
在現在的超大規模電路設計中,一般采用寄存器傳輸級設計。在這種設計方法中,時鐘信號是所有數據傳送的基準,數據傳送從時鐘發送沿開始,到時鐘接收沿結束。在同一時鐘域中,時鐘源所扇出的單元,包括寄存器、存儲器在內,數量非常巨大,是一個龐大的時鐘網絡。如圖1所示,為了使同一時鐘源能夠驅動到它所扇出的所有節點,并使其到這些節點的延時基本相同,時鐘網絡通常采用緩沖器樹的結構,這一結構稱為時鐘樹[2]。

時鐘樹在時鐘信號起點以及時鐘信號所要驅動的所有寄存器之間,加入若干緩沖器(buffer),形成樹狀架構。在這種架構中,時鐘信號到達寄存器會產生偏差(skew),所有寄存器時鐘端的時鐘信號并不是同時到達的。現在工具優化的目標是“零時鐘偏差”,零時鐘偏差是一種讓時鐘信號同時到達所有寄存器的設計方法。實際上利用時鐘偏差構建時鐘樹,并不會比零時鐘偏差的時鐘樹對工藝變化更敏感,通過適當的時鐘偏差優化,還可以提高電路對工藝參數變化的容忍度[3]。在關鍵路徑上的一些時鐘偏差會對時序有一定的優化作用,從而提高電路的最大運行速度,這種時鐘偏差即為有用時鐘偏差[4]。有用時鐘偏差現在已經成為集成電路設計中一個備受關注的研究方向。
靜態時序分析是通過在最悲觀的情況下檢查所有時序路徑可能存在的時序違規的方法來保證一個設計在時序上的性能。因此它只考慮每一個邏輯門的最差延時,并不理會電路的邏輯功能[5]。
圖2中虛線所示為一條常見的時序路徑,它的起點是寄存器FF1的CLK端,終點為FF2的D端。在時序分析中建立時間檢查時,要求這條路徑滿足的約束條件如式(1)~式(3)所示。


其中,Tp為電路運行的時鐘周期;L表示時鐘源到寄存器所經歷的延時;Tsetup表示寄存器的建立時間,這是標準單元庫中寄存器的一個重要參數,表示時鐘有效接收沿到達之前數據必須保持不動的時間。Slack表示這條路徑的時序裕量,當裕量大于等于零時,說明電路不存在時序違規,在周期為Tp時運行不會有時序問題。
從式(1)、式(2)可以看出,電路的性能不僅決定于電路組合路徑的延時,時鐘源到寄存器的延時L也同樣是一個很重要的影響因素[6]。如果時鐘源到寄存器的時鐘端的延時不同,就會出現時鐘偏差。
靜態時序分析理論表明,設計存在時鐘偏差并不一定意味著時序惡化,正的時鐘偏差(信號與時鐘同向)可以修正建立時間違規,而負的時鐘偏差(信號與時鐘反向)可以修正保持時間違規[7]。時鐘偏差規劃正是通過協調時鐘延時來優化時序、提高性能的。

如圖3所示,以Launch_reg與Capture_reg兩個寄存器組成的一條路徑為當前路徑,定義以Launch_reg為終點的路徑是當前路徑的前級,以Capture_reg為起點的路徑為當前路徑的后級。算法的實質是先進行建立(setup)時間裕量的平分,再根據不同的情況來進行調整,以達到所有路徑都無時序違規的目的。該方法在提高性能的同時,兼顧前后級時序電路的裕量,不至于使它們全成為臨界邊(裕值為0的邊)。
通過時序分析工具獲得當前路徑,前級以及后級路徑的時序信息作為時序均分的初始值,然后將各級時序裕量進行求和均分。在約束圖中將某節點的時鐘延時增加Δ,則以它為終點的路徑的裕量增加Δ,而以它為起點的路徑的裕量減少Δ;如果將某節點的時鐘延時減少Δ,情況則相反。在均分以后必須使得保持時間不能違規,寄存器的保持時間必須大于0,否則數據將無法被寄存器準確地捕獲。
根據時序參數初值以及各級均分后的值可以算出本級、前級和后級路徑新的保持時間和建立時間。判斷前后級路徑是否有保持時間違規,若前后級有違規則將時序初始值設置為自身保持時間裕量,調整新的時序初始值后繼續進行時序裕量均分,直到無法再調整為止。判斷本級路徑是否有保持時間違規,若自身有違規則增量值Δ調整為原來的k倍(k為偏差在當前情況下實際調整值與最大調整值的比值)作為最終調整的結果;若無違規則以當前調整過的值作為結果。算法流程如圖4所示,在具體實現算法中,使用了標記flag控制循環。算法使用 TCL(Tool Command Language)語言實現,很方便地嵌入現有流程與現有工具集合起來使用。

通過靜態時序分析工具得到關鍵路徑建立時間,如圖5所示。以此為例分析算法作用的過程:當前情況下時鐘約束的周期為10 ns,那么在-2 ns違規的情況下,時鐘必須提供12 ns的周期,若通過局部時序偏差優化的方法將-2 ns的違規修正,則提高了電路的性能。

Launch_reg到 Capture_reg的路徑建立(setup)時間為-2 ns,其前后級的建立時間均為 2 ns,均分以后,保持時間 s、s_min_p、s_min_a 都為 2/3 ns,如圖 6 所示,此時以Launch_reg、Capture_reg為終點的路徑建立時間減少了4/3 ns,s_min_l=3-4/3=5/3 ns,s_min_c=3-4/3=5/3 ns,而以 Launch_reg、Capture_reg為起點的路徑建立時間則增加了 4/3 ns。

偏差優化后時序最差的路徑由原來的-2 ns變為+2/3 ns,周期由原來的12 ns提高到了10 ns以內。
提高電路性能:正的時鐘偏差,其效果相當于減小邏輯路徑的時間延遲。因此有效地利用時鐘偏差,對時鐘信號到達各個寄存器的時間進行適當的安排,時鐘周期的最小值將可能小于電路中所有相鄰兩個寄存器間的信號延遲時間的最大值,而達到提高電路性能的目的[8]。
增加電路穩定性:令Tspec為電路實際運行的時鐘周期,但由于工藝的變化,使得電路分析結果時鐘周期的最小值為Tmin,很明顯,Tmin必須小于Tspec才能合乎設計要求。如前文所述,利用時鐘偏差,可縮小時鐘周期的最小值。令Tspec和 Tmin的差值為△T,由于工藝參數變化等因素,△T的值變得越大,越有助于確保電路運行正確。同理,通過時鐘偏差優化,也可以提高保持時間裕量。
利用時鐘偏差的區域性特點,可以改善電路的性能及穩定性,但目前業界廣泛使用的集成電路時鐘樹綜合工具(如IC Compiler),其目的都是縮小時鐘偏差,即使工具附帶有用偏差約束的時鐘樹綜合選項,但因為所消耗的資源太高,而且最終的結果也不盡如人意。本文提出的偏差優化算法及其流程,可以很好地與現有的集成電路設計流程進行整合。時鐘偏差規劃所針對的是門級網表,必須要在邏輯綜合以后。雖然越往后的流程,設計所擁有的信息越全面準確,但是時鐘樹綜合以后時鐘結構已經固定,再進行優化的余地較小,所以時鐘偏差規劃要位于時鐘樹綜合以前。時鐘偏差規劃嵌入傳統流程的最佳位置在布圖規劃、布局之后,時鐘樹綜合之前。嵌入偏差優化后的新的物理設計流程如圖7所示。

本文以ISCAS89中部分電路為實驗用例,對它們進行時鐘偏差的優化來改善芯片的性能和穩定性。實驗中 首 先 選 取 “SMIC 130nm Logic013G Process 1.2-Volt SAGE-XTM v2.0 Standard Cell Library”標準單元庫作為邏輯綜合的目標庫(Target Library),采用 Synopsys Design Compiler將實驗用例的RTL代碼綜合成門級網表,采用Synopsys IC Compiler進行布圖規劃。
在完成布圖規劃后,嵌入的流程有兩步:
(1)延遲提取。延遲提取是實施時鐘偏差規劃的數據基礎。此步驟在靜態時序分析工具中進行。
(2)時鐘偏差規劃。利用規劃來獲得性能最優的時鐘樹方案,并生成適合時鐘樹綜合使用的命令。
時鐘偏差規劃優化以后,設計中原來的關鍵路徑使用時鐘偏差的方法得以修正,減少了工具的負荷,更大地發揮了工具的優化能力,得到更好的優化效果。優化完成以后再進行一輪時鐘偏差規劃調整,直到繼續優化的程度非常小,不值得繼續循環優化為止。
時鐘偏差優化的結果使得性能得到提升。性能的提升可以用最小周期的減小值或百分比表示。初始時鐘最小周期記為T,偏差優化后的最小時鐘周期記為Tnew,而性能的提升(performace enhancement)為:△T=T-Tnew,為更加形象地顯示性能提高的幅度,亦可采用性能提升的百分比△T/T來表示。每個測試用例時鐘偏差優化前后的性能提升比例如表1所示。

表1 時鐘偏差優化性能提升比例
局部偏差優化算法對實驗用例的性能有不同程度的提升,s38584的提升幅度最大為9.1%。
高性能的系統芯片中,時鐘信號對于系統功能和性能都具有至關重要的作用。隨著工藝尺寸的縮小,時鐘偏差并不等比例縮小,因此以零偏差為目標的時鐘樹綜合已經難以適應工藝進步的需要。時鐘偏差優化作為提升電路性能及穩定性的研究越來越深入,但如何有效地利用時鐘偏差,設計方法及工具尚不完善。對學術界經典的ISCAS89中不同規模的電路進行實例測試,結果表明算法具有很強的實用性,能夠很好地提升電路的性能。
[1]RABAEY J M,CHANDRAKASAN A.數字集成電路——電路、系統與設計(第 2版)[M].周潤得,譯.北京:電子工業出版社,2004:237-238.
[2]Synopsys,Inc.Astro user guide[DB/OL].(2007-09-01)[2012-03-29].http://wenku.baidu.com/view/584b8b20af45b307e8719720.html.
[3]HUANG S H,NIEH Y T.Synthesis of non zero clock skew circuits[J].IEEE Transactions on ComputerAided Design of Integrated Circuits and Systems,2006,25(6):961-976.
[4]MADER R,FRIEDMAN E G,LITMAN A.Large scale clock skew scheduling techniques for improved reliability of digital synchronous VLSI circuits[J].IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems,2002(1):I-357-I-360.
[5]BHASKER J,CHADHA R.Static timing analysis for nanometer designs[M].Berlin:Springer Verlag,2009:179-360.
[6]陳春章,艾霞,王國維.數字集成電路物理設計[M].北京:科學出版社,2008:93-127.
[7]Synopsys,Inc.Prime time user guide[DB/OL].(2006-06-01)[2012-03-29].http://wenku.baidu.com/view/530afd0e795-63c1ec5da71b0.html.
[8]WANG K,DUAN L,CHENG X.Extensive slack balance:an approach to make front-end tools aware of clock skew scheduling[C].In the Proceedings of the 43rd DAC,2006:376-385.