记得很久之前有谈过遇到 Hspice 不收敛的问题,最近看到有朋友是搜索 SmartSpice 收敛问题过来的,干脆在这里把看过的收敛问题的内容列下(实际上 SmartSpice Manual 中有专门章节介绍收敛的问题,在网站上的 trainning 文档也可参考…)
一般对于 spice convergence 问题,首先考虑电路是否自身有问题,看是否非稳或是双稳态电路,电路中器件(特别是理想元件或是宏模型)的阻抗是否符合实际,可以利用 .option list 检查电路结构与连接;对双稳态电路可以利用 .nodeset 或 .ic 等语句加以限定。
此外,在 SmartSpice 中利用 .option expert=777 可以看到收敛问题的详细报告:
通常大多数的 spice 收敛问题可以通过 .OPTION中 Gmin 和 Gnode(或 Gshunt)的设置来改善:
GMIN: 半导体结(junction)的最小电导,默认为 1e-12,通常可以尝试修改为 1n 到 10n
Gnode: 在节点到地之间插入电阻,可设为 1e-14 到 1e-12
将数值积分的算法换为 Gear 可以改善某些电路的 tran 分析的收敛性
具体在 DC/OP 分析中可以尝试的有:
调节 DCGMIN 和 DCGnode(DC/OP 下的 GMIN 和 Gnode);DCPATH 改变 floating node 到地电阻; .option ITL=500 增加 DC 迭代的次数;放宽 abstol 和 reltol 的精度要求;利用 tranop 的 tran 分析;DC sweep 中改动 sweep 的步长
对 TRAN 分析,也可尝试:
UIC 与 .ic 设置初始条件; 修改 rise/fall time 的设置; CNODE (或 cshunt)设定节点对地电容; 修改 GMIN 和 GNODE; NEWTOL 启用额外的迭代; 设置 ITL4=40+; 采用 .option method=Gear 更换算法; TRTOL 调整 internal timestep
特别对于 ”timestep too small” 问题, smartspice 中提供了 .option optionset 加以改善, 通过 optionset=3 或 4 影响的参数可见下表:
Optionset=<val> | Option used | Value |
3 | accurate | 1 |
cnode(cshunt) | 1e-12 | |
ITL1 | 5000 | |
ITL2 | 5000 | |
4 | accurate | 1 |
cnode(cshunt) | 1e-12 | |
conv | 1 | |
accept | TRUE | |
ITL2 | 5000 |