1. SPICE 仿真收敛概述

SPICE 仿真的核心是求解一组非线性微分代数方程。所谓收敛,是指迭代求解算法(如 Newton-Raphson 法)在给定的容差范围内,找到了满足电路方程组的数值解。当仿真器无法在最大迭代次数内找到这样的解时,即发生收敛失败。

核心观点:收敛是仿真成功的必要条件,而非充分条件。即使仿真报告“收敛”,结果也可能因模型参数边界设置不当而物理失真。

1.1 什么是收敛

在 SPICE 中,收敛通常指以下三个层面的数值稳定状态:

  • 直流工作点收敛(.OP / .DC):所有节点电压和支路电流满足 KCL/KVL,且非线性器件模型方程在迭代误差容限内成立。
  • 瞬态收敛(.TRAN):在每个时间步长内,直流收敛条件成立,且时间积分算法(如梯形法、Gear 法)的局部截断误差可控。
  • 谐波平衡收敛(HB):在频域上,非线性器件的混频产物与线性子网络的频响达到自洽。
SPICE 收敛的三层含义 SPICE 收敛的三层含义 直流工作点收敛 .OP / .DC KCL/KVL + 器件模型 瞬态收敛 .TRAN 时间步长 + 截断误差 谐波平衡收敛 HB 频域混频自洽 收敛 ≠ 正确 数值收敛但模型参数边界错误,仍可能输出物理失真的结果

1.2 收敛失败的表现

收敛失败在仿真器输出中通常表现为以下典型症状:

症状 典型错误信息 出现场景
直流不收敛 ** No convergence in DC analysis ** .OP、.DC 扫描起始点
瞬态时间步长坍缩 Internal time step too small in transient analysis .TRAN 中器件进入强非线性区
迭代次数超限 Too many iterations (ITL1/ITL2 exceeded) 任何分析类型
奇异矩阵 Singular matrix / Gmin stepping failed 浮空节点、电压源短路
模型求值失败 Model evaluation error at node xxx 参数超出模型有效范围
实战警示:“Internal time step too small”是瞬态仿真中最常见的收敛失败信息,通常意味着模型参数边界设置导致器件进入非物理区域(如 Vds 超过击穿电压),仿真器被迫不断减小时步长直至崩溃。

1.3 收敛问题的常见原因分类

收敛问题的根源可以归纳为四大类。理解这些分类是后续参数边界设定与调试的基础。

收敛失败四大原因并列分类 收敛失败的四大原因:电路拓扑与连接、模型参数边界、仿真控制参数、数值算法局限性,四者并列,均直接由收敛失败引出。 收敛失败四大原因分类(并列关系) 收敛失败 四类原因并列 ① 电路拓扑与连接问题 浮空节点、电压源短路 悬空引脚、反馈环路断开 ② 模型参数边界问题 参数超出物理范围 模型方程在边界处奇异 ③ 仿真控制参数不当 ABSTOL/RELTOL/VNTOL 过严 ITL1/ITL2 过小、GMIN 不合理 ④ 数值算法局限性 Newton-Raphson 初始猜测差 强非线性致雅可比矩阵病态 四类原因地位并列、彼此独立,需逐类定位排查,不存在层级派生关系

1.4 各类原因的详细说明

① 电路拓扑与连接问题

这类问题通常由网表错误引起,是最容易排查的收敛问题:

  • 浮空节点:节点未连接到任何对地通路,导致矩阵奇异。
  • 电压源短路:两个理想电压源直接并联,或电压源与电容直接并联形成冲突回路。
  • 悬空引脚:MOSFET 的衬底或 BJT 的基极未连接。

② 模型参数边界问题(本课程核心)

这是最隐蔽、最容易被忽视的收敛原因,也是本课程的重点:

  • 参数超出物理范围:例如 MOSFET 的沟道长度 L 设为 0(或过小),导致模型方程中出现除以零或开根号负数。
  • 模型方程在边界处奇异:BSIM4 模型中的 Vdsat 计算在特定偏置下可能产生不连续导数。
  • 参数组合冲突:例如 Vth0 与 Vbs 的组合使阈值电压计算进入非单调区。
调试技巧:在 SPICE 网表中添加 .OPTIONS POST=2 可输出详细的模型参数求值中间变量,帮助定位是哪个参数在哪个偏置点导致收敛失败。

③ 仿真控制参数不当

仿真器的容差设置和迭代限制直接影响收敛行为:

参数 默认值 过严时的后果 推荐调整方向
RELTOL 0.001 迭代难以满足相对误差 放宽至 0.01 或 0.005
ABSTOL 1 pA 小电流收敛困难 放宽至 10 pA 或 100 pA
VNTOL 1 μV 电压迭代精度过高 放宽至 10 μV 或 100 μV
ITL1 100 直流迭代次数不足 增大至 500 或 1000
ITL2 50 瞬态迭代次数不足 增大至 200 或 500

④ 数值算法局限性

即使电路和模型都正确,纯数值问题仍可能导致不收敛:

  • 初始猜测不佳:Newton-Raphson 法对初始值敏感,尤其在双稳态电路(如触发器、锁存器)中。
  • 雅可比矩阵病态:当电路增益极高(如运放开环增益 > 120 dB)时,矩阵条件数过大。
  • 不连续模型:使用理想开关或分段线性模型时,导数不连续导致迭代振荡。