spectre仿真不收斂的應對方法


<<Designers Guide to Spice and Spectre>> 
為什么要讀這本書? 
① 該書是介於算法和教你如何操作軟件之間的一本書,可以幫助你更好的使用Simulator的設置。 
② Simulator仿出的結果可靠不?精確不?是否收斂?應該如何處理,如何設置? 
③ 讀完這本書,你應該會: 
1) Simulator如何計算結果? 
2) Simulator會產生何種錯誤?如何識別? 
3) 如何提高仿真精度? 
4) 如何克服不收斂的情況? 
5) 對於一些特殊電路,會產生什么錯誤?如何識別? 
6) 明白仿真器里設置convergence,error control的一些重要參數 
7) 能知道仿真器的錯誤信息出在什么地方,如何解決? 
  
  
DC分析 
1. DC解的個數和特性 
① 電路的DC解可能不止一個 
② 仿真器沒法自動判斷解的穩定性,因此得到的解可能是穩定的,也可能是不穩定的 
2. DC分析中,收斂最重要,其次是精度(因為只要收斂,一般精度夠) 
3. 現代電路軟件組織方程組的方法:modern nodal analysis(節點分析方法) 
4. 求解非線性方程的收斂准則 
① 牛頓更新收斂准則(update convergence criteria) 
()()1,maxkknnnvvreltolvvabstol&#8722;&#8722;<&#8901;+ 
這里()()()1,maxmax,kknnvvv&#8722;= 
② 牛頓殘余收斂准則(residue convergence criteria) 
()(),maxknnfvreltolfiabstol<&#8901;+ 
一般reltol=10-3, vabstol=1uV, iabstol=1pA 
這里,兩個准則都是必需的。如果節點阻抗低,則小電壓引起大電流,因此殘余收斂准則(處理的是電流)起作用;如果節點阻抗高,則小電流引起大電壓,因此更新收斂准則(處理的是電壓)起作用。 
5. 牛頓迭代收斂的3個條件(這3個條件任何一條都可能不滿足) 
( &#8901; )連續可微;V(0)充分接近於V(×);解V(×)是惟一的 
6. 大電路收斂更困難 
7. 3大問題:解不唯一(不止一個解),解不收斂(找不到解),解不精確。后面逐一尋找。 
① 解不惟一:Nodeset,Nodeforce(initial condition被用在nodeforce中),這里用到rforce。設置Gmin 
② 解不收斂:使用nodesets;增加Gmin,iabstol,vabstol,reltol;增加迭代次數Maxiters;使用homotopy方法。 
③ 解不精確:減小Gmin(可以設為0),減小reltol,iabstol,vabstol 
8. 解不惟一 &#8658; Jacobi matrix奇異,沒法迭代 
由於器件模型或者電路參數造成的解不惟一,spectre沒辦法查出來;由於拓撲結構造成的可以查出來。 
9. 解不惟一如何解決?&#8658; Nodeset,Nodeforce(initial condition被用在nodeforce中) 
④ Nodeset對DC和Transient都有作用,Nodeforce僅對DC有作用 
⑤ Nodeset僅作為收斂輔助用,如果電路有惟一解,它不影響該解的唯一性。而Nodeforce直接作為解在該節點的值,因此直接破壞了解的惟一性。事實上, 
Nodeforce產生的解是非平衡的。Nodeset產生的是平衡的。 
10. gmin的作用:將非線性器件的端子上並聯gmin的電阻,使得解唯一(讓Jacobi距陣非奇異)。對於浮空節點,spectre自動將該節點連接電阻gmin到地。默認情況下gmin=1e-12 Ω-1 
rforce的作用:對於nodeforce,nodesets,initial condition里面設置的電壓,用一個理想電壓源串聯rforce然后偏置到該節點。默認情況下rforce=1 Ω 
11. 當用牛頓方法求解失敗(不收斂),改用homotopy方法(continuation方法)求解 
()(),fvλλ= ← 引入參數,讓參數從0到1變化 
幾種通用方法:source stepping/gmin stepping/pseudo stepping/dptran 
source,gmin的方法會受到不連續,折回,分叉的影響,而dptran/ptran的方法雖然連續,但是加入的電容有可能使電路振盪。 
12. DC不收斂怎么辦? 
① 解決方法:diagnose=yes;使用nodeset;增加iabstol和gmin(可能會影響精度);增加迭代次數maxiters;改變rforce;看restart=yes是否有效果;使用tran仿真來尋找DC點(請參考后面) 
② 一般來說,當DC不收斂,而且不收斂不是由於拓撲結構,元件參數等原因引起的時候,采用的方法是逐漸的DC掃描某些參數(比如說source,gmin,bf,等等),或者是采用瞬態分析(掃描時間)。也就是所謂的連續性方法。 
13. 如何改善DC的精度 
① 影響的原因2個:gmin和收斂准則: 
1) 對於某些電路,利用節點上存儲的電荷工作,節點希望它浮空,比如說電荷存儲器件,不能容忍通過gmin損失的電荷,這種情況下,應該設置gmin=0。不過這樣可能導致Jacobi距陣奇異。 
2) 牛頓殘余收斂准則針對的是KCL定律,相當於節點電流有一點的誤差,不守恆。對於高阻抗節點,即是小的電流誤差會導致很大電壓誤差 
② 解決方法:減小reltol(這是通用方法)同時保持iabstol和vabstol合理;使用nodeset;如果gmin影響則設置gmin=0 
14. restarting from a previous solution(關於restart的設置問題) 
仿真A 仿真B 
初始值1------------->初始值2----------------> 
① 如果初始值1是正確合理的,而仿真A改變了初始值1(比如說瞬態仿真),即2≠1,那么仿真B應該從1啟動,因此必需設置restart=yes。典型的例子是先仿DC,再仿Tran,再仿AC。由於Tran改變了DC的工作點,因此AC仿真就不正確了(默認從2啟動),此時再AC中要設置restart=yes(此時從1啟動) 
② 如果是掃描過程(比如說參數掃描尋找DC工作點),那么2才是合理需要的,因此仿真應該從2啟動,因此設置restart=no(默認是no) 
15. 極小的浮空電阻使得KCL不滿足(absolute convergence criteria),再spice中,沒有關於KCL的收斂准則,因此極不可靠。spectre兩個都有,可靠 

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com