0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

我们如何来修复setup violation?

数字后端IC芯片设计 来源:未知 作者:李倩 2018-10-04 15:06 次阅读

对于setup violation,大家一定都非常熟悉,网上也有很多相关的资料。今天我们来介绍下对于项目后期ECO阶段,我们如何来修复setup violation.

首先我们来回顾一下setup的定义,简单来说,setup检查是为了检查数据传输不能太慢,否则,在目的寄存器的capture edge不能正确的锁存数据。如下图所示:

用公式简单表示为:

Tlaunch为launch clock path delay

Tcapture为capture clock path delay

Tdp为data path delay

Tcycle为时钟周期

详细公式可以查看下列文章

【时序分析基本概念介绍

上述公式成立就代表setup没有violation,因此我们可以知道修复setup的主要方法有以下三种:

1. 减小data path的delay

这是我们经常使用的修复setup的方法,但实际上,setup不好修的原因也是在于我们需要在data path上做减法,和hold相反,一般来说,把path变短总是要比把path变长困难许多,这边列举了一些经常使用到一些减小path delay的方法。

1) Vt Swap

通常是指选用Vt更小或者channel length, 一般的,同一种cell会分为HVT, RVT, LVT, SLVT。他们的速度大小按快到慢依次排列为SLVT, LVT, RVT, HVT。 功耗大小正好相反。每种VT cell又会分为不同的channel length,比如C20, C24, C28,C32。 数值越高,速度越慢。因此,在项目功耗允许的前提下,我们可以采用Low Vt的cell来替换High Vt的cell,或者选用小的channel length的cell。 这是修复setup最简单也最常用的方法。

2)插入BUF

Setup violation其实绝大部分原因是由于drv造成的,我们知道,cell的delay其实是根据它的input transition,以及output load查表计算得来。因此,我们解决了cap和slew的问题,timing其实自然也得到了解决。那drv的问题,很多一部分我们可以通过插入buf来修复,比如net连接得太长导致驱动变弱,可以插入buf打断net,来提高驱动;fanout太大,也可以通过插入buf来减少fanout数目。

3)Size up cell

这其实也是一种修复drv的手段,如果某个cell的驱动能力太弱,比较容易产生比较大的delay,因此我们可以通过size up这个cell来提高驱动能力,比如X1的BUF换成X4, X8的等。

但是我们在size up cell前也需要注意该cell的输入/输出transition的变化情况,因为驱动能力强的cell,它本身的load会比较大,可能会造成前一级cell驱动不了它的情况,所以实际的data path情况会比较复杂,不一定换大驱动的cell,delay就会变小。

一般情况下,如果我们看到某个cell的output transition比input transition大很多,那说明这个cell的驱动不够,我们可以尝试size up一下。如下图所示:第一个X1的INV input transition是18.051,而输出transition是66.328。明显地时X1的INV推不动下面的14个fanout,可以考虑提高将X1的INV换成驱动更强的cell。

4)Layer assignment

这也是经常使用的一种手段,通常来说,高层金属电阻较小,net delay也较小。这种现象在先进工艺中更常出现。我们可以将绕在低层的net,删除wire后,设置绕线属性,让它绕在高层。

2. 增加capture clock path delay

这也是经常使用的一种修复setup的方法,也就是我们经常说的手动useful skew的方法。如果我们发现在data path上没有可以明显减小delay的地方时,我们可以采用在capture clock前垫clock buf的手段来增加capture clock path delay,从而起到修复setup violation的目的。

但是,由于这样会动到clock path,所以我们垫buf前还是需要很谨慎的。首先我们得确保从capture clock出发的下一级path是不是有setup slack margin,同时,检查一下到当前该级register的input pin上的有没有hold margin。

3. 减小launchclock path delay

这也是动clock path来修复setup violation的一种方法,不同的我们需要减小launchclock path delay。 这类方法在平时是很少使用到的,原因也是因为减小path delay是很困难的,更何况clock path上用得一般都是最快的cell。理论上我们可以减小clock path的级数来实现,但实际操作起来还是要分析清楚clock的结构。

上述就是一些修复setup violation的理论手段,在实际的ECO过程中,我们考虑得更多的是,如何提高修timing的效率? 毕竟如果timing path fail较多的话,手动修复是极其费力费时的一件事情。

一般signoff工具或者第三方的ECO工具都会自带timing eco的功能,可以先做几轮。 到工具修不动时,可以分析下timing报告,同时应该要通过脚本处理自动产生一个Vt Swap的ECO脚本。因为,Vt Swap动的东西最少,甚至不需要重新eco route和抽spef,直接在signoff工具可以重新报timing看修复结果。

至于剩余的需要手修的path,照着timing report修复时,需要注意以下几点:

1)检查timing path的hold margin。 需要注意的是,一般setup的violation在SS corner下,而hold则出现在FF的corner下面,两者之间有3倍左右的timing variation。所以,检查margin时需要考虑不同的corner影响。如果设计频率过高的话,可能会出现setup和hold相互打架的情况,这时可以考虑提高net delay占的比重,修出margin。

