在 sta 分析时,经常会碰到 clock gating cell (一般是 ICG cell 或者 latch)引起的 violation,这种 violation 很常见,而且往往很难修。

为什么 gating cell 容易出问题?出了 violation 又该如何解呢?

首先,gating cell 容易出问题是因为其一般出现在 clock path 的中间,而且往往比较靠近 clock source,其latency 较小,当 tool 去check gating cell 的timing 时,其sink point 是在gating cell上,而 CTS 的sink point 是在 gating cell 后面的register, 所以对包含 gating cell 的 path 就会出现:launch clock 较长,而 latch clock 很短的情况,于是导致严重的 setup violation。

################## update 0321 #########################

以 ICG cell 为例,常见的 clock gating check 的 path 如下图:

图中 Reg1 产生 clock enable 信号,用来控制 ICG cell 的开关状态,

在 cts 阶段,tool 在图中会看到两个 sink 点: Reg1/CK, Reg2/CK ,

所以 tool 会对这两个点做 balance,那么做完 cts 后就有: T1 =~ T2 + T3 ;

但是在 sta 时,由于 enable 信号是由 CLK 采集的,所以需要 check 从 Reg1 到 ICG cell 的 timing,

此时 launch clock latency = T1 , capture clock latency = T2,

又因为 T1 =~ T2 + T3 , 所以可以认为 T1 >> T2,

这样 capture clock 就比 launch clock 短很多,很容易出现 setup violation !

那么这种 violation 该怎么解呢?

两种思路: 1) 缩短 data path 或者 launch clock,   2) 垫长 capture clock

首先,垫长 capture clock  不太可行,因为 gating cell 一般都比较靠近 source 点,后面 fanout 较多,影响可能比较大;

而缩短 data path 也不好做到,因为从 start register 到 gating cell 一般比较近,能够缩的余地不大;

所以综合考虑,缩短 launch clock path (即缩短T1)是最佳选择。

缩短 T1 可以用 float pin 来实现,

set_clock_tree_exceptions   -float_pin   Reg1/CK   -float_pin_rise  0.5

甚至可以考虑 抓出所有产生 enable 信号的 register,让它们单独 cts,不要和 gated clock 做 balance

#######################################################

一般 clock gating cell 是 AND 、OR 、latch、ICG ,常见的的一种 gating 结构如下图:

图中的 register 是用于同步 EN 信号,防止出现亚稳态或毛刺

如果将这个 reg 和 AND 封装起来做成单个cell,就是一个简单的 ICG cell。

此外,用 AND 做的 gating  cell 容易产生 clock glitch或 clipped clock,原因如下图:

##################################################################

典型的 clock gating check timing path 如下图:

图中gating cell 的 B 端是clk,A 端是 enable,A 端的电平变化可以控制 B 端的 clk 是否送出去,以此控制gating cell 的开关

首先 CTS 是去 balance “从source 到 C1(就是T1)” 和 “从 source 到 C2(就是T3+T4)” 这两段clock,即 T1 =~  T3+T4;而 gating check 时,launch clock path 是 从source到C1(就是T1),而 latch clock path 是 从source到B(就是T3),又因为gate cell 一般靠近source,所以这里 T3 比 T1 小得多,skew 超大,于是 gating check 就会出现较大的 setup violation。

那么这种 violation 改如何解呢?

两种思路: 缩短 data path 或者 launch clock path, 垫长 latch clock path

首先,垫长 latch clock path 不太可行,因为 gating cell 一般都比较靠近 source 点,后面fanout较多,影响可能比较大;

而缩短data path 也不好做到,因为从 start register 到 gating cell 一般比较近,能够缩的余地不大;

所以综合考虑,缩短 launch clock path (即缩短T1)是最佳选择。

缩短 T1 可以用 float pin 来实现,

set_clock_tree_exceptions -float_pin C1  -float_pin_rise  0.5

其它与 clock gating 相关知识:

1. set_clock_gating_check  -setup  0.2   开启 gating check 并预留 0.2 的 setup margin,设置这个margin 可以压短 data path

2. DC 综合时可以用 set_clock_gate_latency,在综合时就考虑到 gating path 的 timing 问题

