美文网首页IC数字后端知识角
Max Transition违反的修复方法

Max Transition违反的修复方法

作者: 飞奔的大虎 | 来源:发表于2021-12-29 11:53 被阅读0次

    数字IC设计中max_cap和max_tran这类逻辑DRC或者说时序DRC是在设计中必须修复的问题,到最后版图完成,这些问题都是要clean的。他们的分析与优化贯穿前后端设计中。下面按照从前到后的流程逐一讲解每个阶段如果出现max_tran违反该如何解决。下面用到的命令,主要针对的是Synopsys公司的综合工具DC以及布局布线工具ICC。

    如果设计中报告存在max transision的违反,首先看一下最大违反是多少,违反的路径多不多,然后去分析出现违反的原因。

    这种问题出现的原因无非三种:

    1、扇出太大;

    2、连线太长;

    3、驱动强度太弱;

    对于第一种情况,如果出现违反的net很多,那么很有可能是由于高扇出网络很多导致的,可以在sdc时序约束文件中将max_fanout的值设置的小一些,加紧约束;

    对于第二种情况,可以采用手工ECO或者用PT进行ECO。对于长连线net可以增大前级的驱动能力,但是最常用的应该是在net中间插入buffer了。

    对于第三种情况,同样可以采用手工ECO或者用PT进行ECO。可以增大net前一级cell的驱动能力,即用size_cell命令修复。

    如果设计中存在一些非常小的违反,也可以采用工具自带的一些命令去让软件自动进行优化,以此减少设计者的工作量。下面依次讲解数字IC设计前后端中一些修复max_transition的命令。

    1、逻辑综合阶段:同样,和修复Max Cap一样可以用compile_ultra来修复:compile_ultra -only_design_rule,如果是dont_touch的net,可以忽略。

    2、布局之后,CTS之前:

    2.1 命令让软件自动修复psynopt -only_design_rule

    2.2 如果是高扇出引起的,那么可以在布局之前将max_fanout的值设置的小一些;如果高扇出的问题只发生在某个集中的地方,那么可以手动调整它的扇出。

    2.3 加紧约束,set_max_transition xxx [current_design],这个值可以比库里面的值稍微小10%(约束更紧一些),同时留一定的裕量。

    3、CTS阶段

    如果CTS之后发现在时钟网络的dont_touch net上存在max_transition的违反,那么可以将CTS阶段时钟树的fanout设置的小一些,例如:

    >set_clock_tree_options -target_skew 0 -max_fanout 30

    Max_cap问题如果出现在这些net上,也可以用这种方法修复。

    还有一种是在CTS的时候让软件去修复逻辑DRC违反,不过这种方法会特别耗时,不建议使用:

    >set_clock_tree_options-advanced_drc_fixing true

    >setcts_enable_drc_fixing_on_data true

    4、CTS之后(PosCTS):

    >psynopt -only_design_rule

    5、布线阶段

    >route_opt -incremental -only_design_rule

    6、chipfinish阶段

    在这里,相比于上一步,只做了一下DFM的操作,如果这里存在max_transition的违反,那么应该也是极其少量的,可以简单的通过focal_opt即可修复,命令如下:

    >focal_opt -drc_nets all -effort high

    原文链接:数字IC前后端设计中的时序收敛(五)--Max Transition违反的修复方法 - Horizon00 - 博客园 (cnblogs.com)

    相关文章

      网友评论

        本文标题:Max Transition违反的修复方法

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