层次化设计的时序收敛性研究(1)
2013-11-22 01:03
导读:计算机应用论文论文,层次化设计的时序收敛性研究(1)怎么写,格式要求,写法技巧,科教论文网展示的这篇文章是很好的参考:
摘 要 研究了层次化设计中如何达到时序收敛。从层次化设计的
摘 要 研究了层次化设计中如何达到时序收敛。从层次化设计的流程分析,介绍如何人为地选择并且调整一些布局布线方面的问题从而使得设计更能实现时序收敛。最后以图文及数据相结合的方式举例说明了层次化设计时序收敛的可行性。 关键词 层次化设计;收敛性;模块布局;时钟优化;延时分配;大型设计1 引言 如今一般的后端设计是采用把网表打散,把所有的逻辑单元看作是一个层次上,层次关系不用考虑,一起进行设计,优化。这样设计的好处是逻辑关系比较简单,在做优化的时候,可以对逻辑单元直接处理,所有的物理单元都是可见的。但是,随着现在设计越来越复杂,单元越来越多,现在的单层次的EDA工具的承载能力遭到了挑战。由于设计的庞大,使得后端设计所花费的时间越来越长,于是出现了层次化设计流程。 层次化设计流程是指把设计对象分成多个模块分层次设计,在设计的过程中,要考虑层次之间的关系,顶层模块和底层模块的关系,层次内部的优化等等。最终,在各个模块达到其各自设计要求的同时,满足顶层的设计要求。2 层次化设计的背景2.1 层次化设计的优势 (1)大多数原因是设计规模的庞大。很大的一个设计就需要考虑层次化。 (2)层次化设计可以给一个模块里的设计单元一些约束,使他们可以在一个区域内布局布线。这种约束性给某些特殊的设计带来方便,比如说:多电压设计。随着现在对低功耗的要求越来越广泛,设计者一般会对不同的模块进行低功耗的考虑。不同模块会有不同的供电电压。这样,层次化设计可以对这些不同的模块单独进行功耗分析和设计。 (3)层次化设计有时候也是应项目进行的情况可以采取的一个方法。一般来说,一个大型的设计会分几个小组分别设计几个模块。几个模块的进度有可能不一样。后端设计一般不会等到所有的模块完成了以后才进行。一般来说,可以对部分没有完成的模块估计一个大小,时序。然后把这些模块当作是Black Box(黑盒)放到顶层进行后端设计。这时候,我们采取的也是层次化设计。 (4)层次化设计也是一种设计流程的选择。一个模块的单元如果约束在一起,其内部的优化可以更方便。芯片的各个模块能有效地控制单元固有的离散性,从而最大限度地减少时序或拥塞的变化。2.2层次化设计常见问题 (1)由于有层次化的划分,模块之间及与顶层的关系是不透明的。和平面设计不同,顶层的优化不能进入到模块内部,这样,有可能造成优化的限制。 (2)层次化设计对逻辑的要求比较严格,改变逻辑的时候要注意对层次化的影响。比如,如果在布线的时候,需要穿越某些模块,那需要在这些模块中新增加逻辑连线。所以,逻辑的更新要和布局布线同步。 (3)层次化设计中,模块内部优化所需要的约束条件是通过在顶层的分析中得到的,而顶层的分析又是基于模块内部的情况得出的。所以,这是个反复的过程。层次化设计要注意反复优化时应该遵循收敛原则。最后的结果应该是顶层的时序得到满足,模块的时序也得到满足。3 层次化设计流程 (1)层次化分块。在读入的网表文件中,前端的设计者会按照功能创建一些模块。在层次化设计中的初始,就要对这些模块进行分析,有些模块需要打散并入到顶层,有些大的模块需要保留,当作一个子module进行分层处理。 (2)层次化放置单元。把子模块里的单元集中放在子模块里。 (3)如果timing有问题,做一下简单的优化,比如说修复一些DRC的violation(cap,transition,fanout),插入/删除/更换一些缓存器。 (4)Power的处理。power会采取网格状的模式,同时会做power的分析,做完之后preroute (preroute指对电源线的连接)可以先不要做。 (5)时钟的规划。现在工具已经可以提供一种由下而上的时钟规划。利用工具提供的方法做完时钟规划后,可以得到一个初步的时钟优化,同时会得到一个优化的结果,就是指顶层的时钟的skew能被优化到什么结果,底层的时钟优化的目标是是么。当然这个只是初步得到的结果,可以做个参考。如果得到的skew很差,那就需要重新考虑模块的布局了。 (6)模块化的布线。接下来就可以为产生接口的位置及产生的子模快做准备了。接口的位置是通过布线来得到的。工具会对整个设计进行布线,这样的布线是指global route。 子模块内部的布线是首要考虑的,接下来是接口的布线,最后是顶层的布线。而端口的位置就是通过接口的连线在子模快边界的交点的位置产生的。由于是global 的route,交点不是在wire track上,所以,最后接口的实际位置将会稍微偏离global route。 (7)把模块变成软模块并且产生接口位置,同时把电源线复制到底层。 (8)为模块产生时序的模型。由于软模块内部的信息顶层是看不到的,所有要通过ilm(记录了子模块接口的时序信息的模型)把内部的时序信息映射到顶层去。这样在顶层做时序分析的时候就能包含整个设计的了。 (9)延时分配。这是很关键的一步。时序预估是通过时序分析,产生底层的时序约束,把顶层和底层的优化的目标分配好。通过实际的每个模块的及其顶层的延时,得到各自模块在整个延时所占的比重,然后按照要求的时钟延时(require delay) 进行分配。然后把得出的延时作为时序约束传给子模块。 (10)有了子模块的时序约束,分别打开子模块进行布局,优化,布线。 (11)子模快优化成功之后,转换成硬模块。这样,底层将不会再被改动任何信息,最后,回到顶层做顶层的优化。 这里要注意的是,如果子模块不能达到优化的结果,需要回到顶层,进行顶层的优化,这样可以对底层的优化约束会降低,然后,再产生底层的约束,再做底层的优化。这应该是个收敛的过程。最后的结果会越来越好。4 层次化设计中哪些步骤需要注意得到收敛性的时序4.1 模块分割阶段 用来做层次化设计的子模块一般是网表里的单元器件比较多的模块,并且与其他模块连接关系较少的模块。原因是:由于子模块在布局布线的时候会集中在一个区域,如果这个模块和外界联系比较多的化,这种集中会使得其距离外界单元比较远,不如打散的效果好。如果有很多时序存在这个模块和外界之间,会造成整个设计的时序比较差。 在我们没有划分模块之前,我们对全局进行布局,发现模块b和模块c2内部连接很集中,而c1模块内部的单元被分散在芯片的四周,说明它与其他很多模块有连接关系,外部连接关系比内部连接关系更多。这种情况,我们一般选择把b和c2作为层次化设计的子模块,这样有利于在后期能一直很好的保持设计的收敛性。4.2 模块的布局 在产生子模块之后,我们可以利用工具对芯片进行布局。工具会按照层次化的原则进行布局,即属于同一模块的会放置在同一范围内。这时,我们需要给子模块产生一个形状并且给它一个位置。模块的位置最好放置在内部单元集中放置的中心,之后,当我们把属于这个模块的所有单元都放置到模块中时,我们所得到的结果将与初始的结果相匹配。4.3 模块接口的产生 层次化设计的后期是把顶层和底层分割开来处理,所以,它们彼此的信息交流都是通过接口来进行的,而接口的物理位置是通过布线产生的。布线时,为了保证逻辑的与物理的一致性,需要遵循以下的原则:①内部的连接需要在内部完成布线。②逻辑上模块有多少接口,在布线的时候穿过这个模块的次数就有多少。但是,原则2给层次化设计带来了局限性,如果遵循了这样的原则,将迫使布线需要饶过一些模块。为了打破这种局限性,我们允许改变模块的逻辑,在边界产生额外的接口,这也是为了达到布线的最优。如图1介绍了几种产生feedthrough pin(额外穿越边界的接口)的情况。

