超大规模集成电路设计中保持时间快速收敛的方法

文档序号:6537239阅读:273来源:国知局
专利名称:超大规模集成电路设计中保持时间快速收敛的方法
技术领域
本发明涉及超大规模集成电路(VLSI)设计技术领域,特别是后端设计中使保持时间(hold time)快速收敛的设计方法。
背景技术
传统的VLSI设计中的布局和优化(place and optimization)流程,大致可分为两个阶段timing-driven placement,placement optimization(fixsetup time violation、hold time violation、max capacitance violation、max tranviolation etc.)。placement optimization是其中的重要步骤,在这个过程中根据软件自身算法估计出的寄生参数决定了芯片的延迟大小,对于setuptime(建立时间)、hold time的优化通常需要反复多次才能达到设计者的目标。在布线后由于net的延迟由估计变的更为接近实际,这就会产生timing的差别;在进行反标寄生参数的后仿真也有可能产生前后端的timing差别,这就需要对版图进行反复迭代修改。
布局和优化的流程本质上是使时序收敛的流程,在通常的自动布局布线的流程中,软件所使用的时序收敛方法的指导思想是setup time的收敛是通过减少关键路径上的电阻电容,以减少驱动单元的负载或者是增加驱动单元的驱动能力来减少路径上的延迟;发生hold time violation,则说明数据通路太短,需要增加延迟单元或是采用别的方法达到增加延迟的目的。在自动布局布线的过程中setup time和hold time的优化是个相辅相成的过程,对hold time的修复会对setup time的修复产生负面的影响。特别是在一些特别紧凑的设计中,插入delay cell(延迟单元)会改变周边单元的放置。而被改动的这些单元如果处于关键路径中,则会对关键路径的时序产生负面影响,使其延迟变大,最终影响芯片的工作速度。另一方面,在软件中使用自动的hold time修复办法,对于规模很大的设计特别是几百万门级的电路来说,需要几十个小时,而且最终的结果可能达不到设计者的目标,需要反复。这样,就会大大的增加设计周期,不利于缩短芯片的面世时间,增加了设计成本。

发明内容
本发明的目的在于提出一种新的可用于VLSI设计的快速时序收敛方法。它是为了解决VLSI后端设计中时序的优化收敛需要反复修复,工作量大,周期长的特点提出的,特别是在setup time已经满足要求但是holdtime violation还需要在版图中进行修复的情况。
本发明中所采用的hold time快速时序收敛方法能够在很大程度上提高工作效率,缩短设计周期,方法如下首先,与常规的VLSI设计方法相同,先进行通常的place optimization和post optimization对setup time和hold time violation进行优化;在setup time已经满足要求的情形下,对剩余的hold time violation进行修复,采用手动结合自动的方式进行。因为某些setup time已经满足要求的关键路径会在hold time的修复中受到影响,因此将这些关键路径的所有单元选中,设置为fix属性,然后通过手动的方式在需要进行hold time修复的路径上加入合适的delay cell。合适的delay cell应该按照加入路径点前单元的驱动能力和后面net的负载来确定,还必须查看单元库信息,以确定单元在这种负载情况下所产生的延迟是否符合要求。单元插入后进行后续的布线工作。
采用这种快速时序收敛方法,由于对会受到影响的关键路径上所有的cell都设置为fix属性,在hold time修复的过程中,这些cell可以不受影响,不会对setup time产生不利。采用根据net负载大小和violation大小来确定手动加入delay cell的方法,一次性成功的解决了时序上存在的问题,需要的时间仅为几个小时。因此这种快速收敛的设计方法减少了后端设计中修复setup time和hold time violations的迭代次数,省却了软件自动完成该步骤所花费的大量优化和验证的时间,大大缩短了设计周期,提高了设计效率。实际的验证也表明这种方法简单实用,尤其适合于大规模的集成电路设计。
这种快速收敛的方法减少了后端设计中修复建立时间和hold timeviolations的迭代次数,大大缩短了设计周期,提高了设计效率。主要是三个步骤,首先确定易受影响的路径,对这些路径的所有cell进行fixed属性的设置;第二,在需要进行hold time修复的路径上插入恰当的delay cell(延迟单元);第三,进行timing的验证和后续的route(布线)步骤。


