Serdes series # CTS

Clock Tree Synthesis,时钟树综合,简称CTS。时钟树综合就是建立一个时钟网络,使时钟信号能够传递到各个时序器件。CTS是布局之后相当重要的一个步骤,在现如今集成了上亿个晶体管的芯片上,如何设计一个合理的时钟网络,是一件非常具有挑战性的事情。

CTS的目标:

1. 保持时钟信号完整性
  这是最基本,也最重要的一点。那时钟信号的完整性包括:时钟的传播延迟(Latency),时钟偏差(skew),时钟转换时间(transition),时钟不确定性( uncertainy),时钟的级数…这些参数构成了一个完整的时钟树,也是衡量时钟树性能的重要指标。并不是单一地认为这些参数越小越好,有利必有弊,整个PR流程中没有绝对的概念,而如何综合考虑这些参数,得出一个最优的组合,这才是CTS的精髓所在。

  • 时钟的传播延迟(Latency)
      时钟传播延迟Latency,通常也被称为插入延迟(insertion delay)。主要指从Clock源到时序组件Clock输入端的延迟时间。它可以分为两个部分,时钟源插入延迟(source latency)(主要指从clock source端到clock定义端的延迟,即是时钟源(例如PLL)到当前芯片时钟根节点(clock root pin)之间的延迟)和时钟网络延迟(network latency)(主要指从clock定义端到时序器件的clock pin端的延迟)。
  • skew
  • 时钟转换时间(transition time)
      时钟转换时间clock transition time ,也称为clock slew。通常是指电压从10%VDD上升到90%VDD所需要的时间,或者是从90%VDD下降到10%VDD所需要的时间,上升和下降时间过长意味着电路的速度很慢。如图:
      0
      在sdc中,用以下命令来限制slew大小
set_max_transition 0.1 -clock_path[all_clocks]

对CTS来说,这也是一个target值,当你设定了一个slew target后,CTS engine会通过插入buffer或者upsize等操作,尽可能地去满足整个target值。当然,slew也不是越小越好,过小的slew会导致CTS阶段在clock path上插入过多的buffer,从而影响到skew的balance以及功耗和面积。

  • 时钟不确定性(clock uncertainty)
      定义了Clock信号到时序器件的Clock端可能早到或晚到的时间。主要是用来降低时钟抖动jitter对有效时钟周期的影响。值得注意的是,在setup check中,clock uncertainty是代表着降低了时钟的有效周期;而在hold check中,clock uncertainty是代表着hold check所需要满足的额外margin。
      在pre-CTS的时候,我们将时钟的不确定性设定为target的skew和jitter值之和来模拟真实的时钟;而post-CTS之后,时钟树propagate delay已经确定,skew真实存在,所以uncertainty就是时钟的真实抖动值。因此preCTS的target skew不能设置的太大或者太小,这样会造成preCTS和postCTS的correlation不好。
      总结一下:
      在pre-CTS中,
        setup的clock uncertainty = jitter + clock tree skew
        hold的clock uncertainty = clock tree skew
      在post-CTS中,
        setup的clock uncertainty = jitter
        hold的clock uncertainty = 0
  • 时钟树级数
    时钟树其实是由buffer一级一级串行级联下去组成,每一个分结点就化分成一级,如图所示
    1
      通常来说,我们期望时钟树的级数越少越好,因为这样tree上的common path最长,受到OCV和PVT因素的影响也最小,时钟的性能也最好。但是,这样情况下tree很难去生长完成,并且会导致过多的fanout,导致负载过大,延迟变差。因此这也是一个trade off 的过程。
    2. 平衡时钟树
      Balance clock sinks,CTS的目的始终是Balance clock sinks。较小的skew值会得到较为平衡的时钟树,性能也越好,有利于时序收敛。
      clock tree常用名词:
      root pin指的是时钟的产生点,通常在create_clock定义
      sink pin指的是时钟所到达的最后寄存器的ckpin
      leaf net指的是时钟到达寄存器和它前一级buffer之间的net
      trunk net指的是除去leafnet后剩余所有的net都称之为trunk
      如图所示:
      2
      还有一种叫top net,是人为自定义的。我们可以把fanout超过指定数目的net,定义为top net。但是CTS中的fanout和传统的fanout定义不一样,相比传统的只trace后面一级相比,它会一直trace最后一级。top net的存在可以让我们多一种方式去查看tree。
  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值