1、一种 clock mesh 与 Htree 混合时钟树设计方法摘 要本文提出了一种 clock mesh 与 H-tree 相结合的混合时钟树设计方法,同时通过对设计中的寄存器按照一定规则进行分组并分别布局在相同大小的网格中从而具备一定的对称性和规则性,可更好的优化H-tree 结构,提高 H-tree 的性能从而提高了整个混合时钟树的性能。实验表明,该混合时钟树结构可显著减少时钟树长度和时钟分支间的skew,降低 OCV 影响。 【关键词】clock mesh H-tree 寄存器组布局 clock skew 1 引言 随着芯片规模的不断增大,设计复杂度的不断提升,同种工艺下对性能追求的极限
2、化,时钟网络的分布越来越重要。如何减小时钟 skew、降低 OCV 影响,对时钟树综合来说,是个严峻的挑战。业界常用的时钟树设计方法有很多种,比如 H-tree、二叉树、clock mesh、鱼骨等,其中 H-tree 的时钟偏斜 skew 小,但对设计的规则性要求严格;clock mesh 的时钟树长度小、延时小、OCV 影响小,但局部时钟偏斜较大。为了充分利用这两种时钟树结构的优点,本文提出了一种混合时钟树设计方法,能有效的减小时钟偏斜 skew、降低 OCV 影响。 2 混合时钟树结构 混合时钟树结构如图 1 所示。它主要由三部分组成:H-tree 结构pre-mesh、clock me
3、sh、H-tree 结构 local tree。因其包含不同的时钟树结构,故称之为混合时钟树结构。 该混合时钟树先通过 H-tree 结构将时钟源分布到 clock mesh 上,clock mesh 上的时钟以就近原则连接到附近的 local tree 起点,local tree 再通过 H-tree 结构将时钟信号分布到每个寄存器的时钟端;同时,由于 local H-tree 末端驱动的寄存器布局经特殊处理后具有一定的对称性,可更好的优化 H-tree 的性能。因到达每个寄存器的 pre-mesh H-tree 和 local H-tree 的级数基本相同,clock mesh 又将时钟信
4、号在全局范围内均匀分布,从而可保证时钟源端到各寄存器的时钟树长度基本均衡,时钟偏斜很小;同时,通过对寄存器进行分组,将存在时序关系的寄存器集中布局在局部区域,共享同一个时钟树分支,由于同一时钟树分支中共同的时钟路径很长,OCV 影响很小。 3 设计方法及实例 本章节详细描述了在一个 40nm 工艺、面积为 3200um*6200um 的设计中运用该混合时钟树结构的具体方法,并通过 PT 时序分析说明了该时钟树结构时钟路径短,latency、skew 很小等优点。 3.1 寄存器组布局 local tree 设计采用 H-tree 结构。但 H-tree 对其所要驱动的寄存器布局有严格的要求,要
5、求其布局尽量具有对称性,这样才能更好的保证 H-tree 长度的均衡性,时钟 skew 才会更小。因此,在进行 local H-tree 设计前,需先对设计中的寄存器进行处理,让寄存器以一定的规则布局在规整的局部区域内。本文采用的方法是: (1)将设计中的寄存器按一定的规则如按命名规则进行分类,将具有相同名称前缀的寄存器聚成一类。为了让 H-tree 结构的驱动能力更强、时钟树延时更短、时钟 skew 更小,每一聚类最多只能包含一级 ICG 单元(可以无 ICG) ,寄存器数量必须在 5 与 64 之间。 (2)寄存器分组完成后,将每个寄存器组分别创建 group bound,通过设置合适的利
6、用率如 90%指导工具将 bound 内的寄存器集中布局在一定大小的范围内;针对相邻 bound 距离过小、内部寄存器数量过少的情况,需依据一定的规则如间距大小、寄存器数量等对相关 bound 进行合并,合并后的寄存器布局更集中,每个 bound 内部寄存器的数量更均衡(其数量必须不大于 64 个) 。 (3)寄存器布局规则化,将 die 以一定大小的网格 grid(比如(20倍 row height)宽*(16 倍 row hight)高,grid 面积基本为 64 个寄存器的面积)进行网格状划分,对每个 bound 的位置进行微调,保证每个bound 中心点均位于 grid 内,每个 gr
7、id 内最多 64 个寄存器。 通过上述处理后,每个寄存器组均布局在相同大小规则的 grid 内,且每个寄存器组内寄存器数量基本均衡,grid 的规则化,为每一个local H-tree 分支的对称设计提供了前提条件。 3.2 local H-tree 设计 由于每个 local H-tree 的分支只需驱动其 grid 内最多 64 个寄存器,因此,local H-tree 只需要两级驱动,分别为 sink buffer tree 和grid buffer tree: (1)sink buffer tree:每个 grid 分成上下左右共四个小网格,每个小网格内包含 16 个寄存器,每个小网
8、格内插入一个 sink buffer,用于驱动 16 个寄存器;为了平衡该 sink buffer 到 16 个寄存器的 tree长度,将该 sink buffer 布局在 16 个寄存器布局位置的中心。 (2)grid buffer tree:每个 grid 内均有 4 个 sink buffer,为了驱动这四个 buffer,需要在每个 grid 内部插入一个 grid buffer,作为local H-tree 的起点。由于该 grid buffer 直接与 clock mesh 相连,针对 grid 内有 ICG 单元的情况,将该 grid buffer 插在 ICG 单元之前,如果
9、grid 内没有 ICG 单元,为了平衡各 local tree 分支间的级数,需先在 4 个 sink buffer 前插入一级专门用来平衡 ICG 单元的 buffer,再在该 buffer 前面插入 grid buffer,grid buffer 布局在每个 grid 的中心,以此平衡 grid buffer 到 4 个 sink buffer 之间的距离 如图 2 所示,是 local H-tree 在一个 grid 内的分布示意图。Grid 为图示黄色线内区域,grid buffer 布局在 grid 中间位置,其驱动的 4 个 sink buffer 分别位于各自驱动的 16 个寄
10、存器的中间位置,grid 与 sink buffer 以 H-tree 的结构进行时钟走线,grid buffer 作为 local tree的起点,在 clock mesh 布局后,将与附近的 clock mesh 相连,完成local tree 与 clock mesh 的连接。 3.3 clock mesh 与 pre-mesh H-tree 设计 clock mesh 与电源网格类似,设置好 clock mesh 横纵向金属层,网格宽度、网格间隔等约束,使用命令 create_clock_mesh 即可完成 clock mesh 的创建。 时钟源到 clock mesh 的分布,采用
11、pre-mesh H-tree 结构,本文采用的设计方法如下: (1)pre-mesh H-tree 级数的计算:为了更好的驱动 clock mesh,pre-mesh 最后一级 H-tree buffer 数量必须足够多,至少每200um 左右需插入一级 clock buffer。级数与 buffer 间距的关系如下公式所示:buffer 间距=die(宽)/2H-tree(级数) 。 (2)pre-mesh H-tree 的分布:先从 clock port 端插入一级buffer,将该 buffer 布局在芯片中央位置,作为 H-tree 的起点;再从该起点插入相应级数的 H-tree b
12、uffer,每一级 buffer 驱动其后一级的4 个 buffer,这四个 buffer 分别位于该 buffer 的上下左右四个点,形成 H 结构,H 结构的横向间距=die 宽/2 该级 H-tree 级数,纵向间距= die 高/2 该级 H-tree 级数。 (3)H-tree 结构纵向中心 buffer 的插入:为了让 h-tree 结构的时钟走线呈 H 结构,也为了更好的驱动能力,需分别在每级四个 buffer 的纵向中心点插入一级 buffer,该 buffer 与前级 buffer 处于同一水平线上。 (4)驱动 buffer 的插入:当 H 结构纵向 buffer 间距过大
13、、驱动能力不够时,需以一定间隔(如每 200um 左右)插入一个驱动 buffer,以满足每两个互连 buffer 之间的驱动能力。 (5)当 H-Tree 结构完成后,将最后一级 buffer 的输出连接到clock mesh 上,完成 premesh H-tree 与 clock mesh 的连接。 如图 4 所示,是 pre-mesh H-tree 的分布示意图及 pre-mesh 与clock mesh 的连接示意图。pre-mesh H-tree 共有 5 级驱动,最后一级驱动 buffer 以大概 200um 的间距均匀的布局,该级 buffer 的输出以就近原则连接到周围的 cl
14、ock mesh 上。 3.4 混合时钟树延时结果 由于 pre-mesh H-tree 结构最终驱动同一根 clock net(clock mesh) ,布局布线工具目前无法获取从时钟源到 clock mesh 之间各分支的 clock 延时,本文通过第三方电路仿真分析工具 Hspice 来获取 clock mesh 的延时信息。具体的分析方法如下: (1)在布局布线工具中分析 clock mesh 电路结构,生成 clock mesh spice 网表及相应的 measure 文件,并收集需要独立使用仿真工具分析的 clock net 和 clock cell,将其加到生成的 measur
15、e 文件中。 (2)使用 Hspice 仿真工具,输入 1)生成的相关文件,以 SDC 文件格式计算并生成可被布局布线工具识别的延迟信息,完成 clock mesh 电路的延时计算。 (3)将生成的 sdc 文件加载到布局布线工具中,即可完成 clock mesh 电路延时的反标。 将 clock mesh 的延时信息在 PT 中进行反标兵分析整个是钟树的latency 及 skew,发现时钟 skew 很小,在 30ps 以内。 4 总结 本文通过综合考虑各种时钟树结构的优缺点,提出一种混合时钟树结构,该结构由 pre-mesh H-tree、clock mesh、local H-tree 三部分组成,并通过对设计中的寄存器按照一定原则进行分组处理并集中布局在指定大小的 grid 内,保证了 H-tree 的设计规则性,从而更好的优化了 H-tree 的性能。本文结论表明,该时钟树结构可显著减少时钟树长度、增加同一 grid 内时钟树的共同路径长度从而减少 OCV 影响,同时能很好的均衡不同 grid 内各时钟树分支,减少时钟 skew。 参考文献 1陈彦白.Fishbone 和 CTS 时钟树的比较D.上海 :复旦大学,2008. 作者单位 南京电子技术研究所 江苏省南京市 210039