2. 模型卡语法基础:点语句(.MODEL)的语法规则、模型名称命名规范、参数括号与分隔符的使用

SPICE 模型卡的核心是 .MODEL 点语句,它定义了半导体器件的电气特性参数集合。掌握其语法规则、命名规范以及参数分隔符的使用,是生成标准化模型文件的第一步。本章将系统讲解这些基础语法要素。

2.1 .MODEL 语句的语法规则

.MODEL 语句是 SPICE 网表中用于声明模型参数集的点语句。其基本语法结构如下:

.MODEL <模型名称> <模型类型> (<参数名1>=<值1> <参数名2>=<值2> ...)

语法要素说明:

  • 点号(.):所有 SPICE 控制语句必须以点号开头,表示这是一条仿真控制指令。
  • MODEL 关键字:固定关键字,不区分大小写,通常写作大写以增强可读性。
  • 模型名称:用户自定义的标识符,用于在器件实例化时引用该模型。
  • 模型类型:SPICE 预定义的关键字,如 NMOS、PMOS、NPN、PNP、DIODE 等。
  • 参数列表:用圆括号括起来的参数赋值序列,每个参数由名称和值组成。
语法要点: 参数列表必须使用圆括号 () 包裹,参数之间使用空格或换行分隔,不能使用逗号作为参数分隔符。这是初学者最容易犯的错误。

以下是一个完整的 NMOS 模型卡示例:

.MODEL NMOS_VTH_LOW NMOS (


+ VTO       = 0.35


+ KP        = 1.2e-4


+ GAMMA     = 0.45


+ PHI       = 0.85


+ LAMBDA    = 0.08


+ TOX       = 7.5e-9


+ NSUB      = 1.5e17


+ XJ        = 1.5e-7


+ LD        = 1.0e-7


+ UO        = 450


+ RSH       = 50


+ CJ        = 5.0e-4


+ CJSW      = 3.0e-10


+ CGDO      = 2.0e-10


+ CGSO      = 2.0e-10


)

注意上例中使用了 + 号作为续行符,这是 SPICE 中长语句换行的标准做法。续行符必须出现在行首,表示该行是上一行的延续。

2.2 模型名称命名规范

模型名称是模型卡的身份标识,在网表中通过 M(MOSFET)或 Q(BJT)等器件语句引用。命名规范直接影响模型文件的可读性和可维护性。

规范类别 规则说明 合法示例 非法示例
字符集 仅允许字母(A-Z, a-z)、数字(0-9)和下划线(_) NMOS_VTH_LOW NMOS-VTH-LOW(含连字符)
首字符 必须以字母或下划线开头,不能以数字开头 _DIODE_FAST 1N4148_MODEL(数字开头)
长度限制 建议不超过 32 个字符,部分 SPICE 变体限制为 8 字符 BJT_NPN_2N2222 BJT_NPN_2N2222_HIGH_GAIN_LOW_NOISE(过长)
大小写 SPICE 3f5 及以后版本区分大小写 nmos_vth_low 混用大小写可能导致引用失败
保留字 不能使用 SPICE 关键字或模型类型名 MY_NMOS NMOS(与模型类型冲突)
命名建议: 采用“器件类型_工艺角_电压等级”的命名模式,例如 NMOS_TT_1V8(典型工艺角、1.8V 器件)、PMOS_FF_3V3(快快工艺角、3.3V 器件)。这种命名方式在大型 PDK 中广泛使用,便于快速识别模型属性。

2.3 参数括号与分隔符的使用

参数列表的括号和分隔符是模型卡语法中最容易出错的环节。SPICE 对参数分隔符有严格的规定,不同版本的 SPICE 可能存在细微差异。

2.3.1 括号规则

  • 必须使用圆括号 () 包裹整个参数列表。
  • 左括号必须紧跟在模型类型之后,中间可以有一个空格。
  • 右括号必须出现在最后一个参数之后,表示参数列表结束。
  • 括号内可以包含换行,配合续行符 + 使用。

2.3.2 分隔符规则

分隔符 用途 正确示例 错误示例
空格 参数之间的标准分隔符 VTO=0.35 KP=1.2e-4 VTO=0.35,KP=1.2e-4(使用逗号)
等号 参数名与参数值之间的赋值符 VTO=0.35 VTO 0.35(缺少等号)
换行+加号 长参数列表的续行符 + VTO=0.35 直接换行不加 +
冒号 部分 SPICE 变体用于层级参数 LEVEL=1:VTO=0.35 标准 SPICE 中不支持
常见错误: 许多工程师习惯使用逗号分隔参数(如 C 语言函数调用风格),但在 SPICE 中逗号会被解析为非法字符,导致模型卡加载失败。请务必使用空格作为参数分隔符。

