金 洲,劉 毅,裴浩杰,馮 田,段懿洳,周振亞
(1.中國石油大學(xué)(北京) 信息科學(xué)與工程學(xué)院,北京 102249;(2.北京華大九天軟件有限公司,北京 100102)
在晶體管級(jí)電路仿真中,直流分析(計(jì)算非線性電路的直流工作點(diǎn))是最重要的任務(wù)之一[1-2]。在直流分析中,牛頓-拉夫森(Newton-Raphson)迭代因其具有二階收斂性而廣泛應(yīng)用于集成電路仿真程序(Simulation Program with Integrated Circuit Emphasis,SPICE)[3]及類SPICE仿真器當(dāng)中。然而牛頓-拉夫森迭代常常會(huì)因?yàn)槌跏冀夂驼鎸?shí)解不足夠接近而導(dǎo)致收斂失敗[3]。為此,一系列用于改善直流收斂性的延拓算法被提出并獲得了廣泛關(guān)注,其中主要包括Gmin步進(jìn)法[4-5]、偽瞬態(tài)法[6-12](Pseudo Transient Analysis,PTA)和同倫法[13-17]等。
隨著深亞微米工藝的發(fā)展,集成電路的規(guī)模與復(fù)雜度不斷增加,仿真器中現(xiàn)有方法的仿真性能(收斂性、仿真效率)都不能真正做到令人滿意[18-19],因此對(duì)直流延拓算法的仿真性能的進(jìn)一步優(yōu)化就顯得尤為重要。國內(nèi)外學(xué)者在上述延拓算法的基礎(chǔ)上進(jìn)行了許多更加深入的研究。傳統(tǒng)的Gmin步進(jìn)法稱作Diagonal Gmin,其仿真效率高,但收斂性較差[14]。文獻(xiàn)[5]針對(duì)這一問題提出了Dynamic Gmin,并在Ngspice仿真器中進(jìn)行了實(shí)現(xiàn),通過增加步長速率控制機(jī)制和回退機(jī)制,從而在一定程度上提高了仿真收斂性,但該方法嚴(yán)重犧牲了效率。在偽瞬態(tài)方面,文獻(xiàn)[6]提出純偽瞬態(tài)算法,并將其引入高級(jí)統(tǒng)計(jì)分析程序模擬器中進(jìn)行直流分析。隨后文獻(xiàn)[7]從偽元件的角度提出了復(fù)合器件偽瞬態(tài)算法(CEPTA)。該方法通過使用由偽電容和時(shí)變電阻串聯(lián)以及偽電感和時(shí)變電導(dǎo)并聯(lián)組成的復(fù)合偽元件,從而很好地消除了振蕩問題。隨后文獻(xiàn)[8]針對(duì)復(fù)合器件偽瞬態(tài)算法又提出了一種新的在SPICE中的實(shí)現(xiàn)方式以及新的偽元器件的嵌入方式,從而進(jìn)一步提升了復(fù)合器件偽瞬態(tài)算法的收斂性。除此之外,文獻(xiàn)[9]從數(shù)值積分的角度提出了一種新的阻尼偽瞬態(tài)算法(DPTA)。該方法通過人為的擴(kuò)大數(shù)值積分公式中的阻尼效應(yīng),從而很好地解決了振蕩問題。隨后文獻(xiàn)[10]又將一種傾斜算法(Ramping Algorithm)引入到阻尼偽瞬態(tài)算法中,在該方法中獨(dú)立電壓源不再接入偽電感,而是通過傾斜函數(shù)從零逐漸上升到最終值,進(jìn)一步提升了收斂性。雖然上述優(yōu)化后的偽瞬態(tài)算法都進(jìn)一步提升了收斂性,并取得了很好的效果,但偽瞬態(tài)法的計(jì)算依舊相對(duì)耗時(shí),且計(jì)算效率高度依賴于參數(shù)選擇的問題仍舊沒有得到解決。和上述兩種算法相比,同倫法是一種全局收斂的方法,因此也獲得了學(xué)者的廣泛關(guān)注,但是由于同倫法在實(shí)現(xiàn)上非常依賴器件模型,且計(jì)算量過于龐大,因此在商用仿真器中并沒有得到廣泛應(yīng)用[8]。
針對(duì)現(xiàn)有直流延拓算法中收斂性和仿真效率不能很好平衡的問題,筆者提出了一種名為偽瞬態(tài)(PsEudo Transient Analysis,PETA)-Gmin的混合延拓算法。該方法將偽瞬態(tài)的求解過程結(jié)合到Gmin步進(jìn)法的迭代過程中,從而確保節(jié)點(diǎn)電壓可以逐漸達(dá)到穩(wěn)態(tài),以此來避免Gmin步進(jìn)法因解曲線不連續(xù)而收斂失敗的情況發(fā)生,同時(shí)通過Gmin的快速步進(jìn)來確保高效的仿真速率。通過在商業(yè)仿真器中對(duì)該方法進(jìn)行實(shí)現(xiàn),并對(duì)工業(yè)界大規(guī)模晶體管電路進(jìn)行仿真,驗(yàn)證了該方法在顯著改善Gmin步進(jìn)法收斂性的同時(shí),也保證了高效的仿真速率。
通過對(duì)6個(gè)小規(guī)模的全氧半場效晶體管(Metal-Oxide-Semiconductor field-effect transistor,MOS)或雙極結(jié)型晶體管(Bipolar Junction Transistor,BJT)電路進(jìn)行測試,驗(yàn)證了上文中存在的問題,如表1所示。表1中Diag是SPICE3f5仿真器中的Diagonal Gmin步進(jìn)法,而Dynamic則是Dynamic Gmin步進(jìn)法,且gminfactor設(shè)置為1.5。偽瞬態(tài)為最新的Ramping 偽瞬態(tài)算法。而BJT、Mos、Dev分別代表著電路中的所含的雙極結(jié)型晶體管、金氧半場效晶體管的數(shù)量以及總器件數(shù)。failed代表著收斂失敗,而其他數(shù)字代表著收斂成功所使用的總牛頓-拉夫森迭代次數(shù)。
通過觀察可以發(fā)現(xiàn),Diagonal Gmin憑借著快速步進(jìn)擁有著最優(yōu)的仿真速率,但收斂性卻是最差的。Dynamic Gmin雖然通過步長速率控制機(jī)制和回退機(jī)制在一定程度上提高了收斂性,但卻大大犧牲了收斂效率,甚至在某些情況下,如hussamp和D1,即使依靠步長回退也無法正常收斂。而PTA偽瞬態(tài)在3種方法中收斂性是最好的。
隨后為了進(jìn)一步驗(yàn)證Digaonal Gmin和偽瞬態(tài)算法的仿真效率,對(duì)87個(gè)MOS或BJT電路(包含38個(gè)基準(zhǔn)電路[1])進(jìn)行了測試,其中有52個(gè)電路在兩種算法下均可以成功收斂。而其收斂的加速比(偽瞬態(tài)算法所消耗的總牛頓-拉夫森迭代次數(shù)/Gmin所消耗的總牛頓-拉夫森迭代次數(shù))如圖1所示。
通過觀察可以發(fā)現(xiàn),大多數(shù)電路在Gmin步進(jìn)法下?lián)碛懈玫姆抡嫘?,其平?最大)加速比可以達(dá)到2.13倍(10.95倍)。對(duì)于偽瞬態(tài)算法,盡管已經(jīng)通過各種方法來提高它的仿真速率,但仍只有在非常優(yōu)秀的參數(shù)下,才可以達(dá)到和Gmin相似的速率。因此就目前來說,在直流仿真領(lǐng)域,仍未找到一個(gè)足夠高效且魯棒的算法。
傳統(tǒng)的Diagonal Gmin步進(jìn)法是在原始電路中插入線性可變電導(dǎo),從而將原始電路轉(zhuǎn)變?yōu)橐子谇蠼獾男码娐?,隨后對(duì)其進(jìn)行仿真,并將本次收斂的值作為下次求解的初值。雖然快速步進(jìn)使得該方法具有非常優(yōu)秀的仿真效率,但是該方法也常常因?yàn)榻馇€不連續(xù)而收斂失敗。
解曲線的不連續(xù)大致分為5種情況,如圖2所示。
(1) 巨大增益:通常由正反饋環(huán)路所帶來的回路增益所導(dǎo)致的[13]。
(2) 分叉:通常是在電路和初始起點(diǎn)完全對(duì)稱時(shí)所產(chǎn)生的[4]。
(3) 簡單不連續(xù):通常情況下由模型等式所引起[4]。
(4) 折疊:通常情況下由電路特性導(dǎo)致的,如在某些Gmin迭代步中含有多個(gè)解[13]。
(5) 奇點(diǎn):當(dāng)求解電路存在雙穩(wěn)態(tài)或多穩(wěn)態(tài)時(shí),可能導(dǎo)致解曲線出現(xiàn)奇點(diǎn)[14]。
當(dāng)仿真過程中發(fā)生上述5種情況之一或其組合時(shí),即使采取非常小的步長,也不能保證在使用上一步的解作為初值的前提下,當(dāng)前步能夠正常收斂。而之所以收斂失敗是因?yàn)榕nD-拉夫森迭代的局部收斂性,即上一步的收斂解沒有落在當(dāng)前步的收斂域內(nèi)。
不同于Gmin步進(jìn)法,在使用偽瞬態(tài)算法進(jìn)行電路仿真時(shí),電路中所接的偽電容會(huì)使得節(jié)點(diǎn)電壓的變化變得相對(duì)緩慢且連續(xù),從而有效消除了解曲線不連續(xù)所帶來的惡劣影響。雖然偽瞬態(tài)算法可以解決各種類型的解曲線不連續(xù)的問題,但其效率也因?yàn)樗迦氲膫坞娙荻兴陆?。此外,偽瞬態(tài)算法的仿真效率在很大程度上依賴于參數(shù)選擇的問題也從未得到過有效解決。
根據(jù)上述算法的優(yōu)勢與不足,構(gòu)造了一個(gè)新的延拓算法并命名為PETA-Gmin。該算法對(duì)應(yīng)的方程在電路上的反映為將線性可變電導(dǎo)和偽電容并聯(lián)插入原始電路中以形成一個(gè)新電路。此外,在方程中線性可變電導(dǎo)用G或GR(λ)來表示,偽電容用C和Gc(t)來表示。與此同時(shí),在執(zhí)行PETA過程時(shí),為了避免電容和電感同時(shí)接入電路所帶來的振蕩問題,將電路中的獨(dú)立電壓源以函數(shù)形式從零上升到最終值,因此獨(dú)立電壓源以及插入的器件的位置如圖3所示。
該方法從新電路的求解出發(fā),逐漸消除線性可變電導(dǎo)和偽電容對(duì)于原電路的影響直至最終消失,從而形成一個(gè)連續(xù)的求解過程。該方程可表示為
(1)
在仿真開始階段(Gmin延拓階段),將插入的偽電容的值設(shè)為0,此時(shí)連續(xù)的步進(jìn)主要由顯式參數(shù)λ主導(dǎo),以便快速降低嵌入電導(dǎo)的值從而實(shí)現(xiàn)最佳速率。此階段的連續(xù)過程可表示為
T(x,λ)=F(x)+(1-λ)Gx=0。
(2)
在該階段,連續(xù)方程的解曲線從λ=0開始追蹤,在求解過程中,可采用牛頓-拉夫森迭代對(duì)式(2)進(jìn)行求解,每個(gè)λi所對(duì)應(yīng)的牛頓-拉夫森迭代的具體求解過程,即
(3)
此時(shí),如果發(fā)生解曲線不連續(xù)的情況,如圖4所示,則即使δλ足夠小,牛頓-拉夫森迭代仍舊不能收斂。解曲線的不連續(xù)可能如圖2所示,也可能由嵌入的電導(dǎo)所致。
(4)
此時(shí),將Gc(t)(偽電容)和GR(λ)(電導(dǎo))設(shè)為Gc(t)=C/h,GR(λ)=(1-λ)G,可以在λ=λi+1和偽時(shí)間點(diǎn)t=tn+1處得到以下離散差分方程:
F(xi+1_n+1)+(GR(λi+1)+Gc)xi+1_n+1-Gcxi+1_n=0。
(5)
而對(duì)于上式中的每一步,也同樣采用牛頓-拉夫森迭代去求解,其求解過程如下:
(6)
其中,i表示解曲線不連續(xù)處的Gmin值,j表示牛頓-拉夫森迭代的迭代步。
在PETA過程中,隨著Gc的不斷減小,將逐漸接近斷點(diǎn)處的真實(shí)解,即電路可以收斂到前期Gmin部分所不能到達(dá)的λi+1處。此后,隨著λ的增加,解曲線不連續(xù)的情況很可能再次發(fā)生,此時(shí)PETA部分將再次被激活,從而形成一個(gè)動(dòng)態(tài)交替步進(jìn)過程。
上述PETA-Gmin可以有效地解決仿真過程中的解曲線不連續(xù)從而不收斂的問題。為了進(jìn)一步提高仿真效率,還對(duì)算法做了進(jìn)一步優(yōu)化,優(yōu)化后的算法流程如圖5所示。
在原算法的基礎(chǔ)上增加了Gmin回退機(jī)制,從而在一定程度上確保了Gmin延拓過程的順利進(jìn)行,提高仿真效率(單次Gmin迭代步的所消耗的牛頓-拉夫森迭代次數(shù)通常小于PETA迭代)。此外,還限制了Gmin回退的最大次數(shù),當(dāng)解曲線不連續(xù)的情況發(fā)生時(shí),多次回退并不能使得當(dāng)前步成功收斂。為了提高仿真效率,減少不必要的時(shí)間浪費(fèi),將直接調(diào)用PETA來繼續(xù)求解。其原因在于仿真的根本目的在于成功求得直流工作點(diǎn),而并非確認(rèn)解曲線是否連續(xù)。
將所提的算法與Gmin步進(jìn)法和Ramping 偽瞬態(tài)算法進(jìn)行了比較。其中收斂性和仿真效率通過仿真消耗的總的牛頓-拉夫森迭代次數(shù)和CPU時(shí)間來進(jìn)行對(duì)比。PETA-Gmin算法通過C++語言在商業(yè)仿真器中實(shí)現(xiàn),并通過工業(yè)界中的大規(guī)模晶體管電路對(duì)該算法的性能進(jìn)行了驗(yàn)證。所有測試均在擁有2.6 GHz Intel(R) Xeon(R) CPU和512 GB主內(nèi)存的Linux工作站執(zhí)行。
首先,通過一個(gè)簡單的基準(zhǔn)電路MOSRECT對(duì)所提算法PETA-Gmin(此處PETA-Gmin并未使用優(yōu)化后的算法,僅僅是在不連續(xù)處激活PETA步)的收斂性進(jìn)行了驗(yàn)證。該電路共有11個(gè)元器件,其中包括4個(gè)MOS管。如圖6所示,在實(shí)驗(yàn)中,該電路在Gmin值為1e-8處可以正常收斂,而在Gmin值為1e-9處收斂失敗,此時(shí)無論怎樣進(jìn)行步長回退,甚至Gmin值回退到9.999 1e-9(δGmin小于1e-12),該電路依舊無法收斂。隨后采用PETA-Gmin對(duì)其進(jìn)行仿真,該電路成功收斂,共消耗615次牛頓-拉夫森迭代,其中PETA過程共用了56步。其解曲線如圖7所示。實(shí)驗(yàn)結(jié)果表明,所提算法可以顯著改善Gmin步進(jìn)法中的解曲線不連續(xù)。
為了進(jìn)一步驗(yàn)證PETA-Gmin的性能,對(duì)14個(gè)來自工業(yè)界的大規(guī)模電路進(jìn)行了測試,并和Ramping 偽瞬態(tài)算法的性能進(jìn)行了對(duì)比,電路的規(guī)模如表2所示。表2中BJT、MOS分別代表著電路中所含該類器件的數(shù)量,Dev代表著電路中的所有器件的個(gè)數(shù)。
表2 14個(gè)工業(yè)界中大規(guī)模晶體管電路的規(guī)模
這14個(gè)電路在Gmin步進(jìn)法下都無法正常的收斂,但在PETA-Gmin和Ramping 偽瞬態(tài)算法下都可以正常收斂。其中PETA-Gmin和Ramping 偽瞬態(tài)算法所消耗的總牛頓-拉夫森迭代次數(shù)和CPU時(shí)間如圖8和圖9所示。
通過比較可以發(fā)現(xiàn),在牛頓-拉夫森迭代次數(shù)方面PETA-Gmin最多可以減少12 601次,平均減小3 870次。其牛頓-拉夫森迭代的加速比最高可達(dá)4.89,平均可達(dá)2.57。而從CPU時(shí)間的層面來看,相對(duì)于Ramping 偽瞬態(tài)算法,PETA-Gmin最多可以減少7 452.47 s,其CPU時(shí)間的加速比最高可達(dá)5.59,平均可達(dá)2.48。此外,需要注意的是,消耗的CPU時(shí)間不僅和消耗的牛頓-拉夫森迭代次數(shù)有關(guān),也和電路的規(guī)模有關(guān)。
總的來說,和Gmin步進(jìn)法相比,筆者提出的PETA-Gmin算法有效解決了Gmin步進(jìn)法收斂困難的問題,顯著提高了Gmin算法的收斂性;與此同時(shí),PETA-Gmin算法也具有出色的效率,并且優(yōu)于目前應(yīng)用最為廣泛的且最新的Ramping 偽瞬態(tài)算法。實(shí)驗(yàn)結(jié)果表明,PETA-Gmin是一個(gè)高效且魯棒的直流混合延拓算法。
筆者提出了一種新的名為PETA-Gmin的延拓算法。該算法既包含了Gmin步進(jìn)法的高效性,又具備偽瞬態(tài)算法的魯棒性。此外,新提出的算法也能夠提升商用仿真器的仿真性能。通過商用仿真器對(duì)工業(yè)界的大規(guī)模電路進(jìn)行了測試,這些電路在Gmin步進(jìn)法下無法正常收斂,而PETA-Gmin不僅可以成功計(jì)算出電路的直流工作點(diǎn),其效率也比最新的偽瞬態(tài)方法平均提高了2.57倍。今后,希望通過進(jìn)一步優(yōu)化PETA的延拓過程,從而使得求解過程變得更加平滑且高效。