本文转自:自己的微信公众号《数字集成电路设计及EDA教程》(二维码见博文底部)

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

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

数字IC设计,只有CTS之后开始考虑修复hold,下面按照从前到后的流程逐一讲解每个阶段如果出现Hold违反该如何解决。下面用到的命令,主要针对的是Synopsys公司的布局布线工具ICC。还有需要注意的是,hold的修复不用做到每一个阶段都是Clean的,比如说,CTS之后有0.1左右的违反还是可以接受的,毕竟后边还有布线的操作,线延迟也是有益于hold的;布线之后存在非常少量,且量级在0.01左右的违反也是可以接受的,可以通过focal_opt来解决。

1、CTS之后,布线之前:

>psynopt -only_hold_time

2、布线阶段:

2.1 可以用CCD来修复:

>set_concurrent_clock_and_data_strategy

>route_opt -concurrent_clock_and_data

2.2 通过指定布线优化选项来修复:

>route_opt -incr -only_hold_time

3、chipfinish阶段:

3.1 可以用CCD来修复:

>focal_opt -concurrent_clock_and_data -hold_endpoints all

3.2可以让软件自动对所有hold endpoints来修复:

>focal_opt -hold_endpoints all -effort high

其实可以指定某些hold endpoints来单独对它们进行优化,但是自己尝试发现没有什么用,没有PT效果那么好。

3.3 指定REG2REG路径进行修复

如果违规都集中在REG2REG的路径上,那么用下面的命令更好:

>focal_opt -hold_endpoints all -register_to_register

3.4 手工ECO修复

如果上述方法都不行的话,就需要手动插入buffer或者delay cell来解决了,即采用ECO的方法来手工解决。在插入之前要确保没有插入Core filler,或者有Filler的话要remove,需要注意的是不用全部remove,在放置eco cell的命令的后边会有移除部分filler的选项哟,这个非常棒。

ICC中插入buffer或者delay cell的命令举例:

>insert_buffer [get_pins coeff_in_block*/C] [get_lib_cells */BUFHSV2] -no_of_cells 2

插入的Burffer是随便放置的,可能和其他Cell重合了,或者没有放置在Row上面,需要将其摆放在合理的位置上:

>legalize_placement -cells {xxx aaa} -remove_filler_references “$FILLER_CELL”

或者用:

>place_eco_cells -eco_changed_cells -leaglize_only -remove_filler_references “$FILLER_CELL”

插入的buffer是没有连线的,需要用ECO来对其连线:

>route_zrt_eco -reroute modified_nets_first_then_others

这个做完之后要检查是否有违反,如果都解决了的话可以重新插入Filler了

3.5 用PT进行ECO修复

当然这些也是可以不用手工ECO的方法,而将整个设计的网表、spef导入PT,让PT自己修复,然后导出ECO的脚本,然后将脚本导入ICC进行修复,不过感觉这个过程挺麻烦的,还不如手工来的方便,具体方法可以参见ICCECO流程那一部分。

数字IC前后端设计中的时序收敛(三)--Hold违反的修复方法的更多相关文章

  1. 数字IC前后端设计中的时序收敛(五)--Max Transition违反的修复方法

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...

  2. 数字IC前后端设计中的时序收敛(四)--Max Capacitance违反的修复方法

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...

  3. 数字IC前后端设计中的时序收敛(二)--Setup违反的修复方法

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...

  4. 数字IC前后端设计中的时序收敛(一)前言

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 为了纪念,同时 ...

  5. 数字IC前后端设计中的时序收敛(六)--Max Fanout违反

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程>(二维码见博文底部) 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教 ...

  6. nodejs--JWT 在前后端分离中的应用与实践

    nodejs--JWT 在前后端分离中的应用与实践 http://www.cnblogs.com/lidongyue/p/5269695.html

  7. 前后端分离中的无痛刷新token机制

    今天我们来说一说前后端分离中的无痛刷新token机制 博主先来分享一波福利,最近挖到的宝藏,刚开始学Java的同学看 https://www.bilibili.com/video/BV1Rx41187 ...

  8. Web设计中打开新页面或页面跳转的方法 js跳转页面

    Web设计中打开新页面或页面跳转的方法 一.asp.net c# 打开新页面或页面跳转 1. 最常用的页面跳转(原窗口被替代):Response.Redirect("newpage.aspx ...

  9. (数字IC)低功耗设计入门(二)——功耗的分析

    前面学习了进行低功耗的目的个功耗的构成,今天就来分享一下功耗的分析.由于是面向数字IC前端设计的学习,所以这里的功耗分析是基于DC中的power compiler工具:更精确的功耗分析可以采用PT,关 ...

随机推荐

  1. 2-21-源码编译安装LAMP

      编译安装LAMP所需要及其所使用的源码版本: httpd version:httpd-2.4.16 apr version:apr-1.5.2 pcre version:pcre-8.37 apr ...

  2. IOS开发之delegate和Notification的区别

    delegate针对one-to-one关系,并且reciever可以返回值给sender: notification 可以针对one-to-one/many/none,reciever无法返回值给s ...

  3. 用Delphi将数据导入到Excel并控制Excel

    一.调用Excel的方法:一般情况下有两种方法调用Excel:1.  直接使用Delphi自带的组件:在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWo ...

  4. JavaScript生成树形菜单(递归算法)

    1.最终效果图(这里仅为实现算法,并加载至页面,不做任何css界面优化) 注释:本示例包含三级目录菜单,但实际上可支持N级(可使用该代码自行测试) 2.数据源 菜单信息一般来源于数据库中数据表,且为自 ...

  5. WPF ListView 数据懒加载

    实现方式:当滑动条触底时,加载数据 xaml代码: <ListView ScrollViewer.ScrollChanged="ListView_ScrollChanged" ...

  6. Delphi使用android的NDK是通过JNI接口,封装好了,不用自己写本地代码,直接调用

    一.Android平台编程方式:      1.基于Android SDK进行开发的第三方应用都必须使用Java语言(Android的SDK基于Java实现)      2.自从ndk r5发布以后, ...

  7. win7如何开启快速启动栏

    设置步骤如下: 1.右键任务栏空白区域,检查是否解除锁定任务栏,需解锁: 2.右键任务栏空白区域,点击工具栏---新建工具栏: 3.选择C:\Users\Administrator\AppData\R ...

  8. Qt 中C++ static_cast 和 reinterpret_cast的区别(static_cast是隐式类型转换,会有数据损失,reinterpret_cast是底层二进制转换,没有数据损失)

    1.C++中的static_cast执行非多态的转换,用于代替C中通常的转换操作.因此,被做为隐式类型转换使用.比如: int i; float f = 166.7f; i = static_cast ...

  9. MJPhotoBrowser 用法

    一.使用方法:   #import "MJPhotoBrowser.h" #import "MJPhoto.h"   - (void)tapPhoto:(UIT ...

  10. django自带的cache

    cache语法 from django.core.cache import cache #存入内存 cache.set("aaa",123) #从内存中获取 cache.get(& ...