层次化设计的时序收敛性研究

上传人:桔**** 文档编号:513666168 上传时间:2023-10-16 格式:DOC 页数:8 大小:24.50KB
返回 下载 相关 举报
层次化设计的时序收敛性研究_第1页
第1页 / 共8页
层次化设计的时序收敛性研究_第2页
第2页 / 共8页
层次化设计的时序收敛性研究_第3页
第3页 / 共8页
层次化设计的时序收敛性研究_第4页
第4页 / 共8页
层次化设计的时序收敛性研究_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《层次化设计的时序收敛性研究》由会员分享,可在线阅读,更多相关《层次化设计的时序收敛性研究(8页珍藏版)》请在金锄头文库上搜索。

1、层次化设计的时序收敛性研究摘要研究了层次化设计中如何到达时序收敛。从层次化设计的流程分析,介绍如何人为地选择并且调整一些布局布线方面的问题从而使得设计更能实现时序收敛。最后以图文及数据相结合的方式举例说明了层次化设计时序收敛的可行性。关键词层次化设计;收敛性;模块布局;时钟优化;延时分配;大型设计如今一般的后端设计是采用把网表打散,把所有的逻辑单元看作是一个层次上,层次关系不用考虑,一起进展设计,优化。这样设计的好处是逻辑关系比拟简单,在做优化的时候,可以对逻辑单元直接处理,所有的物理单元都是可见的。但是,随着如今设计越来越复杂,单元越来越多,如今的单层次的EDA工具的承载才能遭到了挑战。由于

2、设计的庞大,使得后端设计所花费的时间越来越长,于是出现了层次化设计流程。层次化设计流程是指把设计对象分成多个模块分层次设计,在设计的过程中,要考虑层次之间的关系,顶层模块和底层模块的关系,层次内部的优化等等。最终,在各个模块到达其各自设计要求的同时,满足顶层的设计要求。2.1层次化设计的优势1大多数原因是设计规模的庞大。很大的一个设计就需要考虑层次化。2层次化设计可以给一个模块里的设计单元一些约束,使他们可以在一个区域内布局布线。这种约束性给某些特殊的设计带来方便,比方说:多电压设计。随着如今对低功耗的要求越来越广泛,设计者一般会对不同的模块进展低功耗的考虑。不同模块会有不同的供电电压。这样,

3、层次化设计可以对这些不同的模块单独进展功耗分析和设计。3层次化设计有时候也是应工程进展的情况可以采取的一个方法。一般来说,一个大型的设计会分几个小组分别设计几个模块。几个模块的进度有可能不一样。后端设计一般不会等到所有的模块完成了以后才进展。一般来说,可以对局部没有完成的模块估计一个大小,时序。然后把这些模块当作是BlakBx黑盒放到顶层进展后端设计。这时候,我们采取的也是层次化设计。4层次化设计也是一种设计流程的选择。一个模块的单元假如约束在一起,其内部的优化可以更方便。芯片的各个模块能有效地控制单元固有的离散性,从而最大限度地减少时序或拥塞的变化。2.2层次化设计常见问题1由于有层次化的划

4、分,模块之间及与顶层的关系是不透明的。和平面设计不同,顶层的优化不能进入到模块内部,这样,有可能造成优化的限制。2层次化设计对逻辑的要求比拟严格,改变逻辑的时候要注意对层次化的影响。比方,假如在布线的时候,需要穿越某些模块,那需要在这些模块中新增加逻辑连线。所以,逻辑的更新要和布局布线同步。3层次化设计中,模块内部优化所需要的约束条件是通过在顶层的分析中得到的,而顶层的分析又是基于模块内部的情况得出的。所以,这是个反复的过程。层次化设计要注意反复优化时应该遵循收敛原那么。最后的结果应该是顶层的时序得到满足,模块的时序也得到满足。1层次化分块。在读入的网表文件中,前端的设计者会按照功能创立一些模

5、块。在层次化设计中的初始,就要对这些模块进展分析,有些模块需要打散并入到顶层,有些大的模块需要保存,当作一个子dule进展分层处理。2层次化放置单元。把子模块里的单元集中放在子模块里。3假如tiing有问题,做一下简单的优化,比方说修复一些DR的vilatinap,transitin,fanut,插入/删除/更换一些缓存器。4Per的处理。per会采取网格状的形式,同时会做per的分析,做完之后preruteprerute指对电源线的连接可以先不要做。5时钟的规划。如今工具已经可以提供一种由下而上的时钟规划。利用工具提供的方法做完时钟规划后,可以得到一个初步的时钟优化,同时会得到一个优化的结果

