You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Colab中Ngspice报错:未加载任何电路的问题求助

解决PySpice仿真中"unknown subckt"和"there aren't any circuits loaded"错误

错误根源

混淆了二极管模型(.model)和子电路(.subckt)的调用规则:

  • 你通过circuit.model()定义了名为1N4148的二极管模型(属于Spice标准D型器件模型)
  • 但调用时使用了circuit.X()(子电路调用指令),Ngspice会将1N4148当作子电路查找,找不到则触发报错,最终导致电路加载失败。

方案一:使用自定义二极管模型(适配你当前的代码)

将子电路调用指令circuit.X()替换为二极管器件调用指令circuit.D(),同时修正模型定义的器件类型参数:

circuit = Circuit('Diode Characteristic Curve')
# 修正模型类型为标准'D',而非'D1'
circuit.model('1N4148','D',
              IS = 4.352E-9,N=1.906,BV = 110,
              IBV = 0.0001, RS = 0.6458, CJO = 7.048E-13,
              VJ = 0.869 , M = 0.03, FC = 0.5 , TT = 3.48E-9)
circuit.V('input', 'n_in', circuit.gnd, 10@u_V)
circuit.R(1, 'n_in', 'n_out', 1@u_Ω)
# 用D元件调用模型,格式:器件名、阳极、阴极、模型名
circuit.D('D1', 'n_out', circuit.gnd, model='1N4148')

方案二:使用PySpice自带的1N4148子电路库

如果你想直接使用官方子电路,取消注释库引用代码,同时删除自定义模型定义:

circuit = Circuit('Diode Characteristic Curve')
# 启用PySpice自带的1N4148子电路库
circuit.include(spice_library['1N4148'])
circuit.V('input', 'n_in', circuit.gnd, 10@u_V)
circuit.R(1, 'n_in', 'n_out', 1@u_Ω)
# 用X元件调用子电路,格式:器件名、子电路名、引脚1、引脚2
circuit.X('D1', '1N4148', 'n_out', circuit.gnd)

验证

修改代码后重新运行仿真,两种方案均可解决报错,正常完成二极管特性曲线的仿真计算。

内容的提问来源于stack exchange,提问作者user25441269

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:00:10