1. SPICE 网表基础回顾

SPICE 网表是电路仿真领域的通用语言。无论是经典 SPICE、HSPICE、PSPICE 还是 LTspice,其网表核心结构都遵循一套相似的语法规则。掌握网表的基本结构、元件定义格式和节点命名规则,是编写跨平台兼容网表的第一步。

核心要点: 网表本质是文本文件,由标题行、注释、元件语句、控制语句、模型语句和结束行构成。节点是连接元件的“电气点”,元件通过节点和参数定义其行为。

1.1 网表的基本结构

一个标准的 SPICE 网表由以下六个部分组成,顺序固定,缺一不可:

序号 部分 说明 示例
1 标题行 网表的第一行,通常为电路名称或描述,被 SPICE 忽略但必须存在 Simple RC Circuit
2 注释 以 * 开头,用于说明电路功能、作者、日期等 * Author: EDA Lab
3 元件语句 定义电路中的元器件及其连接关系 R1 1 0 1k
4 控制语句 以 . 开头,设置仿真类型、模型参数、输出指令等 .TRAN 1u 10m
5 模型语句 定义半导体器件的工艺参数模型 .MODEL NMOS1 NMOS ...
6 结束行 以 .END 结尾,标志网表结束 .END
跨平台提示: 所有主流 SPICE 变体都要求标题行和 .END 行。缺少标题行会导致某些仿真器报错,而缺少 .END 行则可能使仿真器读取到网表文件末尾的无关数据。

下面是一个完整的网表示例,展示各部分如何组合:

RC Low-Pass Filter
* 设计者:张三,日期:2025-01-15
* 用途:演示网表基本结构
V1 1 0 DC 5V
R1 1 2 1k
C1 2 0 1uF
.TRAN 1u 5m
.PRINT TRAN V(2)
.END

1.2 元件定义格式

SPICE 中每个元件都由一行语句定义,其通用格式为:

<元件名称> <正节点> <负节点> <参数值>

元件名称的第一个字母决定了元件类型,这是 SPICE 语法中最严格的规则之一。下表列出了常见元件类型及其名称前缀:

元件类型 名称前缀 语法示例 说明
电阻 R R1 1 0 10k 节点1到地,阻值10kΩ
电容 C C1 1 0 1uF 节点1到地,容值1μF
电感 L L1 1 2 100uH 节点1到2,感值100μH
独立电压源 V V1 1 0 DC 5V 节点1到地,直流5V
独立电流源 I I1 1 0 DC 1mA 节点1到地,直流1mA
二极管 D D1 1 0 DIODE1 阳极节点1,阴极接地,模型DIODE1
NMOS 晶体管 M M1 D G S B NMOS1 漏极D,栅极G,源极S,衬底B,模型NMOS1
受控源 E/F/G/H E1 3 0 1 2 10 VCVS,增益10
常见错误: 元件名称不能以数字开头,且不能与关键字(如 VCC、GND)冲突。例如 1R1 1 0 1k 是非法的,应改为 R1 1 0 1k。

参数值支持科学记数法和工程后缀,下表列出了常用后缀及其换算关系:

后缀 含义 数值 示例
F 飞(femto) 10⁻¹⁵ 1fF = 1×10⁻¹⁵ F
P 皮(pico) 10⁻¹² 10pF = 10×10⁻¹² F
N 纳(nano) 10⁻⁹ 100nH = 100×10⁻⁹ H
U 微(micro) 10⁻⁶ 1uF = 1×10⁻⁶ F
M 毫(milli) 10⁻³ 1mA = 1×10⁻³ A
K 千(kilo) 10³ 10k = 10×10³ Ω
MEG 兆(mega) 10⁶ 1MEG = 1×10⁶ Ω
G 吉(giga) 10⁹ 1G = 1×10⁹ Hz
跨平台提示: HSPICE 和 LTspice 都支持 MEG 表示兆欧,但部分旧版 SPICE 只认 MEG 而不认 M(因为 M 在早期版本中代表毫)。为兼容性考虑,建议使用 MEG 表示 10⁶,使用 M 表示 10⁻³。

1.3 节点命名规则

节点是网表中连接元件的关键点。SPICE 对节点命名有明确的规则,不同仿真器之间存在细微差异:

  • 数字节点: 节点名可以是数字(如 1、2、100),但 0 被保留为全局地节点(GND)。
  • 字母节点: 节点名可以是字母或字母数字组合(如 VCC、CLK、NODE_A)。
  • 大小写敏感: HSPICE 默认大小写不敏感(VCC 和 vcc 相同),而 LTspice 和 NGSPICE 默认大小写敏感。
  • 特殊字符: 大多数仿真器允许使用 _ 和 $,但不建议使用 .、+、- 等运算符字符。
  • 全局节点: 0 或 GND 是唯一的全局地节点,所有仿真器都将其视为参考电位。

下表总结了不同仿真器在节点命名上的兼容性差异:

特性 HSPICE LTspice PSPICE NGSPICE
大小写敏感 否 是 否 是
数字节点 支持 支持 支持 支持
字母节点 支持 支持 支持 支持
下划线 _ 支持 支持 支持 支持
点号 . 不支持 不支持 不支持 不支持
方括号 [] 支持(总线) 不支持 支持(总线) 不支持
最大长度 1024 字符 无明确限制 131 字符 无明确限制
跨平台避坑: 如果网表需要在 HSPICE 和 LTspice 之间共享,建议统一使用大写字母节点名(如 VCC、GND),避免使用方括号 [] 表示总线,因为 LTspice 不支持该语法。使用 _ 分隔单词(如 CLK_IN)是最安全的选择。

下面通过一个 SVG 图来直观展示网表结构与节点连接关系:

SPICE 网表结构与节点连接关系图 SPICE 网表结构与节点连接关系 网表结构 标题行:RC Low-Pass Filter 注释:* 设计者:张三 元件语句:R1 1 2 1k 控制语句:.TRAN 1u 5m 模型语句:.MODEL NMOS1 NMOS 结束行:.END 电路拓扑与节点 1 2 0 V1 R1 C1 节点 1、2 为内部节点,节点 0 为全局地节点

上图左侧展示了网表的六层结构,右侧展示了对应的电路拓扑。节点 1、2 和 0 将电压源 V1、电阻 R1 和电容 C1 连接成一个完整的回路。理解这种从文本到拓扑的映射关系,是编写正确网表的基础。

1.4 节点命名最佳实践

为了确保网表在不同 SPICE 平台之间具有良好的兼容性,建议遵循以下节点命名规则:

  1. 使用有意义的名称: 用 VDD、VSS、CLK 代替 1、2、3,提高可读性。
  2. 统一大小写: 全部使用大写字母,避免因大小写敏感导致的连接错误。
  3. 避免特殊字符: 只使用字母、数字和下划线 _,不使用 .、+、-、[]。
  4. 保留节点 0: 始终使用 0 作为地节点,不要使用 GND 替代(部分仿真器不识别 GND)。
  5. 避免数字开头: 节点名不要以数字开头(如 1NODE),某些仿真器会将其解析为数字节点。