为何ICG容易出现setup violation?

ICG(Intergrated Clock Gating)作为low power的设计手法之一,已经在实际中得到广泛应用。它们能够在某些时候将某些clock关断从而达到降低功耗的目的。然而从时序的角度,经常会发生ICG的setup难以收敛的情况。

为什么会出现这种情况呢?

下图展示了一种简单的带ICG的clock tree结构:

一般每个ICG会控制一个或多个DFF,通过某个DFF传递过来的控制信号控制ICG的开启或者关断。

然而,在CTS(clock tree synthesis)工具或者命令综合时钟树的时候,ICG不会被看作sink因此并不会作为balance对象,因此就会出现如下这种结果:

由上图可以看出,在分析setup时:

launck clk delay   = a + b

capture clk delay = a

因此,对于ICG的setup path,天然存在clock skewb ,而skew的大小完全取决于ICG距离sink DFF有多远。

在出现setup violation的ICG path上,比较多见的就是因为ICG和sink DFF的clock之间存在较多逻辑或者物理上距离较远,从而导致skew较大而发生setup violation

针对这种现象,在实际设计中,我们可能会考虑将出现setup violation的ICG尽量放在sin DFF附近以减小skew。与此同时,EDA工具也提供命令来收紧ICG的timing constraint来迫使工具来优化这些path,比如set_clock_gating_check命令。

原文地址:https://www.cnblogs.com/lelin/p/12611597.html

时间: 2024-08-30 01:13:38

为何ICG容易出现setup violation?的相关文章

Setup Violation怎么修?

首先,我们回忆一下setup的定义.下图-1展示了一条典型的timing path以及setup的计算方法. Setup定义:Data在clock到来之前必须要保持稳定一定时间.按照上图的timing path,setup应该满足如下条件: 1. 减少data line的delay 1) 换速度更快的cell. 对绝大多数工艺,任何一种标准单元(standardcell)都有不同种速度的Library,也就是常说的不同Vt的cell,比如HVT, RVT, LVT或者SLVT.其中HVT cel

静态时序分析(static timing analysis)

静态时序分析(static timing analysis,STA)会检测所有可能的路径来查找设计中是否存在时序违规(timing violation).但STA只会去分析合适的时序,而不去管逻辑操作的正确性. 其实每一个设计的目的都相同,使用Design Compiler和IC Compile来得到最快的速度,最小的面积和最少的耗能.根据设计者提供的约束,这些工具会在面积,速度和耗能上做出权衡. 更深层的来看,STA一直都寻找一个问题的答案 : 在所有条件下,当时钟沿到达时,数据会正确地在每个

STA分析(一)

时序检查的最基本的两个指标:setup和hold check. 一旦一个时钟加在FF的时钟断,setup和hold check就会自动加在该FF的时序检查中.其中worst_case 对应setup check.其中best_case对应hold check. setup timing check 检查max constraint, Tlaunch + Tck2q + Tdp < Tcapture +Tcycle - Tsetup. Tlaunch和Tcapture分别是clock tree到l

从数字IC后端设计实现看先进工艺7nm实现的各种挑战

目前虽然号称拥有或将要研发7nm工艺的有多家工艺厂商,但是具有实际流片能力的可能只有TSMC和三星.随着GlobalFoundries最近宣布放弃7nm的进一步研发,以及尽管Intel的10nm和这几家的7nm差不多一个水准,但是要跳票到2019年,因此短期内应该就是双雄争霸的局面. 玩家越来越少,技术实现也没有太多选择,目前的方法无非两种:Multiple Pattern和EUV.前者沿用16nm/14nm等工艺的多重曝光技术,后者采用极紫外光刻机一次曝光.在工艺上的实现上,可能会有如下方案:

centos setup nginx

安装说明 系统环境:CentOS-6.3软件:nginx-1.2.6.tar.gz安装方式:源码编译安装 安装位置:/usr/local/nginx 下载地址:http://nginx.org/en/download.html 安装前提 在安装nginx前,需要确保系统安装了g++.gcc.openssl-devel.pcre-devel和zlib-devel软件.安装必须软件: [[email protected] /]#yum install gcc-c++yum -y install zl

Quick setup

Quick setup — if you’ve done this kind of thing before We recommend every repository include a README, LICENSE, and .gitignore. …or create a new repository on the command line echo "# Architect" >> README.md git init git add README.md git

Visual Studio Create Setup project to deploy web application in IIS

Introduction: In this article I will explain how to create setup file in visual studio 2008/2010 to deploy web application file directly in IIS or in client machine or how to place web application folder in c:\\inetpub\wwwroot folder by running setup

安装office2016时弹出microsoft setup bootstrapper已停止工作的解决办法

安装office2016时安装进度条走到最后又回滚,弹出microsoft setup bootstrapper已停止工作,最后"安装出错" 经过了1天的试尽了各种控制面板卸载.文件夹删除.office注册表删除等方法,最后用了以下方法才终于解决.希望没试过我这个方法的朋友们先试下这个方法.(⊙o⊙)- 确认启动Windows Event Log这个服务项.Windows系统的服务打开方式如下:在"运行"里输入services.msc,就可以打开了,或者通过计算机管

ansible之setup模块常用的信息

ansible的setup模块非常好用,但给出的信息十分全面,有时候我们并不需要全部的信息. 过滤出指定的信息:例->ansible all -m setup -a "filter=ansible_os_family" ansible_all_ipv4_addresses:仅显示ipv4的信息 ansible_devices:仅显示磁盘设备信息 ansible_distribution:显示是什么系统,例:centos,suse等 ansible_distribution_ver