SPICE 常见怪癖与避坑指南
"垃圾进,垃圾出。" ——佚名
SPICE 是可靠的仿真引擎,却有少量怪癖能绊倒经验用户。本文聚焦 SPICE 强制的微妙文件格式和电路拓扑规则,而非导致错误结果的 bug。许多怪癖针对 SPICE 2g6,但在新版本中仍可能出现。
正确的文件开头
每个 SPICE 网表必须以非元件行开头——通常是标题、注释或空行。若首行为元件卡,SPICE 会以“严重错误”停止,常误归因为节点连接问题。一个简单的换行或注释即可满足解析器。
结尾必须干净
最后的 .end 卡必须不带行尾字符。输入 .end 后光标停在 “d” 后,勿按 [Enter]。否则 SPICE 报“缺少 .end 卡”错误,虽不影响仿真但污染输出。
必须包含节点 0
节点 0 是所有电压陈述的参考地。每个有效网表必须含节点 0;否则 SPICE 无法解析电压标度。例如 DC 分析列出相对节点 0 的电压:
node voltage node voltage ( 1) 15.0000 ( 2) 0.6522此处节点 1 比地高 15 V,节点 2 比地高 0.6522 V。
勿留开路
开路——特别是开路电压源——破坏 SPICE 寻找电流路径的能力。将电压源接到受控源输入(如运放模型)时,插入高值电阻(常称 rbogus)提供最小负载以维持仿真运行。
避免电压/电感死循环
SPICE 在 DC 分析中视电感为短路、电容为开路。因此,不间断的电感或电压源环路、无直流路径的串联电容会导致求解器失败。典型问题模式:
netlist l1 2 4 10m l2 2 4 50m l3 2 4 25m
netlist v1 1 0 dc 12 l1 1 0 150m
netlist c1 5 6 33u c2 6 7 47u补救:电感环路串低阻分流,电容串联加高阻分流。例如:
original netlist l1 2 4 10m l2 2 4 50m l3 2 4 25m
fixed netlist rbogus1 2 3 1e-12 rbogus2 2 5 1e-12 l1 3 4 10m l2 2 4 50m l3 5 4 25mrbogus 电阻本质是短路(1 pΩ),使电感环路不再呈现完美短路。电容案例:
original netlist c1 5 6 33u c2 6 7 47u
fixed netlist c1 5 6 33u c2 6 7 47u rbogus 6 7 9e129 TΩ 分流保持直流路径且不影响交流行为。
SPICE 中测量电流
电压探针直观——引用两节点。电流探针需电压源参考。若电路无此源,插入零电压“伪”源锚定测量:
c1 4 7 22u vbogus 6 4 dc 0 .print ac i(vbogus)交流分析仍适用,零电压源不改变仿真。
注意 SPICE 赋予电流极性与直流源常规方向相反。简单串联电路:
example v1 1 0 r1 1 2 5k r2 2 0 5k .dc v1 10 10 1 .print dc i(v1) .endSPICE 报 –1 mA,因离开 v1 负极的电流视为负。重定向零电压源可强制正读数。
傅里叶分析提示
运行傅里叶(频域)分析时,务必打印或绘制目标波形;否则 SPICE 显示“初始瞬态解”后暂停中止。产生方波的脉冲源须给出现实上升/下降时间。理想方波(瞬时边沿)在 SPICE 傅里叶变换中错误引入偶次谐波。
工业技术