在 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

clock gating check的更多相关文章

  1. clock gating and PLL

    一个gating的clock是指:clock network除了包含inverter和buffer外,还有其他logic. PrimeTime会自动的对gating input进行setup和hold ...

  2. clock时钟

    ①时钟的偏移(skew):时钟分支信号在到达寄存器的时钟端口过程中,都存在有线网等延时,由于延时,到达寄存器时钟端口的时钟信号存在有相位差,也就是不能保证每一个沿都对齐,这种差异称为时钟偏移(cloc ...

  3. P & R 11

    要做好floorplan需要掌握哪些知识跟技能? 首先熟悉data flow对摆floorplan 有好处,对于减少chip的congestion 是有帮助的,但是也不是必需的,尤其是EDA工具快速发 ...

  4. clock sense和analysis mode

    PrimeTime会自动track clock tree中的inverter和buffer,从而得到每个register的clock sense. 如果clock tree中,只有buffer和inv ...

  5. Universal Asynchronous Receiver/Transmitter

    USART簡介與特性 NRZ標準資料格式(Mark/Space) 半雙工/全雙工 Synchronous 同步傳輸 CLOCK SKEW Asynchronous 非同步傳輸 半/全雙工.同步/非同步 ...

  6. 2. [mmc subsystem] mmc core数据结构和宏定义说明

    一.host相关 1.struct mmc_host struct mmc_host是mmc core由host controller抽象出来的结构体,用于代表一个mmc host控制器. 数据结构如 ...

  7. Linux内核配置选项

    http://blog.csdn.net/wdsfup/article/details/52302142 http://www.manew.com/blog-166674-12962.html Gen ...

  8. 最新内核3.4)Linux 设备树加载I2C client adapter 的流程(内核3.4 高通)【转】

    转自:https://blog.csdn.net/lsn946803746/article/details/52515225 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转 ...

  9. 从ICG cell 在 library 中的定义说起

    如Coding 时需要考虑什么样的代码风格会使gating 的效率更高:综合时需要特别设置要插入的gating 类型,每个gating 的fanout 范围,是否可以跨层次,是否需要做physical ...

随机推荐

  1. 【JavaFx教程】第一部分:Scene Builder

    第一部分的主题 开始了解 JavaFX . 创建并运行一个 JavaFX 项目. 使用 Scene Builder 来设计用户界面. 使用 模型 - 视图 - 控制器(MVC)模式 构造基础的应用. ...

  2. Linux中编译安装软件的基本流程

    1. 准备软件包源文件 从互联网下载相应的软件包(以 .tar.gz 或 .tar.bz2 为后缀),将tarball文件解压到/usr/local/src目录下,并切换到软件包目录下 : 2. ./ ...

  3. promise的理解和应用

    老铁们,我又满血复活了,今天我准备来吹一波我对promise,如有错吴请直接指出,明白了吗?话不多说开始吧 首先我们需要知道啥叫promise,我问了问大佬,他说这个东西是 异步操作的同步代码(but ...

  4. 【代码笔记】iOS-HTTPQueue下载图片

    一,工程图. 二,代码. ViewController.h #import <UIKit/UIKit.h> #import "ASIHTTPRequest.h" #im ...

  5. 葡萄城报表 SP2新特性(2)— 智能钻取下级报表

    中国式复杂报表常常会因为一些特殊的行业规范存在着一些复杂的需求,对于报表的功能要求不仅要广而全,还要精细到行业内部,葡萄城报表近几年来也一直致力于解决中国式复杂报表的需求,一直持续增强中国式复杂报表的 ...

  6. 通过 Cobalt Strike 利用 ms14-068

    拓扑图 攻击者(kali) 位于 192.168.245.0/24 网段,域环境位于 192.168.31.0/24 网段. 域中有一台 win7 有两张网卡,可以同时访问两个网段,以这台机器作为跳板 ...

  7. [Ubuntu] 14.04 外接显示器分辨率调整

    最近按照提示更新了一下系统,安装了100多M的更新包,结果系统又读不出外接显示器的信息了,开机显示vga-1:probed a monitor but no|invalid edid,我也不懂. 后来 ...

  8. Microsoft SQL 关系数据库的使用指南

    Microsoft SQL 关系数据库的使用指南 https://docs.microsoft.com/zh-cn/sql/relational-databases/database-features

  9. 三种方法实现java调用Restful接口

    1,基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...

  10. excel表格中添加单引号的方法

    今天碰到需要插入大量数据的excel表格,其中有很多文本,需要添加单引号. 方法如下: 左边是原始数据,右边是我即将添加单引号的空白区域. 第一步:在需要添加的位置输入= 第二步:输入等号之后点击需要 ...