3. SPICE 模型基础
SPICE(Simulation Program with Integrated Circuit Emphasis)是集成电路设计领域最核心的仿真工具。在深亚微米 CMOS 工艺中,SPICE 模型是连接工艺制造与电路设计的桥梁。本章将系统介绍 SPICE 仿真器的工作原理、网表语法结构、模型语句定义以及子电路封装与调用方法,为后续 PDK 集成打下坚实基础。
3.1 SPICE 仿真器简介
SPICE 最初由加州大学伯克利分校开发,经过数十年发展,已成为业界标准。现代 EDA 工具中的 SPICE 仿真器主要分为以下几类:
| 仿真器类型 | 代表工具 | 特点 | 适用场景 |
|---|---|---|---|
| 传统 SPICE | HSPICE、PSPICE | 精度高、收敛性好 | 模拟电路精确仿真 |
| FastSPICE | Spectre、FineSim | 速度快、容量大 | 大规模混合信号仿真 |
| 并行 SPICE | HSPICE FX、CustomSim | 多核加速、分布式计算 | 超大规模后仿验证 |
不同仿真器在语法细节上存在差异,但核心网表结构保持一致。下图展示了 SPICE 仿真器处理网表的完整流程:
3.2 SPICE 网表语法
SPICE 网表是描述电路拓扑结构和仿真条件的文本文件。一个完整的 SPICE 网表包含以下基本要素:
- 标题行:网表的第一行,作为电路描述注释
- 注释行:以
*开头,用于添加说明信息 - 器件语句:定义元器件类型、连接节点和参数
- 模型语句:使用
.MODEL定义器件物理参数 - 分析语句:指定仿真类型(DC、AC、TRAN 等)
- 输出语句:控制仿真结果的打印或绘图
- 结束语句:以
.END结束网表
下面是一个典型的 CMOS 反相器 SPICE 网表示例:
* CMOS Inverter Netlist
* VDD = 1.8V, L = 0.18um
* Power supply
VDD vdd 0 DC 1.8
* Input stimulus
VIN in 0 PULSE(0 1.8 0 0.1n 0.1n 5n 10n)
* MOSFET devices
M1 out in vdd vdd PMOS W=2u L=0.18u
M2 out in 0 0 NMOS W=1u L=0.18u
* Model definitions
.MODEL NMOS NMOS LEVEL=49 VERSION=3.3
+ TOX=4.0E-9 NCH=2.3549E17
+ U0=439.5 VSAT=1.07E5
+ VTH0=0.42 K1=0.59 K2=0.01
.MODEL PMOS PMOS LEVEL=49 VERSION=3.3
+ TOX=4.0E-9 NCH=4.1589E16
+ U0=185.2 VSAT=8.54E4
+ VTH0=-0.42 K1=0.52 K2=0.02
* Analysis commands
.TRAN 0.1n 20n
.PRINT TRAN V(in) V(out)
.END
器件语句的基本格式为:<器件名> <漏极> <栅极> <源极> <衬底> <模型名> [参数]。下表总结了常用器件语句的节点顺序:
| 器件类型 | 语句前缀 | 节点顺序 | 示例 |
|---|---|---|---|
| MOSFET | M | D G S B | M1 d g s b NMOS W=2u L=0.18u |
| 电阻 | R | N+ N- | R1 1 0 1k |
| 电容 | C | N+ N- | C1 1 0 1p |
| 二极管 | D | A K | D1 1 0 DIODE |
| 独立电压源 | V | N+ N- | VDD 1 0 DC 1.8 |
| 独立电流源 | I | N+ N- | I1 1 0 DC 1m |
3.3 模型语句(.MODEL)
.MODEL 语句用于定义半导体器件的物理模型参数。其基本语法格式为:
.MODEL <模型名> <模型类型> [层级参数] [模型参数]
在深亚微米 CMOS 工艺中,最常用的 MOSFET 模型包括:
| 模型层级 | LEVEL 值 | 特点 | 适用工艺节点 |
|---|---|---|---|
| BSIM3v3 | 49 / 8 | 物理模型、参数少、收敛性好 | 0.35μm ~ 0.13μm |
| BSIM4 | 54 / 14 | 支持应力效应、栅极漏电 | 90nm ~ 28nm |
| BSIM-BULK | 72 | 统一模型、覆盖所有区域 | 16nm 及以下 |
BSIM4 模型参数按功能分组,下表列出了核心参数类别:
| 参数组 | 关键参数 | 物理含义 |
|---|---|---|
| 工艺参数 | TOX、NCH、XJ | 栅氧厚度、沟道掺杂、结深 |
| 阈值电压 | VTH0、K1、K2 | 长沟道阈值、体效应系数 |
| 迁移率 | U0、UA、UB、UC | 低场迁移率、垂直场退化 |
| 速度饱和 | VSAT、ESAT | 饱和速度、临界电场 |
| 输出电阻 | PCLM、DROUT、PSUB | 沟道长度调制、DIBL 效应 |
| 寄生参数 | RDSW、CJ、CJSW | 源漏电阻、结电容 |
下面是一个完整的 BSIM4 NMOS 模型定义示例:
.MODEL NMOS_18 NMOS LEVEL=54
+ VERSION = 4.7
+ TOX = 4.0E-9 XJ = 1.5E-7
+ NCH = 2.3549E17 VTH0 = 0.42
+ K1 = 0.59 K2 = 0.01
+ K3 = 1.0 K3B = 0.0
+ W0 = 2.5E-6 DVT0 = 2.2
+ DVT1 = 0.53 DVT2 = -0.032
+ U0 = 439.5 UA = -1.4E-9
+ UB = 2.2E-18 UC = -5.6E-11
+ VSAT = 1.07E5 A0 = 1.0
+ AGS = 0.0 B0 = 0.0
+ B1 = 0.0 KETA = -0.047
+ A1 = 0.0 A2 = 0.99
+ RDSW = 150 PRWG = 0.5
+ PRWB = -0.2 WR = 1.0
+ WINT = 0.0 LINT = 1.0E-8
+ DLC = 1.0E-8 DWC = 0.0
+ VOFF = -0.08 NFACTOR = 2.5
+ CIT = 0.0 CDSC = 2.4E-4
+ CDSCD = 0.0 CDSCB = 0.0
+ ETA0 = 0.5 ETAB = -0.07
+ DSUB = 0.1 PCLM = 1.3
+ PDIBL1 = 0.39 PDIBL2 = 0.0
+ DROUT = 0.56 PSCBE1 = 8.14E8
+ PSCBE2 = 5.0E-5 PVAG = 0.0
+ DELTA = 0.01 MOBMOD = 1.0
+ PRT = 0.0 UTE = -1.5
+ KT1 = -0.11 KT1L = 0.0
+ KT2 = 0.022 UA1 = 4.31E-9
+ UB1 = -7.61E-18 UC1 = -5.6E-11
+ AT = 3.3E4 WL = 0.0
+ WLN = 1.0 WW = 0.0
+ WWN = 1.0 WWL = 0.0
+ LL = 0.0 LLN = 1.0
+ LW = 0.0 LWN = 1.0
+ LWL = 0.0 CAPMOD = 2
+ CGDO = 2.0E-10 CGSO = 2.0E-10
+ CGBO = 1.0E-9 CJ = 1.0E-3
+ PB = 0.8 MJ = 0.5
+ CJSW = 5.0E-10 PBSW = 0.8
+ MJSW = 0.33 CF = 0.0
+ PVTH0 = 0.0 PRDSW = 0.0
+ PK2 = 0.0 WKETA = 0.0
+ LKETA = 0.0
3.4 子电路(.SUBCKT)定义与调用
子电路是 SPICE 中实现电路模块化和复用的核心机制。通过 .SUBCKT 和 .ENDS 语句,可以将复杂的电路块封装为可重复调用的单元。
子电路定义的基本语法:
.SUBCKT <子电路名> <端口节点列表>
[内部电路描述]
[内部模型定义]
.ENDS [子电路名]
子电路调用的基本语法:
X<实例名> <连接节点列表> <子电路名>
下面是一个 CMOS 运算放大器子电路的完整定义与调用示例:
* Subcircuit definition: Two-stage CMOS Op-Amp
.SUBCKT OPAMP VINP VINN VOUT VDD VSS
* Input differential pair
M1 V1 VINP V2 VSS NMOS_18 W=20u L=0.18u M=4
M2 V1 VINN V2 VSS NMOS_18 W=20u L=0.18u M=4
* Tail current source
M3 V2 VBIAS VSS VSS NMOS_18 W=10u L=0.5u M=2
* Active load (current mirror)
M4 V1 V1 VDD VDD PMOS_18 W=10u L=0.18u M=2
M5 VOUT V1 VDD VDD PMOS_18 W=10u L=0.18u M=2
* Second stage
M6 VOUT V1 VDD VDD PMOS_18 W=40u L=0.18u M=4
M7 VOUT VBIAS VSS VSS NMOS_18 W=20u L=0.5u M=2
* Compensation capacitor
CC VOUT V1 2p
* Bias voltage generation (internal)
VBIAS VBIAS 0 DC 0.9
.ENDS OPAMP
* Main circuit: Op-Amp in unity-gain configuration
X1 VIN VOUT VOUT VDD VSS OPAMP
VDD VDD 0 DC 1.8
VSS VSS 0 DC 0
VIN VIN 0 DC 0.9 AC 1
.AC DEC 100 1 100MEG
.PROBE
.END
子电路设计需要遵循以下最佳实践:
- 端口命名:使用有意义的名称(如 VINP、VINN、VOUT),避免使用数字节点
- 内部节点:子电路内部的节点名不会与外部冲突,但建议使用有意义的名称便于调试
- 参数化:使用
.PARAM语句定义可调参数,提高子电路灵活性 - 层次化:子电路内部可以嵌套调用其他子电路,形成层次化设计
下图展示了子电路在 PDK 中的层次化调用关系:
.LIB 语句统一调用,便于版本管理和工艺切换。
3.5 模型文件组织与调用
在实际 PDK 中,模型文件通常按照以下结构组织:
* PDK 模型文件组织结构
* 文件: pdk_models.lib
* 1. 工艺角定义
.LIB TT
* 典型工艺角模型
.INCLUDE "./models/nmos_tt.inc"
.INCLUDE "./models/pmos_tt.inc"
.INCLUDE "./models/res_tt.inc"
.INCLUDE "./models/cap_tt.inc"
.ENDL TT
.LIB FF
* 快工艺角模型
.INCLUDE "./models/nmos_ff.inc"
.INCLUDE "./models/pmos_ff.inc"
.INCLUDE "./models/res_ff.inc"
.INCLUDE "./models/cap_ff.inc"
.ENDL FF
.LIB SS
* 慢工艺角模型
.INCLUDE "./models/nmos_ss.inc"
.INCLUDE "./models/pmos_ss.inc"
.INCLUDE "./models/res_ss.inc"
.INCLUDE "./models/cap_ss.inc"
.ENDL SS
* 2. 子电路库
.LIB standard_cells
.SUBCKT INV A Z VDD VSS
M1 Z A VSS VSS NMOS_18 W=0.5u L=0.18u
M2 Z A VDD VDD PMOS_18 W=1.0u L=0.18u
.ENDS INV
.SUBCKT NAND2 A B Z VDD VSS
M1 Z A VSS VSS NMOS_18 W=0.5u L=0.18u
M2 Z B VSS VSS NMOS_18 W=0.5u L=0.18u
M3 Z A V1 VDD PMOS_18 W=1.0u L=0.18u
M4 V1 B VDD VDD PMOS_18 W=1.0u L=0.18u
.ENDS NAND2
.ENDL standard_cells
在仿真网表中通过 .LIB 语句调用:
* 调用 PDK 模型库
.LIB "./pdk_models.lib" TT
.LIB "./pdk_models.lib" standard_cells
* 使用标准单元
X1 A B Z VDD VSS NAND2
X2 Z Z_OUT VDD VSS INV
3.6 仿真分析与输出控制
SPICE 提供多种分析类型,下表总结了最常用的分析语句:
| 分析类型 | 语句格式 | 用途 |
|---|---|---|
| DC 扫描 | ← 上一章 📖 返回目录 下一章 → |