寄存器聚类在时钟树综合中的实现方法

文档序号:10570153阅读:562来源:国知局
寄存器聚类在时钟树综合中的实现方法
【专利摘要】本发明提供了一种寄存器聚类在时钟树综合上的实现方法,该寄存器聚类方法以降低时钟树互连电容为标准,通过最小生成树的构筑方式,得到时钟树寄存器的最小生成树,使得时钟树的互连线长趋于一个最小值,进而降低时钟树的功耗。在进行寄存器聚类时,通过给寄存器簇设置负载电容的阈值,使得本地寄存器簇的时钟偏移和时钟延时得到控制。通过给寄存器簇分配最合适的缓冲器,使得时钟偏移和时钟延时得到降低并为时钟树综合做好标记。整个寄存器聚类过程都未移动任何寄存器的物理位置,算法以Tcl语言实现,且仅在IC Compiler中编译运行,使得实施操作更为简易。
【专利说明】
寄存器聚类在时钟树综合中的实现方法
技术领域
[0001] 本发明是一种应用于移动芯片数字后端设计中时钟树综合寄存器聚类算法的实 现方法,属于数字电路后端设计领域。
【背景技术】
[0002] 近年来,集成电路的发展突飞猛进,随着集成电路特征尺寸的不断缩小,集成电路 集成度和速度不断提高,集成电路的设计也变得愈加复杂。芯片生产出来后能否正常工作 取决于时序要求,而时钟是芯片的心脏,因此时钟树设计在整个芯片设计中占有极其重要 的作用。
[0003] 时钟树有H型、网格型和二叉树型等三种基本结构。对于超大规模集成电路来说, 由于芯片内部会划分几十至上百个模块,距离时钟源较远的模块内部寄存器的延时会比较 大,而距离时钟源距离较近的模块内部寄存器的延时较小。这将会造成大的时序偏移,使时 钟树的性能指标变差。这种情况下,为了优化时钟偏移指标,可以考虑使用多点时钟树结构 的优化设计。多点时钟树即每个子模块内部根据多个时钟输入点,形成多条子时钟树。所有 时钟缓冲器的输出端都与时钟网格相连,连接点称为分接点。分接点的位置分布基于各个 子模块的负载,子时钟的时钟树综合由模块内寄存器组的几何位置决定。
[0004] 多点时钟树相对于普通的网格型时钟树主要区别在于,多点时钟树网格下的模块 被均匀规划成多个时钟树综合区域,每个区域内分配一个时钟缓冲器,各个区域的时钟树 综合将以该时钟缓冲器的输出端为起点执行。使用多点时钟树有降低时钟延时,缓解〇 C V (On Chip Variation)的影响,减少时钟偏移,加强时钟树抗干扰能力等作用。然而对于模 块内部时序要求不高的时钟树而言,这种结构属于大材小用,同时它也会带来增加时钟树 功耗,具体实施困难,性能提升不明显等问题。
[0005] 传统的寄存器聚类算法针对寄存器聚类的标准各不相同,优化的结果也各有不 同。其中主要的聚类方法有基于寄存器的翻转率进行聚类,通过改变寄存器的物理位置进 行聚类,平均寄存器簇的负载电容,缩小时钟树最短线长等方法对寄存器进行聚类。但是以 上这些聚类方法,要么改变了寄存器位置(有可能影响时序),要么没考虑时钟树功耗,要么 没给出特定细节的设定方案,而这些细节往往决定着整个设计的实施。
[0006] 发明目的
[0007] 本发明提出了一种针对于时钟树功耗新的优化方法,解决了时钟树结构优化空间 小,传统寄存器算法实施困难等问题。该发明的目的在于,在不影响网表的前提下,通过最 小生成树的构筑方式,降低时钟树的互连电容并对时钟树寄存器进行低功耗聚类,进而降 低时钟树的功耗。本文采用的寄存器聚类方法主要针对时钟树叶子级寄存器拓扑结构的优 化。文中用到了普林姆算法作为寄存器聚类算法的先行准备和缓冲器分配算法作为其后续 补充。由于从始至终,算法都没有改变寄存器的初始位置,因此,算法的实际操作性非常强, 它可集成进入任意时钟树综合的流程之中。
[0008] 技术方案
[0009] 本发明提出的寄存器聚类方法用于芯片后端设计时钟树综合的过程中,实现寄存 器聚类算法的方法步骤如下:
[0010] la)利用普林姆算法,以时钟树互连线长趋于最小值为标准,生成时钟寄存器的最 小生成树;
[0011] lb)在生成最小生成树的过程中利用寄存器与缓冲器之间的距离阈值Mmax对寄存 器进行初始聚类,得到时钟寄存器的初始寄存器簇;
[0012] lc)确定单个寄存器簇的负载电容阈值,对初始寄存器簇进行低功耗聚类,得到时 钟寄存器的最终寄存器簇;
[0013] Id)对最终寄存器簇进行本地缓冲器分配,给每个寄存器簇分配驱动能力合适的 缓冲器。
[0014] 技术效果
[0015] 本发明所提出的寄存器聚类方法通过考虑时间复杂度,时钟寄存器物理位置和时 钟寄存器互联电容三个方面问题,对时钟树寄存器进行低功耗聚类,使其能够适用于大规 模集成电路时钟树综合的物理设计。该方法对时钟树寄存器进行聚类时,考虑到了可能带 来的信号路径时序方面的影响,提出了不改变寄存器的位置并设置寄存器簇最大电容值的 方案,使得信号路径时序在不受到影响的同时,时钟树的时钟偏移和时钟延时也一并减小。 在降低时钟树功耗方面,该方案以降低时钟树互连电容为标准,引用普林姆算法建立寄存 器的最小生成树使得时钟树的互连线长趋于最小值,同时得到寄存器的分组数和寄存器 簇。本发明方法主要利用Tel语言设计,在IC Compiler上实现,不需要引入第三方EDA工具 来进行编译或仿真,因此在实现方法上非常简易。在基于Voltus的运行环境下,相比于普通 时钟树综合流程,寄存器聚类算法使得时钟树功耗得到了近13%的降低,其中动态功耗的 降低占80%以上。在IC Compiler的环境中,在时钟偏移和时钟延时上分别得到了 18%和 7.8%的降低。
【附图说明】
[0016] 图1为本发明方法流程图;
[0017]图2为寄存器最小生成树示意图;
[0018]图3为寄存器和互连线的转换模型图;
[0019] 图4为缓冲器驱动扇出寄存器示意图。
【具体实施方式】
[0020] 下面以一具体实例对本发明做进一步详细说明。
[0021] 实施例1
[0022] 如图1所示,本发明寄存器聚类算法在时钟树综合中的实现方法包括如下步骤: [0023] a)首先,依据项目中定义的最大扇出数(Max Fanout)Nfa_t,预估寄存器簇内寄存 器的个数NReg,确定寄存器与缓冲器之间的距离阈值Mmax,NReg在1至NFanmjt之间,不同的NReg对 应着不同的距离阈值M max,计算公式见下文公式6。
[0024] b)接着,参照普林姆算法的思想,以最小互连线长作为构筑时钟寄存器最小生成 树的标准,并在生成最小生成树的过程中,利用距离阈值Mmax对寄存器进行初始聚类,得到 初始寄存器簇,并得到分组数即初始寄存器簇的个数。由于不同的Mmax对应着不同的初始寄 存器簇,因此尝试所有可能的Mmax,最终选择寄存器互连线长度最小的那个初始寄存器簇。
[0025] c)预估时钟树总体负载电容,并利用之前得到的分组数,算出单个寄存器簇的负 载电容阈值。利用该电容阈值,对初始寄存器簇进行低功耗聚类,得到最终寄存器簇,使得 时钟树在得到最低负载电容的同时获得时钟偏移和时钟延时的降低。
[0026] d)最后,给每个寄存器簇分配合适的缓冲器,缓冲器的分配同样以寄存器簇的负 载电容为标准,而不是以传输时间作为标准。合适的缓冲器分配使得本地缓冲器的功耗得 以降低,本地传输时间也得到很好地控制。
[0027] 时钟树总体负载电容预估的原理如下:时钟树所有寄存器簇的负载电容值Ctotai可 由公式1表示。式中C表示寄存器簇i中所有寄存器的电容,Cf表示寄存器簇i中所有互连 线的电容。
[0028] C/0/^2(C;'+C;) ⑴
[0029] n表示寄存器簇的数目,寄存器的电容值可以通过查找Foundry厂提供的标准单元 库得到。由于在做时钟树之前,互连线的长度未知,因此只能设定长度的一个预估值。通过 最短时钟树绕线算法(DME a 1 gor i thm)得到的时钟树线长等于.O^/V , D表示时钟树的寄 存器集合中两个最远的寄存器之间的曼哈顿距离,N表示所有时钟寄存器的个数。由于1C Compiler的时钟树绕线算法与最短时钟树绕线算法一致,因此可以通过公式2预估时钟树 总的寄存器和互连线的电容值。
[0030] dt』j^+Cj^D (2) i=A
[0031] 公式中,Ci表示单个时钟寄存器的电容,、表示预估的时钟树线长,<^表示单位 互连线的电容。CwSFoundry厂对线电容多次模拟仿真得到的一个值,它是将线的宽度和高 度等因素综合考虑在内而得出的一个相对准确的值。由于时钟树的绕线优先级在整个芯片 中是最高的,时钟绕线通常是普通信号线宽度的两倍,因此时钟树的绕线受外界干扰较小, 可以通过来粗略估计互连线的电容值。单个寄存器簇的负载电容阈值可通过公式3 得出。其中K为分组数。
[0032] Climit=[C/ total/K] (3)
[0033] 实施例2
[0034] (1)时钟树分组的设计
[0035]假设芯片内部某一区域时钟寄存器的分布如图2所示,按照以下步骤得到合理的 寄存器分组数:
[0036]步骤a:参照普林姆算法的思想,随机选取一个寄存器作为起点(在此选择A寄存 器)。此时,将A当作初始寄存器簇C( 1 ),该寄存器随之从寄存器集合Nreg中移除。设置寄存器 与缓冲器之间的距离阈值Mmax的大小。
[0037]步骤b:在剩下的寄存器中找出距离A最近的寄存器B,若它们之间的距离小于等于 Mmax,即寄存器B与当前寄存器簇中心(此时为A)的距离小于等于1^且当前寄存器簇的大小 在最大扇出范围内,则把A和B合并,同时更新寄存器簇的中心点坐标为A和B的中点坐标。同 理,在余下的寄存器中找到C和D加入寄存器簇C(l)并更新C(l)的中点坐标。
[0038] 步骤c:寄存器E为距离C(l)最近的寄存器,但它们之间的距离大于Mmax的值,因此 将E作为新的初始寄存器簇C(2)。同理,找出剩余寄存器中所有能够加入C(2)的寄存器F、G、 H〇
[0039] 步骤d:依此类推,可得到四组初始寄存器簇。它们分别为"AB⑶","EFGH","IJKL" 和"MN0P"。由于Mmax的限制,这些寄存器簇的半径都不会超过M max,进而对时钟偏移做了一个 初步的限制。通过这种方式,既得到了分组数K也得到了初始寄存器簇。
[0040] (2)寄存器簇的缓冲器分配的设计
[00411公式(4)为互连线转换模型的表达式。表达式中,de是由Elmore延时模型算出的互 连线延时,Sle为互连线上的转换衰退值(Slew Degradation)。
[0042] Sle = ln 9Xde (4)
[0043] 公式(5)为寄存器输入转换Sl(r)表达式。由公式可以看出寄存器输入转换的大小 由缓冲器的上升沿输出转换值Sl?t(b)和互连线转换衰退值Sl e共同决定。
[0044] S/(r) = ^SIjlli(bf+SI; (5)
[0045] 图3为一个简单的缓冲器驱动寄存器示意图,结合公式4和公式5可知,图中寄存器 的输入转换受缓冲器的输出转换和互连线转换共同影响。
[0046] 然而,人工得到缓冲器的输出转换值非常困难。此外,即便手工算出的转换值,但 通常情况下该值的误差非常大没有任何参考意义,不能将寄存器的输入转换值作为缓冲器 分配算法中插入缓冲器的依据。因此,在此以负载电容作为插入依据。具体实施步骤如下: [0047]步骤a:选定项目中所有驱动能力适中的缓冲器,它们按照驱动力大小升序的方式 排序。
[0048] 步骤b:考虑极为特殊的情况,当寄存器簇中只有一个寄存器时,不给其分配缓冲 器。
[0049] 步骤c:对于每一个非单个寄存器的寄存器簇,计算寄存器簇的负载电容,同时遍 历缓冲器的最大驱动电容,给寄存器簇分配最合适的缓冲器。
[0050] (3)距离阈值Mmax的设计
[0051] 缓冲器根据驱动能力的大小来驱动不同扇出数的负载。此外,对于相同扇出数的 负载而言,驱动能力强的缓冲器所带负载的距离可以更远。在设定寄存器簇的驱动缓冲器 时,应该考虑驱动能力适中的缓冲器。这样才能在性能和功耗上得到一个折衷。
[0052] 以图4所示缓冲器驱动扇出寄存器示意图为例,各寄存器结构相同,该寄存器簇的 负载电容可由公式6表示:
[0053] Cbuf = NReg*Cr+NReg*Mmax*Cw (6)
[0054]式中Cbuf为缓冲器的最大负载电容,缓冲器的合理最大负载电容值可以通过计算 标准单元库中的查找表得到。若缓冲器所带负载电容超出Cbuf,则缓冲器内部延时将变大, 可能造成时序违规。Cr表示该寄存器簇中单个寄存器的电容,N Reg表示该寄存器簇中的寄存 器个数,Cw表示寄存器簇中单位互连线的电容,Mmax表示该寄存器簇中寄存器与缓冲器之间 的距离阈值。
[0055] 在公式6中,Cbuf、C#PCW可以通过查询标准单元库得到。在做数字后端设计前,通常 会设置缓冲器的最大扇出值NFa_t,即缓冲器所能驱动的寄存器的最大个数。因此,NReg值的 范围为1至NF_ut之间,可以根据具体应用取经验值。在确定了以上四个参数后,距离阈值 Mmax便可通过公式计算得出。
【主权项】
1. 一种寄存器聚类算法在时钟树综合中的实现方法,其特征在于,该方法包括如下步 骤: la) 利用普林姆算法,以时钟树互连线长趋于最小值为标准,生成时钟寄存器的最小生 成树; lb) 在生成最小生成树的过程中利用寄存器与缓冲器之间的距离阈值对寄存器进行初 始聚类,得到时钟寄存器的初始寄存器簇; lc) 确定单个寄存器簇的负载电容阈值,对初始寄存器簇进行低功耗聚类,得到时钟寄 存器的最终寄存器簇; ld) 对最终寄存器簇进行本地缓冲器分配,给每个寄存器簇分配驱动能力合适的缓冲 器。2. 根据权利要求1所述的寄存器聚类算法在时钟树综合中的实现方法,其特征在于单 个寄存器簇负载电容阈值的确定:确定时钟树总的寄存器和互连线的电容值,将该总电容 值和寄存器簇个数相除得到单个寄存器簇的负载电容阈值。3. 根据权利要求2所述的寄存器聚类算法在时钟树综合中的实现方法,其特征在于时 钟树总的互连线电容值通过最短时钟树绕线算法预估得到。4. 根据权利要求1所述的寄存器聚类算法在时钟树综合中的实现方法,其特征在于缓 冲器的分配方式:缓冲器的分配是以寄存器簇的负载电容作为标准。
【文档编号】G06F17/50GK105930591SQ201610261567
【公开日】2016年9月7日
【申请日】2016年4月26日
【发明人】刘昊, 符仕聪
【申请人】东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1