zoukankan      html  css  js  c++  java
  • 数字IC前后端设计中的时序收敛(四)--Max Capacitance违反的修复方法

     本文转自:自己的微信公众号《数字集成电路设计及EDA教程》

    里面主要讲解数字IC前端、后端、DFT、低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程。

    考虑到微信公众平台上面发布的很多推文百度搜索不到,所以以后的推文也会在这里进行转载。

     

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

     

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

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

    1、扇出太大;

    2、连线太长;

     

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

    对于第二种情况,可以采用手工ECO或者用PT进行ECO,在net中间插入buffer。

    在ECO的时候要注意物理上的一些问题,例如是否存在filler,是否有足够的空间来size,如何连线等等,详见ICC的ECO流程。

    下面给出一个手工查找max_cap发生原因并手工ECO解决该问题的例子。如下为ICC报告的一个net的max_cap的违反:

    可以在gui中highlight该net:

    发现的确是由于net太长导致的,那么可以在中间插入buffer,注意buffer的驱动一定要合适,否则可能会引起max_tran的违反。

    >insert_buffer[get_nets {mimo_inst/n819}] [get_lib_cells */BUFV8_9TUH35]

    >legalize_placement-cells {mimo_inst/eco_cell}或者用legalize_placement -eco

    >route_zrt_eco -reroutemodified_nets_first_then_others

    >report_constraint-all_violators -scenarios [all_active_scenarios] -significant_digits 4 >../rpts/all_violators.rpt

    >update_timing

    >create_qor_snapshot-clock_tree -name $ICC_CHIP_FINISH_CEL

    修完之后就没有max_cap违反了:

     

  • 相关阅读:
    使用FormData,进行Ajax请求并上传文件
    oracle视图详解
    Unicode和UTF-8之间的关系
    如何访问tomcat所在服务器的其他盘符的资源。
    React首次渲染过程
    react知识点总结
    WebSocket基础
    gulp 批量添加类名 在一个任务中使用多个文件来源
    Chrome浏览器取消INPUT自动记忆下拉框
    Angular7 Drag and Drop
  • 原文地址:https://www.cnblogs.com/ASIC-Horizon/p/7941109.html
Copyright © 2011-2022 走看看