(1.东南大学国家专用集成电路系统工程技术研究中心,南京  210096
2.南京经济学院计算机系,南京  210032)

摘  要:Clock shew是数字集成电路设计中一个重要的因素。本文比较了在同步电路设计中0clock shew和非0clock shew时钟分布对电路性能的影响,分析了通过调整时钟树中CLOCK SKEW来改善电路性能的方法,从而说明非0clock shew时钟分布是如何提高同步电路运行的最大时钟频率的。
        关键词:clock shew;同步电路;时钟树;时钟信号

1 引言
      在当前的数字集成电路设计中,同步电路占了很大部分。所谓同步电路,也就是电路中的数据锁存是由一个或多个分布在全电路中的时钟信号来控制的。同步电路中包含三种主要结构:组合电路、时序电路和时钟分布网络。组合电路用来实现各种逻辑计算;时序电路作为存储单元,用来存储由时序电路计算得到的逻辑值;时钟分布网络的作用是向整个电路中的时序逻辑提供正确的时钟信号,以达到使整个电路正确运行的目的。同步电路中这三种结构之间的关系可用图1来表示。

可以看出,时钟网络在同步系统中的作用非常重要,正确的时钟网络可以避免在同步电路中出现竞争冒险及逻辑错误。只有保证到达各个时序单元(包括寄存器、锁存器)的时钟信号的时序是正确的,才能保证时序单元在每个时钟周期锁存得到正确的逻辑值,从而保证整个电路功能的正确。
    当前比较流行的时钟分布网络是一种树形结构(以下简称时钟树,见图2)。

2 CLOCK SKEW问题的提出
    由于时钟信号要提供给整个电路的时序单元,从而导致时钟线非常长,并构成分布式RC网络。它的延时与时钟线的长度及被时钟线驱动的时序单元的负载电容、个数有关,由于时钟线长度及负载不同,会导致时钟信号到达相邻两个时序单元的时间不同,于是产生所谓的CLOCK SKEW。
    图3所示是为一条局部路径,R1、R2为两个寄存器,C1和C2来自同一个时钟源,时钟信号沿时钟树到达寄存器R1和R2的延迟时间分别为TC1和TC2,用Tskew表示它们之间的CLOCK SKEW,则有Tskew=TC1-TC2。当C1比C2后到时,Tskew为正,当C1比C2先到时,Tskew为负。

在时钟树中应如何合理安排CLOCK SKEW,才能使电路工作在最优性能状态呢?
    以下我们以边沿触发的触发器作为时序单元,来讨论CLOCK SKEW的问题。为方便讨论,先介绍几个和触发器有关的概念。
    (1)Setup Time(Ts):触发器建立时间。即要求数据端信号在时钟信号触发沿到来之前提前到达的最小时间,以保证时钟信号到来时数据端信号能被正确锁存。
    (2)Hold Time(Th):保持时间。即要求在时钟信号触发沿到来之后,数据端信号仍然维持的最小时间,以保证数据能被正确锁存。
    (3)Dcq:时钟端到触发器输出端Q的延时。它表示在时钟触发沿来到之后输入端数据被锁存并通过触发器的时间(假设输入端数据在这之前已经稳定)。
3 对同步电路中CLOCK SKEW的分析
    下面我们仍以图3中的电路为例。假设图中组合逻辑电路部分的延时为Dp,时钟周期为Tcp。通过以下推导,可以得出Tskew要满足两个条件:
    (1)第K个时钟周期的时钟信号到达R1的时间为KTcp+TC1,第K+1个时钟周期的时钟信号到达R2的时间为(K+1)Tcp+Tc2。第K个时钟周期数据信号经R1锁存后到达R2数据端的时间为KTcp+Tc1+Dcq+Dp。考虑到建立时间(Ts)的要求,这个时间应比第K+1个时钟周期的时钟信号到达R2的时间提前Ts,所以有下式:

(2)考虑到保持时间(Th)的要求,第K个时钟周期数据信号经R1锁存后到达R2数据端的时间应比第K个时钟信号到达R2的时间晚Th,有下式:

要使电路正常运行,相邻两个触发器之间的CLOCK SKEW必须满足以上式(2)、式(4)两式。当式(2)不满足时,称发生了setup violation,参见图4;当式(4)不满足时,称发生了hold violation,参见图5。
    从以上两式可以看出,当发生了setup violation时可以通过延长时钟周期(Tcp),即降低系统频率来解决;而当发生了hold violation时,电路一定无法正确工作,即使增加时钟周期也无法改善。因此hold violation是一定要避免的。
    式(2)、(4)两式决定了在给定系统时钟频率的情况下,相邻两个触发器(或锁存器)之间CLOCK SKEW应满足的范围。通过合理插入时钟树来使得时钟信号几乎同时到达所有触发器,从而相邻触发器之间的CLOCK SKEW为0(或接近0)。



