李雪艷,廖一鵬
(1.福州大學(xué) 陽光學(xué)院,福建 福州 350015;2.福州大學(xué) 物理與信息工程學(xué)院,福建 福州350108)
在數(shù)字集成電路設(shè)計(jì)中,基于標(biāo)準(zhǔn)單元的ASIC設(shè)計(jì)具有成本低、移植性好、上市時(shí)間短等優(yōu)點(diǎn),在各種芯片設(shè)計(jì)領(lǐng)域占據(jù)了越來越重要的地位[1]。ASIC設(shè)計(jì)的廣泛應(yīng)用使得EDA的方法在IC設(shè)計(jì)中得到了充分的發(fā)展。在工藝進(jìn)入深亞微米之后,對芯片設(shè)計(jì)尤其是芯片的物理設(shè)計(jì)提出了更高的要求,芯片的時(shí)序收斂周期也變得越來越長。本文所研究的時(shí)鐘偏差規(guī)劃基于標(biāo)準(zhǔn)單元ASIC設(shè)計(jì)流程,能夠提高芯片的性能。
在現(xiàn)在的超大規(guī)模電路設(shè)計(jì)中,一般采用寄存器傳輸級設(shè)計(jì)。在這種設(shè)計(jì)方法中,時(shí)鐘信號是所有數(shù)據(jù)傳送的基準(zhǔn),數(shù)據(jù)傳送從時(shí)鐘發(fā)送沿開始,到時(shí)鐘接收沿結(jié)束。在同一時(shí)鐘域中,時(shí)鐘源所扇出的單元,包括寄存器、存儲(chǔ)器在內(nèi),數(shù)量非常巨大,是一個(gè)龐大的時(shí)鐘網(wǎng)絡(luò)。如圖1所示,為了使同一時(shí)鐘源能夠驅(qū)動(dòng)到它所扇出的所有節(jié)點(diǎn),并使其到這些節(jié)點(diǎn)的延時(shí)基本相同,時(shí)鐘網(wǎng)絡(luò)通常采用緩沖器樹的結(jié)構(gòu),這一結(jié)構(gòu)稱為時(shí)鐘樹[2]。
時(shí)鐘樹在時(shí)鐘信號起點(diǎn)以及時(shí)鐘信號所要驅(qū)動(dòng)的所有寄存器之間,加入若干緩沖器(buffer),形成樹狀架構(gòu)。在這種架構(gòu)中,時(shí)鐘信號到達(dá)寄存器會(huì)產(chǎn)生偏差(skew),所有寄存器時(shí)鐘端的時(shí)鐘信號并不是同時(shí)到達(dá)的?,F(xiàn)在工具優(yōu)化的目標(biāo)是“零時(shí)鐘偏差”,零時(shí)鐘偏差是一種讓時(shí)鐘信號同時(shí)到達(dá)所有寄存器的設(shè)計(jì)方法。實(shí)際上利用時(shí)鐘偏差構(gòu)建時(shí)鐘樹,并不會(huì)比零時(shí)鐘偏差的時(shí)鐘樹對工藝變化更敏感,通過適當(dāng)?shù)臅r(shí)鐘偏差優(yōu)化,還可以提高電路對工藝參數(shù)變化的容忍度[3]。在關(guān)鍵路徑上的一些時(shí)鐘偏差會(huì)對時(shí)序有一定的優(yōu)化作用,從而提高電路的最大運(yùn)行速度,這種時(shí)鐘偏差即為有用時(shí)鐘偏差[4]。有用時(shí)鐘偏差現(xiàn)在已經(jīng)成為集成電路設(shè)計(jì)中一個(gè)備受關(guān)注的研究方向。
靜態(tài)時(shí)序分析是通過在最悲觀的情況下檢查所有時(shí)序路徑可能存在的時(shí)序違規(guī)的方法來保證一個(gè)設(shè)計(jì)在時(shí)序上的性能。因此它只考慮每一個(gè)邏輯門的最差延時(shí),并不理會(huì)電路的邏輯功能[5]。
圖2中虛線所示為一條常見的時(shí)序路徑,它的起點(diǎn)是寄存器FF1的CLK端,終點(diǎn)為FF2的D端。在時(shí)序分析中建立時(shí)間檢查時(shí),要求這條路徑滿足的約束條件如式(1)~式(3)所示。
其中,Tp為電路運(yùn)行的時(shí)鐘周期;L表示時(shí)鐘源到寄存器所經(jīng)歷的延時(shí);Tsetup表示寄存器的建立時(shí)間,這是標(biāo)準(zhǔn)單元庫中寄存器的一個(gè)重要參數(shù),表示時(shí)鐘有效接收沿到達(dá)之前數(shù)據(jù)必須保持不動(dòng)的時(shí)間。Slack表示這條路徑的時(shí)序裕量,當(dāng)裕量大于等于零時(shí),說明電路不存在時(shí)序違規(guī),在周期為Tp時(shí)運(yùn)行不會(huì)有時(shí)序問題。
從式(1)、式(2)可以看出,電路的性能不僅決定于電路組合路徑的延時(shí),時(shí)鐘源到寄存器的延時(shí)L也同樣是一個(gè)很重要的影響因素[6]。如果時(shí)鐘源到寄存器的時(shí)鐘端的延時(shí)不同,就會(huì)出現(xiàn)時(shí)鐘偏差。
靜態(tài)時(shí)序分析理論表明,設(shè)計(jì)存在時(shí)鐘偏差并不一定意味著時(shí)序惡化,正的時(shí)鐘偏差(信號與時(shí)鐘同向)可以修正建立時(shí)間違規(guī),而負(fù)的時(shí)鐘偏差(信號與時(shí)鐘反向)可以修正保持時(shí)間違規(guī)[7]。時(shí)鐘偏差規(guī)劃正是通過協(xié)調(diào)時(shí)鐘延時(shí)來優(yōu)化時(shí)序、提高性能的。
如圖3所示,以Launch_reg與Capture_reg兩個(gè)寄存器組成的一條路徑為當(dāng)前路徑,定義以Launch_reg為終點(diǎn)的路徑是當(dāng)前路徑的前級,以Capture_reg為起點(diǎn)的路徑為當(dāng)前路徑的后級。算法的實(shí)質(zhì)是先進(jìn)行建立(setup)時(shí)間裕量的平分,再根據(jù)不同的情況來進(jìn)行調(diào)整,以達(dá)到所有路徑都無時(shí)序違規(guī)的目的。該方法在提高性能的同時(shí),兼顧前后級時(shí)序電路的裕量,不至于使它們?nèi)蔀榕R界邊(裕值為0的邊)。
通過時(shí)序分析工具獲得當(dāng)前路徑,前級以及后級路徑的時(shí)序信息作為時(shí)序均分的初始值,然后將各級時(shí)序裕量進(jìn)行求和均分。在約束圖中將某節(jié)點(diǎn)的時(shí)鐘延時(shí)增加Δ,則以它為終點(diǎn)的路徑的裕量增加Δ,而以它為起點(diǎn)的路徑的裕量減少Δ;如果將某節(jié)點(diǎn)的時(shí)鐘延時(shí)減少Δ,情況則相反。在均分以后必須使得保持時(shí)間不能違規(guī),寄存器的保持時(shí)間必須大于0,否則數(shù)據(jù)將無法被寄存器準(zhǔn)確地捕獲。
根據(jù)時(shí)序參數(shù)初值以及各級均分后的值可以算出本級、前級和后級路徑新的保持時(shí)間和建立時(shí)間。判斷前后級路徑是否有保持時(shí)間違規(guī),若前后級有違規(guī)則將時(shí)序初始值設(shè)置為自身保持時(shí)間裕量,調(diào)整新的時(shí)序初始值后繼續(xù)進(jìn)行時(shí)序裕量均分,直到無法再調(diào)整為止。判斷本級路徑是否有保持時(shí)間違規(guī),若自身有違規(guī)則增量值Δ調(diào)整為原來的k倍(k為偏差在當(dāng)前情況下實(shí)際調(diào)整值與最大調(diào)整值的比值)作為最終調(diào)整的結(jié)果;若無違規(guī)則以當(dāng)前調(diào)整過的值作為結(jié)果。算法流程如圖4所示,在具體實(shí)現(xiàn)算法中,使用了標(biāo)記flag控制循環(huán)。算法使用 TCL(Tool Command Language)語言實(shí)現(xiàn),很方便地嵌入現(xiàn)有流程與現(xiàn)有工具集合起來使用。
通過靜態(tài)時(shí)序分析工具得到關(guān)鍵路徑建立時(shí)間,如圖5所示。以此為例分析算法作用的過程:當(dāng)前情況下時(shí)鐘約束的周期為10 ns,那么在-2 ns違規(guī)的情況下,時(shí)鐘必須提供12 ns的周期,若通過局部時(shí)序偏差優(yōu)化的方法將-2 ns的違規(guī)修正,則提高了電路的性能。
Launch_reg到 Capture_reg的路徑建立(setup)時(shí)間為-2 ns,其前后級的建立時(shí)間均為 2 ns,均分以后,保持時(shí)間 s、s_min_p、s_min_a 都為 2/3 ns,如圖 6 所示,此時(shí)以Launch_reg、Capture_reg為終點(diǎn)的路徑建立時(shí)間減少了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為起點(diǎn)的路徑建立時(shí)間則增加了 4/3 ns。
偏差優(yōu)化后時(shí)序最差的路徑由原來的-2 ns變?yōu)?2/3 ns,周期由原來的12 ns提高到了10 ns以內(nèi)。
提高電路性能:正的時(shí)鐘偏差,其效果相當(dāng)于減小邏輯路徑的時(shí)間延遲。因此有效地利用時(shí)鐘偏差,對時(shí)鐘信號到達(dá)各個(gè)寄存器的時(shí)間進(jìn)行適當(dāng)?shù)陌才牛瑫r(shí)鐘周期的最小值將可能小于電路中所有相鄰兩個(gè)寄存器間的信號延遲時(shí)間的最大值,而達(dá)到提高電路性能的目的[8]。
增加電路穩(wěn)定性:令Tspec為電路實(shí)際運(yùn)行的時(shí)鐘周期,但由于工藝的變化,使得電路分析結(jié)果時(shí)鐘周期的最小值為Tmin,很明顯,Tmin必須小于Tspec才能合乎設(shè)計(jì)要求。如前文所述,利用時(shí)鐘偏差,可縮小時(shí)鐘周期的最小值。令Tspec和 Tmin的差值為△T,由于工藝參數(shù)變化等因素,△T的值變得越大,越有助于確保電路運(yùn)行正確。同理,通過時(shí)鐘偏差優(yōu)化,也可以提高保持時(shí)間裕量。
利用時(shí)鐘偏差的區(qū)域性特點(diǎn),可以改善電路的性能及穩(wěn)定性,但目前業(yè)界廣泛使用的集成電路時(shí)鐘樹綜合工具(如IC Compiler),其目的都是縮小時(shí)鐘偏差,即使工具附帶有用偏差約束的時(shí)鐘樹綜合選項(xiàng),但因?yàn)樗牡馁Y源太高,而且最終的結(jié)果也不盡如人意。本文提出的偏差優(yōu)化算法及其流程,可以很好地與現(xiàn)有的集成電路設(shè)計(jì)流程進(jìn)行整合。時(shí)鐘偏差規(guī)劃所針對的是門級網(wǎng)表,必須要在邏輯綜合以后。雖然越往后的流程,設(shè)計(jì)所擁有的信息越全面準(zhǔn)確,但是時(shí)鐘樹綜合以后時(shí)鐘結(jié)構(gòu)已經(jīng)固定,再進(jìn)行優(yōu)化的余地較小,所以時(shí)鐘偏差規(guī)劃要位于時(shí)鐘樹綜合以前。時(shí)鐘偏差規(guī)劃嵌入傳統(tǒng)流程的最佳位置在布圖規(guī)劃、布局之后,時(shí)鐘樹綜合之前。嵌入偏差優(yōu)化后的新的物理設(shè)計(jì)流程如圖7所示。
本文以ISCAS89中部分電路為實(shí)驗(yàn)用例,對它們進(jìn)行時(shí)鐘偏差的優(yōu)化來改善芯片的性能和穩(wěn)定性。實(shí)驗(yàn)中 首 先 選 取 “SMIC 130nm Logic013G Process 1.2-Volt SAGE-XTM v2.0 Standard Cell Library”標(biāo)準(zhǔn)單元庫作為邏輯綜合的目標(biāo)庫(Target Library),采用 Synopsys Design Compiler將實(shí)驗(yàn)用例的RTL代碼綜合成門級網(wǎng)表,采用Synopsys IC Compiler進(jìn)行布圖規(guī)劃。
在完成布圖規(guī)劃后,嵌入的流程有兩步:
(1)延遲提取。延遲提取是實(shí)施時(shí)鐘偏差規(guī)劃的數(shù)據(jù)基礎(chǔ)。此步驟在靜態(tài)時(shí)序分析工具中進(jìn)行。
(2)時(shí)鐘偏差規(guī)劃。利用規(guī)劃來獲得性能最優(yōu)的時(shí)鐘樹方案,并生成適合時(shí)鐘樹綜合使用的命令。
時(shí)鐘偏差規(guī)劃優(yōu)化以后,設(shè)計(jì)中原來的關(guān)鍵路徑使用時(shí)鐘偏差的方法得以修正,減少了工具的負(fù)荷,更大地發(fā)揮了工具的優(yōu)化能力,得到更好的優(yōu)化效果。優(yōu)化完成以后再進(jìn)行一輪時(shí)鐘偏差規(guī)劃調(diào)整,直到繼續(xù)優(yōu)化的程度非常小,不值得繼續(xù)循環(huán)優(yōu)化為止。
時(shí)鐘偏差優(yōu)化的結(jié)果使得性能得到提升。性能的提升可以用最小周期的減小值或百分比表示。初始時(shí)鐘最小周期記為T,偏差優(yōu)化后的最小時(shí)鐘周期記為Tnew,而性能的提升(performace enhancement)為:△T=T-Tnew,為更加形象地顯示性能提高的幅度,亦可采用性能提升的百分比△T/T來表示。每個(gè)測試用例時(shí)鐘偏差優(yōu)化前后的性能提升比例如表1所示。
表1 時(shí)鐘偏差優(yōu)化性能提升比例
局部偏差優(yōu)化算法對實(shí)驗(yàn)用例的性能有不同程度的提升,s38584的提升幅度最大為9.1%。
高性能的系統(tǒng)芯片中,時(shí)鐘信號對于系統(tǒng)功能和性能都具有至關(guān)重要的作用。隨著工藝尺寸的縮小,時(shí)鐘偏差并不等比例縮小,因此以零偏差為目標(biāo)的時(shí)鐘樹綜合已經(jīng)難以適應(yīng)工藝進(jìn)步的需要。時(shí)鐘偏差優(yōu)化作為提升電路性能及穩(wěn)定性的研究越來越深入,但如何有效地利用時(shí)鐘偏差,設(shè)計(jì)方法及工具尚不完善。對學(xué)術(shù)界經(jīng)典的ISCAS89中不同規(guī)模的電路進(jìn)行實(shí)例測試,結(jié)果表明算法具有很強(qiáng)的實(shí)用性,能夠很好地提升電路的性能。
[1]RABAEY J M,CHANDRAKASAN A.數(shù)字集成電路——電路、系統(tǒng)與設(shè)計(jì)(第 2版)[M].周潤得,譯.北京:電子工業(yè)出版社,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,F(xiàn)RIEDMAN 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]陳春章,艾霞,王國維.數(shù)字集成電路物理設(shè)計(jì)[M].北京:科學(xué)出版社,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.