Pspice时域仿真不收敛问题
Pspice时域仿真不收敛问题
最近做的大创项目需要用到Pspice仿真,用的是Cadence 17.4。在遇到仿真不收敛的问题时,查阅搜索相关资料很少有给出详细的解决方法,基本上都是询问怎么解决,所以在这里系统的介绍Pspice仿真收敛问题来由和解决方法。(只看解决方法在文末图片)
产生不收敛问题的原因
仿真的原理是软件在分析仿真电路时,是通过求解电流电压转换而来的方程组得到相关数据的。
这些方程组分为线性方程组和非线性方程组。线性方程组可以采用直接消元法、高斯消元法和分解法等,非线性方程组多种的使用迭代法,而迭代法不可避免的会产生不收敛的问题。(说白了就是算不出来)
以PSpice中使用最普遍的牛顿-拉夫逊(N-R)迭代法为例来说明。对于某一非线性方程,f(x)=0,N-R迭代关系式为:
x k + 1 = x k − f ( x ) f ‘ ( x ) x^{k+1}=x^k-\frac{f(x)}{f^‘(x)} xk+1=xk−f‘(x)f(x)
当给定一个恰当迭代初值x0,代入式(1)进行迭代,产生一个迭代序列 x k + 1 {x^{k+1}} xk+1,直到 x k + 1 x^{k+1} xk+1和 x k x^k xk之间差的绝对值小于某个给定的允许误差ε为止。N-R迭代过程的几何解释如图l所示,首次迭代时k=0,xk=x0即为迭代初值,由x0求x1,再x1求x2,„,得到序列|xk+1|,最后收敛于真值x*。判断迭代结束的依据是2次x值之间的差小于给定误差ε,或者是迭代次数超过规定的最大迭代次数。由此可见,迭代过程出现不收敛的情况有以下几类:一是初值选取不恰当,如图1所示,若将迭代初值选为x',则迭代收敛于x的概率就很低;二是迭代次数过长,如果规定的迭代次数为30次,但是实际迭代30次时还未到达真值x,迭代被迫中止,也同样造成不收敛;三是规定的误差精度过高,也同样会造成迭代次数溢出,造成不收敛。要消除不收敛情况就必须从这3类情况入手。
详细内容在这里
不收敛问题的解决方法
不收敛问题的一般报错:
ERROR(ORPSIM-15138): Convergence problem in transient analysis at Time = 116.4E-21. Time step = 116.4E-21, minimum allowable step size = 1.000E-18
就是在计算时迭代还没有达到计算的精度要求,但是步长已经小于要求的最小步长了,所以计算不出来。
在遇到不收敛问题的时候,一般需要修改的参数有:步长Maximum Step Size
、电压精度VNTOL
、电流精度ANSTOL
、一次迭代上限ITL4
,参数具体含义如下:
ITL1:在DC分析和偏置点计算时以随机方式进行迭代次数上限,内定值为150;
ITL2:在DC分析和偏置点计算时根据以往情况选择初值进行的迭代次数上限,内定值为20;
ITL4:瞬态分析中任一点的迭代次数上限,注意,在SPice程序中有ITL3任选项,PSpice软件中则未采用ITL3,内定值为10;
RELTOL:设置计算电压和电流时的相对精度,内定值为0.001%;
VNTOL:设置计算电压时的精度,内定值为1.0μV;
ABSTOL:设置计算电流时的精度,内定值为1.0pA;
Maximum Step Size:步长决定了仿真点的密集程度,需要自己设置
遇到仿真问题时调整的思路:首先调节ITL4
把单次能够迭代的次数提升,一般改成1000,然后增大步长或者减小电流电压精度。
电流电压精度和最大步长是相互制约的,要求步长足够小就可能不能保证精度;相反如果要求精度过高,就难以保证步长。
上箭头调大,下箭头调小