4 对CLOCK SKEW的优化方法
    图6所示为两条相邻路径。现利用它来说明如何通过优化CLOCK SKEW来改善电路性能。
    图中各个触发器的Dcq(时钟到输出端延时)都为2ns,R1和R2之间的组合逻辑1和连线延时共为6ns,R2和R3之间的组合逻辑2和连线延时共为10ns。因为后者大于前者,所以R2到R3之间的路径为关键路径。如果C1,C2,C3同时到达各个触发器(在时钟树中的延时都为5ns),即CLOCK SKEW为0,则时钟可以达到的最高频率是由关键路径决定,为1/(10+2)=83MHz。
    通过调整这三个时钟信号到达各个触发器的CLOCK SKEW,我们可以提高这一最高频率。具体方法为设法减小时钟信号到达R2触发器的延时,使之等于3.5ns,即时钟到达R2的时间比到达R3的时间少1.5ns(C2先于C3到达触发器)。这样就给了R2和R3之间的信号传输以更多的时间。则此时最高频率可达到1/(10+2-1.5)=95MHz,系统的频率性能提高了14%。

注意:调整后的CLOCK SKEW必须要满足上面的式(2)、(4)。
    同样是图6,如果假设R1和R2之间的组合逻辑1和连线延时共为10ns;R2和R3之间的组合逻辑2和连线延时共为6ns。则当CLOCK SKEW为0时,时钟频率最高为83MHz。但当增加时钟信号到达R2触发器的延时,使之等于6.5ns后,最高时钟频率仍旧可以提高至95MHz。
    由以上分析可知,合理的安排关键路径中相邻触发器的CLOCK SKEW,可以大幅度提高整个电路的最高工作频率,从而优化电路的性能。
    基于当前数字集成电路设计中插入时钟树的的形式,可以通过在时钟树中选用不同尺寸的CLOCK BUFFER以改变时钟信号到达触发器的延时,从而改变CLOCK SKEW的方法来优化电路的时序,使电路工作在最优性能。下表列出了某种特定工艺下不同尺寸的CLOCK BUFFER对应的延时情况。

通过选用较小尺寸的CLOCK BUFF ER,一方面可以增加时钟的延时来改变CLOCK SKEW,还可以减小功耗。
5 结论
    插入时钟树时设法使时钟信号同时到达芯片上所有触发器(或CLOCK SKEW基本等于0),虽然可以保证整个电路正确工作,但却不一定使电路工作在最优性能下。针对具体的路径延时,特别是关键路径的延时,合理地调整时钟信号到达各个触发器(或锁存器)的时序,也就是合理调整CLOCK SKEW,可以大幅度提高电路的工作频率。
    本文只对同步电路中只有一个时钟源的情况下,CLOCK SKEW的问题进行了分析,这种分析同样适用于当前SOC设计中多时钟域的情况,只要针对每个时钟信号分别运行以上分析方法进行CLOCK SKEW的优化即可。

参考文献

[1]  lvan S.Kortev,Eby G.Friedman,Timing Optimization Through Clock Skew Scheduling,[M].KLUWER ACADEMIC PUBLISHERS
[2]  Jan M.Rabaey,Digital Integrated Circuits A Design Perspective,[M].PRENTICE HALL Interational,Inc.
[3]  Dimitrios Velenis,Kevin T.Tang,Ivan S.Kourtev,Victor Adler,Franklin Baez,Demonstration of Speed Enhancements On An Industrial Circuit Through Application of Non-zero Clock Skew scheduling.[C].Electronics,Circuits and Systems,2001,ICECS 2001.The 8th International Conference on Volume:2,2001.
[4] Himanshu Bhatnagar,Advanced Asic Chip Synthesis:Using Synopsys Design Compiler And Primetime,[M].KLUWER ACADEMIC PUBLISHERS