图1是修复前后第一条易受影响的关键路径图。其中A是自动修复前cell的位置和连接图。B是自动修复后受到影响的相应的cell的位置和连接图。
图2是修复前后第二条易受影响的关键路径图。其中A是自动修复前cell的相对位置和连接图。B是自动修复后受到影响的相应的cell的位置和连接图。
图3是超大规模集成电路设计中保持时间快速收敛的方法流程图。
下面通过举例来详细说明hold time快速收敛的设计方法。
具体实施例方式
我们修复的依据根据在设计中report timing的结果来进行。Setup time修复满足要求后,report timing。进行一次辅助的过程,在需要修复的路径上插入cell,在这次辅助过程之后report timing,与前面的timing报告比较会发现同一条路径的setup time有了很大的变化。在插入前能满足要求,而修复后变得不能满足要求。通过在版图中显示出path的实际路径图示(如附图),清楚地表明这些路径中的关键单元受到了影响,产生了较大的时序差别。图lA所示的是自动修复前第一条路径中受到很大影响的cell的相对位置和连接,图lB是第一条关键路径相应cell在自动修复之后的相对位置和连接。如图标示的cell A、B和C,在进行自动修复后变为了A’、B’、C’的相对位置,由于cell B所在行的位置受到插入cell的影响比较大,因此引起timing的变差。图2A所示的是自动修复前第二条路径中受到很大影响的cell的相对位置和连接,图2B是第二条关键路径相应cell在自动修复之后的相对位置和连接。如果直接按照通用的流程,需要对整个设计在此基础上再进行一次timing的优化操作来修复引起的setup time violation,针对百万门级的设计,需要的时间为20-40多小时,取得的结果不一定会令设计者满意。
针对这种情况,对这些易受到hold time修复影响的关键路径以astPath的方式提取选中,将选中的所有cell设置为fixed的属性;在需要进行hold time violation修复路径中,选取修复的合适的点,根据单元库以及我们仿真的cell驱动能力和延迟的相关大小,考查这个点上驱动cell的能力以及其负载的大小,在这个位置放置恰当的delay cell,然后进行后续的布局布线工作;插入cell点的选取以考查cell不会位于别的关键路径中,对别的关键路径造成很大影响为衡量标准。这样修复的结果完全符合设计者的要求。插入的delay cell或者改换的cell等修改由于考查了前后驱动和负载的关系,会很吻合地达到修复hold time violation的目的;同时在这个过程中,易受修复过程影响的关键路径已经设置为全路径的fixed,因此不会对setup time产生任何影响;时序报告和修复hold time前的报告完全一致。再以astPath的方式显示这些路径,发现它们和修复前完全保持一致。在这个修复的过程后就不需要再进行setup time violation的修复过程了,整个修复的过程所需要的时间仅为几小时。如果是需要在布线后进行hold time violation的修复,上面的方式也完全适用,只需在delay cell等修改后进行eco route的步骤就可以了。
图3标示的是这种快速收敛方法的操作流程。具体步骤说明如下S1它是优化hold time violation所必要的辅助工作,先考查插入点,选取点之后,考查插入点前后的驱动cell以及负载的大小,选择合适的插入cell,实施修复,report timing得到所有setup time violation路径的报告,按照修复需要加入delay cell,report timing,与修复前进行比较,查找出易受到影响的关键路径;S2在原始的需要修复的设计中选取查找出的路径上的所有cell,设置为fixed的属性;S3按照考查的要求加入delay cell进行修复;S4report timing,查看修复结果,如果发现有修复效果不理想的情况,可以回复到S2修改这些violation;S5进行后续的route操作,如果是route后进行的修复,则进行后续的eco route,然后可以进行timing report,最终验证timing结果。
综上所述,这种VLSI的hold time快速收敛设计方法的优势突出体现在以下几个方面第一、快速收敛。对所关注路径的全部单元设置为fix属性,确保在已经修复好setup time的基础上,不会再产生新的setup time问题,从而达到快速收敛。
第二、这种技术可靠性高,几乎可以一次达到目标,可更改性也很强。如果在此基础上不满足要求,可以删除cell再更换为合适的cell就可以了。对个别path进行优化的技术,要结合库及对delay cell的仿真结果进行。
第三、设计周期短。这种技术尤其适用于VLSI的设计,因为百万门级的电路修复一次hold time violation需要几十个小时,而采用这种技术后只需几个小时,则可以快速并有针对性的解决问题,可操作性很强。
具体实施例以在synopsys自动布局布线工具Astro中完成四百万门的dsp电路设计为例在setup time满足要求后,需要对某些hold time violation进行修复。
在修复前,我们从report timing的报告中可以看出最大的setup timeviolation,为了便于和后面的结果进行比较,列出前面几条最大的关键路径的setup time violation如下**************************************************************Start pointcorel/U6/U16_xout_reg_l5_/CK*End pointResult1_pad[15]*Delay TypeMax*Slack-0.4525(VIOLATED)*************************************************************
*Start pointcore1/U4/U24_U4_summation2_reg_22_/CK*End pointcore1/U4/U9_U1_U2_U2_mantissa_eg_24_/D*Delay TypeMax*Slack-0.4285(VIOLATED)**************************************************************Start pointcore1/U6/U47_yout_reg/CK*End pointover1_pad*Delay TypeMax*Slack-0.4186(VIOLATED)**************************************************************Start pointcore1/U4/U9_U3_U7_U2_exp_sum_reg_3_/CK*End pointcore1/U4/U9_U3_U7_summation2_reg_15_/D*Delay TypeMax*Slack-0.4098(VIOLATED)**************************************************************Start pointcore1/U8/U43_coe_wadd_out_reg_10_/CK*End pointcoe_waddr_out_pad[10]*Delay TypeMax*Slack-0.4088(VIOLATED)*************************************************************在这个设计中有一些hold time violation需要我们来修复,按照一般的流程,我们会让软件自动插入delay cell或者调整cell驱动能力来修复hold time,以下摘取的是软件自动修复后得到的timing报告中最大的几条setup time violation结果****************************************************************Start pointcore1/U2/U1_U2_summation2_reg_24_/CK*End pointcore1/U2/U2_U2_U1_U2_mantissa_reg_26_/D*Delay TypeMax*Slack-0.9584(VIOLATED)****************************************************************Start pointcore1/U2U1_U2_summation2_reg_22_/CK*End pointcore1/U2/U2_U2_U1_U2_mantiss_reg_27_/D*Delay TypeMax*Slack-0.8448(VIOLATED)****************************************************************Start pointcore1/U2/U2/U1_U2_summation2_reg_21_/CK*End point core1/U2/U2_U2_U1_U2_mantissa_reg_24_/D*Clock Groupclk*Slack-0.7537(VIOLATED)****************************************************************Start pointcore1/U2/U1_U2_summation2_reg_22_/CK*End pointcore1/U2/U2_U2_U2_U1_U2_mantissa_reg_31_/D*Clock Groupclk*Slack-0.6408(VIOLATED)****************************************************************Start pointcore1/U2/U1_U2_summation2_reg_21_/CK*Endpointcore1/U2/U2_U2_U1_U2_mantiss_reg_2_/D*Clock Groupclk*Slack-0.5708(VIOLATED)***************************************************************虽然是hold time有了改善,但是关键路径的时序报告显示整个设计的setup time已经在修复的过程中受到了很大的影响,时序变差了许多,最大的violation已经由0.45增加到了0.95。在没有修复前,这些路径的时序报告如下**************************************************************Start pointcore1/U2/U1_U2_summatio2_reg_24_/CK*End pointcore1/U2/U2_U2_U1_U2_mantiss_reg_26_/D*Delay TypeMax
*Slack-0.2224(VIOLATED)*************************************************************Start pointcore1/U2/U1_U2_summation2_reg_22_/CK*End pointcore1/U2/U2_U2_U1_U2_mantissa_reg_27_/D*Delay TypeMax*Slack-0.0807(VIOLATED)************************************************************Start pointcore1/U2/U1_U2_summation2_reg_21_/CK*End pointcore1/U2/U2_U2_U1_U2_mantissa_reg_24_/D*Delay TypeMax*Slack-0.0421(VIOLATED)************************************************************Start pointcore1/U2/U1_U2_summation2_reg_22_/CK*End pointcore1/U2/U2_U2_U1_U2__mantiss_reg_31_/D*Delay TypeMax*Slack0.0060(MET)************************************************************Start pointcore1/U2/U1_U2_summation2_reg_21_/CK*End pointcore1/U2/U2_U2_U1_U2_mantissa_reg_22_/D*Delay TypeMax*Slack0.0115(MET)*************************************************************针对两次的比较结果,我们采用前述的方法对这些路径挑选出来进行了处理,然后在实施hold time的修复过程,结果表明,hold time修复满足要求,setup time保持和修复前完全一致。这个芯片已经经过投片测试完全满足要求。验证表明采用快速收敛方法使timing优化所占的时间大大减小,这种设计方法减少了timing优化过程中工作的反复性,大大提高了设计的准确性和效率。
权利要求
1.一种超大规模集成电路设计中保持时间快速收敛的方法,主要是三个步骤,第一,确定易受影响的路径,对这些路径的所有cell进行fixed属性的设置;第二,在需要进行hold time修复的路径上插入恰当的delay cell;第三,进行timing的验证和后续的route步骤。
2.根据权利要求1的超大规模集成电路设计中保持时间快速收敛的方法,其具体步骤如下S1优化hold time violation所必要的辅助工作,先考查插入点,选取点之后,考查插入点前后的驱动cell以及负载的大小,选择合适的插入cell,实施修复,report timing得到所有setup time violation路径的报告,按照修复需要加入delay cell,report timing,与修复前进行比较,查找出易受到影响的关键路径;S2在原始的需要修复的设计中选取查找出的路径上的所有cell,设置为fixed的属性;S3按照考查的要求加入delay cell进行修复;S4report timing,查看修复结果,如果发现有修复效果不理想的情况,可以回复到S2修改这些violation;S5进行后续的route操作,如果是route后进行的修复,则进行后续的eco route,然后可以进行timing report,最终验证timing结果。
全文摘要
本发明涉及超大规模集成电路设计技术领域,特别是后端设计中使保持时间快速收敛的设计方法。这种快速收敛的方法减少了后端设计中修复建立时间和hold time violations的迭代次数,大大缩短了设计周期,提高了设计效率。主要是三个步骤,首先确定易受影响的路径,对这些路径的所有cell进行fixed属性的设置;第二,在需要进行hold time修复的路径上插入恰当的延迟单元;第三,进行timing的验证和后续的布线步骤。
文档编号G06F17/50GK1828865SQ20051005269
公开日2006年9月6日 申请日期2005年3月3日 优先权日2005年3月3日
发明者蒋见花, 刘海南, 周玉梅 申请人:中国科学院微电子研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1