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

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

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

数字IC设计中Setup的分析与优化贯穿前后端设计中,最好在开始后端设计之前就获得一个没有Setup违反的网表,下面按照从前到后的流程逐一讲解每个阶段如果出现Setup违反该如何解决。下面用到的命令,主要针对的是Synopsys公司的综合工具DC以及布局布线工具ICC。

还有需要注意的是,Setup的修复和之后要讲解的Hold的修复有很大的不同,Setup的违反随着布局到布线阶段的推进,它是越来越恶化的,不像Hold,线延迟会有益于Hold的修复的,因此存在少量的违反是没有问题的。因此,在开始下一阶段的Setup修复之前,最好将本阶段的Setup违反都清掉。如果是需要用CCD来修复的Setup违反,那么在CTS之前,这些违反可以不用考虑。

1、逻辑综合阶段就有Setup违反:

1.1 在DC中用Retime或者Pipeline修复;

1.2 在DC中通过group ungroup的方法来对critical的模块进行优化;将那些critical的模块group到一起,然后ungroup,让DC对其进行充分的优化,不会因为在不同的group内而优化受到限制。

1.3看违反是否很少,并向前向后查看路径的时序,判断在后端中用CCD是否有可能修复;如果该路径的前后时序非常宽裕,那么在后端中用CCD来修复也是可以的。

1.4 用DCT进行增量编译

由于DC进行综合时一般用Wire Load Model分析时序,所以不是很准确,并且分析时也没有标准单元或者Macro的具体物理位置,所以分析优化过程不是很贴近物理实际。为了解决这个问题,可以用DCT来解决。具体步骤为:ICC导出Floorplan的DEF给DCT,然后用Compile_ultra进行再次综合。

1.5 修改电路结构/算法

如果上述方法都不行,那么需要查找设计中的Setup违反是什么样的情况,是很多路径都有一些小的违反还是说这些违反都集中在一个模块上,且违反很大。如果是前者则可以通过DCT再次编译来解决,如果是后者,需要分析在后端中用CCD是否有可能解决,如果不行的话,便只能通过修改电路结构或者更改电路的算法来进行修复了,在系统级或者算法级来解决这种问题也是最有效、程度最好的方法了,不过可能会比较耗时。我曾遇到过这种情况,某个DSP模块的时序非常差,基本上通过软件修复是不可能的,后来换了种算法,在精度、面积、时序上都有了很大的提升,设计的Setup违反也不存在了。

2、布局之后CTS之前有Setup违反:

2.1 用DCT进行增量编译

首先用零互连延迟模式报告一下,看设计中是否有setup的违反,如果没有的话,那么应该是线延迟太大使得严重偏离了之前的理想情况,这个可以用DCT来进行再次综合。在DCT中将所有的scenario都读入进去,并读入ICC导出的DEF文件,然后进行增量编译;

2.2 在ICC中将timing critical的单元靠近放置

如果是规模太大使得线延迟太大导致的,在后端设计中也可以将一些critical的单元靠近放置,如果在同一个模块内部,可以创建plan_group;

此外还可以对某些具体的net设置net weight来使得这些critical path上的单元靠近放置。

3、CTS之后有违反:

重新进行CTS,在CTS过程中采用CCD用useful skew来向前向后借timing,命令为:

>clock_opt -concurrent_clock_and_data

4、布线完成后有少量违反:

可以用ICC中的CCD来修复,

>set_concurrent_clock_and_data_strategy

>route_opt -concurrent_clock_and_data

5、chipfinish阶段有少量违反:

可以用ICC中的CCD来修,

>focal_opt -concurrent_clock_and_data-setup_endpoints all

6、布局布线中的任何一个阶段

其实在ICC中布局布线的任何一个阶段都是可以用PT进行ECO来修复Setup违反。

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

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

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

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

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

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

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

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

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

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

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

  6. 机器学习在IC设计中的应用(二)--根据GBA时序结果来预测PBA

    本文转自:自己的微信公众号<集成电路设计及EDA教程> <机器学习在IC设计中的应用(二)--根据GBA时序结果来预测PBA> AOCV AOCV全称:Advanced OCV ...

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

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

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

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

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

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

随机推荐

  1. 芯片超Intel,盈利比肩Apple,三星成科技界"全民公敌"

    原标题:芯片超英特尔,盈利比肩苹果:三星现在是科技界“全民公敌”了   当人们津津乐道于三星的手机业务或者是电视业务时,它已静悄悄的拿下了芯片行业的第一,并且凭借着在芯片上的巨大获利让它的老对手们眼红 ...

  2. WPF关于控件 父级控件,子级控件,控件模板中的控件,等之间的相互访问

    原文:WPF关于控件 父级控件,子级控件,控件模板中的控件,等之间的相互访问 1,在菜单中访问 弹出菜单的控件 var mi = sender as MenuItem;//菜单条目 MenuItem ...

  3. 动态lambda 构建

    var param = Expression.Parameter(typeof(T)); var datetime1 = Expression.Constant(dt1); var datetime2 ...

  4. 每日一题:Java异常处理

    什么是异常 在理想情况下,程序总会运行在很完美的环境中,网络不会终端,文件一定存在,程序不会有 BUG.但是,理想很丰满,现实很骨干,实际生产环境中,网络可能会中断,文件可能会找不到,内存可能会溢出, ...

  5. Win8 Metro(C#)数字图像处理--2.36角点检测算法

    原文:Win8 Metro(C#)数字图像处理--2.36角点检测算法  [函数名称] Harris角点检测函数    HarrisDetect(WriteableBitmap src, int  ...

  6. C#匹配中文字符串的4种正则表达式分享

    本文介绍在C#中使用匹配中文的正则表达式,包括纯中文.有中文.中文开头.中文结尾等几个正则表达式示例.在正则表达式中,中文可以通过Unicode编码来确定正则表达式范围. 在C#中,匹配中文的正则表达 ...

  7. LINQ查询表达式---------join子句

    LINQ查询表达式---------join子句 join 子句接受两个源序列作为输入. 每个序列中的元素都必须是可以与另一个序列中的相应属性进行比较的属性,或者包含一个这样的属性. join子句使用 ...

  8. 零元学Expression Blend 4 - Chapter 39 虾米?!同款?不同师傅!告诉你Visible、Hidden与Collapsed的差异!

    原文:零元学Expression Blend 4 - Chapter 39 虾米?!同款?不同师傅!告诉你Visible.Hidden与Collapsed的差异! 由此可知 Hidden为隐藏项目,但 ...

  9. mysql 服务压缩包安装,用户创建

    wind7上安装mysql记录: 1.下载的包中没有ini配置文件,需要根目录手动创建my.ini文件 内容如下: [client]port=3306default-character-set=utf ...

  10. SignalR---服务端

    原文:SignalR---服务端 前段时间把SignalR的官网教程大致看了一下,算是翻译了一遍,加上了自己的个人理解, 一下上传三个文件,分别是服务端.web客户端.DOTNET客户端相关文档,供大 ...