数字IC前后端设计中的时序收敛(三)--Hold违反的修复方法
本文转自:自己的微信公众号《数字集成电路设计及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违反的修复方法的更多相关文章
- 数字IC前后端设计中的时序收敛(五)--Max Transition违反的修复方法
本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...
- 数字IC前后端设计中的时序收敛(四)--Max Capacitance违反的修复方法
本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...
- 数字IC前后端设计中的时序收敛(二)--Setup违反的修复方法
本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...
- 数字IC前后端设计中的时序收敛(一)前言
本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 为了纪念,同时 ...
- 数字IC前后端设计中的时序收敛(六)--Max Fanout违反
本文转自:自己的微信公众号<数字集成电路设计及EDA教程>(二维码见博文底部) 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教 ...
- nodejs--JWT 在前后端分离中的应用与实践
nodejs--JWT 在前后端分离中的应用与实践 http://www.cnblogs.com/lidongyue/p/5269695.html
- 前后端分离中的无痛刷新token机制
今天我们来说一说前后端分离中的无痛刷新token机制 博主先来分享一波福利,最近挖到的宝藏,刚开始学Java的同学看 https://www.bilibili.com/video/BV1Rx41187 ...
- Web设计中打开新页面或页面跳转的方法 js跳转页面
Web设计中打开新页面或页面跳转的方法 一.asp.net c# 打开新页面或页面跳转 1. 最常用的页面跳转(原窗口被替代):Response.Redirect("newpage.aspx ...
- (数字IC)低功耗设计入门(二)——功耗的分析
前面学习了进行低功耗的目的个功耗的构成,今天就来分享一下功耗的分析.由于是面向数字IC前端设计的学习,所以这里的功耗分析是基于DC中的power compiler工具:更精确的功耗分析可以采用PT,关 ...
随机推荐
- layui 或者layer 父页面获取子页面数据 或者子页面获取父页面操作方法
var frameId = $(layero).find("iframe").attr('id');//父页面获取子页面的iframe var id = $(window.fram ...
- wpf 快速建立可以拖动对象
1.引用两个.net 程序集 2.xaml name space导入 xmlns:i ="http://schemas.microsoft.com/expression/2010/inter ...
- NUGET源不存在,安装Nuget包提示“本地源不存在”
困扰了两天的问题,终于找到原因了.因此来这里记录一下~ 前两天写项目时,要从NUGET上安装个第三方库,但不管是从可视化的管理器还是管理器控制台安装,都提示“本地源‘*******’不存在”.然后到网 ...
- 了解 XML 数字签名
http://www.cnblogs.com/flyxing/articles/91734.html http://www.cnblogs.com/wuhong/archive/2010/12/20/ ...
- PHP的MIPS交叉编译(CC=mipsel-openwrt-linux-uclibc-gcc,LD=mipsel-openwrt-linux-uclibc-ld)
物联网内存吃紧,跑JVM这种内存大户肯定吃不消.要跑还是跑C实现的服务,比如Nginx+PHP+SQLite.比如一些家用无线路由器,系统是Linux发行版OpenWrt,内存只有64MB到128MB ...
- spring-mvc+freemarker整合(sonne_game网站开发03)
今天的任务就是在spring+mybatis+springmvc的基础上,将freemarker整合进来. freemarker是什么? freemarker是一种模板引擎.它的目的是基于模板和数据, ...
- WIN10以后如果Manifest中不写支持WIN10的话,获取版本号的API获取的是6
if TOSVersion.Major = 10 then // 高版本的Delphi(比如Berlin)可以这样写 ShowMessage('Windows 10'); 或者: if Win32M ...
- QTcpSocket 对连接服务器中断的不同情况进行判定(六种情况,其中一种使用IsNetworkAlive API方法)
简述 对于一个C/S结构的程序,客户端有些时候需要实时得知与服务器的连接状态.而对于客户端与服务器断开连接的因素很多,现在就目前遇到的情况进行一下总结. 分为下面六种不同情况 客户端网线断开 客户端网 ...
- 层次关系表格,不用递归,快速检索。HierarchyId
最近这几天写了个T4自动实现EF code first和Ado的存储过程.使用过程中发现了一个Sql的类型为HierarchyId.看到时真是百思不得齐姐.算了查一下MSDN吧.从微软官网找到了Hie ...
- java.lang.ClassNotFoundException: org.jaxen.JaxenException 解决方法
当遇到如下exception时, May 11, 2017 4:23:17 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE ...