11

阎浮提 · 2020年05月22日

后端Timing基本技能之:Setup Violation怎么修?

原文:https://zhuanlan.zhihu.com/p/32713278
作者:阎浮提

对于Setup的概念,大家应该都不会陌生。作为IC设计中最基础的概念之一,大家应该在包括课堂和网上在内的各种资料上见到过很多次。

但是从数字后端工程师的角度来说,遇到了setup violation应该怎么修掉呢?

首先,我们回忆一下setup的定义。下图-1展示了一条典型的timing path以及setup的计算方法。

图-1

Setup定义:Data在clock到来之前必须要保持稳定一定时间。按照上图的timing path,setup应该满足如下条件:

,其中:

尽管实际设计中和上述略有不同,但本质没有改变。那么,遇到Setup violation一般怎么修呢?根据上面的公式可以看出,主要有三类方法:

1. 减少data line的delay

1) 换速度更快的cell。

对绝大多数工艺,任何一种标准单元(standardcell)都有不同种速度的Library,也就是常说的不同Vt的cell,比如HVT, RVT, LVT或者SLVT。其中HVT cell速度最慢,SLVT速度最快。而减少data line delay最常用的方法就是更换不同Vt的cell,比如HVT的cell换成RVT, LVT或者SLVT。

2)更换驱动能力更强的cell。

在某些timing path中,可能会出现因为cell的驱动能力比较弱而产生比较大的delay。这时就可以将这种cell更换成驱动能力更强的cell。比如X2倍的cell更换成X4或者X6的cell。

3)将net的layer更换成阻值更低的金属层以减小cell的load和net delay

对于金属层,一般来说越向上的层阻值越小,而阻值越小cell delay也越小,net delay也越小。

2. 减少launch clock line的delay

Clock line不同于data line的地方在于,在实际设计中,一般是要求clock line必须使用最快的cell。具体原因需要读者理解skew,latency和OCV的概念后再做解释。因此要使clock line变快,更换不同Vt的cell是行不通的。可行的办法是根据clock line的物理和逻辑情况通过减少clock line的级数来减小delay。但是这极其限制其实现的可能性,因此在实际工作中这种方法应用的并不多。

3. 增加capture clock line的delay

此方法是后端常用的所谓useful skew的方法。实际操作很简单,就是在capture register的CK pin插入buffer或者inverter以增加capture clock delay。

以上就是后端设计中对setup violation的常用处理方法。尽管原理并不难,但是如何根据给定的timing report,高效迅速的将其修掉以快速实现收敛呢?就我个人来说,在setup timing ECO中,一般report生成之后一个更换不同Vt cell的脚本也会随即自动生成。但是要实现这些功能,需要有一定的脚本语言基础以实现大量的文本处理。这在以后的文章中一一涉及,敬请关注。

如果大家有任何后端技术与职业发展方面的问题,抑或关于数字后端感兴趣的技术话题想要了解和探讨,欢迎关注我的知乎专栏: 数字IC后端设计工程师修炼之路

同时欢迎关注微信公众号:数字后端芯讲堂,一起探讨技术,共同提升!
本极术专栏也会同步更新芯片设计后端的技术干货,也请关注数字IC后端设计工程师修炼之路

推荐阅读
关注数
3845
内容数
46
本专栏致力于将数字芯片后端设计的技术,经验和技巧介绍给想入门或提高的你。一方面从基础知识方面的讲解使初学者少走弯路,另一方面用实际工作中的经验技巧方便从业者提高和交流。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息