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 法在一维非线性方程中的迭代过程:
N-R 迭代的数学步骤
- 线性化: 在当前点 Vk 处,将非线性函数 f(V) 展开为泰勒级数的一阶近似:
f(V) ≈ f(Vk) + f'(Vk) · (V - Vk) - 求解线性方程: 令近似式等于 0,求解 ΔV:
ΔV = - f(Vk) / f'(Vk) - 更新解:
Vk+1 = Vk + ΔV - 检查收敛: 若 |Δ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 迭代求解。
瞬态分析的关键参数
- 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 中三种主要分析模式的数据流与依赖关系:
2.6 收敛问题与仿真模式的关系
不同仿真模式对收敛问题的敏感度不同。下表总结了常见收敛失败场景及其与仿真模式的关联:
| 收敛失败场景 | DC 分析 | 瞬态分析 | AC 分析 |
|---|---|---|---|
| 初始猜测远离真实解 | 常见 | 较少(有历史状态) | 不适用 |
| 模型导数不连续 | 常见 | 常见 | 不适用 |
| 时间步长过大 | 不适用 | 常见 | 不适用 |
| 电路存在双稳态 | 常见 | 可能(取决于初始条件) | 不适用 |
| 浮空节点 | 常见 | 常见 | 常见(矩阵奇异) |
核心原则: 所有收敛问题的根源都在于 N-R 迭代无法找到满足容差要求的解。DC 分析是收敛问题的“重灾区”,因为其没有历史状态作为引导。瞬态分析虽然每个时间步都需要迭代,但由于步长小且状态连续,通常比 DC 分析更容易收敛。AC 分析本身无收敛问题,但其结果质量完全取决于 DC 工作点的准确性。