金 洲,劉 毅,裴浩杰,馮 田,段懿洳,周振亞
(1.中國石油大學(北京) 信息科學與工程學院,北京 102249;(2.北京華大九天軟件有限公司,北京 100102)
在晶體管級電路仿真中,直流分析(計算非線性電路的直流工作點)是最重要的任務之一[1-2]。在直流分析中,牛頓-拉夫森(Newton-Raphson)迭代因其具有二階收斂性而廣泛應用于集成電路仿真程序(Simulation Program with Integrated Circuit Emphasis,SPICE)[3]及類SPICE仿真器當中。然而牛頓-拉夫森迭代常常會因為初始解和真實解不足夠接近而導致收斂失敗[3]。為此,一系列用于改善直流收斂性的延拓算法被提出并獲得了廣泛關注,其中主要包括Gmin步進法[4-5]、偽瞬態法[6-12](Pseudo Transient Analysis,PTA)和同倫法[13-17]等。
隨著深亞微米工藝的發展,集成電路的規模與復雜度不斷增加,仿真器中現有方法的仿真性能(收斂性、仿真效率)都不能真正做到令人滿意[18-19],因此對直流延拓算法的仿真性能的進一步優化就顯得尤為重要。國內外學者在上述延拓算法的基礎上進行了許多更加深入的研究。傳統的Gmin步進法稱作Diagonal Gmin,其仿真效率高,但收斂性較差[14]。文獻[5]針對這一問題提出了Dynamic Gmin,并在Ngspice仿真器中進行了實現,通過增加步長速率控制機制和回退機制,從而在一定程度上提高了仿真收斂性,但該方法嚴重犧牲了效率。在偽瞬態方面,文獻[6]提出純偽瞬態算法,并將其引入高級統計分析程序模擬器中進行直流分析。隨后文獻[7]從偽元件的角度提出了復合器件偽瞬態算法(CEPTA)。該方法通過使用由偽電容和時變電阻串聯以及偽電感和時變電導并聯組成的復合偽元件,從而很好地消除了振蕩問題。隨后文獻[8]針對復合器件偽瞬態算法又提出了一種新的在SPICE中的實現方式以及新的偽元器件的嵌入方式,從而進一步提升了復合器件偽瞬態算法的收斂性。除此之外,文獻[9]從數值積分的角度提出了一種新的阻尼偽瞬態算法(DPTA)。該方法通過人為的擴大數值積分公式中的阻尼效應,從而很好地解決了振蕩問題。隨后文獻[10]又將一種傾斜算法(Ramping Algorithm)引入到阻尼偽瞬態算法中,在該方法中獨立電壓源不再接入偽電感,而是通過傾斜函數從零逐漸上升到最終值,進一步提升了收斂性。雖然上述優化后的偽瞬態算法都進一步提升了收斂性,并取得了很好的效果,但偽瞬態法的計算依舊相對耗時,且計算效率高度依賴于參數選擇的問題仍舊沒有得到解決。和上述兩種算法相比,同倫法是一種全局收斂的方法,因此也獲得了學者的廣泛關注,但是由于同倫法在實現上非常依賴器件模型,且計算量過于龐大,因此在商用仿真器中并沒有得到廣泛應用[8]。
針對現有直流延拓算法中收斂性和仿真效率不能很好平衡的問題,筆者提出了一種名為偽瞬態(PsEudo Transient Analysis,PETA)-Gmin的混合延拓算法。該方法將偽瞬態的求解過程結合到Gmin步進法的迭代過程中,從而確保節點電壓可以逐漸達到穩態,以此來避免Gmin步進法因解曲線不連續而收斂失敗的情況發生,同時通過Gmin的快速步進來確保高效的仿真速率。通過在商業仿真器中對該方法進行實現,并對工業界大規模晶體管電路進行仿真,驗證了該方法在顯著改善Gmin步進法收斂性的同時,也保證了高效的仿真速率。
通過對6個小規模的全氧半場效晶體管(Metal-Oxide-Semiconductor field-effect transistor,MOS)或雙極結型晶體管(Bipolar Junction Transistor,BJT)電路進行測試,驗證了上文中存在的問題,如表1所示。表1中Diag是SPICE3f5仿真器中的Diagonal Gmin步進法,而Dynamic則是Dynamic Gmin步進法,且gminfactor設置為1.5。偽瞬態為最新的Ramping 偽瞬態算法。而BJT、Mos、Dev分別代表著電路中的所含的雙極結型晶體管、金氧半場效晶體管的數量以及總器件數。failed代表著收斂失敗,而其他數字代表著收斂成功所使用的總牛頓-拉夫森迭代次數。
通過觀察可以發現,Diagonal Gmin憑借著快速步進擁有著最優的仿真速率,但收斂性卻是最差的。Dynamic Gmin雖然通過步長速率控制機制和回退機制在一定程度上提高了收斂性,但卻大大犧牲了收斂效率,甚至在某些情況下,如hussamp和D1,即使依靠步長回退也無法正常收斂。而PTA偽瞬態在3種方法中收斂性是最好的。
隨后為了進一步驗證Digaonal Gmin和偽瞬態算法的仿真效率,對87個MOS或BJT電路(包含38個基準電路[1])進行了測試,其中有52個電路在兩種算法下均可以成功收斂。而其收斂的加速比(偽瞬態算法所消耗的總牛頓-拉夫森迭代次數/Gmin所消耗的總牛頓-拉夫森迭代次數)如圖1所示。
通過觀察可以發現,大多數電路在Gmin步進法下擁有更好的仿真效率,其平均(最大)加速比可以達到2.13倍(10.95倍)。對于偽瞬態算法,盡管已經通過各種方法來提高它的仿真速率,但仍只有在非常優秀的參數下,才可以達到和Gmin相似的速率。因此就目前來說,在直流仿真領域,仍未找到一個足夠高效且魯棒的算法。
傳統的Diagonal Gmin步進法是在原始電路中插入線性可變電導,從而將原始電路轉變為易于求解的新電路,隨后對其進行仿真,并將本次收斂的值作為下次求解的初值。雖然快速步進使得該方法具有非常優秀的仿真效率,但是該方法也常常因為解曲線不連續而收斂失敗。
解曲線的不連續大致分為5種情況,如圖2所示。
(1) 巨大增益:通常由正反饋環路所帶來的回路增益所導致的[13]。
(2) 分叉:通常是在電路和初始起點完全對稱時所產生的[4]。
(3) 簡單不連續:通常情況下由模型等式所引起[4]。
(4) 折疊:通常情況下由電路特性導致的,如在某些Gmin迭代步中含有多個解[13]。
(5) 奇點:當求解電路存在雙穩態或多穩態時,可能導致解曲線出現奇點[14]。
當仿真過程中發生上述5種情況之一或其組合時,即使采取非常小的步長,也不能保證在使用上一步的解作為初值的前提下,當前步能夠正常收斂。而之所以收斂失敗是因為牛頓-拉夫森迭代的局部收斂性,即上一步的收斂解沒有落在當前步的收斂域內。
不同于Gmin步進法,在使用偽瞬態算法進行電路仿真時,電路中所接的偽電容會使得節點電壓的變化變得相對緩慢且連續,從而有效消除了解曲線不連續所帶來的惡劣影響。雖然偽瞬態算法可以解決各種類型的解曲線不連續的問題,但其效率也因為所插入的偽電容而有所下降。此外,偽瞬態算法的仿真效率在很大程度上依賴于參數選擇的問題也從未得到過有效解決。
根據上述算法的優勢與不足,構造了一個新的延拓算法并命名為PETA-Gmin。該算法對應的方程在電路上的反映為將線性可變電導和偽電容并聯插入原始電路中以形成一個新電路。此外,在方程中線性可變電導用G或GR(λ)來表示,偽電容用C和Gc(t)來表示。與此同時,在執行PETA過程時,為了避免電容和電感同時接入電路所帶來的振蕩問題,將電路中的獨立電壓源以函數形式從零上升到最終值,因此獨立電壓源以及插入的器件的位置如圖3所示。
該方法從新電路的求解出發,逐漸消除線性可變電導和偽電容對于原電路的影響直至最終消失,從而形成一個連續的求解過程。該方程可表示為
(1)

在仿真開始階段(Gmin延拓階段),將插入的偽電容的值設為0,此時連續的步進主要由顯式參數λ主導,以便快速降低嵌入電導的值從而實現最佳速率。此階段的連續過程可表示為
T(x,λ)=F(x)+(1-λ)Gx=0。
(2)
在該階段,連續方程的解曲線從λ=0開始追蹤,在求解過程中,可采用牛頓-拉夫森迭代對式(2)進行求解,每個λi所對應的牛頓-拉夫森迭代的具體求解過程,即
(3)

此時,如果發生解曲線不連續的情況,如圖4所示,則即使δλ足夠小,牛頓-拉夫森迭代仍舊不能收斂。解曲線的不連續可能如圖2所示,也可能由嵌入的電導所致。

(4)
此時,將Gc(t)(偽電容)和GR(λ)(電導)設為Gc(t)=C/h,GR(λ)=(1-λ)G,可以在λ=λi+1和偽時間點t=tn+1處得到以下離散差分方程:
F(xi+1_n+1)+(GR(λi+1)+Gc)xi+1_n+1-Gcxi+1_n=0。
(5)
而對于上式中的每一步,也同樣采用牛頓-拉夫森迭代去求解,其求解過程如下:
(6)
其中,i表示解曲線不連續處的Gmin值,j表示牛頓-拉夫森迭代的迭代步。

在PETA過程中,隨著Gc的不斷減小,將逐漸接近斷點處的真實解,即電路可以收斂到前期Gmin部分所不能到達的λi+1處。此后,隨著λ的增加,解曲線不連續的情況很可能再次發生,此時PETA部分將再次被激活,從而形成一個動態交替步進過程。
上述PETA-Gmin可以有效地解決仿真過程中的解曲線不連續從而不收斂的問題。為了進一步提高仿真效率,還對算法做了進一步優化,優化后的算法流程如圖5所示。
在原算法的基礎上增加了Gmin回退機制,從而在一定程度上確保了Gmin延拓過程的順利進行,提高仿真效率(單次Gmin迭代步的所消耗的牛頓-拉夫森迭代次數通常小于PETA迭代)。此外,還限制了Gmin回退的最大次數,當解曲線不連續的情況發生時,多次回退并不能使得當前步成功收斂。為了提高仿真效率,減少不必要的時間浪費,將直接調用PETA來繼續求解。其原因在于仿真的根本目的在于成功求得直流工作點,而并非確認解曲線是否連續。
將所提的算法與Gmin步進法和Ramping 偽瞬態算法進行了比較。其中收斂性和仿真效率通過仿真消耗的總的牛頓-拉夫森迭代次數和CPU時間來進行對比。PETA-Gmin算法通過C++語言在商業仿真器中實現,并通過工業界中的大規模晶體管電路對該算法的性能進行了驗證。所有測試均在擁有2.6 GHz Intel(R) Xeon(R) CPU和512 GB主內存的Linux工作站執行。
首先,通過一個簡單的基準電路MOSRECT對所提算法PETA-Gmin(此處PETA-Gmin并未使用優化后的算法,僅僅是在不連續處激活PETA步)的收斂性進行了驗證。該電路共有11個元器件,其中包括4個MOS管。如圖6所示,在實驗中,該電路在Gmin值為1e-8處可以正常收斂,而在Gmin值為1e-9處收斂失敗,此時無論怎樣進行步長回退,甚至Gmin值回退到9.999 1e-9(δGmin小于1e-12),該電路依舊無法收斂。隨后采用PETA-Gmin對其進行仿真,該電路成功收斂,共消耗615次牛頓-拉夫森迭代,其中PETA過程共用了56步。其解曲線如圖7所示。實驗結果表明,所提算法可以顯著改善Gmin步進法中的解曲線不連續。
為了進一步驗證PETA-Gmin的性能,對14個來自工業界的大規模電路進行了測試,并和Ramping 偽瞬態算法的性能進行了對比,電路的規模如表2所示。表2中BJT、MOS分別代表著電路中所含該類器件的數量,Dev代表著電路中的所有器件的個數。

表2 14個工業界中大規模晶體管電路的規模
這14個電路在Gmin步進法下都無法正常的收斂,但在PETA-Gmin和Ramping 偽瞬態算法下都可以正常收斂。其中PETA-Gmin和Ramping 偽瞬態算法所消耗的總牛頓-拉夫森迭代次數和CPU時間如圖8和圖9所示。
通過比較可以發現,在牛頓-拉夫森迭代次數方面PETA-Gmin最多可以減少12 601次,平均減小3 870次。其牛頓-拉夫森迭代的加速比最高可達4.89,平均可達2.57。而從CPU時間的層面來看,相對于Ramping 偽瞬態算法,PETA-Gmin最多可以減少7 452.47 s,其CPU時間的加速比最高可達5.59,平均可達2.48。此外,需要注意的是,消耗的CPU時間不僅和消耗的牛頓-拉夫森迭代次數有關,也和電路的規模有關。
總的來說,和Gmin步進法相比,筆者提出的PETA-Gmin算法有效解決了Gmin步進法收斂困難的問題,顯著提高了Gmin算法的收斂性;與此同時,PETA-Gmin算法也具有出色的效率,并且優于目前應用最為廣泛的且最新的Ramping 偽瞬態算法。實驗結果表明,PETA-Gmin是一個高效且魯棒的直流混合延拓算法。
筆者提出了一種新的名為PETA-Gmin的延拓算法。該算法既包含了Gmin步進法的高效性,又具備偽瞬態算法的魯棒性。此外,新提出的算法也能夠提升商用仿真器的仿真性能。通過商用仿真器對工業界的大規模電路進行了測試,這些電路在Gmin步進法下無法正常收斂,而PETA-Gmin不僅可以成功計算出電路的直流工作點,其效率也比最新的偽瞬態方法平均提高了2.57倍。今后,希望通過進一步優化PETA的延拓過程,從而使得求解過程變得更加平滑且高效。