4、SPICE模型深入:SPICE网表结构、MOS管模型(BSIM3/4)、无源器件模型、子电路调用
好,咱们今天聊点硬核的。SPICE模型,说白了就是电路仿真里的“演员”。你搭了个电路,给它什么模型,它就演什么戏。模型不准,仿真结果就是瞎扯。我早年吃过这个亏,一个LDO的负载瞬态仿真怎么调都不对,折腾了两天,最后发现是MOS管的BSIM3模型参数里,有一个沟道长度调制系数设成了默认值。嗯,从那以后,我对模型参数的检查就格外上心。
4.1 SPICE网表结构:电路的语言
SPICE网表,就是描述电路的“语法”。你想想看,你要告诉仿真器:这里有个电阻,阻值1k;那里有个MOS管,宽长比是10/0.18。网表就是干这个的。
一个基本的网表行,格式大概是这样的:
<元件名> <正节点> <负节点> <模型名> <参数>
举个例子:
R1 1 0 1k
M1 2 3 0 0 NMOS W=10u L=0.18u
第一行:R1是电阻名字,接在节点1和地(0)之间,阻值1kΩ。
第二行:M1是NMOS管,漏极接节点2,栅极接节点3,源极和衬底都接地。模型名叫NMOS,宽10微米,长0.18微米。
4.2 MOS管模型:BSIM3与BSIM4
MOS管模型是SPICE仿真的灵魂。早期用Level 1、Level 2模型,简单但不准。现在主流是BSIM3和BSIM4。
BSIM3(Berkeley Short-channel IGFET Model 3),是0.35微米到0.13微米工艺的主力。它考虑了短沟道效应、迁移率退化、速度饱和等。我在一个0.18微米的项目中用过,仿真结果和硅片实测的误差在5%以内,相当靠谱。
BSIM4 是BSIM3的升级版,主要针对90纳米及以下的工艺。它加入了更多物理效应,比如:
- 栅极漏电流:沟道变薄后,栅氧隧穿电流不可忽略。
- 应力效应:STI(浅槽隔离)对载流子迁移率的影响。
- 噪声模型:更精确的1/f噪声和热噪声。
BSIM4的模型参数多到吓人,光一个MOS管就有上百个参数。但别怕,晶圆厂提供的PDK(工艺设计套件)里都配好了,你直接调用就行。
4.3 无源器件模型:电阻、电容、电感
无源器件看着简单,但高频下就复杂了。你以为是个电阻,其实它还有寄生电感和电容。
电阻模型:
- 理想电阻:直接写阻值,比如
R=1k。 - 实际电阻:用子电路表示,包含寄生串联电感(Lser)和并联电容(Cpar)。
.SUBCKT R_POLY 1 2
R1 1 2 1k
Lser 1 3 1nH
Cpar 2 0 0.1pF
.ENDS R_POLY
电容模型:
- 理想电容:
C=10p。 - 实际电容:考虑ESR(等效串联电阻)和ESL(等效串联电感)。
.SUBCKT C_MLCC 1 2
C1 1 2 10u
Rser 1 3 10m
Lser 3 2 1nH
.ENDS C_MLCC
电感模型:
- 理想电感:
L=10u。 - 实际电感:包含DCR(直流电阻)和寄生电容。
4.4 子电路调用:模块化设计
子电路(Subcircuit)是SPICE里的“函数”。你把一个功能模块封装起来,然后到处调用。比如运放、比较器、带隙基准,都可以做成子电路。
定义子电路用 .SUBCKT 和 .ENDS:
.SUBCKT OPAMP VINP VINN VOUT VDD VSS
M1 VOUT VINP VTAIL VSS NMOS W=20u L=0.5u
M2 VTAIL VINN VTAIL VSS NMOS W=20u L=0.5u
... (内部电路)
.ENDS OPAMP
调用子电路用 X 开头:
X1 VINP VINN VOUT VDD VSS OPAMP
这里 X1 是实例名,后面跟着节点连接顺序,最后是子电路名 OPAMP。
OPAMP_LOWPOWER、COMP_FAST。别用 OP1、OP2,不然项目大了根本分不清。另外,子电路内部节点名要加下划线或前缀,避免和顶层网表冲突。比如内部节点叫 _VTAIL,而不是 VTAIL。
4.5 实战:一个完整的SPICE网表
咱们来个完整的例子:一个共源极放大器,用BSIM3模型,负载是理想电阻。
* 共源极放大器网表
.OPTIONS POST=2
.TEMP 25
* 电源和输入
VDD VDD 0 1.8
VIN VIN 0 0.9 AC 1
* MOS管
M1 VOUT VIN 0 0 NMOS W=10u L=0.18u
* 负载电阻
RL VOUT VDD 10k
* 模型定义
.MODEL NMOS NMOS LEVEL=49
+ VTH0=0.5 U0=400 TOX=4e-9
+ LINT=0.02u WINT=0.05u
+ ... (其他BSIM3参数)
* 分析
.AC DEC 100 1 1e9
.PROBE
.END
这个网表里,LEVEL=49 就是BSIM3模型。你跑一下AC分析,就能看到增益和带宽。
好了,这一章的内容就到这儿。SPICE模型这东西,多练多用才能熟。下次你遇到仿真不收敛,先别急着改电路,回头看看模型参数对不对。很多时候,问题就出在模型上。