预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

一种clockmesh与Htree混合时钟树设计方法伍艳春摘要本文提出了一种clockmesh与H-tree相结合的混合时钟树设计方法,同时通过对设计中的寄存器按照一定规则进行分组并分别布局在相同大小的网格中从而具备一定的对称性和规则性,可更好的优化H-tree结构,提高H-tree的性能从而提高了整个混合时钟树的性能。实验表明,该混合时钟树结构可显著减少时钟树长度和时钟分支间的skew,降低OCV影响。【关键词】clockmeshH-tree寄存器组布局clockskew1引言随着芯片规模的不断增大,设计复杂度的不断提升,同种工艺下对性能追求的极限化,时钟网络的分布越来越重要。如何减小时钟skew、降低OCV影响,对时钟树综合来说,是个严峻的挑战。业界常用的时钟树设计方法有很多种,比如H-tree、二叉树、clockmesh、鱼骨等,其中H-tree的时钟偏斜skew小,但对设计的规则性要求严格;clockmesh的时钟树长度小、延时小、OCV影响小,但局部时钟偏斜较大。为了充分利用这两种时钟树结构的优点,本文提出了一种混合时钟树设计方法,能有效的减小时钟偏斜skew、降低OCV影响。2混合时钟树结构混合时钟树结构如图1所示。它主要由三部分组成:H-tree结构pre-mesh、clockmesh、H-tree结构localtree。因其包含不同的时钟树结构,故称之为混合时钟树结构。该混合时钟树先通过H-tree结构将时钟源分布到clockmesh上,clockmesh上的时钟以就近原则连接到附近的localtree起点,localtree再通过H-tree结构将时钟信号分布到每个寄存器的时钟端;同时,由于localH-tree末端驱动的寄存器布局经特殊处理后具有一定的对称性,可更好的优化H-tree的性能。因到达每个寄存器的pre-meshH-tree和localH-tree的级数基本相同,clockmesh又将时钟信号在全局范围内均匀分布,从而可保证时钟源端到各寄存器的时钟树长度基本均衡,时钟偏斜很小;同时,通过对寄存器进行分组,将存在时序关系的寄存器集中布局在局部区域,共享同一个时钟树分支,由于同一时钟树分支中共同的时钟路径很长,OCV影响很小。3设计方法及实例本章节详细描述了在一个40nm工艺、面积为3200um*6200um的设计中运用该混合时钟树结构的具体方法,并通过PT时序分析说明了该时钟树结构时钟路径短,latency、skew很小等优点。3.1寄存器组布局localtree设计采用H-tree结构。但H-tree对其所要驱动的寄存器布局有严格的要求,要求其布局尽量具有对称性,这样才能更好的保证H-tree长度的均衡性,时钟skew才会更小。因此,在进行localH-tree设计前,需先对设计中的寄存器进行处理,让寄存器以一定的规则布局在规整的局部区域内。本文采用的方法是:(1)将设计中的寄存器按一定的规则如按命名规则进行分类,将具有相同名称前缀的寄存器聚成一类。为了让H-tree结构的驱动能力更强、时钟树延时更短、时钟skew更小,每一聚类最多只能包含一级ICG单元(可以无ICG),寄存器数量必须在5与64之间。(2)寄存器分组完成后,将每个寄存器组分别创建groupbound,通过设置合适的利用率如90%指导工具将bound内的寄存器集中布局在一定大小的范围内;针对相邻bound距离过小、内部寄存器数量过少的情况,需依据一定的规则如间距大小、寄存器数量等对相关bound进行合并,合并后的寄存器布局更集中,每个bound内部寄存器的数量更均衡(其数量必须不大于64个)。(3)寄存器布局规则化,将die以一定大小的网格grid(比如(20倍rowheight)宽*(16倍rowhight)高,grid面积基本为64个寄存器的面积)进行网格状划分,对每个bound的位置进行微调,保证每个bound中心点均位于grid内,每个grid内最多64个寄存器。通过上述处理后,每个寄存器组均布局在相同大小规则的grid内,且每个寄存器组内寄存器数量基本均衡,grid的规则化,为每一个localH-tree分支的对称设计提供了前提条件。3.2localH-tree设计由于每个localH-tree的分支只需驱动其grid内最多64个寄存器,因此,localH-tree只需要两级驱动,分别为sinkbuffertree和gridbuffertree:(1)sinkbuffertree:每个grid分成上下左右共四个小网格,每个小网格内包含16个寄存器,每个小网格内插入一个sinkbuffer,用于驱动16个寄存器;为了平衡该sinkbuffer到16个寄存器的tree长度,将该sinkbuffer布局在16个寄存器布局位置的