关于time step too small的含义
所有SPICE仿真都有可能会出现这种问题,从数学上讲,是因为迭代运算在步长很小的迭代中都无法找到允许误差下的解。也就是SPICE的方程组不收敛。为什么会这样呢?一方面有可能是设计上不合理,如前面有兄弟说到的问题;另一方面可能是模型设计的问题,特别是某些数字模拟混合设计,或存在开关器件时(一般开关器件不能理想化设置Ton=0就是为了避免出现这个问题)。
如何解决这个问题?需要对症下葯,一般由简到繁来处理:先检查电路设计上有没低级错误;更换器件模型(如三极管)试验;如果以上都无效,还可以尝试修改SPICE仿真参数,这个比较繁琐,最好先记录原始值,以便恢复。大体修改的思路是放宽误差容限,一般以整数量级为单位来改动。但是误差大了仿真也就不准确了。
浅论至此,欢迎指正!
[ 本帖最后由 浅蓝 于 2007-7-31 08:47 编辑 ] 以下为摘录的另外一段内容: “Timestep too small”出错信息0推荐如果 LTspice 在假设的 time step 下不能求出一个解,那么程序将减小 time step,然后再次尝试。这不会永远做下去。如果 time step 达到一个特定的限制值(1fs?),那么 LTspice 将停止仿真并显示这条出错信息。 “Alternate”解析器会计算地更准确一些,可以把 time step 减小到一个更小的水平。但即便如此,也会出现失败情况。 对于这个问题,很难给出一个通用的解决办法。我一般会做如下尝试。 1. 在“.tran”行设置一个有用的最大 time step。可以多试几个值。不管是否还出错,都要使用最大 time step。 下面的大部分设置都是在 Control Panel 中完成。Control Panel -> SPICE 如果还是出错:2. 试试 Alternate solver 如果还是出错:3. 回到 Normal solver试试方法:Gear 如果还不行:4. 返回默认设置。尝试在“.TRAN”设置中使用“startup”。 如果还不行:5. 返回默认设置。试着设置 Gmin,但不要小于 1e-10 还不行:6. 恢复默认设置。试设置 Reltol=0.01 还不行:7. 恢复默认设置。试着用 6 和 7 的组合(罗亩按,此处不明白是何意,仍设为 Reltol=0.01?) 还不行:8. 恢复默认设置。试设置 .options Tseed=maxtimestep/10 还不行:9. 有元件的真实值吗?在电容器(ESR)或电感器中串一个电阻器。 还不行:10. 试设置 .ic 和 .nodeset 还不行:11. 试设置 .options gshunt=... 和/或 .options cshunt=... 还不行:12. 再问问别人吧。:) 不要低估了第11条提示。 下面是我在一次仿真中做的最多的一次设置 复位 SPICE 设置:Control Panel -> SPICE 在 Control Panel 中设置特殊 GMIN 选项如下:Control Panel -> Hacks Add GMIN across current sources 设置一个最大 time step。.tran 0 10m 0 1u startup .options gmin=1e-10.options abstol=1e-10.options reltol=0.003.options method=gear.options cshunt=1e-12.options gshunt=1e-9