6、,就是指顶层的时钟的ske能被优化到什么结果,底层的时钟优化的目的是是么。当然这个只是初步得到的结果,可以做个参考。假如得到的ske很差,那就需要重新考虑模块的布局了。6模块化的布线。接下来就可以为产生接口的位置及产生的子模快做准备了。接口的位置是通过布线来得到的。工具会对整个设计进展布线,这样的布线是指glbalrute。子模块内部的布线是首要考虑的,接下来是接口的布线,最后是顶层的布线。而端口的位置就是通过接口的连线在子模快边界的交点的位置产生的。由于是glbal的rute,交点不是在iretrak上,所以,最后接口的实际位置将会略微偏离glbalrute。7把模块变成软模块并且产生接口位

7、置,同时把电源线复制到底层。8为模块产生时序的模型。由于软模块内部的信息顶层是看不到的,所有要通过il记录了子模块接口的时序信息的模型把内部的时序信息映射到顶层去。这样在顶层做时序分析的时候就能包含整个设计的了。9延时分配。这是很关键的一步。时序预估是通过时序分析,产生底层的时序约束,把顶层和底层的优化的目的分配好。通过实际的每个模块的及其顶层的延时,得到各自模块在整个延时所占的比重,然后按照要求的时钟延时requiredelay进展分配。然后把得出的延时作为时序约束传给子模块。10有了子模块的时序约束,分别翻开子模块进展布局,优化,布线。11子模快优化成功之后,转换成硬模块。这样,底层将不会

8、再被改动任何信息,最后,回到顶层做顶层的优化。这里要注意的是,假如子模块不能到达优化的结果,需要回到顶层,进展顶层的优化,这样可以对底层的优化约束会降低,然后,再产生底层的约束,再做底层的优化。这应该是个收敛的过程。最后的结果会越来越好。4层次化设计中哪些步骤需要注意得到收敛性的时序4.1模块分割阶段用来做层次化设计的子模块一般是网表里的单元器件比拟多的模块,并且与其他模块连接关系较少的模块。原因是:由于子模块在布局布线的时候会集中在一个区域,假如这个模块和外界联络比拟多的化,这种集中会使得其间隔 外界单元比拟远,不如打散的效果好。假如有很多时序存在这个模块和外界之间,会造成整个设计的时序比拟

9、差。在我们没有划分模块之前,我们对全局进展布局,发现模块b和模块2内部连接很集中,而1模块内部的单元被分散在芯片的四周,说明它与其他很多模块有连接关系,外部连接关系比内部连接关系更多。这种情况,我们一般选择把b和2作为层次化设计的子模块,这样有利于在后期能一直很好的保持设计的收敛性。4.2模块的布局在产生子模块之后,我们可以利用工具对芯片进展布局。工具会按照层次化的原那么进展布局,即属于同一模块的会放置在同一范围内。这时,我们需要给子模块产生一个形状并且给它一个位置。模块的位置最好放置在内部单元集中放置的中心,之后,当我们把属于这个模块的所有单元都放置到模块中时,我们所得到的结果将与初始的结果

10、相匹配。4.3模块接口的产生层次化设计的后期是把顶层和底层分割开来处理,所以,它们彼此的信息交流都是通过接口来进展的,而接口的物理位置是通过布线产生的。布线时,为了保证逻辑的与物理的一致性,需要遵循以下的原那么:内部的连接需要在内部完成布线。逻辑上模块有多少接口,在布线的时候穿过这个模块的次数就有多少。但是,原那么2给层次化设计带来了局限性,假如遵循了这样的原那么,将迫使布线需要饶过一些模块。为了打破这种局限性,我们允许改变模块的逻辑,在边界产生额外的接口,这也是为了到达布线的最优。如图1介绍了几种产生feedthrughpin额外穿越边界的接口的情况。由布线产生接口的流程是:先对模块内部进展

