第2章:SPICE入门:SPICE的历史、SPICE仿真流程、常用SPICE版本介绍

各位同学,咱们今天聊聊SPICE。说实话,这玩意儿是咱们模拟IC设计工程师吃饭的家伙。我入行那会儿,师傅丢给我一本HSPICE手册,说「自己看」。那会儿真是硬啃下来的。现在想想,如果当时有人能把这些基础讲透,我能少走不少弯路。

2.1 SPICE的历史:从伯克利走出的传奇

SPICE的全称是 Simulation Program with Integrated Circuit Emphasis。说白了,就是「专注于集成电路的仿真程序」。它诞生于上世纪70年代初,加州大学伯克利分校。嗯,就是那个出了无数EDA大神的地方。

1972年,伯克利的Laurence Nagel和Donald Pederson团队发布了第一版SPICE。当时的目的很简单——帮学生验证电路设计,不用每次都搭面包板。你想想看,那个年代搭一个运放测试板多费劲。我记得有前辈跟我说过,他们当年为了测一个放大器,焊板子焊到手指起泡。

SPICE的诞生,彻底改变了IC设计的方式。从1975年的SPICE 2G6版本开始,它成了业界标准。后来伯克利把源码公开了,这才有了后面各种商业版本的百花齐放。

核心要点:SPICE不是某个公司的产品,它最初是学术界的开源项目。所有商业版本,都是在伯克利SPICE基础上发展起来的。

2.2 SPICE仿真流程:网表、仿真器、输出

SPICE仿真的流程,说白了就三步:写网表 → 跑仿真器 → 看结果。听起来简单吧?但每一步都有坑。

2.2.1 网表(Netlist)—— 电路的「语言」

网表是什么?就是告诉仿真器你的电路长什么样。它用文本描述每个元件、每个节点、每个连接。我刚开始学的时候,总觉得这玩意儿不如原理图直观。但后来发现,网表才是真正精确的描述方式。

一个最简单的网表示例:

* 一个简单的共源放大器
VDD 1 0 DC 5V
M1 2 3 0 0 NMOS W=10u L=1u
R1 1 2 10k
VIN 3 0 DC 1V AC 1V
.OP
.AC DEC 100 1 1MEG
.PROBE
.END

你看,第一行是注释(星号开头)。然后定义电源、MOS管、电阻、输入信号。最后是分析指令。嗯,这里要注意:节点0永远是地,这是SPICE的约定。

我的经验:写网表时,节点编号最好有规律。比如电源用1,地用0,输入用3,输出用4。别乱编,否则调试时你会疯掉。我曾经在一个2000行的网表里找一根悬空的线,找了整整一下午。

2.2.2 仿真器(Simulator)—— 真正干活的东西

仿真器读取网表,然后做数学运算。它内部会建立矩阵方程,用牛顿-拉夫逊迭代法求解非线性电路。听起来很复杂?其实你不需要完全搞懂内部算法,但要知道它怎么工作的。

仿真器主要做这几件事:

  • 解析网表:检查语法错误,建立元件列表
  • 建立方程:根据基尔霍夫定律,生成节点电压方程
  • 迭代求解:用数值方法求解非线性方程组
  • 输出结果:把电压、电流、功耗等数据写出来

我遇到过最坑的事,就是网表里一个节点悬空了,仿真器报「singular matrix」错误。当时我查了半天,最后发现是一根线没连上。所以,仿真器报错时,先检查网表连接

2.2.3 输出(Output)—— 怎么看结果

SPICE的输出方式有很多种。最传统的是文本输出,比如 .OP 分析会打印所有节点的直流工作点。但说实话,现在谁还看文本啊?都是用图形化工具看波形。

常用的输出指令:

  • .PRINT:打印数据到文本文件
  • .PLOT:在终端画ASCII波形(老古董了)
  • .PROBE:输出二进制数据,供图形工具查看

避坑指南:我曾经在HSPICE里用 .PRINT 输出一个10万点的瞬态分析数据,结果文本文件有几百兆,打开就卡死。后来改用 .PROBE 配合图形工具,才解决问题。所以,大数据量分析,别用 .PRINT

2.3 常用SPICE版本:HSPICE、LTspice、PSpice

市面上SPICE版本很多,但最常用的就这三个。我三个都用过,各有千秋。

版本 开发商 特点 适用场景
HSPICE Synopsys 精度高、收敛性好、支持先进工艺模型 工业级IC设计、先进工艺节点
LTspice Analog Devices 免费、速度快、界面友好 电源设计、模拟电路学习、中小规模仿真
PSpice Cadence 与OrCAD集成、元件库丰富 PCB级仿真、教学实验

2.3.1 HSPICE —— 工业标准

HSPICE是Synopsys的产品,也是目前IC设计公司用得最多的。它的收敛性最好,支持最先进的工艺模型(比如BSIM4、PSP)。说白了,你要做7nm、5nm的芯片设计,基本只能用HSPICE。

但HSPICE也有缺点:贵。一套license一年几十万人民币。而且它的语法比较严格,稍微写错一点就报错。我刚开始用HSPICE时,被它的「.OPTION POST=2」这种参数搞晕过好几次。

我的建议:如果你在公司做IC设计,老老实实用HSPICE。虽然贵,但它的精度和收敛性值得这个价。别为了省钱用免费工具,流片失败一次损失几百万。

2.3.2 LTspice —— 免费且强大

LTspice是Linear Technology(现属ADI)开发的免费SPICE仿真器。它最大的优点是:免费、速度快、界面友好。我个人的习惯是,做电源设计或者小信号电路验证时,先用LTspice快速跑一遍,再用HSPICE做最终验证。

LTspice的收敛算法很激进,有时候HSPICE不收敛的电路,LTspice反而能跑出来。但要注意:LTspice的模型库主要偏向ADI的器件,如果你用其他厂商的模型,可能需要自己转换。

2.3.3 PSpice —— 教学和PCB级仿真

PSpice是Cadence的产品,与OrCAD原理图工具深度集成。它在大学里用得很多,因为界面直观,上手快。但说实话,在IC设计领域,PSpice用得越来越少了。它的模型精度和收敛性,跟HSPICE比还是有差距。

不过,如果你做PCB级的仿真,比如电源完整性、信号完整性分析,PSpice还是很有用的。它内置了很多无源器件的模型,用起来很方便。

总结一下:选哪个版本,取决于你的应用场景。做IC设计,首选HSPICE;做电源或学习,LTspice够用;做PCB级仿真,PSpice更方便。但不管用哪个,SPICE的核心原理是一样的。学会了网表怎么写、仿真怎么跑,换工具只是换个界面而已。

好了,这一章就讲到这里。下一章咱们开始实战,写第一个SPICE网表,跑一个简单的运放仿真。到时候我会手把手带你们走一遍流程,包括怎么调参数、怎么看波形、怎么排查错误。嗯,到时候见。