4. SPICE建模基础:SPICE仿真器工作原理、网表语法、模型语句(.MODEL)、子电路(.SUBCKT)定义

SPICE(Simulation Program with Integrated Circuit Emphasis)是集成电路设计中最核心的仿真工具。对于SOI器件的建模,理解SPICE仿真器的工作原理、掌握网表语法、熟练使用.MODEL语句和.SUBCKT定义,是构建精确小信号等效电路的基础。本章将系统讲解这些核心概念,为后续的工程案例调试打下坚实基础。

4.1 SPICE仿真器工作原理

SPICE仿真器的核心是一个非线性直流与瞬态电路求解器。其工作流程可以概括为“读入-解析-迭代-输出”四个阶段。理解这一流程有助于诊断仿真不收敛或结果异常的问题。

核心工作流程:
  1. 网表解析:读取文本网表文件,识别元件、模型、连接关系与控制语句。
  2. 拓扑构建:建立节点导纳矩阵(G矩阵)与节点电流向量(I向量),形成电路方程 G·V = I。
  3. 非线性迭代:对于MOSFET等非线性器件,采用Newton-Raphson算法迭代求解,直到节点电压收敛。
  4. 瞬态积分:在瞬态分析(.TRAN)中,使用数值积分(如梯形法、Gear法)将微分方程转化为代数方程,在每个时间步重复步骤3。
  5. 结果输出:将节点电压、支路电流等数据写入输出文件或进行后处理。
SPICE仿真器工作流程图 读入网表 解析与拓扑 Newton-Raphson 收敛判断 输出结果 更新时间步 收敛 不收敛(迭代修正) 下一时间步 关键点:Newton-Raphson迭代的收敛性依赖于初始猜测与模型连续性。SOI器件的浮体效应可能导致收敛困难,需合理设置 .OPTIONS 参数。

4.2 网表语法基础

SPICE网表是一种基于文本的电路描述语言。一个完整的网表由标题行、注释、元件语句、模型语句、分析控制语句和结束语句组成。以下是一个简单的SOI MOSFET直流分析网表示例:

SOI NMOS DC Analysis Example
* 标题行:必须以非数字、非注释符开头
* 注释行:以 * 开头

* 电源与偏置
VDS  1 0 DC 1.0V
VGS  2 0 DC 0.8V
VSUB 3 0 DC 0V

* SOI MOSFET 实例化(调用子电路)
X1 1 2 0 3 SOI_NMOS W=1u L=0.18u

* 分析控制
.DC VDS 0 1.2 0.01
.PRINT DC I(VDS)

* 模型与子电路包含
.LIB './soi_model.lib' SOI_NMOS

.END
网表编写规范:
  • 第一行必须是标题行,不能以 * 或数字开头。
  • 元件名称的第一个字母表示元件类型(如 R=电阻,C=电容,M=MOSFET,X=子电路调用)。
  • 节点编号必须为整数,0 节点固定为地(GND)。
  • 语句不区分大小写,但建议保持一致性以提高可读性。

4.3 模型语句(.MODEL)

.MODEL 语句用于定义一组工艺参数,这些参数被一个或多个同类型器件共享。对于SOI MOSFET,通常使用BSIM-SOI模型(如BSIM3SOI或BSIM4SOI)。

语法格式:

.MODEL <model_name> <model_type> (<param1>=<value1> <param2>=<value2> ...)

参数说明:

参数 说明 示例值
model_name 模型名称,在元件语句中引用 SOI_NMOS
model_type 模型类型关键字 NMOS, PMOS, NPN
VTO 零偏阈值电压 0.35
U0 低场迁移率 450
TOX 栅氧化层厚度 2.5e-9
TSOI SOI体硅层厚度(SOI特有) 1e-7

BSIM-SOI模型示例:

.MODEL SOI_NMOS NMOS (
+ LEVEL  = 57        * BSIM3SOI 模型级别
+ VTO    = 0.35      * 阈值电压
+ U0     = 450       * 迁移率
+ TOX    = 2.5E-9    * 栅氧厚度
+ TSOI   = 1.0E-7    * SOI层厚度
+ NCH    = 2.0E17    * 沟道掺杂浓度
+ LINT   = 0.0       * 沟道长度偏移
+ WINT   = 0.0       * 沟道宽度偏移
+ VOFF   = -0.1      * 偏移电压
+ NFACTOR= 1.0       * 亚阈值因子
+ CGDO   = 2.0E-10   * 栅漏交叠电容
+ CGSO   = 2.0E-10   * 栅源交叠电容
+ CGBO   = 1.0E-12   * 栅体交叠电容
+ XJ     = 1.0E-7    * 结深
+ VSAT   = 1.2E5     * 饱和速度
+ A0     = 1.0       * 沟道长度调制系数
+ K1     = 0.5       * 体效应系数
+ K2     = 0.1       * 体效应系数2
)
SOI建模特别提示:BSIM-SOI模型包含大量与浮体效应、自热效应相关的参数。在工程调试中,TSOI(体硅厚度)和RBODY(体电阻)对浮体效应模拟至关重要,务必根据工艺实际值进行校准。

