2. 仿真器核心设置:Stop Time、Max Step、RelTol/Abstol

仿真器设置,说白了就是给计算引擎定规矩。你告诉它跑多久、步子迈多大、算得多精细。这三个参数调好了,仿真又快又准;调不好,要么等得心焦,要么结果根本不能用。

我刚开始用SPICE那会儿,总觉得默认设置就够用了。直到有一次做DC-DC启动仿真,跑了整整一个晚上还没出结果。第二天一看,Stop Time设了10ms,但最大步长默认是1ns——这得算到猴年马月去?

2.1 Stop Time:仿真该跑多久?

Stop Time不是越长越好。你想想看,仿真器在每个时间点都要解方程组,时间越长计算量越大。

怎么定?看你的电路行为时间尺度:

  • 开关电源启动:一般看几个开关周期到稳态,1ms~10ms足够
  • PLL锁定过程:要看相位锁定时间,通常10μs~100μs
  • 信号完整性分析:几个纳秒到几十纳秒,看反射和串扰
  • 低频放大器瞬态:看建立时间,几微秒到几百微秒
我的习惯:先设一个保守值跑一次,看波形什么时候进入稳态。然后砍掉前面那段过渡期,只仿真关键区间。这样能省下一大半时间。

2.2 Max Step:步子迈多大?

最大步长决定了仿真器能跳过的最大时间间隔。步长越大,仿真越快,但可能漏掉细节。

这里有个关键点:Max Step不是实际步长,而是上限。仿真器会根据电路变化自动调整步长,但不会超过你设的这个值。

场景 推荐Max Step 原因
高频开关电路(>1MHz) 开关周期的1/100~1/50 要捕捉开关边沿和纹波
低频模拟电路 信号周期的1/20~1/10 波形平滑,步长可以大些
数字电路瞬态 最小脉宽的1/5 要分辨窄脉冲
AC小信号扫描 不适用(频域仿真) —
我曾经踩过的坑:做Buck变换器仿真时,Max Step设成了开关周期的1/10。结果纹波波形完全不对,峰值差了30%。后来改成1/100才正常。记住:开关边沿的细节需要更小的步长。

2.3 RelTol / Abstol:精度怎么控?

这两个参数控制的是仿真器的收敛精度。说白了就是:算到多精确才算“算对了”。

  • RelTol(相对误差):默认1e-3,控制大信号的相对精度
  • Abstol(绝对误差):默认1e-6~1e-12,控制小信号的绝对精度

为什么需要两个?因为单靠相对误差,信号接近零时误差会爆炸。单靠绝对误差,大信号又不够准。两者配合,才能全范围覆盖。

精度与速度的平衡法则:

  • RelTol从1e-3改到1e-4,仿真时间大约增加2~3倍
  • Abstol从1e-6改到1e-9,时间增加5~10倍
  • 两者同时收紧,时间可能增加20倍以上

2.4 实战:如何快速找到平衡点?

我一般按这个流程来调:

  1. 先用默认参数跑一次,看结果是否合理
  2. 检查收敛警告:如果有“Time step too small”之类的提示,说明步长或精度有问题
  3. 逐步放松精度:从RelTol=1e-4开始,每次放大3倍,看结果变化
  4. 找到拐点:当精度放松到某个值后,结果开始明显偏离,就退回上一档
  5. 固定精度,调步长:在保证精度的前提下,尽量放大Max Step

举个例子。我之前调一个LDO的瞬态响应:

// 初始设置(太慢)
.tran 0 100u 0 1n
.options reltol=1e-6 abstol=1e-9

// 优化后(快10倍,精度几乎不变)
.tran 0 100u 0 10n
.options reltol=1e-4 abstol=1e-9

你看,只是把RelTol从1e-6改到1e-4,Max Step从1ns改到10ns,仿真时间就从45秒降到了4秒。而波形差异肉眼根本看不出来。

2.5 知识体系总览

下面这张图把三个参数的关系和调优路径画清楚了:

仿真器核心参数调优框架 Stop Time 仿真总时长 Max Step 最大时间步长 RelTol / Abstol 收敛精度控制 决定仿真区间 决定时间分辨率 决定计算精度 速度 vs 精度 平衡 找到可接受误差内的最快设置 推荐调优流程 ① 默认参数跑一次 → 检查收敛警告 ② 逐步放松RelTol(1e-6→1e-4)→ 观察结果变化 ③ 找到精度拐点 → 固定精度,放大Max Step ④ 验证:对比优化前后波形,误差在可接受范围

2.6 几个实用技巧

  • 先粗后细:先用大步长、低精度跑通流程,确认电路功能正确后,再收紧参数做精确仿真
  • 分段仿真:启动阶段用大步长,稳态后用默认步长。很多仿真器支持.tran的步长分段设置
  • 监控仿真日志:如果看到大量“convergence failure”或“time step reduced”,说明参数太紧或电路有问题
  • 别迷信默认值:不同电路、不同仿真器,最优参数差异很大。默认值只是安全起点
我的经验:对于大多数模拟电路,RelTol=1e-4、Abstol=1e-9是个不错的起点。比默认值松一点,但精度损失很小。如果仿真结果和实测对不上,再收紧也不迟。

嗯,这三个参数说难不难,但调好了真能省下大把时间。下次做仿真前,先花两分钟想想:我的电路需要多高的时间分辨率?精度要求到底有多严?想清楚了再设参数,比盲目用默认值强得多。