下冰雹 · 2023年11月22日

ICG时序问题一网打尽

ICG结构知识

延伸阅读:浅谈icg cell

ICG timing check 的瓶颈

在不人工干预的情况下,tool默认会尝试把reg1的CK pin和Reg2的CK pin做平。但是静态时序分析时,reg1→ICG也会做时序check;所以,ICG会天然存在一个很大的clock skew,导致建立时间违例。

image.png

如何解决呢?

在place阶段,在ICG的CK pin设置一个负的latency,这个负的latency的值可以大概等于CTS之后T3的delay大小;这样就可以让tool在给reg1的CK pin的树长识别时,会尽力将T1(即reg1的launch path)做短至少T3(ICG→reg2的时钟树长度)的大小。Place阶段工具也会考虑时钟树skew引入的时序问题,让某些cell尽可能的靠近和不要在path上过多插入delay。

Innovus命令:

set_cloCK_latency  -0.300 [get_pins ICG/CK]

在CTS阶段,在Reg1的CK pin上设置一个insert delay,这就是所谓的floating pin,这个insert delay的值大概也等于CTS后T3(ICG→reg2的时钟树长度)的大小。

Innovus命令:

set_ccopt_property insertion_delay 0.300 -pin  reg1/CK

在timing path中为何ICG的delay跟一个组合逻辑似的

 延伸阅读:深谈latch 的 timing check

如下图所示,ICG在reg2icg的timing path中只体现一个组合逻辑的delay。其实icg就是一个组合逻辑。

image.png

芯片工作时,时钟电平本身一直在高低变化,因为晶振不会停止振动;但ICG的ENABLE信号是固定在高电平1(开启模块时钟)或者低电平0(关断模块时钟)。ICG的两个输入端一个是ENABLE信号,一个是clock信号,因为ENABLE的电平是固定的(例如固定在高电平1),所以每个时钟周期内锁存器向后面输出的信号一直是固定的(信号电平等于ENABLE 信号电平),ICG的delay大概就是一个锁存器环路的delay(结合锁存器结构一看便知)。

为何在timing path中ICG一般不体现timing borrow

ICG可以是latch + AND组成;或reg + AND组成。肯定要用一个时序器件,因为ICG的ENABLE信号是上一级reg产生的,这样就和ICG组成了两级同步电路,可以规避亚稳态的风险。

为什们ICG一般用latch + AND组合,而不是reg + AND组合呢?我个人理解,一方面latch的面积更小,功耗更低;另一方面,ICG上很容易有建立时间违例,latch有半个时钟周期的timing borrow可以用,可以作为ICG时序瓶颈的“紧急钥匙”。

那为什么ICG 的timing borrow一般不打开呢?因为如果打开了,ICG就由边沿触发check变成电平触发check,采集到亚稳态的概率增大,可能导致clock信号不稳定,影响电路状态。

在INNOVUS中怎么打开ICG timing check的timing borrow:

image.png

END

作者:Jack Xu
文章来源:志芯

推荐阅读

更多IC设计干货请关注IC设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
11622
内容数
1230
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息