美文网首页
pr各阶段timing修复教程

pr各阶段timing修复教程

作者: Touchs | 来源:发表于2023-05-04 08:38 被阅读0次
  1. import design、floorplan和powerplan阶段
    该阶段我们并不关心timing的结果

  2. place
    在place之后,我们只需要关注WC Corner下setup的结果即可,同时,在整个PR和PT过程中,我们都不需要关注io相关的path,比如in2reg、reg2out和in2out等。在看时序结果的时候,我们只需要关注reg2reg和reg2cgate(泛指所有除了in2reg、reg2out和in2out的timing path)的WNS结果和DRV的结果即可。
    一般来讲,reg2reg和reg2cgate的WNS如果能够控制在-100ps之内或者uncertainty能够覆盖violation,DRV基本修复(violation数量在二三十个以内),我们就可以继续往下走。
    以innovus的timing报告为例,一般情况下,如果没有设置group path的话,innovus会自动帮我们进行分组,其中default这一组就是跟io相关的path,我们在block阶段是不用关心的。而我们需要关心得是reg2reg和reg2cgate的wns,如果是正值,说明时序是meet的,我们可以不用管,如果数值小于-0.1,那么我们就需要进行优化。同时我们也需要关心DRV的结果,每一步都需要把DRV基本修干净,如果出现下方这种比较小的violation,那么我们也是可以接受的,不然就需要opt一下进行优化。
    强烈建议大家用上之前邮件分享的group path细分的方法,至少要把input,ouput,feedthrought,to_mem,reg2reg这些划分成各自的group path。这样timing看起来就很清晰。

image.png

而如果reg2reg和reg2cgate的WNS 小于-0.1ns,我们可以根据以下几种情况分别采取针对性的修复措施
(1) 如果wns的值不是特别的大,比如只有-0.2ns,那么我们就可以调用optDesign进行一次setup优化,一般情况下是可以修复的。
(2) 如果wns的值比较大,那么我们就需要report_timing的结果进行分析,同时将timing path在版图中进行高亮显示,查看是否是因为floorplan没有按照数据流进行摆放,导致出现timing path兜圈的情况,如果是的话,就需要分析问题,然后重新进行floorplan。
(3) 如果wns的值比较大,但是timing path也没有出现很严重的兜圈,同时optDesign也不起作用的时候,我们就可以使用useful skew的思想,查看前后级路径是否有余量可以借,尝试设置set_clock_latency向后借一些时序,再做一次opt优化,看能不能起作用
(4) 如果上述的方法都不起作用,那么就需要找前端工程师沟通和调试来确定时序约束是否合理
而如果出现DRV violation,那么我们只需要调用optDesign -drv优化,一般都是可以修复的。

  1. CTS

在cts完成之后,我们不用直接看timing的结果,只需要关注clock tree的skew和latency是否合理,clock tree是否出现兜圈的情况;如果place用了useful skew手动借了时序,那么这里就需要调用cts的命令设置insert delay。

4, ctsopt、routeopt

在这一阶段,由于已经有了真实的clock tree,我们除了做setup和drv分析之外,还需要进行hold分析和修复,分析和修复方法跟place是一致的,除了useful skew在这一阶段无法使用,因为clock tree已经长好了。同时我们也是只关心reg2reg和reg2cgate,不看default的结果。我们在hold分析上,我们一般只看bc Corner的结果;在setup分析上,我们一般只看wc Corner的结果,ctsopt阶段只要reg2reg和reg2cgate的wns小于100ps,就可以继续往下走。
在routeopt阶段,如果setup和hold的wns在50ps以内,也可以考虑直接进pt里面进行dmsa eco,不用完全修到0。
另外涉及到clock uncertainty的设置,Foundary只会提供一个PT signoff的参考值。PR阶段的clock uncertainty值的取值取决于每个阶段的timing和PT看到timing的一致性。比如place阶段只有20ps violation,跑到ROUTE后pt看到有100ps violation,说明PR阶段留的margin不够,需要进一步让工具做时序优化。那想要让工具做优化就得让工具看到violation,那方法就是加大clock uncertainty(当然还有其他方法)。总之目的是让工具做最好的优化。所以clock uncertainty需要大家不断的去尝试修改。

5, pt
在pt阶段,同样只关心reg2reg的timing 情况,一般我们只在wc corner下查setup的violation情况,bc corner下查hold的violation情况。在dmsa阶段,也是用wc corner的结果去修复setup violation,bc corner的结果去修复hold violation。
seup和drv的修复一般采用size_cell的方式进行修复,hold一般采用insert buffer的方式进行修复。max transition和max capacitiance都可以通过upsize或插buffer来解决。

相关文章

网友评论

      本文标题:pr各阶段timing修复教程

      本文链接:https://www.haomeiwen.com/subject/glmnhdtx.html