一、 向前一级借“东风”
这条路径存在setup violation,那么我们可以往前一级去查看他的setup violation,即用命令report_timing -to 去查看前一级的setup violation,可以看到前一级存在的setup slack,是正值,说明存在时序余量。同时这条路径上也存在比较多还不是最大驱动的cell,说明时序还有进一步优化的空间,那么我们就可以考虑往前一级借时序,通过把黄色圈圈这个timing path给再做短,相当于把当前timing path的launch clock path做短,前一级的capture clock path做短,这样就可以把前一级的时序余量借给后一级,来解决后一级的setup violation问题。
同时在借的时候,也需要关注当前这一级的hold slack,需要保证当前这一级时序存在一定的slack数值才行,命令是report_timing -to xxxxxxxxx -delay_type min -from xxxxxxxx,这里需要把当前这一级的startpoint和endpoint一起填进来,才能看到比较准确的hold slack数值。
确定了之后,我们就可以回到cts阶段,利用设置set_ccopt_property insertion_delay -pin xxxxxxxx 0.06 命令,来把这段clock path做短0.06ns,然后再做cts和后面的ctsopt、route等操作,再去查时序有没有获得改善即可。