模型验证方法:SPICE模型原理与MOSFET建模工程 - 第2节

2.1 SPICE 网表结构:电路描述的核心骨架

SPICE 网表(Netlist)是电路仿真器能够理解的语言,它通过文本形式精确描述电路的拓扑结构、元件参数以及分析要求。一个标准的 SPICE 网表由五个基本部分组成,其结构层次清晰,遵循“标题—注释—元件—分析—结束”的固定顺序。

网表结构五要素:
  1. 标题行:网表的第一行,通常为电路名称或描述,仿真器会忽略其电气含义。
  2. 注释行:以星号 * 开头,用于添加说明,仿真器不处理。
  3. 元件声明:定义电路中的元器件(电阻、电容、MOSFET等)及其连接关系。
  4. 分析语句:指定仿真类型(直流、交流、瞬态等)及扫描参数。
  5. 结束语句:以 .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)。节点连接顺序必须严格遵循元件模型的引脚定义。
SPICE 网表结构解析流程图 标题行 注释行 元件声明 分析语句 结束语句 说明:网表必须严格按此顺序书写,元件声明中节点编号 0 固定为全局地参考点。 分析语句可包含多个(如 .DC 和 .TRAN 可共存),但 .END 必须位于最后一行。

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 等效),但建议统一使用小写以避免混淆。
MOSFET 元件声明节点连接示意 D 漏极 G 栅极 S 源极 B 衬底 模型名:NMOS / PMOS 几何参数:W=10u L=1u 声明格式:M<name> D G S B <model> W=<value> L=<value>

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 来平衡精度与速度。
SPICE 三大分析类型对比 .DC 直流分析 扫描直流工作点 传输特性曲线 MOSFET I-V 扫描 .AC 交流分析 小信号频率响应 增益/相位曲线 带宽与稳定性 .TRAN 瞬态分析 时域波形响应 开关特性分析 建立时间/过冲 分析语句选择指南 • 需要观察静态工作点或直流传输特性 → 使用 .DC • 需要分析频率响应或小信号增益 → 使用 .AC • 需要观察时域波形或开关瞬态 → 使用 .TRAN

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 以捕获所有内部节点信息。
控制语句在仿真流程中的角色 网表输入 .SUBCKT / .ENDS 仿真控制 .OPTIONS / .IC / .NODESET 数据输出 .PROBE / .PRINT / .PLOT 控制语句使用建议 • 子电路 (.SUBCKT) 用于模块化设计,提高网表可读性 • .OPTIONS 中的 RELTOL 和 ABSTOL 直接影响仿真精度与收敛性

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)即可观察不同工艺角下的器件行为,这是模型验证的核心方法。