一、SPICE 概述与历史:从实验室走出的电路仿真标准

各位同学,欢迎来到《SPICE 语法与元件模型库深度解析》的第一章。

今天咱们聊聊 SPICE 的来龙去脉。说实话,我入行那会儿,带我的老工程师跟我说过一句话,我一直记着:「不懂 SPICE 的模拟工程师,就像不会看图纸的建筑师。」这话虽然有点绝对,但你想想看,在芯片 tape-out 之前,唯一能帮你验证电路能不能工作的工具,就是 SPICE。

那 SPICE 到底是什么?它凭什么能统治 EDA 世界几十年?咱们这一章就把这些底层的逻辑讲清楚。

1.1 SPICE 的起源:一个博士生的毕业设计

SPICE 的全称是 Simulation Program with Integrated Circuit Emphasis,翻译过来就是「以集成电路为重点的仿真程序」。它诞生于 1970 年代,地点是加州大学伯克利分校。

故事的主角叫 Laurence Nagel,还有他的导师 Donald Pederson。当时伯克利有个项目叫 CANCER(Computer Analysis of Nonlinear Circuits, Excluding Radiation),听着名字挺吓人,其实就是做电路仿真。后来 Nagel 在博士论文里把它重写了一遍,1973 年正式发布了 SPICE 1.0。

为什么说这是个里程碑?因为在此之前,电路仿真要么是公司内部的闭源工具,要么只能在大型机上跑。SPICE 是第一个开源的、通用的电路仿真器。伯克利直接把源代码公开了,任何大学、任何公司都能拿去用。

核心要点:SPICE 的开源基因,决定了它后来的统治地位。你想想看,全世界最聪明的工程师都在给它写模型、提 bug、加功能,这东西能不强大吗?

我记得有一次跟一个做工艺 PDK 的朋友聊天,他说现在最头疼的事,就是保证新工艺的模型在 SPICE 里跑出来的结果,跟实际流片回来的测试数据能对上。你看,50 年过去了,大家还在用同一个工具做这件事。

1.2 SPICE 的发展脉络:从 1.0 到行业标准

SPICE 的发展史,其实就是一部模拟 EDA 的进化史。我把它分成几个关键阶段:

版本/时间 关键特性 我的评价
SPICE 1.0 (1973) 非线性 DC、瞬态分析 开创性的,但功能很基础
SPICE 2.0 (1975) 加入 AC 分析、噪声分析 真正可用的版本
SPICE 3.0 (1985) C 语言重写、BSIM 模型支持 性能飞跃,支持深亚微米
商业衍生版 (1980s-) HSPICE、PSPICE、Spectre 各厂商优化,形成生态

这里有个有意思的事。SPICE 3.0 用 C 语言重写,替代了之前的 Fortran。为什么?因为 C 语言在内存管理和数据结构上更灵活,能支持更复杂的模型。我刚开始学 SPICE 时用的就是 SPICE 3f5 版本,那时候还在用命令行敲网表,连个图形界面都没有。

个人经验:如果你现在去伯克利的官网,还能下载到 SPICE 3 的源代码。我建议有兴趣的同学去看看,虽然语法跟现在的商业版有差异,但核心算法——比如牛顿-拉夫逊迭代、LU 分解——跟今天一模一样。

1.3 SPICE 在 EDA 中的核心地位

咱们做芯片设计的,都知道 EDA 工具有三大支柱:综合、布局布线、仿真验证。对于数字电路,综合和布局布线是主角;但对于模拟电路,仿真验证就是命根子。

SPICE 在 EDA 里的地位,说白了就是「最后一道防线」。为什么这么说?

  • 精度最高:SPICE 是基于物理模型的,它直接求解电路方程。相比 FastSPICE 或者行为级仿真,SPICE 的精度是最高的。
  • 模型最全:从最简单的电阻电容,到 FinFET 的 BSIM-CMG 模型,再到 GaN、SiC 这些宽禁带半导体,SPICE 都有对应的模型库。
  • 生态最广:晶圆厂提供的 PDK 里,所有的仿真模型都是基于 SPICE 语法的。你不用 SPICE,连工艺库都读不了。

避坑指南:我曾经在一个项目中,为了省时间,用 FastSPICE 跑了一个 LDO 的负载瞬态响应。结果仿真结果看起来完美,流片回来一测,相位裕度差了 15 度,直接振荡了。从那以后,凡是涉及稳定性、精度的仿真,我坚决用 SPICE 级别的仿真器。

1.4 主流 SPICE 仿真器介绍

现在市面上主流的 SPICE 仿真器,各有各的看家本领。我按自己的使用经验给大家梳理一下:

1.4.1 HSPICE

厂商:Synopsys
地位:行业黄金标准

HSPICE 是商业 SPICE 里最老牌、最权威的。几乎所有晶圆厂的 PDK 都会优先验证 HSPICE 的兼容性。它的收敛性极好,模型支持最全。

我个人习惯用 HSPICE 做最终签核仿真。比如一个 ADC 的 SFDR、一个 PLL 的抖动,这些关键指标我只会信 HSPICE 的结果。

1.4.2 PSPICE

厂商:Cadence (原 MicroSim)
地位:教学与入门首选

PSPICE 是很多大学教材里用的工具。它的图形界面做得不错,适合初学者理解电路原理。但说实话,在工业级项目里,PSPICE 的收敛性和模型库深度不如 HSPICE。

1.4.3 LTspice

厂商:Analog Devices (原 Linear Technology)
地位:电源工程师的利器

LTspice 是免费的,而且性能非常出色。它的收敛算法针对开关电源做了专门优化。我见过很多做 DC-DC 的工程师,整个项目周期只用 LTspice。

但要注意,LTspice 的模型库偏向 ADI 自家的器件。如果你用其他家的芯片,可能需要自己建模型。

1.4.4 Spectre

厂商:Cadence
地位:全流程集成首选

Spectre 跟 Cadence 的 Virtuoso 环境深度集成。如果你做全定制模拟版图设计,用 Spectre 是最顺手的。它的 RF 仿真能力也很强,支持 PSS、PAC、PNOISE 等分析。

仿真器 优势 劣势 我的推荐场景
HSPICE 精度最高、收敛最好 价格贵、命令行操作 最终签核、高精度仿真
PSPICE 易上手、教学资源多 工业级能力偏弱 学习入门、简单电路验证
LTspice 免费、电源仿真强 模型库局限 电源设计、快速原型验证
Spectre 与 Cadence 集成好、RF 强 依赖 Cadence 环境 全定制模拟/RF 设计

1.5 SPICE 核心知识体系

为了让大家对 SPICE 有一个整体的认知,我画了一张图,把 SPICE 的核心知识体系梳理了一下。这张图会贯穿我们整个课程。

SPICE 核心知识体系 SPICE 网表语法 元件模型库 仿真分析类型 控制语句与测量 无源元件 半导体器件 行为级模型 DC 分析 AC 分析 瞬态分析 噪声/失真 .MEASURE .OPTIONS .PARAM .IC/.NODESET 应用场景:模拟 IC / 混合信号 / 电源 / RF 课程核心逻辑 语法是骨架 → 模型是血肉 → 分析是功能 → 测量是验证

这张图把 SPICE 的知识体系分成了四个层次:

  1. 语法层:网表怎么写,元件怎么声明,这是基本功。
  2. 模型层:电阻、电容、MOSFET、BJT……每个元件都有对应的模型语句。
  3. 分析层:你要做什么仿真?DC 工作点?AC 频率响应?瞬态波形?
  4. 控制层:怎么测量结果?怎么设置仿真精度?怎么初始化节点电压?

咱们这门课,就是按照这个体系一层一层往下讲的。你把这四个层次搞明白了,SPICE 对你来说就没有秘密了。

1.6 一个简单的 SPICE 网表示例

光说不练假把式。咱们看一个最简单的 SPICE 网表,感受一下它的语法风格:

* 一个简单的共源放大器仿真
* 网表文件: cs_amp.sp

.title CS Amplifier Simulation

* 电源与输入
VDD 1 0 DC 5V
VIN 2 0 DC 1.5V AC 1

* 元件连接
R1 1 3 10K
M1 3 2 0 0 NMOS W=10U L=0.5U

* 模型定义
.MODEL NMOS NMOS (VTO=0.7 KP=120U LAMBDA=0.01)

* 仿真控制
.DC VIN 0 5 0.01
.AC DEC 10 1 100MEG
.TRAN 1N 10U

* 测量
.MEASURE DC VOUT_MAX MAX V(3)
.MEASURE AC GAIN MAX VDB(3)

.END

这个例子虽然简单,但包含了 SPICE 网表的全部要素:

  • 注释行:以 * 开头
  • 元件声明:V、R、M 分别代表电压源、电阻、MOSFET
  • 模型定义:.MODEL 语句
  • 分析控制:.DC、.AC、.TRAN
  • 测量语句:.MEASURE

我的建议:刚开始学 SPICE,不要急着去背语法。你先把这个网表跑通,然后试着改改参数,看看波形怎么变。动手跑一次,比看十遍书都管用。