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 语句的完整语法结构,帮助理解各组成部分的层级关系:
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 语句,分别对应不同工艺角或不同器件类型。下图展示了一个典型的多模型卡组织结构:
2.7 常见语法错误与排查
在编写模型卡时,以下语法错误最为常见,建议在生成模型文件后使用 SPICE 解析器进行预检查:
- 缺少点号:
MODEL NMOS_TT NMOS (...)缺少开头的.,导致语句被当作普通注释忽略。 - 括号不匹配:左括号和右括号数量不一致,导致解析器无法确定参数列表的结束位置。
- 逗号分隔参数:
VTO=0.35, KP=1.2e-4中的逗号会被解析为非法字符。 - 续行符缺失:参数列表跨行时,新行开头未加
+号。 - 模型名称重复:同一网表中出现两个同名的
.MODEL语句,后定义的会覆盖前者。 - 模型类型拼写错误:如将
NMOS误写为NMOSFET,SPICE 无法识别。
调试技巧: 使用 SPICE 的
.OPTIONS LIST 语句可以输出解析后的模型参数列表,帮助检查模型卡是否被正确加载。如果模型卡语法错误,SPICE 通常会给出 Error: syntax error in .MODEL line 的提示,并指出错误行号。
2.8 本章小结
本章系统讲解了 .MODEL 点语句的语法规则,包括:
- 语法结构:点号 + MODEL 关键字 + 模型名称 + 模型类型 + 圆括号包裹的参数列表。
- 命名规范:字母/数字/下划线组成,首字符不能为数字,建议采用“器件_工艺角_电压”的命名模式。
- 分隔符规则:参数之间使用空格分隔,严禁使用逗号;等号用于参数名与值的赋值;续行符使用
+。 - 参数值格式:优先使用科学计数法,确保跨 SPICE 变体的兼容性。
掌握这些基础语法规则,是后续学习模型参数定义、模型层级引用以及模型文件标准化组织的前提。