时序报告一堆负余量,别按顺序一条条改,先分清是 setup、hold 还是时钟偏斜问题,方向错了越改越乱。
第一,先看时钟偏斜。同一时钟域内偏斜过大,setup 和 hold 会同时恶化,这时改逻辑没用,要先查时钟树:时钟缓冲级数、走线长度、时钟域划分是否合理。
第二,setup 负余量先看逻辑级数。关键路径逻辑级数超过 8~10 级,先考虑流水线切分,而不是一味加约束;约束只能告诉工具目标,不能替你减逻辑。
第三,hold 负余量先看时钟路径延迟差。hold 违例多半是源寄存器时钟到得太晚、目的寄存器时钟到得太早,插入延时单元或调整时钟缓冲可以解决,盲目降频对 hold 没用。
第四,跨时钟域路径单独看。CDC 路径的负余量不能和普通路径混在一起处理,同步器没加对,时序报告再好看上板也会偶发故障。
最后,修完一轮要全量重跑时序,不要只看修的那几条。改动时钟树或流水线会影响其他路径,局部好看、全量变差是常见坑。你在看时序报告时,第一眼先看哪一列?欢迎说说你的排查习惯。