以下图为例,
该电路的解或者工作点即负载线与diode IV 曲线的交点,
其中负载线电流方程为
Diode 电流方程为
在工作点处,
因为diode的方程是一个非线性方程, 直接计算几乎不可能.
Newton-Raphson迭代算法可以用来求解以上非线性方程.
其原理大致如下图所示,
首先从\_Vd1\_开始(First-guess), 在Vd1处对Diode I-V曲线进行线性化,
其中
**Geq1即Vd1**处的斜率.
重新整理***Idlin1***的方程可得,
其中
I\_\_dlin1*即上图所示红色直线的表达式, 当其于负载线相交时, 可以发现其交点与工作点还不够接近. 但可以得到**Vd2**的值,然后再对Diode IV 曲线在***Vd2***处进行与**Vd1**一样的线性化操作,即得到上图所示的蓝色直线, 蓝色直线与负载线的交点比上一个交点离工作点更近, 但还不是工作点, 可以在第二个交点处(即***Vd3**)对Diode IV曲线再次进行线性化, 预期第三个交点比第二个交点更接近工作点.
随着迭代次数的增多, 线性化直线与负载线的交点会越来越接近工作点的\_Vd\_. 如果不受控制, 该迭代过程会一直进行下去. 即该迭代过程不会收敛.
一般模拟仿真器会定义reltol/abstol等tolerance选项来控制迭代过程.
其中SPECTRE 系列等模拟仿真器判断Newton迭代收敛会依据以下三个判据,
不同的仿真类型会有区别. 且通常会有更多的判断条件, 这里仅举例说明.
第一个判据即判断第二张图片中的Sigma-I,
第二个判据即判断第二章图片中的delta-V,
第三个判据用于判断电路节点电流是否满足KCL定律.
如果以上三个判据都成立, 则收敛.
由此可以得知, 当retol/abstol 这些值设置的越小, 迭代次数就越多, 仿真时间越长, 得到的结果越准确, 不收敛的可能性就越高. 反之, 则仿真时间越短, 结果可能不准确, 收敛的可能性越大.
从以上的迭代过程可以看出, 初值\_Vd1\_的选取很关键, 仿真器会自动选择, 如果选的不好, 会很难收敛或者不收敛. 比如在实际多corner仿真时, 会遇到某些corner不收敛, 某些corner收敛的情况, 其中不收敛的点有可能时初值选的不好, 那么可以尝试使用readns等选项去调用已收敛点的解当作初值来进行当前不收敛corner的仿真.
但在实际使用SPECTRE系列仿真器仿真时, 大多数情况下, 并不需要去改动这些值.
一般仅需根据电路类型以及预期的结果等, 在每一个Analysis类型errpreset当中选择conservative/moderate/liberal即可. 即高精度/中等精度/低精度.
实际电路仿真过程中, 仅靠Newton Method是很难收敛的, 比如当某个方程不可微分时, 迭代就进行不下去.
像DC的仿真的化还需要Continuation Method, 即在spectre.out里面会看到的homotopy.
homotopy有6个值, 即none/gmin/source/dptran/ptran/all. 默认是gmin, 如果gmin stepping fails, 则使用source, 如果还是fails, 则使用 dptran, 直到ptran.
如果是设置成all的话, 是从Newton->gmin->source->dptran->ptran这个顺序仿真直到收敛.
gmin Stepping的意思是在仿真开始时会给所有非线性器件并联一个1Ohm的电阻使得电路线性化, 从而仿真器更容易计算电压值. 如果不收敛, gmin会一直降低直到1mOhm. 如果还不收敛, 则gmin Stepping fails. 如果收敛, 仿真器会逐次增加该电阻值, 并使用上一次Stepping的结果当作当前Stepping的初始值. 每一次Stepping的迭代次数时自适应的, 会根据当前插入的电阻值以及iteration limit自动调整. 每一次stepping都收敛的化, spectre 仿真器会一直stepping到gmin设定的值(默认1e-12).
所以某些情况下, 降低gmin, 可以提高DC仿真的精度. 提高gmin, 能让DC更容易收敛. 但是大多数情况下不建议修改.
Source Stepping 即按阶段"powering up" 电路. 所以的电压源会乘上一个常数, 然后该常数逐次下降直到收敛.
PseudoTransient Ramping即dptran和ptran, 这种方法会给每一个非线性器件并联一个1 Farad的电容, 然后pseudo-time is swept to infinity直到收敛. 如果电路因为添加的电容震荡, 则该方法失败.
以上homotopy 属于翻译内容, 仅供参考.
原文介绍请参考spectre user guide.
另外一方面, 当前的SPECTRE APS/X 等仿真器对以上内容的设置基本上都是自动化的. 大多数情况, 只需选择conservative/moderate/liberal或者
CX/AX/MX/LX/VX在设置上多线程的数量或者自动多线程即可.
如需了解更多这方面的内容, 可以参考SPECTRE USER GUIDE 或者搜索Newton Raphson method/ Modified Nodal Analysis/Non-Linear DC Analysis等.
参考资料:
- THE DESIGNER'S GUIDE TO SPICE AND SPECTRE
- Companion Models for Basic Non-Linear and Transient Devices
http://dev.hypertriton.com/ed... - NON-LINEAR DC ANALYSIS
http://www.ecircuitcenter.com... - Spectre Classic Simulator, Spectre APS, Spectre X, and Spectre XPS User Guide 19.1
作者:Zeng Yi
原文链接:https://mp.weixin.qq.com/s/Fb7cz9YeFYYMQUvIh5NtiA
作者微信公众号
相关文章推荐
更多IC设计技术干货请关注IC设计技术专栏。