2)尽量动靠近endpoint的cell。因为越往path后面的cell,影响的path数目越少。但有时还是需要考虑path分叉情况再决定修复的方法。

3)修完所有path后,需要在PR工具中对动过的cell重新摆放以及route。

相比hold来说,setup要难修很多,大家在掌握修复方法以后,应该进一步考虑如何通过脚本来提高工作的效率。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5308

    浏览量

    119975
  • Setup
    +关注

    关注

    0

    文章

    30

    浏览量

    11968

原文标题:Less is more——如何修复setup violation?

文章出处:【微信号:IC_Physical_Design,微信公众号:数字后端IC芯片设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    积分如何来的啊

    积分如何来的啊
    发表于 02-05 18:39

    2018年IC设计企业笔试题01英伟达Nvidia

    笔试真题:1、什么是建立时间、保持时间,如果setup time violation或者hold time violation 应该怎么做?(10分)答案:建立时间:是指在触发器的时钟信号采样边沿
    发表于 11-26 14:39

    如何使用良好的RTL设计实践进行修复

    the concepts of timing analysis such as setup hold time, skew , transport delay, other timing violation etc.
    发表于 02-14 08:16

    FPGA编译在place步骤显示“unusual high hold time violation detected”

    如题,FPGA编译在place步骤显示“unusual high hold time violation detected”,在place步骤会持续数小时,具体提示有"
    发表于 10-26 18:18

    MATLAB如何来设计滤波器

    MATLAB如何来设计滤波器,今天我们先来设计一些FIR滤波器。首先,我们打开MATLAB的help窗口,点击Help->product Help1.jpg (72.14 KB, 下载次数
    发表于 08-17 07:29

    什么是Setup 和Holdup时间?

    什么是Setup 和Holdup时间? a) 什么是Setup 和Holdup时间?    建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数
    发表于 09-11 22:53 1.1w次阅读

    net_framwork_setup

    net_framwork_setup,有兴趣的同学可以下载学习
    发表于 04-27 17:12 9次下载

    pdf_setup

    pdf_setup bbv
    发表于 04-29 10:52 0次下载

    如何解决“access violation at address”错误

    “access violation at address”的意思是“在地址访问冲突”,虽然具体意思不是这样,但这个问题是Access Violation计算机用户在运行的应用程序试图存取时未被指定使用的存储区出现的问题。
    发表于 09-14 18:01 3.6w次阅读

    何来手动修复max transition和max capacitance

    对于这种情况,我们可以选择在该instance的右边插入一个buffer,由于buffer的驱动较强,所以让它来驱动右边的10几个instance,这样就能显著降低fanout的数目,修复max transition的violation
    的头像 发表于 11-02 17:06 2.2w次阅读
    如<b class='flag-5'>何来</b>手动<b class='flag-5'>修复</b>max transition和max capacitance

    Setup软件安装可执行程序工具免费下载

    消失的情况,一般是由于系统缺少此文件,下载setup.exe进行修复即可。setup.exe程序是对某些软件、游戏、程序进行安装时的必备工具!
    发表于 11-13 08:00 11次下载

    如何修复ECO阶段的Noise Violation

    如下图所示,有时候,这个毛刺信号比较小,可以忽略;但是,当毛刺信号足够高而且持续时间较长,这就有可能导致逻辑功能发生变化,破坏了门电路所保存的状态,使得电路发生故障。因此,在最后timing signoff中,noise引起的glitch是我们必须要修复
    的头像 发表于 01-14 13:55 7235次阅读
    如何<b class='flag-5'>修复</b>ECO阶段的Noise <b class='flag-5'>Violation</b>

    图形界面介绍:GUI上的按键是Violation Browser

    我们可以通过Layout上的快捷菜单按钮或者Tools下面的Violation Browser按键来打开它。如下图所示:左边layout图中白色部分就是violation, 右边form图中就是对它的介绍
    的头像 发表于 05-19 16:53 2580次阅读
    图形界面介绍:GUI上的按键是<b class='flag-5'>Violation</b> Browser

    通过解剖一个边沿触发器简要说明setup和hold产生原因

    在后仿真过程中经常会遇到关于setup和hold violation的问题,但是关于setup和hold time的产生原因和由来很多人还比较朦胧,为此本文通过解剖一个边沿触发器简要说明set
    的头像 发表于 07-04 09:32 1568次阅读
    通过解剖一个边沿触发器简要说明<b class='flag-5'>setup</b>和hold产生原因

    什么是Setup和Hold时间?

    时钟的上升沿之前,输入信号需要稳定在有效的数据值上的最小时间间隔。Hold时间指的是在时钟的上升沿之后,输入信号需要保持在有效的数据值上的最小时间间隔。这两个时间要求是保证数据在电路中的正确传输和处理的关键。 首先,让我们更深入地了解一下Setup时间
    的头像 发表于 11-17 14:11 2015次阅读