3. gating cell 一般是 AND ,OR ,latch,ICG

转载于:https://www.cnblogs.com/xiaoxie2014/p/9513026.html

clock gating check相关推荐

  1. STA -- clock gating check

    对于现在design中例化好的icg以及工具插进去的icg,不存在clock gating check的问题,因为clock gating 搞成了一个lib cell,不再是latch加上与门的组合. ...

  2. 静态时序分析—门控时钟检查(clock gating check)

    1.clock gating check的条件 一个非buffer/inverter的组合逻辑单元可以由gating控制信号控制其clock信号传递的时候,在STA时序分析时会将其作为clock ga ...

  3. 静态时序分析——Clock Gating check

    门控时钟是RTL级进行低功耗设计的最常用方法,能够有效降低动态功耗.在实际使用中,一般用ICG(集成门控时钟单元)来完成clock gating.ICG电路和时序如下: 通常来说,工艺库已经集成了IC ...

  4. 关于clock gating的 set_clock_gating_check

    在CTS和routing之后会出现 clock gating 的timing violation, 有两个命令: set_clock_gating_check  remove_clock_gating ...

  5. clock gating门控时钟

    在数字IC设计中,我们几乎都要用到门控时钟clock gating技术.使用门控时钟这种技术,我们可以改善电路的三个主要性能指标:速度,面积和功耗,特别是芯片的功耗.市场上主流的综合和静态时序分析工具 ...

  6. 秒杀数字后端实现中clock gating使能端setup violation问题

    秒杀数字后端实现中clock gating使能端setup violation问题 文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点.点击进去后出现任何损失与社区无关. 点击标题下「蓝色微信名」 ...

  7. 静态时序分析-clock gating path的timing violation修复

    文章目录 1.clock gating cell 2.clock gating 的timing violation 1.clock gating cell clock gating cell 是用da ...

  8. lockup latch clock gating cell

    Latch功能 Latch的电路结构如下图: Latch电路结构 当 E = 1 时,latch直传(transparent),D端信号的变化会即时反应在Q端: 当 E = 0 时,latch关断(c ...

  9. Clock Gating cell 与 Integrated Clock Gating cell(ICG)

    一.ICG消除毛刺原理 Clock gating cell 可以由与门或者或门构成,但是使用这两者会产生Glitch,因此目前都采用ICG(Integrated clock gating cell), ...

最新文章

  1. 从零开始机器学习比赛经验(bird分享)
  2. iphone-common-codes-ccteam源代码 CCGraphics.m
  3. 深度学习框架TensorFlow、Caffe、MXNet、PyTorch如何抉择?6 位大咖现身说法
  4. 009Linux密码故障排除
  5. 如何修改微软share point site 的页面风格
  6. Scala与Java差异(四)之数组操作
  7. Kafka的10道基础面试题
  8. python平台软件下载_Thonny(免费Python编程学习平台)V3.3.1 最新版
  9. python数据符号函数等一切皆对象_第一章:Python高级编程-Python一切皆对象
  10. javascript中的undefined,null,,0和false的云集
  11. excel中如何批量将所有的网址设为超链接
  12. Proc恢复数据文件
  13. unix网络编程——网络基础
  14. Teemo Attacking 题解
  15. 对不起,我被裁员了。
  16. 电话号码的字母组合(C++实现)
  17. Linux SWAP 交换分区配置说明(转)
  18. 《Springer》宣布免费对外开放的书籍下载
  19. 特征工程系列(一):特征工程的概念/特征的处理
  20. VS2017 注释快捷键修改

热门文章

  1. ROS1系列(一) Melodic安装
  2. Echarts使用总结(一)
  3. 笨叔叔的linux内核课程_一位叔叔的礼物Linux
  4. YouCompleteMe(YCM)安装时遇到的问题(能遇到的几乎都遇到了)
  5. 可视化神器Plotly绘制树状图
  6. 压力传感器传输数据到服务器,无线压力传感器,数据采集器解决方案及应用实例...
  7. MySQL - 根据生日计算年龄
  8. 如何用链脉智能名片玩转微信裂变营销
  9. themleaf中th:href传入动态参数
  10. MVE(Multi-View Enviroment)windows环境快速搭建