一、简介
时钟树,是个由许多缓冲单元(buffer cell)平衡搭建的网状结构,它有一个源点,一般是时钟输入端(clock input port),也有可能是design内部某一个单元输出脚(cell output pin),然后就是由一级一级的缓冲单元搭建而成,具体的多少级,根据你的设置以及所使用的单元而定,目的就是使所用终点的clock skew(一般最关心这个)、insertion delay以及transtion了,满足设计要求。1
在传统的集成电路设计中,只须考虑门本身的延迟,互连引起的延迟可忽略。深亚微
米芯片的设计不能沿用传统的设计流程,因为随着器件尺寸的不断减小和电路规模的扩大,门的延时越来越小,电路性能提高的主要因素是互连延迟。因此,精确地计算互连延迟在
芯片设计中具有十分重要的意义。表1是线延时在不同工艺下占总延时的比例关系。可以清楚的看到:随着工艺的发展,线延时逐渐占据了主导地位。
对集成电路设计的要求也日益提高,尤其是同步数字集成电路的时序问题更备受关注.
1
在同步数字集成电路中,时钟信号为系统中的数据传送提供时间基准,通常是整个芯片中扇出最大、通过距离最长、以最高速度运行的信号,它对于同步系统的运行至关重要。时钟树必须保证在最差条件下关键的时序要求能得到满足,对时钟信号任何不当的控制都可能导致情况紊乱,将错误的数据信号锁存到寄存器中。2
二、同步数字集成电路系统
大部分的同步数字系统由级联的时序寄存器组和每组寄存器之间的组合电路组成.每个数据信号都锁存在一个双稳态寄存器中,该寄存器的使能时钟信号一到达,数据信号就离开双稳态寄存器,穿过组合电路网络进入下一个寄存器,并完全锁存在该寄存器直到下一个时钟信号到达.一个常用数字同步系统的延时单元由以下三个子系统组成[1]:1)记忆存储元件; 2)组合逻辑元件; 3)时钟产生电路和其分配网络(clocktree).这三个子系统的相互关系对电路能否获得最好的性能和可靠性起着关键作用.对任意的有序寄存器对R1、R2,其关系可能为以下两种情况之一[1]:
1) R1输出不能仅通过一系列组合逻辑元件传输到R2的输入端;
2)存在一组组合逻辑元件直接连接R1的输出端和R2的输入端.
在第一种情况下, R1输出端的信号变化不影响同一周期内R2的输入.第二种情况下(用R1yR2表示), R1输出端的信号转变将传到R2的输入端,该情况下R1、R2被称为时序相邻的寄存器对,它们组成了一条本地数据路径.如图1[1]所示, Ri和Rf为一对时序相邻寄存器对,它们分别为本地数据路径的起始和目标寄存器, Ci、Cf分别为驱动Ri和Rf的时钟信号,这两个时钟信号都由同一个时钟信号源通过时钟树产生.该时钟树用以产生同步于每个寄存器的特定时钟信号.从理论上来说,同步事件在同一时刻发生于所有寄存器上.在这个
2
整体时钟策略的基础上,时钟信号到每个寄存器的时间都基于一个全局时间基准来定义.
图1 本地数据路径
选择时钟周期使得由起始寄存器产生的最迟信号在激活起始寄存器的时钟沿的下一
个时钟沿到来时被锁存到目标寄存器中,故时序数据路径中的任意时序相邻寄存器对所
允许的最小时钟周期TCP(min)和最大时钟频率fmax可由以下公式算出:
1fmax= TCP(min)= tPD(max)+ tskewif+ tsetup.
其中tskewif=tCi-tCf,tCi、tCf分别为从时钟源到Ri和Rf的时钟延迟,故tskewif可以为正或者为负(即Ci超前或滞后Cf);tPD(max)为数据路径的总路径延时,可由以下公式计算出:tPD(max)=tC-Q+tL+tInt,其中tC-Q为Ci到达后数据离开起始寄存器所需要的最大时间,tL+tInt为穿过组合逻辑块L和连线所需要的时间;tsetup为寄存器的建立时间.为了保证数据成功锁存进目标寄存器,必须满足两个条件:
1)在使能时钟沿到达之前的一段时间内数据必须为有效和稳定的,这段时间称为建立时
3
间,即tsetup.
2)在使能时钟沿到达之后的一段时间内数据必须保持稳定,这段时间称为保持时间,即thold.
三、 时钟偏移
1、 时钟偏移的定义
在整个同步数字系统中,时钟偏移是指时钟信号到达所有寄存器的最大时钟延迟和最小时钟延时之差[1~3],可以由如下公式表示:tskew=tmax-tmin,tmax和tmin分别为时钟源到接收端的最大和最小延时.如果所有时钟同时到达相应寄存器,则时钟偏移为零.
2、 时钟偏移对时序的影响
时钟偏移的大小和极性会对系统的性能和可靠性产生好的或差的影响.tskewif相对任意两个时序相邻寄存器对而言,可正可负,而且由于时钟颤动的影响,会出现一定的不确定性,所以在时序分析中均采用最差情况.分析建立时间时采用tskewif为正的情况,分析保持时间时采用tskewif为负的情况.下面将就时钟偏移对同步数字电路的时序的影响进行详细分析.
1)最大延时数据路径和时钟偏移的关系
如果Ci超前Cf,即tskewif=tCi-tCf>0,则称时钟偏移为正时钟偏移.这种情况下主要考虑的是最大延时数据路径的建立时间问题,定义ts为要求信号最迟到达寄存器的时间treq max和实际到达寄存器的时间tarr的差,TCP为时钟周期.要满足建立时间问题,必须使:
4
ts=treq
max-tarr=(TCP-tsetup-tskewif)-tPD(max)=(TCP-tsetup-tskewif)-(tC-Q+tL+tInt)>0 (1)
由式(1)可知,正的时钟偏移使得ts减小,系统可达到的最大工作频率减小.
2)最小延时数据路径和时钟偏移的关系
如果Ci滞后Cf,即tskewif=tCi-tCf<0,则称时钟偏移为负时钟偏移.负时钟偏移可用于提高同步数字系统的最大工作频率,但是可能会导致最小延时路径的保持时间问题.定义th为要求信号实际到达寄存器的时间tarr与最早到达寄存器的时间treq min的差.要满足保持时间问题,必须使: th=tarr-treq min=(tC-Q+tL+tInt)-(thold+tskewif)>0 (2)
由式(2)可知,tskewif为负时,th减小,当th<0时,可能导致紊乱情况,将错误的数据信号锁存到寄存器中.
四、时钟树的经验结构及设计流程
一种有效的方法是缓冲器插入。加入缓冲器后,缓冲器本身会带来延时,但是由于它减小了线长,大大降低了线延时,所以总的延时还是减小了。
1、时钟树
时钟偏移过大会引起电路时序混乱,导致功能错误,因而在高速ASIC设计中,时钟偏移越来越受到设计者的关注[1]。由于带载能力的问题,时钟源信号不可能直接驱动寄存器,所以现在时钟网络的分布大都采用时钟树的架构[2-3],如何布好时钟树决定了电路的时钟偏
5
移,因此时钟树综合成为芯片后端设计的重要一环。
2、结构
图3为一种广泛应用于超大规模集成电路设计中的时钟树结构[4].这种时钟树的结构设计包括三个方面:时钟树的层数,每层的分支数和每个分支的驱动器种类[4,5].时钟树的设计将影响芯片的时钟偏移和延时的大小.由于每层负载电容不同,所以时钟树的层数越少则不定性越小,从而时钟偏移越小.每层的分支数也是一个重要的因素.分支越多则需要越多的驱动器和连线,将导致面积的增大和由于连线而产生的潜在的时钟偏移不定性;而分支少
图3 一种常用的时钟树结构
会使所需的层数增多,也会导致时钟偏移的不定性和延时的增大.选择驱动器要保证有足够的驱动能力,但驱动能力大会增大上一层驱动器的电容负载,并导致延时和功耗的增加,所以选择不同层的驱动器时要选择其平衡点,以达到在满足驱动能力的情况下延时最小。
6
3、实例
选用Synopsys公司的Astro作为布局布线工具, Astro是Synopsys为超深亚微米IC设计进行设计优化、布局、时钟树分析、布线等的设计环境,能够完成从电路网表到实际生产所用的layout的转换. Astro可以满足5千万门、时钟频率GHz、在0110Lm及以下工艺线生产的SOC(system-on-chip)设计的工程和技术需求.采用的设计是一个8051芯片,芯片共有392个D触发器、5 527个标准单元.首先,我们不指定任何时钟树的参数,用Astro进行自动的时钟树分析并记录下所使用的驱动器数量、时钟树的层数、所得到的时钟偏移和最大延时值.这种情况下是由Astro本身选择所用的时钟层数和每层的驱动器种类数目,通常使用的层数和驱动器数目较多.然后在Astro的时钟树分析设置文件中指定好时钟树的层数、每层的分支数和每层所采用的驱动器种类来控制时钟树的结构[6].由于缓冲器本身具有延时,层数越大则时钟延时也增大.为了获得较好的延时,通常使用较少层数的结构,而此芯片只有392个D触发器,根据库中D触发器和缓冲器的参数可知一个缓冲器大概可以驱动26~34个D触发器,则最后一层只需要11~14个缓冲器,所以我们可以选择第一层为1~3个缓冲器的时钟树结构.
根据上述设计流程对芯片进行了自动时钟树和一系列指定结构的时钟树分析,并将部分结果列入表2,其中时钟树结构中n1~n2~n3表示时钟树第一层有n1个BUF8,第二层有n2个BUF6,第三层有n3个BUF6.由表2可知,本次实验中,自动时钟树分析采用了185个缓冲器,时钟偏移为01070ns,最大延时为21784ns;而在指定结构的时钟树中,效果较好的2~12结构能够只用14个缓冲器达到01032 ns的时钟偏移和11969 ns的最大延时.由以上分析可知,如果结构恰当,指定结构的时钟树分析在时钟偏移、延时和驱动器数量方面均可以得到比自动时钟树分析更好的效果.当时钟偏移过大时还要继续优化,因此经常出现需要多次重复CTS的情况。如果在时钟树综合之前仔细分析电路,做些手动设置,可以帮助工具布一个时序良好的时钟树,缩短版图设计时间。
7
五、时钟树综合优化
1、布局阶段对时序的优化考虑
布局的好坏直接影响到时序的好坏。本设计采用时序驱动布局,时序驱动布局是基于连续收敛引擎而设计的,工具自动的寻找一些最关键路径,将关键路径上的单元放得很近,以减小连线长度来减小关键路径时延,平衡其setup时间约束,预先为这些关键路径留出足够的布线空间,提高关键信号线的可布通性[6-7]。同时,为了减少拥塞度,对布局时的最大密度设置为70%,布局密度。时序驱动布局采用setPlace-Mode–timingDriven命令设置布局模式,placeDesign命令执行布局。如果只是依赖工具的时序驱动布局是不够的,为了尽量减小时钟偏移(Skew),采取的策略是,在时序驱动布局的基础上,进行手动的布局调整,根据时钟的不同,将各时钟控制的寄存器摆在靠近时钟源(Clock-source)差不多远的位置。这样,同一时钟到达各寄存器的时间差就不会太大,有利于减少插入buffer的数量,也有利于Skew的减小。
2、时钟树综合时的特殊处理
8
在时钟树综合之前,需要通过时钟树约束文件来设置综合需要用到的buffer类型、时钟偏移的目标值MaxSkew、最大时延MaxDelay、最小时延MinDelay、最大扇出MaxFanout、时钟树布线规则等。本设计选用驱动能力为中间值的buffer类型来做时钟树综合,因为驱动能力大的buffer,面积也大,如果插入这种buffer太多,会对芯片的功耗和面积产生影响,而且这
种buffer对于上一级也意味着更大的负载;驱动能力太小的buffer虽然面积小点,但是会增加时钟级数,产生的延时却是很大的,所以buffer的选择一定要适当,。
对于Skew要求比较严格的设计,可以将时钟偏移目标值MaxSkew设置尽量小,工具在综合时会尽量的将Skew优化到接近到该目标值[8]。但一般设计中,只要Skew能满足要求,就不要过分的将该值设小,因为工具为了接近该目标值会插入大量的buffer,从而占用太多的面积和太多功耗。因此,本设计选用MaxSkew的适当值为100 ps。时钟树布线规则是可以通过手动设置的,为了让时序路径的布线降低功耗,减小线路的延时,一般将时序路径的布线宽度和间距都设置的比默认值大,本设计采取一般信号线的两倍宽度和间距来布时钟信号线。而且在布线的时候,采取时钟树优先布线的策略,充分保证时钟树路径的布通。
3、 时钟树的手动优化
工具自动的时钟树综合总是会有一些skew没有满足设计要求,工具自动插入的一些buffer也不一定都合理,一般情况下,encounter自动综合产生的时钟树是不满足要求的,在经过了时序分析后要进行必要的修复优化。总的原则就是想办法平衡各线路的延时,一般的优化途径有以下一些:
(1)在时钟信号源(Clock Source)处手动添加驱动能力很大的drive cell,因为时钟树一
9
般扇出很大,负载很大,所以在时钟源点处需要驱动能力大的门单元,更大驱动能力的门单元可以明显减少延时[9-10]。
(2)替换(Re_sizing)驱动能力不一样的单元,尤其是buffer单元。时钟树综合完成后,经过仔细的时序分析后,根据时序分析结果报告,分析Skew违规原因,找出导致Skew违规的路径,根据延时情况来替换一些驱动能力不同的单元,如buffer等,使其延时情况与其他时钟信号线相平衡,从而达到减小Skew的目的。
(3)添加buffer。互连线的延时与连线长度的平方成正比,所以插入buffer可以将长的关键路径分成较小的连线,可以有效地减小互连线的延时。插入的buffer的驱动能力的大小靠经验估计,插入后做时序分析,然后再做re_sizing,直到满足延时要求。
4、设计实例数字电视解调芯片BTV2020,设计规模225万门,芯片工作主频率为82 MHz。
①把系统的时钟模块做成hierarchy group,摆放在其所驱动的标准单元的中间位置,使所有时钟叶节点到时钟根节点的距离基本相同,时钟信号的流动方向是从中心到四周,从而减小时钟偏移。系统BTV2020的clk gen模块在布局时就摆放在芯片的中心位置。
10
②非ICG门控时钟单元的摆放。BTV2020有4个门控时钟,而且标准单元库没有提供ICG cell,在布局时应约束门控时钟的摆放,尽量让锁存器和与门接近,减少它们之间的连线延迟。
设置需要特殊处理的pin或cell:CTS时, Astro默认每个寄存器的时钟端都是同步端口,计算它到时钟源的延时,插入缓冲器来平衡与其他寄存器时钟端的偏移。但对某些不需要平衡时钟偏移的寄存器, CTS之前要进行特殊设置,避免工具做不必要的优化。Astro提供了两种不需要平衡时钟偏移的特殊设置: nonstop cell和ignore pin。下面以门控时钟的寄存器为例分别讨论这两种设置。如图4所示,把门控时钟寄存器的CK端设为ignore pin, Astro在做时钟树时,通过在前面插一个缓冲器来隔离这个寄存器,不去计算时钟源到这个CK端的延时,不平衡它与其他寄存器的时钟偏移。此时缓冲器是时钟树的第n级,寄存器是
11
n+1级,与门是第n级。
如果把寄存器设为nonstop cell,则Astro认为EN1也是时钟信号,穿过这个寄存器做时钟树,不去平衡它与其他寄存器的时钟偏移。此时寄存器是时钟树级数的第n级,与门是第n+1级。两种方法比较而言,设为nonstop不会多加一个额外的缓冲器,但是由于EN1也是时钟信号,在做完CTS分析时钟偏移时,工具会加上门控寄存器的器件延时来计算GCLK驱动的寄存器到时钟源的延时。而实际上真正的时钟信号只是CLK到与门B端这条路径,不是EN1。因此,把门控寄存器设为nonstop会导致分析时钟偏移时多加了一个器件延时,出现很大的时钟偏移,但这个/大0时钟偏移实际上是虚假的。系统BTV2020中,在做CTS之前,把不需要
平衡时钟偏移的门控寄存器和分频器都设为nonstop cell,然后做CTS,之后分析时钟偏移之前,再把nonstop cell设为false,把寄存器的CK端设为ignore pin,这样报出的时钟偏移才真实。
12
由表可见,按文中所述方法分析时钟结构,先手动优化再让工具做时钟树,得到的时钟偏移要比不做优化的小很多,本文设计的两个主要时钟pll4x和pll 3x,分别减小了约%和19%。
参考文献:1、百度百科
2、《同步数字集成电路设计中的时钟树分析》殷瑞祥,郭 王容
3、《ASIC后端设计中的时钟偏移以及时钟树综合》千路,林平分
4、《ASIC 后端设计中的时序偏差以及时钟树综合》唐振宇
5、《ASIC后端设计中的时钟树综合》周 广,何明华
13
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务