4.4 子电路定义(.SUBCKT)

.SUBCKT 允许用户将一组元件封装成一个可复用的模块,非常适合构建SOI器件的小信号等效电路模型。子电路可以包含电阻、电容、受控源,甚至嵌套其他子电路。

语法格式:

.SUBCKT <subckt_name> <node1> <node2> ... <nodeN>
  * 内部元件语句
  * 内部 .MODEL 语句(可选)
.ENDS <subckt_name>

SOI小信号等效电路子电路示例:

* SOI NMOS 小信号等效电路子电路
.SUBCKT SOI_SS_NMOS D G S B W=1u L=0.18u
* 外部节点:D(漏), G(栅), S(源), B(体)
* 参数:W(沟道宽度), L(沟道长度)

* 本征MOSFET(调用BSIM模型)
M1 D G S B SOI_NMOS W={W} L={L}

* 浮体效应网络:体节点B到内部体节点Bi
RBODY B Bi 1K
CBODY Bi 0 1E-15

* 自热效应网络(简化)
RTH Bi TH 1K
CTH TH 0 1E-12

* 栅漏交叠电容
CGD D G 1E-15

* 栅源交叠电容
CGS S G 1E-15

* 漏体结电容
CBD D B 2E-15

* 源体结电容
CBS S B 2E-15

.ENDS SOI_SS_NMOS
SOI小信号等效电路子电路结构图 .SUBCKT SOI_SS_NMOS D G S B D G S B M1 BSIM-SOI 浮体网络 RBODY+CBODY 自热网络 RTH+CTH CGD CGS CBD 子电路封装了本征模型、浮体效应、自热效应和寄生元件,便于在顶层网表中复用与调试。

4.5 子电路调用与参数传递

在顶层网表中,使用 X 开头的元件名调用子电路,并通过节点顺序和参数列表传递信息。

调用语法:

X<name> <node1> <node2> ... <nodeN> <subckt_name> <param1>=<value1> ...

示例:

* 调用SOI小信号子电路
X1 1 2 0 3 SOI_SS_NMOS W=10u L=0.18u

* 节点映射:D=1, G=2, S=0(GND), B=3
* 参数传递:W=10u, L=0.18u
参数传递规则:
  • 子电路内部使用 {参数名} 引用传递进来的参数。
  • 参数可以设置默认值,如 .SUBCKT SOI_SS_NMOS D G S B W=1u L=0.18u。
  • 支持表达式计算,如 W={W*2}。

4.6 模型与子电路的工程应用对比

特性 .MODEL 模型语句 .SUBCKT 子电路
抽象层级 工艺参数级(物理模型) 电路级(结构模型)
复用方式 被元件语句直接引用 被 X 元件调用
内部结构 不可见(黑盒) 可见(白盒,可包含多个元件)
参数类型 工艺参数(VTO, TOX等) 几何参数(W, L)或电路参数
典型用途 定义BSIM、BJT等标准模型 构建小信号等效电路、宏模型
SOI建模优势 提供精确的物理效应描述 灵活添加浮体、自热等外围网络

4.7 工程调试要点

常见网表错误与排查:
  • 节点悬空:所有节点必须至少连接两个元件,否则仿真器会报“floating node”错误。
  • 模型未定义:确保 .MODEL 或 .LIB 语句在调用之前被解析。
  • 子电路端口不匹配:调用时的节点顺序必须与 .SUBCKT 定义完全一致。
  • 参数未传递:子电路内部使用 {W} 而非 W,否则参数不会被替换。
  • 收敛失败:SOI浮体效应可能导致直流不收敛,尝试增加 .OPTIONS ITL1=500 或 GMIN=1E-12。

掌握SPICE网表语法、.MODEL 与 .SUBCKT 的定义与调用,是进行SOI器件SPICE建模的必备技能。在下一阶段的工程案例中,我们将基于这些基础,构建完整的小信号等效电路并进行参数提取与验证。