本文转自:自己的微信公众号《数字集成电路设计及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. SQL Server数据库碎片整理

    碎片产生   在SQL Server中,存储数据的最小单位是页,每一页所能容纳的数据为8060字节.而页的组织方式是通过B树结构  SQL Server向每个页内存储数据的最小单位是表的行(Row)  ...

  2. ASP UserInfoList 方法1

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UserInfoList.a ...

  3. 如何将JPEG缩略图放到LISTVIEW中(delphi listview自绘图形)

    http://www.docin.com/p-567657457.html?qq-pf-to=pcqq.c2c http://www.cnblogs.com/snow001x/archive/2008 ...

  4. liunx 详细常用操作

    图片来自: http://www.cnblogs.com/zhangsf/archive/2013/06/13/3134409.html 公司新员工学习有用到,Vim官网的手册又太大而全,而网上各方资 ...

  5. 零元学Expression Blend 4 Chapter 22 以实作案例学习Frame及HyperlinkButton

    原文:零元学Expression Blend 4 Chapter 22 以实作案例学习Frame及HyperlinkButton 本章将教大家如何以实作善用Blend4的内建功能-「Frame」以及「 ...

  6. duilib禁止標題欄雙擊放大窗口

    創建窗口函數中使用UI_WNDSTYLE_DIALOG CMainWnd *win = new CMainWnd(_T("main_win.xml")); win->Crea ...

  7. MySQL半同步复制搭建

    默认情况下,MySQL 5.5/5.6/5.7和MariaDB 10.0/10.1的复制是异步的,异步复制可以提供最佳性能,主库把binlog日志发送给从库,这一动作就结束了,并不会验证从库是否接收完 ...

  8. Advanced Installer 安装前卸载旧版本的办法

    原文:Advanced Installer 安装前卸载旧版本的办法 Advanced Installer这个工具百度出来的资料太少了. 在我们平常打包的工作中,经常遇到的一个问题是,如何能在安装新版本 ...

  9. Android零基础入门第67节:RecyclerView数据动态更新

    列表的数据往往会跟随业务逻辑不断刷新,所呈现出来的数据需要动态更新,那么RecyclerView是如何动态更新数据的呢? 之前在学习ListView的时候如果数据改变,需要调用notifyDataSe ...

  10. UWP 发送短信公用倒计时按钮

    1.要求:      发送验证码按钮,点击后,会倒计时60s,之后才能再次点击.不同界面的多个验证码按钮共享这个倒计时时间. 2.操作步骤       1) 从登录界面-->忘记密码输入手机号- ...