2. SPICE 仿真引擎原理:Newton-Raphson 迭代法、时域与频域仿真、瞬态与 DC 分析的区别

SPICE 仿真引擎的核心是一个非线性方程组求解器。要理解收敛问题,必须首先掌握其底层数学原理——Newton-Raphson (N-R) 迭代法,以及不同仿真模式(DC、瞬态、频域)如何调用该求解器。本章将拆解这些基础概念,为后续参数边界设定与调试建立理论根基。

2.1 Newton-Raphson 迭代法:非线性求解的引擎

SPICE 中的电路方程本质上是非线性代数微分方程组。N-R 法是求解这些方程的标准数值方法。其核心思想是:从一个初始猜测值开始,通过反复线性化与求解,逐步逼近真实解。

关键收敛判据: 每次迭代后,SPICE 检查节点电压变化量(ΔV)是否小于设定的容差(ABSTOL)或相对容差(RELTOL)。若满足,则判定收敛;否则继续迭代,直至达到最大迭代次数(ITL1/ITL2)。

下图展示了 N-R 法在一维非线性方程中的迭代过程:

Newton-Raphson 迭代过程示意图 一维非线性方程 f(V)=0:切线法从初值出发逐步逼近真实解 V* V f(V) 0 f(V) V₀ V₁ V₂ V₃ 真实解 V* 切线① → 交于 V₁ 切线② → 交于 V₂ N-R 迭代要点 ① 在当前点作切线 ② 切线与 V 轴交点为新解 ③ 重复直至 |ΔV| < 容差 迭代次数上限:ITL1 / ITL4 从 V₀ 出发沿切线方向迭代,交点依次为 V₁、V₂、V₃…,逐步逼近真实解 V*

N-R 迭代的数学步骤

  1. 线性化: 在当前点 Vk 处,将非线性函数 f(V) 展开为泰勒级数的一阶近似:
    f(V) ≈ f(Vk) + f'(Vk) · (V - Vk)
  2. 求解线性方程: 令近似式等于 0,求解 ΔV:
    ΔV = - f(Vk) / f'(Vk)
  3. 更新解: Vk+1 = Vk + ΔV
  4. 检查收敛: 若 |ΔV| < 容差,则停止;否则返回步骤 1。
收敛失败常见原因: 初始猜测值远离真实解、模型导数不连续(如突变结)、电路存在双稳态或多稳态(如锁存器、触发器)。这些情况会导致迭代振荡或发散。

2.2 DC 分析:静态工作点求解

DC 分析是 SPICE 中最基础的仿真模式。它假设所有电容开路、电感短路,仅求解电路在直流激励下的稳态节点电压与支路电流。DC 分析直接调用 N-R 迭代法求解非线性方程组。

特性 DC 分析 瞬态分析
求解目标 静态工作点(Q 点) 时域响应波形
方程类型 非线性代数方程 非线性微分方程
时间变量 无(t = 0 或 t = ∞) 有(t 从 0 到 Tstop)
迭代控制 ITL1(DC 迭代限制) ITL4(瞬态每步迭代限制)
收敛难度 中等(无历史状态) 高(需处理动态元件)

DC 扫描与 DC 工作点

  • .OP: 仅计算一个静态工作点,用于小信号模型参数提取。
  • .DC: 扫描一个或多个独立源的值,在每个步长处执行一次 N-R 迭代。扫描步长过大可能导致相邻工作点跳跃过大,引发收敛问题。
调试技巧: 当 DC 分析不收敛时,尝试使用 .NODESET 为关键节点提供初始猜测电压,或使用 .IC 设置初始条件。这相当于给 N-R 迭代一个更好的起点。

2.3 瞬态分析:时域积分与动态迭代

瞬态分析在 DC 工作点基础上,将时间离散化为一系列时间步,在每个时间步内求解非线性微分方程。SPICE 使用隐式数值积分方法(如梯形法、Gear 法)将微分方程转化为代数方程,再调用 N-R 迭代求解。

