罗风 · 2021年06月17日

DC Analysis以及Newton-Raphson迭代法简介

以下图为例,

WeChat Image_20210617100857.jpg

该电路的解或者工作点即负载线与diode IV 曲线的交点,

其中负载线电流方程为

WeChat Image_20210617100928.jpg

Diode 电流方程为

WeChat Image_20210617100936.jpg

在工作点处,

WeChat Image_20210617100947.jpg

因为diode的方程是一个非线性方程, 直接计算几乎不可能.

Newton-Raphson迭代算法可以用来求解以上非线性方程.

其原理大致如下图所示,

WeChat Image_20210617100958.jpg

首先从\_Vd1\_开始(First-guess), 在Vd1处对Diode I-V曲线进行线性化,

WeChat Image_20210617101226.jpg

其中

WeChat Image_20210617101236.png

**Geq1Vd1**处的斜率.

重新整理***Idlin1***的方程可得,

WeChat Image_20210617101315.png

其中

WeChat Image_20210617101323.jpg

I\_\_dlin1*即上图所示红色直线的表达式, 当其于负载线相交时,  可以发现其交点与工作点还不够接近. 但可以得到**Vd2**的值,然后再对Diode IV 曲线在***Vd2***处进行与**Vd1**一样的线性化操作,即得到上图所示的蓝色直线, 蓝色直线与负载线的交点比上一个交点离工作点更近, 但还不是工作点, 可以在第二个交点处(即***Vd3**)对Diode IV曲线再次进行线性化, 预期第三个交点比第二个交点更接近工作点.

随着迭代次数的增多, 线性化直线与负载线的交点会越来越接近工作点的\_Vd\_. 如果不受控制, 该迭代过程会一直进行下去. 即该迭代过程不会收敛.

一般模拟仿真器会定义reltol/abstol等tolerance选项来控制迭代过程.

其中SPECTRE 系列等模拟仿真器判断Newton迭代收敛会依据以下三个判据,

WeChat Image_20210617101333.jpg

不同的仿真类型会有区别. 且通常会有更多的判断条件, 这里仅举例说明.

第一个判据即判断第二张图片中的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等.

参考资料:

  1. THE DESIGNER'S GUIDE TO SPICE AND SPECTRE
  2. Companion Models for Basic Non-Linear and Transient Devices
    http://dev.hypertriton.com/ed...
  3. NON-LINEAR DC ANALYSIS
    http://www.ecircuitcenter.com...
  4. Spectre Classic Simulator, Spectre APS, Spectre X, and Spectre XPS User Guide 19.1
作者:Zeng Yi
原文链接:https://mp.weixin.qq.com/s/Fb7cz9YeFYYMQUvIh5NtiA
作者微信公众号
陌上风.jpg

相关文章推荐

更多IC设计技术干货请关注IC设计技术专栏。
推荐阅读
关注数
10943
内容数
1209
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息