2.4 模型卡语法结构图

下图展示了 .MODEL 语句的完整语法结构,帮助理解各组成部分的层级关系:

.MODEL 语句语法结构图 .MODEL 语句语法结构图 .MODEL 点语句 模型名称 模型类型 参数列表 ( ) 字母 / 数字 / 下划线 NMOS / PMOS / NPN / PNP 参数名 = 参数值 首字符不能为数字 DIODE / RES / CAP / IND 空格分隔,禁用逗号 建议长度 ≤ 32 字符 关键字不区分大小写 续行符 + 换行 参数列表书写示例 .MODEL NMOS_VTH_LOW NMOS ( + VTO = 0.35 KP = 1.2e-4 GAMMA = 0.45 + LAMBDA = 0.08 TOX = 7.5e-9 NSUB = 1.5e17 ) 正确:参数之间只用空格分隔,圆括号包裹整个列表 错误:使用逗号分隔会被解析器判为非法字符

2.5 参数值格式规范

参数值的书写格式直接影响 SPICE 解析器的识别。下表总结了不同数据类型的标准格式:

数据类型 格式说明 正确示例 错误示例
浮点数 支持科学计数法,使用 e 或 E 1.2e-4 1.2E-4(部分旧版不支持大写 E)
整数 直接书写,不带小数点 450 450.0(虽可解析但不规范)
工程单位 支持后缀:F(飞秒)、P(皮)、N(纳)、U(微)、M(毫)、K(千)、MEG(兆) 7.5N(表示 7.5e-9) 7.5n(大小写敏感,小写 n 可能不被识别)
逻辑值 使用 0 或 1,部分支持 TRUE/FALSE SHMOD=1 SHMOD=YES
最佳实践: 在编写模型卡时,建议统一使用科学计数法(如 1.2e-4)而非工程单位后缀(如 120U)。科学计数法在所有 SPICE 变体中兼容性最好,且数值精度明确,避免了单位换算带来的歧义。

2.6 多模型卡的组织结构

在实际的模型文件中,通常包含多个 .MODEL 语句,分别对应不同工艺角或不同器件类型。下图展示了一个典型的多模型卡组织结构:

多模型卡组织结构图 多模型卡组织结构图 模型文件(.lib / .mdl) 同一文件内多个 .MODEL 语句并列共存 NMOS 3 个模型卡 .MODEL NMOS_TT NMOS 典型工艺角 NMOS .MODEL NMOS_FF NMOS 快快工艺角 NMOS .MODEL NMOS_SS NMOS 慢慢工艺角 NMOS PMOS 3 个模型卡 .MODEL PMOS_TT PMOS 典型工艺角 PMOS .MODEL PMOS_FF PMOS 快快工艺角 PMOS .MODEL PMOS_SS PMOS 慢慢工艺角 PMOS * 注释:每个模型卡独立定义,通过模型名称区分,互不干扰

2.7 常见语法错误与排查

在编写模型卡时,以下语法错误最为常见,建议在生成模型文件后使用 SPICE 解析器进行预检查:

  1. 缺少点号:MODEL NMOS_TT NMOS (...) 缺少开头的 .,导致语句被当作普通注释忽略。
  2. 括号不匹配:左括号和右括号数量不一致,导致解析器无法确定参数列表的结束位置。
  3. 逗号分隔参数:VTO=0.35, KP=1.2e-4 中的逗号会被解析为非法字符。
  4. 续行符缺失:参数列表跨行时,新行开头未加 + 号。
  5. 模型名称重复:同一网表中出现两个同名的 .MODEL 语句,后定义的会覆盖前者。
  6. 模型类型拼写错误:如将 NMOS 误写为 NMOSFET,SPICE 无法识别。
调试技巧: 使用 SPICE 的 .OPTIONS LIST 语句可以输出解析后的模型参数列表,帮助检查模型卡是否被正确加载。如果模型卡语法错误,SPICE 通常会给出 Error: syntax error in .MODEL line 的提示,并指出错误行号。

2.8 本章小结

本章系统讲解了 .MODEL 点语句的语法规则,包括:

  • 语法结构:点号 + MODEL 关键字 + 模型名称 + 模型类型 + 圆括号包裹的参数列表。
  • 命名规范:字母/数字/下划线组成,首字符不能为数字,建议采用“器件_工艺角_电压”的命名模式。
  • 分隔符规则:参数之间使用空格分隔,严禁使用逗号;等号用于参数名与值的赋值;续行符使用 +。
  • 参数值格式:优先使用科学计数法,确保跨 SPICE 变体的兼容性。

掌握这些基础语法规则,是后续学习模型参数定义、模型层级引用以及模型文件标准化组织的前提。