同步电路设计中CLOCK SKEW的分析相关推荐

  1. EPSON晶振在电路设计中的接地问题分析解决

    为了更好的明了接地的技巧方法,下文中将不再讲究任何的文字技巧,而是一针见血的道出接地问题的本质来.良好的电路需要良好的元器件,爱普生原厂晶振就是其中最好的选择. 爱普生 晶振FC -135 接地方式← ...

  2. KrbException: Clock skew too great (37) - PREAUTH_FAILED问题解决与服务器时钟同步

    最近遇到这样的问题: 运行十几天的代码突然发生了连接hadoop时kerberos认证不了的问题,仔细分析日志,发现在LoginException下方有这样一句话: Caused by: sun.se ...

  3. 电路设计中电容的常见作用

    电容是电路设计中最为普通常用的器件,是无源元件之一,有源器件简单地说就是需能(电)源的器件叫有源器件,无需能(电)源的器件就是无源器件. 电容的作用和用途一般都有好多种,如:在旁路.去耦.滤波.储能方 ...

  4. clock jitter和clock skew

    clock jitter时钟抖动:芯片在某个时间点上时钟周期发生暂时性变化,从而导致时钟在不同周期上变长或者变短.也就是时钟的周期不是固定不变的,是指时钟周期的变化值.这个误差是在时钟内部产生的,与时 ...

  5. 高速数字PCB板设计中的信号完整性分析

    随着集成电路输出开关速度提高以及PCB板密度增加,信号完整性(Signal Integrity) 已经成为高速数字PCB设计必须关心的问题之一,元器件和PCB板的参数.元器件在PCB板上的布局.高速信 ...

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

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

  7. 数模混合电路设计中的难点

    数模混合电路设计中的难点 数模混合电路的设计,一直是困扰硬件电路设计师提高性能的瓶颈.众所周知,现实的世界都是模拟的,只有将模拟的信号转变成数字信号,才方便做进一步的处理.模拟信号和数字信号的转变是否 ...

  8. 静态时序分析—时钟偏斜(Clock Skew:Global Skew与Local Skew)

    global skew指同时钟clock path最长与最短的差值,local skew指的是同时钟有timing check的两个寄存器clock path长度的差值,从定义上看,二者的关系似乎是g ...

  9. 【OkHttp】OkHttp 源码分析 ( 同步 / 异步 Request 请求执行原理分析 )

    OkHttp 系列文章目录 [OkHttp]OkHttp 简介 ( OkHttp 框架特性 | Http 版本简介 ) [OkHttp]Android 项目导入 OkHttp ( 配置依赖 | 配置 ...

最新文章

  1. 逻辑回归及常用模型分类评估方法
  2. Linux之rpm包管理
  3. Microsoft SQL Server 查询表中有重复列值的数据 (PARENTGOODSID列值重复的行)?
  4. 计算机基础知识菜鸟教程,机器学习基础知识整理归纳
  5. hashset去重原理_基于simhash的文本去重原理
  6. 前端学习(1086):构造函数 原型 实例的关系
  7. Oracle的重做日志
  8. python中文显示不出来_Python查询数据库,中文的结果显示不出来
  9. 内存记号(Memory Trail)[自定义的名字] --调试方法
  10. 【只推荐一位】推荐一位资深Python爱好者,现任世界500强架构师
  11. A*算法(最佳优先搜索)
  12. 网站被黑检测与网站被黑处理方法
  13. 维多利亚计算机研究生,2020年惠灵顿维多利亚大学计算机信息硕士申请条件
  14. 【第一周:数据分析思维】7周成为数据分析师
  15. 阿里云-视频点播服务API调用
  16. unity3d的Animation 动画播放器的基本API
  17. 关于千兆交换机,你必须知道的几个点,建议收藏!
  18. linux局域网共享目录软链接,网上邻居:LinuxMint局域网SAMBA共享如此简单
  19. ARM汇编(gun-complier)
  20. 【转】全国各地做生意十年的心得,忍不住上来感慨一下,诚信才是根基!

热门文章

  1. 程序员的自我修养--链接、装载与库笔记:第一章温故而知新
  2. 窗帘轨道怎么安装?方法有哪些?-江南爱窗帘十大品牌
  3. LeetCode1221.分割平衡字符串1894.找到需要补充粉笔的学生编号(C++)
  4. 爬取京东商城中的书籍信息
  5. NPV(净现值)是什么以及其对应的概念及公式是什么?使用Python计算NPV是如何实现的?
  6. ICCV 2019 Vehicle Re-identification with Viewpoint-aware Metric Learning
  7. 【转帖】绝版破解软件教程就不信你学不会!!
  8. 系列九、vue中css样式字体设置为华文行楷
  9. OpenLayers 5 使用GeoJSON进行行政区划剪裁(clip, not mask or filter),非矢量图层覆盖
  10. 深信服 2022届校园招聘 C++笔试编程题目