6.1 SPICE 仿真原理:用方程组预演电路


6.1 SPICE 仿真原理:用方程组预演电路

本节摘要:SPICE 把电路变成一组非线性微分代数方程,用基尔霍夫定律列写、牛顿迭代求解非线性、隐式积分离散时间,三个环节咬合成"数值预演物理世界"的完整机器。本节从零推导节点分析,手推一次牛顿迭代的计算过程,讲清收敛救场与变步长两个工程命门。理解了 SPICE,你就理解了"仿真"二字在 EDA 里的全部含义。

从电路到方程:修正节点分析

SPICE(Simulation Program with Integrated Circuit Emphasis,1973 年诞生于伯克利)的第一步是把电路翻译成方程。翻译的语法是基尔霍夫两条定律:节点电流守恒(流入等于流出)与回路电压守恒。对含 n 个节点的电路,节点分析把"节点电压"设为未知量,每个元件的贡献写进导纳矩阵 G 与右端电流向量 i,得线性方程组 G × v = i。修正节点分析(MNA)为处理电压源与电感这类"电流未知"的元件,把支路电流追加为未知量——矩阵变大一点,但列写规则完全统一,程序实现只需遍历元件表逐个"盖章"。这个机械化的列写过程使 SPICE 能对任意拓扑自动建方程,是它成为通用仿真器的结构基础。

拿最简单的分压电路手推一遍:节点 1 接 5 伏电源、两个电阻(1 千欧与 1 千欧)串联到地、中间引出节点 2。MNA 矩阵两行:第一行(电源支路电流 i_s 为追加未知量)描述节点 1 的电流守恒;第二行描述节点 2:(v2 − v1)/1k + v2/1k = 0。解这个 3 乘 3 线性系统得 v2 = 2.5 伏。真实电路无非是把每个电阻换成一条非线性伏安曲线的晶体管——方程结构不变,只是 G 不再是常数。

图:SPICE 仿真引擎的三个咬合环节

图:SPICE 仿真引擎的三个咬合环节

牛顿迭代与它的两个救场程序

非线性方程组 f(v) = 0 的解法只有一个名字:牛顿-拉夫逊迭代。在当前猜测点把 f 线性化,解线性方程 J × Δv = −f(v)(J 是雅可比矩阵),更新 v,重复直到残差小于容差。对晶体管电路,"线性化"有清晰的物理图像:在每个工作点把晶体管等效成受控源加电导——迭代过程中电路在数学上始终是线性的,只是等效参数随工作点更新。手推一例:二极管方程 i = I_s × (e^(v/V_T) − 1) 在 v = 0.6 伏附近线性化,第一次迭代落在 0.55 伏附近,第二次进到 0.545 伏,两三步收敛到毫伏级——牛顿法的二次收敛在连续可导区段极快。

但它有两个著名失灵场景,对应的救场程序是 SPICE 的看家本领。场景一初值太远:e^(v/V_T) 在 v 偏大时数值溢出、迭代飞掉。救场程序一,GMIN 步进:给每个节点对地并联一个极小电导(初值 0.1 西门子,逐步乘 0.1 收缩到 10 的负 12 次方),每个 GMIN 值下问题变成"良态"的,解出结果作为下一档初值——相当于把电路从"全员接地"的平凡解逐步牵引到真实解。场景二多解与不连续:如施密特触发器、锁存器初态。救场程序二,源步进:电源电压从 0 缓慢升到额定(直流扫描),每个电压点的解喂给下一个电压点当初值,电路状态随电源连续演化。这两个程序共同的哲学是"延续法"——把一个解不了的问题变成一串能解的问题的链条,这个思想在数值分析的很多角落都会重逢。

瞬态分析:时间轴上的代价

直流工作点只是起点,电路的真实行为在时间轴上展开。瞬态分析把时间离散化:在时间点 t 状态未知时,用隐式积分公式把电容的微分关系变成代数关系(后向欧拉与梯形法是主力,后者二阶精度),于是每个时间点又回到"解一个非线性代数方程组"——环节二被循环调用。步长控制是精度与速度的调节旋钮:局部截断误差估计(比较不同阶公式的差异)超过容差就缩步长重算,富余就放大步长。数字电路时钟沿处信号陡变,步长必须缩到皮秒以下;两个沿之间信号平缓,步长可以放大千倍。一次真实仿真的时间点数因此高度不均——上万个时间点里,绝大多数堆在十几个信号沿附近。

代价账单把 SPICE 的定位算得明明白白:每时间点一次到几次牛顿迭代,每次迭代一个稀疏 LU 分解。直接法的 LU 分解对 n 节点电路约 O(n^1.5) 到 O(n³)(取决于稀疏结构与填充控制),万管电路单时间点毫秒到秒级,一次十毫秒仿真的百万时间点总量在分钟到小时——这是它的舒适区。百万管级全芯片后仿真之所以不可行,正是这笔账算不过来。6.2 节的高级仿真技术、第 7 章的 GPU 与云端并行,都是在给这道账单找出路。

器件模型再补一层厚度:SPICE 的精度上限由器件模型决定,工业标准是 BSIM 族(BSIM4 到 BSIM6 及 CMG 等 FinFET 与纳米线专用模型),每个工艺节点的模型卡由晶圆厂用大量测试结构标定。模型的"等级"也分层:签核用完整模型,设计探索可用降阶模型换速度(与 6.2 节的查表思想呼应)。另外,现代仿真器已开始把雅可比组装与线性求解卸载到 GPU(稀疏矩阵运算的并行形态合适),商业与开源实现都有报告数倍到数十倍的瞬态加速——SPICE 的算法骨架五十年未变,但它的实现载体仍在换代。

把直流、交流、瞬态三类分析的分工串一遍作为收束。直流分析(DC)解静态工作点,是所有后续分析的起点,也承担扫描任务(电压扫描、温度扫描、参数扫描);交流分析(AC)在工作点附近把电路线性化,算频率响应(增益、相位、带宽),小信号世界的全部结论出自这里;瞬态分析(TRAN)算真实波形,最贵也最接近真相。一次模拟电路验证的典型组合是:DC 定工作点、AC 看稳定裕度、TRAN 验大信号行为、蒙特卡罗看变异分布——四类分析共享同一套 MNA 与牛顿内核,只是激励与求解维度不同。掌握这个组合拳,你就掌握了 SPICE 使用的主干语法。

本节要点回顾

  • MNA 机械列写:基尔霍夫定律自动化建方程,电压源电感追加电流未知量,通用性由此而来。
  • 牛顿迭代的物理图像:每个工作点把晶体管等效成受控源加电导,二次收敛极快。
  • 两大救场程序:GMIN 步进牵引初值,源步进沿电源演化,共同哲学是延续法。
  • 隐式积分推进时间:梯形法二阶精度,局部截断误差控步长,步长堆在信号沿。
  • 复杂度账单:每步 LU 分解超线性,万管舒适、百万管出局,规模是宿命。
  • 模型先于算法:BSIM 模型与标定决定物理保真,模型不准则算得再快也是精确地错。

作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U