3. 元件模型语法:电阻、电容、电感、独立源、受控源的标准声明格式
在 SPICE 网表中,无源元件(R、C、L)与有源源(独立源、受控源)的声明格式是语法调试的基础。格式错误是新手最常见的报错来源,包括列数不对、单位缺失、极性反接等。本节逐一拆解标准声明格式,并给出调试对照表。
核心原则:每个元件行必须严格遵循
<元件名> <正节点> <负节点> <模型/值> 的四段式结构,节点编号必须存在于网表顶层 .SUBCKT 或全局节点中。
3.1 电阻(R)声明格式
电阻是最简单的无源元件,其标准格式为:
R<名称> <正节点> <负节点> <阻值> [模型名] [L=] [W=]
其中 R 是前缀,必须大写;阻值支持科学记数法(如 1.2k、4.7e3)。
| 参数 | 必填 | 说明 | 示例 |
|---|---|---|---|
| 名称 | 是 | 以 R 开头,后跟字母/数字,如 R1、Rload | Rload |
| 正节点 | 是 | 电流流入端,整数或符号名 | VCC |
| 负节点 | 是 | 电流流出端 | GND |
| 阻值 | 是 | 单位 Ω,可省略单位后缀 | 10k |
| 模型名 | 否 | 引用 .MODEL 定义的工艺模型 | RES_MOD |
| L / W | 否 | 几何尺寸,用于集成电阻 | L=1u W=0.5u |
调试技巧:阻值不能为 0 或负值;如果使用模型,模型名必须在网表内通过
.MODEL RES_MOD R ... 提前定义。
3.2 电容(C)与电感(L)声明格式
电容和电感的声明格式与电阻高度相似,但增加了初始条件(IC)选项,用于瞬态分析的初始状态设定。
C<名称> <正节点> <负节点> <容值> [模型名] [IC=]
L<名称> <正节点> <负节点> <感值> [模型名] [IC=]
| 元件 | 值单位 | IC 含义 | 典型错误 |
|---|---|---|---|
| C | 法拉(F),常用 pF、nF、uF | 初始电压(V) | IC 值超出电源轨 |
| L | 亨利(H),常用 nH、uH、mH | 初始电流(A) | IC 与 DC 工作点冲突 |
常见语法错误:电容值写为
1e-12 而非 1p 不会报错,但可读性差;电感值写为 0.000001 而非 1u 容易导致小数点位数误判。建议始终使用 SPICE 单位后缀。
3.3 独立源:V 与 I 的声明格式
独立电压源(V)和独立电流源(I)是网表中的激励来源。标准格式包含直流值、交流小信号参数和瞬态波形定义。
V<名称> <正节点> <负节点> [[DC] <值>] [AC <幅值> [相位]] [瞬态波形]
I<名称> <正节点> <负节点> [[DC] <值>] [AC <幅值> [相位]] [瞬态波形]
| 字段 | 说明 | 示例 |
|---|---|---|
| DC 值 | 直流工作点电压/电流 | DC 5V |
| AC 幅值 | 交流小信号幅度(AC 分析用) | AC 1V |
| AC 相位 | 可选,默认 0° | AC 1V 90 |
| 瞬态波形 | PULSE/SIN/PWL/EXP 等 | PULSE(0 5 0 1n 1n 50n 100n) |
调试技巧:如果网表同时包含 DC 和 AC 字段,DC 值用于 .OP 和 .TRAN,AC 值仅用于 .AC 分析。忘记写 AC 幅值会导致 AC 仿真输出为零。
3.4 受控源:四种类型声明格式
SPICE 支持四种线性受控源,用于行为级建模和反馈网络。每种受控源的控制变量不同,声明格式也各有差异。
| 类型 | 前缀 | 控制变量 | 标准格式 |
|---|---|---|---|
| 电压控制电压源 | E | 电压差 | E<名> <正> <负> <控制正> <控制负> <增益> |
| 电压控制电流源 | G | 电压差 | G<名> <正> <负> <控制正> <控制负> <跨导> |
| 电流控制电压源 | H | 支路电流 | H<名> <正> <负> <控制电压源名> <增益> |
| 电流控制电流源 | F | 支路电流 | F<名> <正> <负> <控制电压源名> <增益> |
* 示例:电压控制电压源,增益=2
E_AMP OUT 0 IN 0 2.0
* 示例:电流控制电流源,增益=5,通过 Vsen 感知电流
F_SENSE OUT 0 VSEN 5.0
VSEN IN 0 DC 0V
关键调试点:H 和 F 型受控源的控制变量必须是 独立电压源 的电流,不能直接引用节点。如果控制支路没有放置零值电压源(
VSEN IN 0 DC 0),仿真器会报“未知控制源”错误。
3.5 语法调试速查表
以下表格汇总了元件声明中最常见的语法错误及其根因,适合在调试时快速对照。
| 错误现象 | 可能原因 | 修复方法 |
|---|---|---|
| “Unknown parameter” 报错 | 元件名拼写错误,如 res1 而非 R1 |
确保前缀大写且正确:R/C/L/V/I/E/G/H/F |
| “Node not found” 报错 | 节点名未在 .SUBCKT 端口或全局定义 | 检查节点名大小写,SPICE 默认区分大小写 |
| “Value out of range” 报错 | 电阻为 0、电容为负值 | 修正为正值;最小电阻建议 > 1mΩ |
| “Missing control source” 报错 | H/F 型受控源未定义感知电压源 | 添加 VSEN <节点> 0 DC 0 |
| AC 仿真输出全零 | 独立源缺少 AC 幅值字段 | 在 DC 值后添加 AC 1 |
调试工作流建议:当网表报错时,优先检查第一行元件声明——通常第一个错误会阻断后续所有解析。使用
.PRINT 或 .PROBE 输出节点电压,验证独立源是否按预期输出 DC/AC 值。