微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > 微电子学习交流 > 请教一个spectre DC 仿真不收敛的问题

请教一个spectre DC 仿真不收敛的问题

时间:12-12 整理:3721RD 点击:
一个控制电路,包含一些逻辑,regulator,电源管理单元,单独仿真各个模块都没问题,合起来仿真就不收敛,小伙伴们有遇到过这种类似情况嘛?怎么解决的?谢谢。

<<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两个都有,可靠

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top