spectre仿真log里出现下面的文字,是什么意思?
Notice from spectre at time = 4.72081 ns during transient analysis tran.
Found trapezoidal ringing on node I0.I79.NM0:int_s.
Notice from spectre at time = 4.86385 ns during transient analysis tran.
Found trapezoidal ringing on node I0.I79.NM0:int_s.
Notice from spectre at time = 4.99 ns during transient analysis tran.
Found trapezoidal ringing on node I0.I79.NM0:int_s.
这个警告是 Spectre 仿真器在瞬态分析时发出的数值稳定性提示,意思是:
在节点
I0.I79.NM0:int_s上检测到了 “梯形法则数值振铃”。
具体来说:
梯形法则:Spectre 默认使用 traponly(对应 moderate 精度)或 trap 方法进行瞬态积分。梯形法在理想情况下精度高,但在处理强非线性、大信号跳变或高 Q 电路时,容易产生不衰减的高频数值振荡——这就是“梯形振铃”。
振铃表现:波形上会出现一个个“毛刺”或“台阶”,频率远高于电路真实带宽,不是物理现象,而是纯数值误差。
可能后果:
导致后续时间步长被迫减小,仿真变慢。
可能误触发比较器、逻辑翻转,给出错误的功能结论。
掩盖真实的过冲/振铃特性。
针对这个特定节点 I0.I79.NM0:int_s,可以尝试以下方法(按推荐程度排序):
Gear 方法(二阶 Gear,即 gear2only)具有数值阻尼,能有效抑制振铃。
修改仿真选项:
或者使用 errpreset=conservative(因为 conservative 默认就是 gear2only)。
如果你仍希望用梯形法保持高精度,可以添加 梯形阻尼 参数:
值越大,阻尼越强,振铃越少,但精度略有下降。一般从 0.1 开始尝试。
有时候振铃是因为容差太松导致算法误判。收紧 reltol 和 vabstol 也能缓解:
如果该节点是内部数字或浮空节点,在版图寄生上实际存在微小电阻。可在电路中人为串联一个 1~10Ω 的小电阻(不影响功能),或使用 cmin 选项增加接地电容:
如果电路其余部分用 moderate 很快,不想全局改用 gear,可以:
为这个子电路单独设置 method=gear(Spectre 支持多方法混合?不支持直接混合,但可用 simulator lang=spectre 分割网表,或使用 trand 多步分析法)。
若只是偶然警告,且输出结果合理:可以忽略,多数情况下不影响最终结果。
若警告大量出现,且波形明显异常:将全局积分方法改为 gear2only(即使用 errpreset=conservative),问题一般立即消失。
若想保留速度:在 moderate 下添加 trap_ripple_control=0.05~0.1。
最终,振铃消失 ≠ 仿真正确,建议改方法后对比关键节点波形,确认没有丢失真实物理过冲。