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 实战:如何快速找到平衡点?
我一般按这个流程来调:
- 先用默认参数跑一次,看结果是否合理
- 检查收敛警告:如果有“Time step too small”之类的提示,说明步长或精度有问题
- 逐步放松精度:从RelTol=1e-4开始,每次放大3倍,看结果变化
- 找到拐点:当精度放松到某个值后,结果开始明显偏离,就退回上一档
- 固定精度,调步长:在保证精度的前提下,尽量放大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 知识体系总览
下面这张图把三个参数的关系和调优路径画清楚了:
2.6 几个实用技巧
- 先粗后细:先用大步长、低精度跑通流程,确认电路功能正确后,再收紧参数做精确仿真
- 分段仿真:启动阶段用大步长,稳态后用默认步长。很多仿真器支持.tran的步长分段设置
- 监控仿真日志:如果看到大量“convergence failure”或“time step reduced”,说明参数太紧或电路有问题
- 别迷信默认值:不同电路、不同仿真器,最优参数差异很大。默认值只是安全起点
我的经验:对于大多数模拟电路,RelTol=1e-4、Abstol=1e-9是个不错的起点。比默认值松一点,但精度损失很小。如果仿真结果和实测对不上,再收紧也不迟。
嗯,这三个参数说难不难,但调好了真能省下大把时间。下次做仿真前,先花两分钟想想:我的电路需要多高的时间分辨率?精度要求到底有多严?想清楚了再设参数,比盲目用默认值强得多。