11、布线,然后对接口的连接进展布线,最后是顶层的连接进展布线。这样做的优点是我们在前期就能预估到整个设计是不是能完成布线。假如只是对接口进展布线的话,很有可能接口的位置不好从而影响了内部的布线。而接口的位置一旦决定下来,修改起来就难了。所以,我们在产生接口之前就考虑好模块内部的布线,这样能保证后期的结果也是可行的。有一种情况在布线的时候要特别注意,对于相贴边的模块,在贴边处不要放置单独的接口。这样的接口会导致顶层的布线无法通过模块与外界相连。因为层次化设计的后期就是把模块做成硬模块,底层顶层分别进展详细的布线,优化。彼此独立。所以,在顶层,将会把底层的模块全部屏蔽,布线将不允许穿过子模块。这样,图

12、示中的接口在布线中会遇到很大的困难。所以,即使有与外界没有连接关系的接口,我们也不要把它们放到贴边的位置,因为很有可能在E的阶段,设计者会为这些端口加上连接关系。在贴边处的端口永远都要遵循一一对应的关系。4.4模块时钟信息的传递在一般时钟优化中,我们主要考虑的是UsefullkSke。所谓UsefullkSke,就是通过调整各级触发器的时钟延迟lkLateny,从时钟起始点到每个触发器时钟输入端口的延迟,来调整前后流水级的途径需求时间RequireTie,以满足尽量小的时钟周期要求。所以一般我们对时钟ske的优化的目的是所有的sink端口的时钟延时尽量保持一致,这样时钟对时序的影响能降低到最小

13、,使我们在逻辑综合和布局阶段的分析大致准确。在平面设计中,所有的sink端口由上而下进展平衡其延时。先把所有的sink端口进展分组,按照就近原那么,按照电容的一个阈值进展合并成组,在同组的sink端上层插入缓存器,然后,以缓存器为sink端口,按照同样的原那么再往上层插入缓存器,一层一层往上递推,建立时钟树。如此建立的时钟树能保证所有的sink端口是比拟平衡的。当然在选择组的时候会考虑一些其他的因素,比方gatedlk,generatedlk,hardar的时钟端口。假如仅靠分组的情况不能平衡,比方有些组离时钟端口的间隔 差异很大,还需要对各个不同的组插入不同的缓存器。在层次化设计中,由于每个

14、模块的内部设计没有完成,我们需要完成由下而上的时钟设计是违背了层次化设计的规那么的。一般我们会假设模块内部所有的sink端口的最大和最小延时是多少,然后把信息加在模块的时钟端口上,这样在顶层,我们可以得到整个设计的时钟延时信息,从而可以在顶层对标准单元模块及层次化模块都能优化。当然,我们在估计模块内部的sink端口的延时时,我们需要考虑的是优化后的结果,也就是内部假如优化以后,可以得到的最大和最小延时,这个估计的结果也是设计者要在内部进展优化的目的。这样就做到了时钟的层次化别离,如图2所示。4.5模块时序分配接口的物理信息产生以后,最重要的将是产生每个模块的时序约束。顶层的时序约束是由前端综合

15、的结果及设计者的要求提出的,但是子模块的时序是在顶层对整个设计的时序分析后产生的。通过整个设计的层次化分析,主要把延时在各个模块内部进展分配,把优化的指标分配到每个模块中。延时分配在层次化设计中是很重要的方案,目的是通过各个模块的努力使整个设计的时序到达要求。它的大致原理是先得到通过模块端口的最差途径,得到这条途径在每个模块及顶层的延时,然后用requiretie时序假如到达要求需要的延时减去顶层的延时因为我们在分配的时候假设顶层的延时是不变的,也就是我们不把顶层的优化考虑进去乘以本模块延时占整个模块延时的比例。时序分配之后,再把分配后的延时作为接口的输入延时和输出延时。分配之后的延时使得各个模块内部看到整个途径的延时变小,也就是其他模块为他分担了一局部优化的难度,分担多少要看它自身本来有多少延时。各个模块按照分配后的结果进展优化之后,假如每个模块的时序都到达要求,那么整个芯片的时序将到达要求。实验目的:通过层次化设计实现时序收敛。实验对象:实例中的design大小为中等design,90k左右标准单元,顶层包含9个模块。根据模块大小,选取了其中三个作为层次化设计的子模块。1先进展模块分割及模块放置,然后把模块内部的单元放置在模块内部,这是层次化设计的根底,开场进展层次化设计,同时,评估一下布线及时序优化的可行

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号