瞬态分析:时间步划分与 N-R 迭代流程 N-R 迭代 每步一次 N-R 迭代 每步一次 N-R 迭代 每步一次 N-R 迭代 每步一次 N-R 迭代 每步一次 t h₁ h₂ h₃ h₄ t₀ t₁ t₂ t₃ t₄ 时间离散化:Δt 由 LTE 自动控制,步长不等于等分 每个时间点上方对应一次 N-R 求解 • 每个时间步内执行一次 N-R 迭代,求解由隐式积分法(梯形法 / Gear 法)离散得到的非线性代数方程 • 步长 h 由局部截断误差(LTE)自动控制:信号剧变处取小步长,稳态区取大步长,过大步长易致迭代发散 • t₀ 初值默认由 DC 工作点(.OP)提供;使用 UIC 时改由 .IC 指定初值,跳过工作点计算

瞬态分析的关键参数

  • TSTEP(最大步长): 限制仿真器自动步长的上限。过大的 TSTEP 可能导致 N-R 迭代发散。
  • TSTOP(停止时间): 仿真结束时间。
  • UIC(使用初始条件): 跳过 DC 工作点计算,直接使用 .IC 指定的初始值开始瞬态仿真。
收敛与精度权衡: 减小最大步长(TSTEP)可以提高 N-R 迭代的收敛概率,但会增加仿真时间。合理的策略是:在信号变化剧烈的区域(如边沿、开关动作)使用小步长,在稳态区域使用大步长。SPICE 的自动步长控制算法(基于 LTE)正是为此设计。

2.4 频域分析:AC 小信号与噪声

频域分析(AC 分析)与 DC/瞬态分析有本质区别。它首先在 DC 工作点处对电路进行线性化(小信号模型),然后求解线性复频域方程。由于方程是线性的,不需要 N-R 迭代,因此不存在收敛问题。

特性 AC 分析 DC/瞬态分析
方程类型 线性复代数方程 非线性(微分)方程
求解方法 LU 分解 + 前代/回代 N-R 迭代
收敛问题 无(线性系统) 常见(非线性系统)
依赖关系 依赖 DC 工作点 独立或自洽
实用提示: 如果 AC 分析结果异常(如增益曲线出现不连续),通常不是 AC 分析本身的问题,而是其依赖的 DC 工作点计算不准确或未收敛。务必先确保 .OP 分析收敛且结果合理。

2.5 三种分析模式的协同关系

下图展示了 SPICE 中三种主要分析模式的数据流与依赖关系:

SPICE 三种分析模式的依赖关系 DC 分析 静态工作点(Q 点) N-R 迭代求解 瞬态分析 时域波形 N-R 迭代 + 数值积分 AC 分析 频域响应 线性求解(无 N-R 迭代) 初始条件 小信号线性化 关键依赖关系 • 瞬态分析默认以 DC 工作点作为初始条件(除非使用 UIC) • AC 分析必须依赖 DC 工作点进行小信号线性化 • DC 分析不收敛将导致瞬态和 AC 分析结果错误或无法执行

2.6 收敛问题与仿真模式的关系

不同仿真模式对收敛问题的敏感度不同。下表总结了常见收敛失败场景及其与仿真模式的关联:

收敛失败场景 DC 分析 瞬态分析 AC 分析
初始猜测远离真实解 常见 较少(有历史状态) 不适用
模型导数不连续 常见 常见 不适用
时间步长过大 不适用 常见 不适用
电路存在双稳态 常见 可能(取决于初始条件) 不适用
浮空节点 常见 常见 常见(矩阵奇异)
核心原则: 所有收敛问题的根源都在于 N-R 迭代无法找到满足容差要求的解。DC 分析是收敛问题的“重灾区”,因为其没有历史状态作为引导。瞬态分析虽然每个时间步都需要迭代,但由于步长小且状态连续,通常比 DC 分析更容易收敛。AC 分析本身无收敛问题,但其结果质量完全取决于 DC 工作点的准确性。