3. 仿真收敛基础:SPICE仿真收敛概念、收敛失败常见原因、Newton-Raphson算法原理

3.1 SPICE仿真收敛的核心概念

在SPICE(Simulation Program with Integrated Circuit Emphasis)仿真中,收敛是指求解器在给定的误差容限内,成功找到满足电路方程(基尔霍夫电流定律KCL和基尔霍夫电压定律KVL)的数值解的过程。收敛是仿真能够给出正确、稳定结果的前提条件。

从数学角度看,SPICE将电路描述为一组非线性微分代数方程(DAE),并通过迭代数值方法(主要是Newton-Raphson算法)在每个时间点(瞬态分析)或直流工作点(DC分析)求解这些方程。当迭代过程满足以下条件时,即认为收敛:

  • 节点电压变化量:连续两次迭代的节点电压差小于设定的容差(ABSTOL)或相对容差(RELTOL)。
  • 支路电流变化量:连续两次迭代的支路电流差小于设定的电流容差。
  • 电荷/能量平衡:对于瞬态分析,还需检查电荷守恒或能量误差。
收敛 ≠ 正确:收敛只表示数值求解过程成功结束,并不保证结果物理正确。错误的模型参数、不合理的电路拓扑或过大的时间步长可能导致收敛到非物理解(如负电阻状态)。

3.2 收敛失败常见原因

收敛失败是半导体器件建模与仿真中最常见的问题之一。根据经验,超过70%的收敛问题源于模型参数设置不当或电路结构缺陷。下表列出了最常见的收敛失败原因及其典型表现:

类别 具体原因 典型错误信息 解决方向
模型参数 BSIM模型参数超出物理范围(如负的阈值电压、过大的迁移率) Internal timestep too small 检查模型参数边界,使用物理约束优化
电路拓扑 浮空节点、电压源与电感直接并联、电容回路无电阻 Singular matrix 添加虚拟电阻(如1GΩ)或初始化节点电压
算法设置 Newton-Raphson初始猜测远离真实解 No convergence in DC analysis 设置合理的节点初始电压(.IC)或使用Gmin stepping
数值问题 器件工作在高增益区(如运放开环),雅可比矩阵病态 Matrix is singular 增加收敛辅助选项(如.OPTIONS RELTOL=1e-3)
时间步长 瞬态分析中,信号变化过快导致时间步长被过度缩减 Timestep too small 限制最大时间步长(.TRAN TSTEP)或使用隐式积分
避坑提示:在BSIM模型验证中,最容易被忽视的收敛问题是模型参数VTH0(阈值电压)与VOFF(偏移电压)的相互作用。当VTH0设置过低且VOFF为正值时,器件可能在零偏压下就处于强反型区,导致DC分析无法收敛。

3.3 Newton-Raphson算法原理

Newton-Raphson(NR)算法是SPICE求解非线性电路方程的核心引擎。其本质是将非线性问题转化为一系列线性问题的迭代求解过程。

3.3.1 算法数学描述

对于单变量非线性方程 f(x) = 0,NR迭代公式为:

x_{k+1} = x_k - f(x_k) / f'(x_k)

其中 f'(x_k) 是函数在 x_k 处的导数(即雅可比矩阵的对角元)。在SPICE中,f(x) 代表节点电流不平衡量(KCL残差),x 代表节点电压向量。

3.3.2 SPICE中的NR迭代流程

下图展示了SPICE中Newton-Raphson算法的完整迭代流程:

SPICE Newton-Raphson 迭代流程图 SPICE Newton-Raphson 迭代流程 初始化 x₀ 构建 f(xₖ) 和 J(xₖ) 求解 J·Δx = -f xₖ₊₁ = xₖ + Δx 检查 |Δx| < 容差? 是 收敛成功 否 k = k + 1 迭代循环 k > ITL1? 收敛失败,报错退出 说明 ITL1:DC分析最大迭代次数 默认值通常为100或150

3.3.3 NR算法的收敛条件与局限

NR算法具有局部二次收敛性,这意味着当初始猜测足够接近真实解时,收敛速度非常快。然而,它也存在以下固有局限:

  • 初始猜测敏感性:如果初始猜测远离真实解,迭代可能发散或收敛到错误分支。
  • 雅可比矩阵奇异性:当电路工作在增益无穷大的区域(如理想开关切换瞬间),雅可比矩阵可能奇异,导致求解失败。
  • 振荡与循环:在某些非线性较强的电路中,NR迭代可能陷入无限循环而不收敛。
工程实践要点:在BSIM模型验证中,建议在DC分析前使用.NODESET或.IC语句为关键节点(如栅极、漏极)提供物理合理的初始电压。对于MOSFET,初始猜测应使器件处于预期的偏置区(截止、线性或饱和),这能显著提高NR算法的收敛成功率。

3.4 收敛调试实用技巧

基于Newton-Raphson算法的特性,以下是在BSIM模型参数优化过程中常用的收敛调试技巧:

调试策略 SPICE选项/命令 适用场景 注意事项
放宽相对容差 .OPTIONS RELTOL=1e-3 初步调试,快速定位问题 最终验证需恢复默认值(1e-4)
增加迭代次数 .OPTIONS ITL1=500 DC分析收敛缓慢 避免过度增加,防止死循环
使用Gmin stepping .OPTIONS GMIN=1e-12 GMINSTEP=10 电路存在浮空节点或高阻态 逐步减小Gmin,避免影响精度
Source stepping .DC VDD 0 5 0.1 分段扫描 电源电压从零缓慢上升 增加仿真时间,但收敛性最好
节点初始化 .IC V(g)=0.8 V(d)=2.0 已知工作点的大致电压 必须与电路实际偏置一致

3.5 收敛性验证案例

以下是一个典型的BSIM3v3模型DC分析收敛调试案例。原始模型参数导致仿真在VGS=0.8V附近无法收敛:

*** 收敛失败的BSIM模型参数(部分) ***
.MODEL NMOS1 NMOS (LEVEL=49
+ VTH0 = 0.35        * 阈值电压偏低
+ U0   = 450         * 迁移率偏高
+ VSAT = 1.2e5       * 饱和速度偏低
+ K1   = 0.45
+ K2   = 0.08
+ WINT = 1.5e-8
+ LINT = 2.0e-8
)

*** 调试后的参数 ***
.MODEL NMOS1 NMOS (LEVEL=49
+ VTH0 = 0.42        * 调整至物理合理范围
+ U0   = 380         * 降低迁移率
+ VSAT = 1.1e5       * 微调饱和速度
+ K1   = 0.50
+ K2   = 0.05
+ WINT = 1.2e-8
+ LINT = 1.8e-8
)

*** 收敛辅助选项 ***
.OPTIONS RELTOL=1e-3 ABSTOL=1e-6 ITL1=200
.IC V(g)=0.5 V(d)=2.5

通过调整模型参数使其更符合物理实际,并配合适当的收敛辅助选项,DC分析在5次NR迭代内成功收敛。

经验法则:当NR迭代次数超过20次仍未收敛时,应优先检查模型参数的物理合理性,而不是盲目增加迭代次数或放宽容差。在BSIM模型中,VTH0、U0和VSAT是最容易导致收敛问题的三个参数。