由布线产生接口的流程是:先对模块内部进行布线,然后对接口的连接进行布线,最后是顶层的连接进行布线。这样做的优点是我们在前期就能预估到整个设计是不是能完成布线。如果只是对接口进行布线的话,很有可能接口的位置不好从而影响了内部的布线。而接口的位置一旦决定下来,修改起来就难了。所以,我们在产生接口之前就考虑好模块内部的布线,这样能保证后期的结果也是可行的。有一种情况在布线的时候要特别注意,对于相贴边的模块,在贴边处不要放置单独的接口。这样的接口会导致顶层的布线无法通过模块与外界相连。因为层次化设计的后期就是把模块做成硬模块,底层顶层分别进行详细的布线,优化。彼此独立。所以,在顶层,将会把底层的模块全部屏蔽,布线将不允许穿过子模块。这样,图示中的接口在布线中会遇到很大的困难。所以,即使有与外界没有连接关系的接口,我们也不要把它们放到贴边的位置,因为很有可能在ECO的阶段,设计者会为这些端口加上连接关系。在贴边处的端口永远都要遵循一一对应的关系。4.4 模块时钟信息的传递 在一般时钟优化中,我们主要考虑的是Useful Clock Skew。 所谓Useful Clock Skew,就是通过调整各级触发器的时钟延迟(Clock Latency,从时钟起始点到每个触发器时钟输入端口的延迟),来调整前后流水级的路径需求时间(Require Time),以满足尽量小的时钟周期要求。所以一般我们对时钟skew的优化的目标是所有的sink端口的时钟延时尽量保持一致,这样时钟对时序的影响能降低到最小,使我们在逻辑综合和布局阶段的分析大致准确。在平面设计中,所有的sink端口由上而下进行平衡其延时。先把所有的sink端口进行分组,按照就近原则,按照电容的一个阈值进行合并成组,在同组的sink端上层插入缓存器,然后,以缓存器为sink端口,按照同样的原则再往上层插入缓存器,一层一层往上递推,建立时钟树。 如此建立的时钟树能保证所有的sink端口是比较平衡的。当然在选择组的时候会考虑一些其他的因素,比如gated clock,generated clock,hard macro的时钟端口。如果仅靠分组的情况不能平衡,比如有些组离时钟端口的距离差别很大,还需要对各个不同的组插入不同的缓存器。共2页: 1 [2] 下一页 论文出处(作者):