一、SPICE 概述与仿真流程
1.1 SPICE 的前世今生
SPICE 这东西,说起来年头不短了。1970 年代伯克利大学开发的,全称是 Simulation Program with Integrated Circuit Emphasis。说白了,就是给集成电路做仿真用的。
我刚开始用 SPICE 那会儿,还是命令行界面,跑个简单反相器都要写半天网表。现在各种图形界面工具多了,但底层核心还是那套东西。你想想看,一个发展了五十多年的工具,至今仍是芯片设计的黄金标准,这本身就说明问题。
SPICE 的核心作用是什么?就三件事:
- 验证电路功能 — 你的电路能不能正常工作?
- 检查性能指标 — 增益、带宽、功耗、噪声,够不够?
- 发现潜在问题 — 振荡、失真、温度漂移,有没有?
我个人习惯:每次流片前,至少跑三轮仿真——功能仿真、PVT 角仿真、蒙特卡洛仿真。少一轮,我都不敢 tapeout。
1.2 标准网表结构
SPICE 网表,说白了就是描述电路的文本文件。结构很固定,我拆开来讲。
网表的基本骨架
* 标题行 — 任何网表的第一行
* 注释行以星号开头
* 器件声明
M1 D G S B NMOS W=1u L=0.18u
R1 A B 10k
C1 X Y 1p
* 模型定义
.MODEL NMOS NMOS VTO=0.7 KP=120u
* 分析语句
.DC VIN 0 5 0.1
.TRAN 1n 100n
* 控制语句
.OPTIONS POST=2 PROBE
.END
嗯,这里要注意:.END 是必须的,没有它仿真器不知道网表结束了。我曾经见过一个实习生,网表写了三百行,漏了 .END,仿真器一直报错,查了半天。
五大组成部分
| 部分 | 作用 | 示例 |
|---|---|---|
| 标题 | 网表第一行,描述电路名称 | * Two-Stage Opamp |
| 器件 | 定义元件及其连接关系 | M1 1 2 3 4 NMOS W=2u L=0.18u |
| 模型 | 描述器件物理参数 | .MODEL NMOS1 NMOS VTO=0.7 |
| 分析 | 指定仿真类型和条件 | .AC DEC 10 1 1G |
| 控制 | 设置仿真选项和输出 | .OPTIONS RELTOL=1e-6 |
避坑指南:我曾经在 .OPTIONS 里写错过参数名,仿真器不报错,但结果完全不对。后来我养成了习惯——每次改完网表,先跑一个简单 DC 点,确认基本连接没问题。
1.3 完整仿真流程
一个正经的芯片仿真流程,分三步走。我画了张图,你看一眼就明白了。
第一步:前仿(Pre-Simulation)
前仿用的是理想模型。什么意思?就是不考虑版图带来的寄生电阻、寄生电容。这时候的仿真结果,说白了就是「理论值」。
我一般在前仿阶段做这些事:
- 检查 DC 工作点是否合理
- 验证电路功能是否正确
- 初步调参,让性能达到设计指标
注意:前仿结果再漂亮,也别高兴太早。我见过太多项目,前仿指标全过,后仿直接崩了。原因?寄生参数把电路特性完全改变了。
第二步:后仿(Post-Simulation)
后仿用的是版图提取出来的网表。这时候的模型里,已经包含了走线的寄生电阻、寄生电容,甚至耦合电容。
后仿的目的就一个:验证你的版图画完之后,电路还能不能正常工作。
我记得有一次做高速比较器,前仿跑出来 500MHz 没问题。结果后仿一跑,直接掉到 300MHz。查了半天,发现是版图里一条关键走线太长,寄生电容太大。后来改了版图,才把性能拉回来。
第三步:寄生提取
寄生提取是连接前仿和后仿的桥梁。工具从版图里把寄生参数抽出来,生成一个带 R、C 的网表,然后拿这个网表去跑后仿。
常用的寄生提取工具有:
- Calibre xRC — 业界主流,精度高
- StarRC — Synopsys 家的,速度快
- QRC — Cadence 家的,集成度高
寄生提取的精度,直接影响后仿的可靠性。我建议你至少跑两种模式:
- R+C 模式 — 只提电阻和电容,速度快
- RC 耦合模式 — 考虑耦合电容,精度高
我的经验:对于高频电路(>1GHz),一定要跑 RC 耦合模式。耦合电容带来的串扰,有时候比主路径的寄生还致命。
1.4 仿真收敛的初步认识
说到仿真,就绕不开「收敛」这个问题。什么叫收敛?说白了就是仿真器能不能算出结果来。
我刚开始做仿真那会儿,经常遇到仿真跑着跑着就崩了,报错信息一堆。后来慢慢摸索出一些规律:
- DC 收敛是基础 — DC 点都算不对,后面的 AC、TRAN 就别想了
- 模型质量很关键 — 有些第三方模型本身就有问题
- 仿真选项要调 — 默认设置不一定适合你的电路
关于收敛调试的具体技巧,后面章节我会详细讲。这里先记住一句话:仿真不收敛,90% 是电路本身有问题,10% 是设置不对。
一句话总结:SPICE 仿真流程就是「前仿验证功能 → 寄生提取 → 后仿验证性能」三步走。每一步都有坑,但每一步都不能省。