模型验证方法:SPICE模型原理与MOSFET建模工程 - 第2节
2.1 SPICE 网表结构:电路描述的核心骨架
SPICE 网表(Netlist)是电路仿真器能够理解的语言,它通过文本形式精确描述电路的拓扑结构、元件参数以及分析要求。一个标准的 SPICE 网表由五个基本部分组成,其结构层次清晰,遵循“标题—注释—元件—分析—结束”的固定顺序。
网表结构五要素:
- 标题行:网表的第一行,通常为电路名称或描述,仿真器会忽略其电气含义。
- 注释行:以星号
*开头,用于添加说明,仿真器不处理。 - 元件声明:定义电路中的元器件(电阻、电容、MOSFET等)及其连接关系。
- 分析语句:指定仿真类型(直流、交流、瞬态等)及扫描参数。
- 结束语句:以
.END或.ENDS标记网表结束。
以下是一个简单的 CMOS 反相器网表示例,展示了上述结构的实际应用:
* CMOS Inverter Netlist
VDD 1 0 DC 5V
VIN 2 0 PULSE(0 5 0 1n 1n 10n 20n)
M1 3 2 1 1 PMOS W=10u L=1u
M2 3 2 0 0 NMOS W=5u L=1u
CL 3 0 1pF
.DC VIN 0 5 0.1
.TRAN 0.1n 50n
.PROBE
.END
关键规则: 网表中的节点编号必须为整数(0 表示地节点),元件名称的第一个字母决定了其类型(如 R 表示电阻,M 表示 MOSFET)。节点连接顺序必须严格遵循元件模型的引脚定义。
2.2 元件声明语法:从无源到有源器件
SPICE 中每个元件都由一个关键字开头,后跟节点连接列表和模型参数。掌握元件声明是构建复杂电路的基础。下表总结了最常用的元件声明格式:
| 元件类型 | 关键字 | 声明格式示例 | 说明 |
|---|---|---|---|
| 电阻 | R | R1 1 2 1k |
节点1到节点2,阻值1kΩ |
| 电容 | C | C1 2 0 10pF |
节点2到地,容值10pF |
| 电感 | L | L1 3 4 5uH |
节点3到节点4,感值5μH |
| 独立电压源 | V | VDD 1 0 DC 5V |
节点1到地,直流5V |
| 独立电流源 | I | IIN 2 0 DC 1mA |
节点2到地,直流1mA |
| MOSFET | M | M1 D G S B NMOS W=10u L=1u |
漏-栅-源-衬底,模型名+几何参数 |
| 二极管 | D | D1 A K DIODE1 |
阳极-阴极,模型名 |
常见陷阱: MOSFET 的节点顺序固定为 漏极 (D) → 栅极 (G) → 源极 (S) → 衬底 (B),顺序错误会导致仿真结果完全错误。另外,单位后缀不区分大小写(如
1k 与 1K 等效),但建议统一使用小写以避免混淆。
2.3 分析语句:.DC / .AC / .TRAN
分析语句是 SPICE 仿真的核心指令,它告诉仿真器要执行哪种类型的计算。三种基本分析覆盖了电路设计的主要验证需求:
2.3.1 直流分析 (.DC)
.DC 语句用于扫描一个或多个独立源或参数的直流值,以观察电路工作点随输入的变化。典型应用包括传输特性曲线、MOSFET I-V 特性扫描。
* 扫描电压源 VIN 从 0V 到 5V,步长 0.1V
.DC VIN 0 5 0.1
* 双参数嵌套扫描:先扫描 VGS,再扫描 VDS
.DC VGS 0 5 0.1 VDS 0 5 0.2
工程要点: 在 MOSFET 建模中,
.DC 分析常用于提取阈值电压 (VTH) 和跨导 (gm)。嵌套扫描可以生成完整的 ID-VDS 输出特性族。
2.3.2 交流分析 (.AC)
.AC 语句用于计算电路的小信号频率响应。它要求信号源具有交流幅度,仿真器会在指定频率范围内求解线性化电路。
* 频率从 1Hz 扫描到 10GHz,每十倍频 10 个点
.AC DEC 10 1 10G
* 线性扫描:从 1kHz 到 100kHz,步长 1kHz
.AC LIN 100 1k 100k
| 扫描方式 | 关键字 | 语法 | 适用场景 |
|---|---|---|---|
| 十倍频程 | DEC | .AC DEC <点数> <起始> <终止> |
宽频带响应(如运放增益带宽积) |
| 八倍频程 | OCT | .AC OCT <点数> <起始> <终止> |
音频频段分析 |
| 线性 | LIN | .AC LIN <总点数> <起始> <终止> |
窄带精细扫描 |
2.3.3 瞬态分析 (.TRAN)
.TRAN 语句用于计算电路在时域中的响应,适用于分析开关行为、波形失真、建立时间等动态特性。
* 从 0 到 100ns,最大步长 0.1ns
.TRAN 0.1n 100n
* 从 10ns 开始记录到 100ns,初始条件由 UIC 指定
.TRAN 0.1n 100n 10n UIC
性能警告: 瞬态分析的时间步长设置过小会导致仿真时间急剧增加,步长过大则可能遗漏快速变化的信号。建议使用
.OPTIONS RELTOL=1e-3 和 .OPTIONS ITL4=500 来平衡精度与速度。
2.4 控制语句:仿真流程的指挥棒
控制语句用于管理仿真过程、设置选项、输出数据以及定义子电路。它们是高效使用 SPICE 的关键工具。
2.4.1 常用控制语句速查表
| 语句 | 功能 | 示例 |
|---|---|---|
.PROBE |
保存所有节点电压和元件电流用于后处理 | .PROBE |
.PRINT |
在输出文件中打印指定变量的值 | .PRINT DC V(3) I(M1) |
.PLOT |
在输出文件中生成低分辨率 ASCII 波形图 | .PLOT DC V(3) |
.OPTIONS |
设置仿真器全局参数(精度、迭代限制等) | .OPTIONS RELTOL=1e-4 ABSTOL=1e-12 |
.SUBCKT |
定义子电路,用于模块化设计 | .SUBCKT INV IN OUT VDD VSS |
.ENDS |
结束子电路定义 | .ENDS INV |
.IC |
设置初始条件(节点电压或电感电流) | .IC V(3)=2.5V |
.NODESET |
为直流收敛提供初始猜测值 | .NODESET V(3)=2.5V |
2.4.2 子电路与模型调用
子电路允许将重复使用的电路块(如反相器、运算放大器)封装起来,通过 X 关键字调用。这在大型集成电路仿真中至关重要。
* 定义 CMOS 反相器子电路
.SUBCKT INV IN OUT VDD VSS
M1 OUT IN VDD VDD PMOS W=10u L=1u
M2 OUT IN VSS VSS NMOS W=5u L=1u
.ENDS INV
* 在主电路中调用子电路
X1 A B VDD VSS INV
X2 B C VDD VSS INV
最佳实践: 使用
.OPTIONS 中的 POST=2 可以生成二进制格式的输出文件,大幅减小文件体积并加快波形查看器的加载速度。对于 MOSFET 建模,建议始终开启 .PROBE 以捕获所有内部节点信息。
2.5 综合示例:完整网表实战
以下是一个完整的 NMOS 输出特性仿真网表,综合运用了元件声明、分析语句和控制语句:
* NMOS Output Characteristics Simulation
.SUBCKT NMOS_DEV D G S B W=10u L=1u
M1 D G S B NMOS_MOD W={W} L={L}
.ENDS NMOS_DEV
.MODEL NMOS_MOD NMOS (VTO=0.7 KP=200u GAMMA=0.5 PHI=0.8 LAMBDA=0.01)
VDD D 0 DC 5V
VG G 0 DC 1V
VS S 0 DC 0V
VB B 0 DC 0V
* 扫描 VGS 从 1V 到 5V,步长 1V;同时扫描 VDS 从 0V 到 5V,步长 0.1V
.DC VG 1 5 1 VD 0 5 0.1
* 设置仿真精度
.OPTIONS RELTOL=1e-4 ABSTOL=1e-12
* 输出漏极电流
.PRINT DC I(M1)
.PROBE
.END
建模启示: 上述网表展示了如何通过参数化子电路和模型语句快速搭建 MOSFET 测试平台。改变
.MODEL 语句中的参数(如 VTO、KP)即可观察不同工艺角下的器件行为,这是模型验证的核心方法。