关于netlist仿真timing violation的问题
时间:12-12
整理:3721RD
点击:
不知道发在这里是否合适。
我有个电路是跑300M的,DC综合后report timing都是满足的,至少也有0.21的timing slack.
然后拿这个netlist去做后仿真,为什么会报setup violation呢?
本来我觉得既然DC综合后时序过了的化应该不会有timing violation了吧?
不然岂不是timing 不满足要求吗?
百思不得其解。
还请有经验的前辈指教。谢谢
我有个电路是跑300M的,DC综合后report timing都是满足的,至少也有0.21的timing slack.
然后拿这个netlist去做后仿真,为什么会报setup violation呢?
本来我觉得既然DC综合后时序过了的化应该不会有timing violation了吧?
不然岂不是timing 不满足要求吗?
百思不得其解。
还请有经验的前辈指教。谢谢
再补充一点。这个模块里面用到了designware的ip,报setup violation的路径是从designware输出,然后到后面的寄存器。
也就是用说用一个寄存器直接寄存了一拍designware IP的输出,然后这条路径上就有setup violation.
能通过什么约束来改善吗?
sdf哪里来的?
你这种状况,可能有两个原因:
1. constraint和netlist不一致,比如说false path, 或者constraint中没有约束的valid path
在DC里,你可以把check_timing得到结果都检查一下
2. sdf和netlist不一致,你可以去检查sdf反标时的log,或者sdf生成时的log
其实,post-synthesis的时序仿真是没有意义的。
如果你想check timing,应该用STA工具,而且是post-layout的数据
如果你是想检查synthesis的结果,应该用formal check,或者zero delay的gate level simulation
看看是不是异步引起的,如果是异步引起的不用管的。
gate sim可以检查出cdc bug,还有constraint下错的bug,还是有意义的吧
综合后的netlist都没有真正的时序信息clock tree也没好,你仿个猫啊。
你仿真用的是综合的网表吧,有带sdf吗?如果有,sdf在写的时候有没有用脚本处理下,把clock路径delay标成0?我绝对非常可能是sdf问题,你看下报violation地方应该很容易定位。