设计低功耗半导体集成电路的方法

文档序号:6830142阅读:279来源:国知局
专利名称:设计低功耗半导体集成电路的方法
技术领域
本发明涉及设计低功耗半导体集成电路的方法。更为具体地,本发明涉及一种通过改变利用自顶向下(top-down)的设计方法而获得的电路布局结果来设计低功耗半导体集成电路的方法。
背景技术
近些年来,大部分逻辑LSI(超大规模集成电路)通过使用自顶向下的设计方法来设计。自顶向下的设计方法一般包括功能设计过程、逻辑综合过程和自动布局过程。在功能设计过程中,设计者使用硬件描述语言(HDL)来功能性地描述要设计的电路。在逻辑综合过程中,将功能性描述的电路转换成门级电路数据。在自动布局过程中,设计者根据门级电路数据使用自动布局工具来获得布局结果(通过布置包含在电路中的单元、单元之间的布线等而获得的结果)。获得的布局结果经过时序(timing)验证过程、布局验证过程和其他验证过程。通过使用经过这些验证过程之后的布局结果来制造实际的器件。
近来,电路集成度水平的提高和电路工作频率的增高已经增加了电路设计的复杂性。因此,很难快速完成从逻辑综合过程到自动布局过程的过程。由于该原因,按照着重于过程的快速完成而非电路尺寸或芯片尺寸的最优化的原则,已经研发出大量的设计工具,包括逻辑综合工具和自动布局工具。在这种设计工具中,高度重视快速获得对于电路工作必不可少的时序。因此,电路往往具有大的设计余量。可是,这种具有大设计余量的电路在工作期间需要大量功耗。因此,为了减小电路的功耗,在该电路设计阶段减小过量的设计余量是极重要的。
减小来自通过使用自顶向下设计方法设计的电路的过量设计余量的方案的例子是一种通过使用电路模拟器来计算功耗并选择最佳单元(例如,通过使用在日本专利特别公开No.5-205006(1993-205006)中公开的器件)的方案、一种检测电路中可变单元的方案(例如,参见日本专利特别公开No.11-330252(1999-330252))以及一种通过使用专门适合于低功耗的设计方法来设计具有有限功能的电路的方案。


图19是使用电路模拟器的低功耗设计方案的过程流程图。图19中示出的方法包括包含功能设计过程S901、逻辑综合过程S902、自动布局过程S903、时序验证过程S904、布局验证过程S907和器件制造过程S908以及功耗模拟过程S905和电路修改过程S906的一系列过程。在功耗模拟过程S905中,根据经过时序验证的布局结果,通过使用电路模拟器来计算电路功耗。如果计算出的电路功耗超出期望值,在电路修改过程S906中修改该电路。然后,根据修改程度,再次执行从逻辑综合过程S902、自动布局过程S903或时序验证过程S904开始的过程。
可是,上述常规低功耗设计方案具有下述问题。即,在上述通过使用电路模拟器来计算功耗并选择最佳单元的方案中,通过重复计算来选择最低功耗单元,由此需要大量的处理时间和长的开发周期。而且,通过仅仅执行最佳单元选择,限制了功耗的可减小量。在上述检测可变单元的方案中,目前为止不存在获得该方案的具体措施,并且由此不存在将该方案投入实际应用的前景。此外,在上述设计具有有限功能的电路的方案中,电路工作不能在设计的前期阶段确定,该电路特性要根据采用的应用而后确定。因此,该方案也不会有效。
不过,为了减小电路功耗,使用减小来自于制造过程之前直接获得的最终设计数据的设计余量的方案将是最有效的。可是,现在还没有发现这种有效地获得快速减小基于最终设计数据的电路的功耗的方案。因此,现有在实际开发过程中采用的是下述方案之一一种以开发周期为代价通过试验和修正(error)来删除设计余量的方案和一种以功耗为代价制造具有不变设计余量的电路的方案。

发明内容
因此,本发明的一个目的是提供一种低功耗设计方法,该方法用于有效且快速地减小包含在通过自顶向下设计方法而获得的电路布局结果中的过量设计余量。
通过输入转换速率、负载电容(次单元的输入管脚电容和布线电容的总和值)等来确定包含在电路中的单元之间的延迟量。最近几年,根据精布线工艺,布线电容已经成为确定单元之间延迟量的主要因素。具体地,分支布线往往比非分支布线长,而且往往具有大的负载电容。因此,为了经由这种分支布线来驱动次单元,要使用具有高驱动能力的单元。可是,这种高能力单元不仅高速驱动需要高速驱动的次单元而且高速驱动不需要高速驱动的次单元。按照这样,在通过使用自顶向下的设计方法而设计的电路中,以高于需要的速度驱动连接于分支布线之后的一些次单元,由此不利地消耗过量功率。
为了避免上述缺点,在本发明中,在分支点之后的布线上的预定点处新插入一个负载分配(load dividing)缓冲器,并且还减小在分支点之前的驱动单元的驱动能力。由此,减小在逻辑综合过程中出现的过量余量,这导致电路功耗减小。更具体地,本发明具有如下所述的结构。
本发明的第一方面指出(be directed to)一种用于改变半导体集成电路的布局结果的设计方法,该方法包括步骤检测包含有关单元类型的信息、有关单元布置的信息、以及有关单元之间布线的信息的布局结果中的布线分支点;在被检测的分支点之后的一条布线上的预定点处实际(virtually)插入具有预定量的负载;计算其中插入负载的经由分支点连接单元的每一路由的延迟量和没有插入负载的该路由的延迟量;根据每一路由的延迟量来确定将要在其处插入负载分配缓冲器的插入点;如果在确定的插入点要插入负载分配缓冲器,则根据每一路由的时序限制(timing constraint)来计算在插入点之前的驱动单元的驱动能力;根据布局结果,判定负载分配缓冲器是否可插入在插入点;以及根据判定结果,执行改变布局结果的过程,该过程包括在插入点处放置负载分配缓冲器的过程、将驱动单元改变为具有计算出的驱动能力的单元的过程、以及根据电路的改变来改变布线信息的过程。
由此,在其中为了驱动具有严格时序限制的次单元和那些具有不那么严格的时序限制的次单元而需求具有高驱动能力的驱动单元的情况中,将负载分配缓冲器插入在分支点之后的布线上,并且还减小该驱动单元的驱动能力。由此,可以减小电路功耗。
在这种情况中,当以一个大于在预定点处实际插入负载的预定量的量来改变在预定的判定标准下被确定为具有严格时序限制的路由的延迟量时,插入点确定步骤可以将该预定点确定为插入点,在该插入点插入负载分配缓冲器。另外,在经由分支点连接单元的路由中,插入点确定步骤可以确定具有最严格的时序限制的路由为具有严格时序限制。
由此,可以在允许获得减小电路功耗的点处插入负载分配缓冲器。
而且,当根据预定标准确定需要负载时,负载插入步骤可以将负载实际插入在被检测的分支点之后的布线上的预定点处。更为优选地,负载插入步骤可以包括步骤计算在分支点之后的总负载电容;计算驱动单元的总负载电容;以及当分支点之后的总负载电容与驱动单元的总负载电容的比大于预定值时,在分支点之后的布线上的预定点处实际插入负载。另外,负载插入步骤可以包括步骤对分支点之后的每一布线,计算所述布线中的一条之后的总负载电容;以及在总负载电容的不均衡程度高于预定程度情况下,在该布线上的预定点处实际插入负载以使该布线之后的总负载电容是分支点之后的布线的所有总负载电容中最大的。另外,负载插入步骤可以包括步骤对分支点之后的每一布线,计算包含所述布线中的一条的路由的时序限制的最差值;以及在分支点之后的布线的时序限制的最差值的不均衡程度高于预定程度的情况下,将负载实际插入在其时序限制的最差值表示为所有计算出的时序限制的最差值中时序限制最严格的布线上的预定点处。
如此,通过限制要在其处实际插入负载的点,减少计算实际插入负载的每一路由的延迟量的次数,由此减小整个设计方法需要的处理时间。
此外,根据第一方面的布局结果改变方法还包括在路由延迟量计算步骤之前,有一个在布局结果中检测可删除缓冲器的步骤,该缓冲器对电路的逻辑功能没有影响且在输出端连接于具有分支点的布线,其中,路由延迟量计算步骤可以进一步计算连接位于可删除缓冲器之前的单元和直接在可删除缓冲器之后的单元的、带有实际上将被删除的可删除缓冲器的路由的延迟量,以及布局结果改变步骤可以进一步执行从布局结果中删除可删除缓冲器的过程。
由此,不仅可以通过缓冲器添加过程而且可以通过缓冲器移走过程来获得电路功耗减小。因此可以进一步提高减小功耗的效果。
本发明的第二方面指出获得在根据半导体集成电路的布局结果来执行负载分配时出现的有关延迟的延迟信息的方法,该方法包括步骤检测在包含有关单元类型的信息、有关单元布置的信息、以及有关单元之间布线的信息的布局结果中的布线上的分支点;将具有预定量的负载实际插入在被检测的分支点之后的布线上的预定点处;以及计算插入负载的经由分支点连接单元的路由的延迟量和没有插入负载的该路由的延迟量。
随着以上述方式获得的延迟信息以合适的方式呈现给设计者,设计者可以容易地认识到关于电路中负载分布的情形。
在这种情况中,当根据预定标准确定需要负载时,负载插入步骤将负载实际插入在被检测的分支点之后的布线上的预定点处。
如此,通过限制在其处要实际插入负载的点,减少计算实际插入负载的每一路由的延迟量的次数,由此减小整个设计方法需要的处理时间。
而且,根据第二方面的延迟信息计算方法还包括在路由延迟量计算步骤之前,有一个在布局结果中检测可删除缓冲器的步骤,该缓冲器对电路的逻辑功能没有影响且在输出端连接于具有分支点的布线,其中,路由延迟量计算步骤可以进一步计算连接位于可删除缓冲器之前的单元和直接在可删除缓冲器之后的单元的、带有实际上将被删除的可删除缓冲器的路由的延迟量。
由此,设计者可以容易地认识到插入缓冲器的路由的延迟量和删除缓冲器的路由的延迟量。
当结合附图时,本发明的这些和其他目的、特征、方面和优点从下面的发明的详细说明中显而易见。
附图简述图1是根据本发明第一实施例的设计方法的过程流程图;图2示出了根据本发明第一实施例的设计方法中过程的上半时的细节的流程图;图3示出了用于描述根据本发明第一实施例的设计方法中过程的上半时(first half)的布局结果;图4示出了图3中示出的电路中的电阻元件和电容元件;图5示出了图3中示出的虚拟缓冲器插入在其中的电路中的电阻元件和电容元件;图6示出了根据本发明第一实施的设计方法中过程的下半时(latter half)的细节的流程图;图7A和7B示出了用于描述根据本发明第一实施例的设计方法中过程的下半时的布局结果;图8A和8B示出了用于描述根据本发明第一实施例的设计方法中过程的下半时的其他布局结果;图9是根据本发明的第二实施例的设计方法的过程流程图;图10示出了用于描述通过根据本发明第二至第四实施例的设计方法获得的处理时间减小的布局结果;图11是根据本发明第三实施例的设计方法的过程流程图;图12是根据本发明的第四实施例的设计方法的过程流程图;图13是根据本发明的第二至第四实施例的示例性修改的设计方法的过程流程图;图14是示出图13中示出的设计方法中的有条件的实际负载插入过程的细节的流程图;图15是根据本发明第五实施例的设计方法的过程流程图;图16是示出根据本发明第五实施例的设计方法中过程的上半时的细节的流程图;图17A和17B示出了用于描述根据本发明第五实施例的设计方法中的过程的布局结果;图18A和18B示出了用于描述根据本发明第五实施例的设计方法中的过程的其他布局结果;和图19是用于设计低功耗半导体集成电路的传统方案的过程流程图。
发明详述在下面的实施例中,对改变通过自顶向下设计方法设计的半导体集成电路的布局结果来减小电路功耗的方法作以说明。更为具体地,在每一实施例中,对通过在包含在布局结果中的分支点之后的预定点处插入不影响电路功能的缓冲器作为负载分配缓冲器并且通过减小分支点之前的驱动单元的驱动能力来减小电路功耗的方法作以说明。
电路的布局结果至少包括有关单元类型的信息、有关单元布置的信息以及有关单元之间布线的信息。每一单元对应于逻辑门、触发器、缓冲器等。布线将一个单元连接至一个或多个单元以便该单元的输出端连接至该一个或多个单元的输入端。连接于多个单元输入端的布线具有一个或多个分支点,在每一个分支点处布线分支成两个或三个方向。
在许多情形中,通过用于半导体电路的设计工具获得根据每个实施例的方法,该设计工具为在其中执行预定软件程序的基于计算机的系统。该设计工具可以仅仅具有用于实现根据各实施例的方法的功能,或可以具有除此功能之外的涉及半导体集成电路设计的其他功能。在下面的说明中,假设通过这种设计工具获得根据各实施例的方法。
(第一实施例)参考图1至8,描述根据本发明第一实施例的设计方法。图1是根据本发明第一实施例的设计方法的过程流程图。该设计方法包括分支点检测过程S110、实际负载插入过程S120、延迟量计算过程S130、插入点确定过程S140、驱动能力计算过程S150、布局可能性判定过程S160和布局修改过程S170。
在分支点检测过程S110中,设计工具检测要处理的布局结果中的布线的分支点。接着,在实际负载插入过程S120中,对于在分支点检测过程S110中检测的每一分支点,设计工具将具有预定量的负载(该负载在下文中称为虚拟缓冲器)一次一个地实际插入在每一分支点之后的两个或三个布线的每一个上的预定点中(每一布线连接于一个单元的输入端)。接着,在延迟量计算过程S130中,对于经由分支点连接的两个单元的每一路由,设计工具计算多个不同的具有在实际负载插入过程S120中实际插入的虚拟缓冲器的延迟量和一个没有插入虚拟缓冲器的延迟量。
接着,在插入点确定过程S140中,根据在延迟量计算过程S130中计算的延迟量,设计工具确定在其处应该插入负载分配缓冲器的一个布线上的插入点。在本实施例中,假定的是,如果存在有在预定标准下确定为具有严格时序限制的路由L并且在点P处插入虚拟缓冲器时以一个大于预定量的量来减小路由L的延迟量,那么设计工具在插入点确定过程S140中确定负载缓冲器应该插入在点P。
接着,在驱动能力计算过程S150中,如果负载分配缓冲器要插入在插入点确定过程S140中确定的插入点处,那么设计工具根据路由上的时序限制来计算位于插入点之前的驱动单元的驱动能力。接着,在布局可能性判定过程S160中,根据要处理的布局结果,设计工具判定负载分配缓冲器是否可实际地插入在插入点确定过程S140中找到的插入点中。
接着,在布局修改过程170中,对于要处理的布局结果,设计工具在插入点处执行下面的过程(在布局可能性判定过程S160中该插入点处被确定为允许负载分配缓冲器插入)即,设计工具将负载分配缓冲器放置在该插入点处,将位于插入点之前的驱动单元改变为具有在驱动能力计算过程S150中计算出的驱动能力的驱动单元,然后根据这两个电路的改变来改变布线信息。
图2以流程图的形式示出了图1中示出的从分支点检测过程S110至延迟量计算过程S130的过程。在图1与2之间比较,分支点检测过程S110对应于步骤S202和S203,实际负载插入过程S120对应于步骤S204和S206,而延迟量计算过程S130对应于步骤S201、S205和S207。
如图2中所示,如果没有插入虚拟缓冲器,设计工具计算经由分支点连接的两个单元的每一路由的延迟量(步骤S201)。接着,设计工具确定在要处理的布局结果中是否存在任何未处理的分支点(步骤S202)。当存在任何未处理的分支点时,重复执行下述从步骤S203至S207的过程。设计工具选择一个未处理的分支点(步骤S203),在被选择的分支点之后的两个布线之一上的预定点处插入虚拟缓冲器(步骤S204),然后计算插入虚拟缓冲器的路由延迟量(步骤S205)。接着,设计工具在被选择的分支点之后的布线的另一个上的一点处插入虚拟缓冲器(步骤S206),然后计算插入虚拟缓冲器的路由延迟量(步骤S207)。在执行步骤S203至S207的过程之后,设计工具执行从插入点确定过程S140开始的过程(图6)。
在实际负载插入过程S120中在其处插入虚拟缓冲器的插入点可以是任意点,只要其在分支点之后的布线上。可是,为了更有效地减小电路功耗,插入点优选接近于分支点。而且,假设作为虚拟缓冲器插入的负载量与负载分配缓冲器的输入管脚电容相一致。此外,为了计算插入虚拟缓冲器的路由延迟量,不需要再计算所有路由中的每一个的延迟量,而是计算其延迟量由于虚拟缓冲器的插入而改变的路由的延迟量。而且,图2示出了在布线分支成两个方向的情况中的过程。如果布线分支成三个方向,执行三次插入虚拟缓冲器并计算延迟量的一组过程。
下面描述要在图3中示出的布局结果上执行的从分支点检测过程S110至延迟量计算过程S130的过程的具体实例。图3示出了通过标准单元规则获得的电路的部分布局结果。图3示出了作为部分布局结果的驱动单元10、在驱动单元10之后的三个次单元11至13和布线19。值得注意的是,在其中示出布局结果的包括图3的附图中,为了方便附图的理解,要注意的单元被打上阴影。
当在图3中示出的布局结果要被处理时,在分支点检测过程S110中,在布线19中检测到两个分支点a和b。在该实例中,在分支点之后有四个布线,即,分支点a之后的布线Na1和Na2以及分支点b之后的布线Nb1和Nb2。因此,在实际负载插入过程S120中,在这四个布线上的预定点处一次一个地插入虚拟缓冲器。即,虚拟缓冲器可以以四种不同的方式插入在布线19上。而且,在本实例中,有经由分支点a或b连接的两个单元的三个路由,即,从驱动单元10到次单元11的路由、从驱动单元10到次单元12的路由、以及从驱动单元10到次单元13的路由。因此,在延迟量计算过程S130中,对这三个路由的每一个计算五个不同的延迟量。这五个不同的延迟量为没有插入虚拟缓冲器的延迟量、在布线Na1上的预定点处插入虚拟缓冲器的延迟量、在布线Na2上的预定点处插入虚拟缓冲器的延迟量、在布线Nb1上的预定点处插入虚拟缓冲器的延迟量和在布线Nb2上的预定点处插入虚拟缓冲器的延迟量。
例如,以下述方式来计算路由延迟量。为了计算没有插入虚拟缓冲器的延迟量,如图4中所示,从图3中示出的布局结果中提取布线上的电阻元件(表示为RwXX,其中X是任意符号,其在下面阐述)和电容元件(表示为CwXX)。而且,从有关单元特性的数据中读取次单元的输入管脚电容(表示为CpinX)。然后,根据预定的延迟计算模型来计算路由延迟量。在该实例中,从驱动单元10至次单元11的路由的延迟量等于在驱动单元10的单元延迟tg0与从驱动单元10至次单元11的布线延迟tw01的总和。此外,从驱动单元10至次单元12的延迟量等于在驱动单元10的单元延迟tg0与从驱动单元10至次单元12的布线延迟tw02的总和。此外,从驱动单元10至次单元13的延迟量等于在驱动单元10的单元延迟tg0与从驱动单元10至次单元13的布线延迟tw03的总和。这里,假设通过利用函数F与作为输入参数的输入转换速率input_slew和输出负载电容一起来计算单元延迟,而通过利用诸如Elmore近似方法的布线近似方法来计算布线延迟。在这些假设下,通过下述等式(1)至(6)来计算没有插入虚拟缓冲器的路由的延迟量t01至t03。
t01=tg0+tw01=tg0+Rw0a·C1+Rwa1(Cwa1+Cpin1)…(1)t02=tg0+tw02=tg0+Rw0a·C1+Rwab·C2+Rwb2(Cwb2+Cpin2)…(2)t03=tg0+tw03=tg0+Rw0a·C1+Rwab·C2+Rwb3(Cwb3+Cpin3)…(3)tg0=F(input_slew,C1)…(4)C1=Cw0a+Cwa1+Cpin1+C2…(5)C2=Cwab+Cwb2+Cwb3+Cpin2+Cpin3…(6)此外,为了计算插入虚拟缓冲器的路由延迟量,根据没有插入虚拟缓冲器的电阻元件和电容元件来计算插入虚拟缓冲器的电阻元件和电容元件。例如,为了计算图3中示出的在布线Na2上的预定点处插入虚拟缓冲器18的路由的延迟量,改变图4中示出的电阻元件和电容元件,如图5中所示,从而布线电阻Rwab用布线电阻Rw8b替换,而输入管脚电容Cwab用虚拟缓冲器18的输入管脚电容Cpin8和布线电容Cw8b替换。从驱动单元10到插入缓冲器18的次单元11的路由的延迟量T01等于在驱动单元10的单元延迟Tg0与从驱动单元10到次单元11的布线延迟Tw01的总和。从驱动单元10到次单元12的路由上的延迟量T02等于单元延迟Tg0、从驱动单元10到虚拟缓冲器18的布线延迟Tw08、在虚拟缓冲器18的单元延迟Tg8和从虚拟缓冲器18到次单元12的布线延迟Tw82的总和。以类似于上面的方式来计算从驱动单元10到次单元13的路由的延迟量T03。即,通过利用下面的等式(7)至(13)计算插入延迟缓冲器18的路由延迟量T01至T03。
T01=Tg0+Tw01=Tg0+Rw0a·C3+Rwa1(Cwa1+Cpin1)…(7)T02=Tg0+Tw08+Tg8+Tw82=Tg0+Rw0a·C3+Tg8+Rw8b·C4+Rwb2(Cwb2+Cpin2)…(8)T03=Tg0+Tw08+Tg8+Tw83=Tg0+Rw0a·C3+Tg8+Rw8b·C4+Rwb3(Cwb3+Cpin3)…(9)Tg0=F(input_slew,C3)…(10)Tg8=F(input_slew,C4)…(11)C3=Cw0a+Cwa1+Cpin1+Cpin8…(12)C4=Cw8b+Cwb2+Cwb3+Cpin2+Cpin3…(13)图6以流程图的形式示出了图1中示出的从插入点确定过程S140到布局修改过程S170的过程。在本实施例中,在插入点确定过程S140中,设计工具发现具有时序限制的路由,该时序限制是经由相同分支点连接单元的路由的时序限制中最严格的;然后确定负载分配缓冲器应该插入在其上允许以一个大于预定量的量来减小具有最严格的时序限制的路由的延迟量的插入点处。在图1和6之间比较,插入点确定过程S140对应于步骤S208、S209和S220,驱动能力计算过程S150对应于步骤S210至S215,布局可能性判定过程S160对应于步骤S216,而布局修改过程S170对应于步骤S217至S219。
在延迟量计算过程S130完成之前,对连接任意两个单元的路由,计算多个不同的插入虚拟缓冲器的延迟量和一个没有插入虚拟缓冲器的延迟量。设计工具从在其中在步骤S204或步骤S206中曾经插入虚拟缓冲器的点中选择一个未处理的插入点(步骤S208)。下文中将该被选择的插入点称之为插入点P。接着,设计工具确定是否以一个大于在插入点P处插入虚拟缓冲器的预定量的量来改变具有在从插入点P之前的驱动单元到驱动单元之后的次单元的路由的时序限制中最严格的时序限制的路由(以后该路由被称之为最差的路由)的延迟量(步骤209)。如果以一个大于预定量的量来改变最差路由的延迟量,则设计工具确定插入点P是否在最差路由上(步骤S210)。如果插入点P在最差路由上,设计工具转到步骤S214。否则,设计工具转到步骤S221。
如果插入点P不在最差路由上(在步骤S210中为否),设计工具假设虚拟缓冲器被设置为具有最小的驱动能力以使满足经过虚拟缓冲器的所有路由上的时序限制(步骤S211)。在该假设下,设计工具计算满足最差路由上的时序限制的驱动单元的驱动能力的最小值D(步骤S212)。接着,设计工具将在步骤212中计算出的驱动能力与包含于原始电路中的驱动单元的驱动能力相比较(步骤S213)。如果计算出的驱动能力低于原始驱动能力,设计工具转到步骤216。
另一方面,如果插入点P在最差路由上(在步骤S210中为是),设计工具计算满足不经过虚拟缓冲器的所有路由上的时序限制的驱动单元的驱动能力的最小值D(步骤S214)。然后设计工具确定在步骤S214中计算出的驱动能力的最小值D是否低于包含于原始电路中的驱动单元的驱动能力以及虚拟缓冲器的驱动能力是否小于预定值(步骤S215)如果满足这两个条件,设计工具转到步骤S216。
如果设计工具的控制程序到达步骤S216,意味着负载分配缓冲器应该插入在步骤S208中选择的插入点处。因此,根据要处理的布局结果,设计工具判定负载分配缓冲器是否可实际插入在插入点P处(步骤S216)。如果负载分配缓冲器实际可插入,设计工具转到步骤S217。在这种情况中,设计工具在要处理的布局结果上执行下述布局修改过程。即,设计工具将负载分配缓冲器放置在插入点P处(步骤S217),将在插入点P之前的驱动单元改变为具有在步骤S212或S214中计算出的驱动能力的单元(步骤S218),然后根据这两个电路的改变来改变布线信息(步骤S219)。
接着,设计工具根据预定的判定标准来确定是否结束控制程序(步骤S220)。例如,根据完成处理所有在其中曾经在步骤S204或S206中插入虚拟缓冲器的插入点或根据完成执行预定次数的布局修改过程,设计工具确定结束控制程序。根据确定为继续控制程序,设计工具转到步骤S208。根据确定为结束控制程序,设计工具结束控制程序。值得注意的是,如果在步骤S209、S213、S215和S216的任意一个中确定为否,则设计工具转到步骤S208而不在插入点P处执行布局修改过程。
下面描述要在图7A中示出的布局结果上执行从插入点确定过程S140至布局修改过程S170的过程的具体例子。图7A示出了通过标准单元规则获得的电路的部分布局结果。图7A示出了作为部分布局结果的驱动单元20、五个次单元21至25、位于驱动单元20之前的在先单元26以及布线29。布线具有用于将驱动单元20的输出端连接至次单元21至25的输入端的四个分支点a至d。
当在图7A中示出的布局结果要被处理时,在分支点检测过程S110中,在布线29中检测四个分支点a至d。在实际负载插入过程S120中,在四个分支点a至d的每一个之后的两个点的任意之一中,即在八个点的任意之一中,一次一个地插入虚拟缓冲器。这里,假设从驱动单元20至次单元24的路由为具有在从驱动单元20至次单元1至25的五条路由的时序限制中最严格的时序限制的路由。此外,对于从驱动单元20至次单元24的路由延迟量,假设,在分支点a至d之后的八个点中的任意一点插入虚拟缓冲器而各自获得的八个不同延迟量和一个没有插入虚拟缓冲器获得的延迟量中,图7A中示出的在分支点b之后的布线Nb1上的预定点P处插入虚拟缓冲器的延迟量最小。
对于图7A中示出的布局结果,根据在步骤S208中插入点P的选择,在步骤S209中确定为是,然后在步骤S210中确定为否。接着,在步骤S212中,所计算的是满足从驱动单元20到次单元24的路由上的时序限制的驱动单元20的驱动能力的最小值D。然后,根据在步骤S213中确定的计算出的最小值D小于驱动单元20的驱动能力以及根据在步骤S216中确定的负载分配缓冲器可插入在插入点P处,执行下述布局修改过程。即,将负载分配缓冲器27放置在插入点P处(步骤S217),驱动单元20由较低驱动能力的驱动单元20′替换(步骤S218),然后改变与连接到负载分配缓冲器27与驱动单元20′的布线相关的布线信息(步骤S219)。结果是,将图7A中示出的布局结果改变为图7B中示出的布局结果。
在改变之前的布局结果(图7A)中,布线29长,并且由此驱动单元20的负载电容大。由于该原因,使用高驱动能力的驱动单元作为驱动单元20。另一方面,在改变之后的布局结果(图7B)中,在插入点P处插入负载分配缓冲器27。这使得对应于布线29的布线29′短于布线29,由此减小驱动单元的负载电容。由于此原因,可以使用驱动能力低于驱动单元20的驱动能力的驱动单元20′替换驱动单元20。而且,计算驱动单元20′的驱动能力以使满足包括最差路由的路由中的每一个上的时序限制。因此,即使采用如图7B中示出的改变的布局结果,也不会违反时序限制。这样,根据本发明的设计方法,可以减小驱动单元20的驱动能力同时满足每一路由上的时序限制,由此减小电路功耗而不削弱电路的功能。
如上所述,根据本发明的设计方法,假设在驱动单元驱动多个次单元,并且虽然具有严格时序限制的路由短,但是由于布线电容和次单元的输入管脚电容的总和值大而需要驱动单元具有高驱动能力的情况下,插入用于驱动具有较少时序限制的次单元的负载分配缓冲器并减小驱动单元的驱动能力。由此,可以减小电路功耗。
接着,下面描述要在图8A中示出的布局结果上执行的从插入点确定过程S140至布局修改过程S170的过程的另一具体实例。图8A中的单元和单元之间的布线的布置与图7A中示出的一样。可是,在图8A中示出的布局结果中,假设,从驱动单元30到次单元31至35的五个路由中,从驱动单元30至次单元33的路由(由粗体线表示)是具有最严格时序限制的路由(最差路由)。而且,对于从驱动单元30至次单元33的延迟量,假设,在分支点a至d之后的八个点的任意一点处插入虚拟缓冲器获得的八个不同延迟量和一个没有插入虚拟缓冲器获得的延迟量中,在图8A中示出的在分支点c之后的布线Nc2上的预定点Q处插入虚拟缓冲器的延迟量最小。
对于图8A中示出的布局结果,根据在步骤S208中插入点Q的选择,在步骤S209和S210中确定为是。接着,在步骤S214中,所计算的是满足不经过虚拟缓冲器的所有路由上的时序限制的驱动单元30的驱动能力的最小值D。然后,根据在步骤215中确定满足两个条件和根据在步骤216中确定负载分配缓冲器可插入在插入点Q,执行下述布局修改过程。即,将负载分配缓冲器37放置在插入点Q处(步骤S217),由具有低于驱动单元30的驱动能力的驱动能力的驱动单元30′替换驱动单元30(步骤S218),然后改变与连接到负载分配缓冲器37和驱动单元30′的布线相关的布线信息(步骤S219)。结果是,将图8A中示出的布局结果改变为如图8B中示出的布局结果。使用以上述方式改变的布局结果,由于与作用在图7A中的布局结果上的相同原因,可以减小电路功耗。
如上所述,根据本实施例的设计方法,假设在驱动单元驱动少量的具有严格时序限制的次单元和大量具有不那么严格的时序限制的次单元并且由于布线电容和次单元的输入管脚电容的总和值大而需要驱动单元具有高驱动能力的情况下,可以在具有严格时序限制的路由上新插入负载分配缓冲器以便于有选择地在该路由的周围部分执行高速驱动并减小驱动单元的驱动能力。由此,可以减小电路功耗。
在图6中示出的流程图中,在插入点在最差路由上和插入点不在最差路由上的两种情况中,执行布局修改过程。另外,可以限制布局修改程序以便于仅在一种情况中执行该程序。通过在图6的步骤S210中确定为是(或否)之后使设计工具转到步骤S208,很容易获得该设计过程。
(第二实施例)参考图9和10,下面描述本发明的第二实施例。图9是根据本发明第二实施例的设计方法的过程流程图。通过用不同于过程S120的实际负载插入过程S121替换包含于根据第一实施例的设计方法(图1)中的实际负载插入过程S120来获得本设计方法。在图9中示出的过程中,与图1中示出的过程相同的过程设置为相同的参考标记且在这里不再描述。
在实际负载插入过程S121中,设计工具根据预定的标准确定是否需要虚拟缓冲器,然后根据确定为需要虚拟缓冲器,将虚拟缓冲器插入于在分支点检测过程S110中检测的分支点之后的布线上的预定点处。根据本实施例的实际负载插入过程S121包括分支后总负载电容(total post-branching load capacitance)计算过程S181、总负载电容计算过程S182和有条件的实际负载插入过程S183。在分支后总负载电容计算过程S181中,对每一分支点,设计工具计算在分支点之后的总负载电容Cpart(分支点之后的布线电容与分支点之后的单元的输入管脚电容的总和值,下文中称之为分支后总负载电容)。接着,在总负载电容计算过程S182中,对每一分支点,设计工具计算位于每一分支点之前的驱动单元的总负载电容Call(下文中简称为″总负载电容″)。接着,在有条件的实际负载插入过程S183中,如果存在有其分支后总负载电容Cpart对总负载电容Call的比大于预定值的分支点,设计工具在布线上的该分支点之后的预定点处插入虚拟缓冲器。否则,设计工具在布线上的该分支点之后不插入虚拟缓冲器。
下面描述要在图10中示出的布局结果上执行实际负载插入过程S121的具体实例。在分支后总负载电容计算过程S181中,例如,对于分支点b,计算从分支点b到次单元42至45的布线电容与次单元42至45的输入管脚电容的总和值作为分支后总负载电容Cpart-b。而且,对于分支点d,计算从分支点d至次单元44和45的布线电容与次单元44和45的输入管脚电容的总和值作为分支后总负载电容Cpart-d。接着,在总负载电容计算过程S182中,计算从驱动单元40到次单元41至45的布线电容与次单元41至45的输入管脚电容的总和值作为总负载电容Call。
在图10中示出的布局结果中,分支后总负载电容Cpart-b对总负载电容Call的比相对较大。因此,如果在分支点b之后的布线上的预定点处插入虚拟缓冲器,以一个大于预定量的量来改变具有比预定程度严格的时序限制的路由的延迟量有很高的可能性。因此,可以认为插入虚拟缓冲器是有效的。另一方面,分支后总负载电容Cpart-d对总负载电容Call的比相对较小。因此,如果在分支点d之后的布线上的预定点处插入虚拟缓冲器,以一个大于预定量的量来改变具有比预定程度严格的时序限制的路由的延迟量有很低的可能性。因此,可以认为插入虚拟缓冲器是无效的。
在有条件的实际负载插入过程S183中,如果分支后总负载电容Cpart对总负载电容Call的比大于预定值(例如,如图10中示出的分支点b的情形),则插入虚拟缓冲器。如果比率不大于预定值(例如,如图10中示出的分支点d的情形),则不插入虚拟缓冲器。由此,在有条件的实际负载插入过程S183中,将在其处插入虚拟缓冲器的点限制为允许有效减小电路功耗的点。
在延迟量计算过程S130中,对于在实际负载插入过程S121中插入虚拟缓冲器的情形,计算每一路由的延迟量。而且,如上所述,在实际负载插入过程S121中,限制虚拟缓冲器插入的点为允许有效减小电路功耗的点。因此,在延迟量计算过程S130中,减少计算每一路由的延迟量的次数,由此减小处理时间。
如上所述,根据本实施例的设计方法,通过限制在其处插入虚拟缓冲器的点,减少计算每一路由的延迟量的次数,由此减小整个设计方法所需的处理时间。
(第三实施例)参考图10和11,下面描述本发明的第三实施例。图11是根据本发明第三实施例的设计方法的过程流程图。通过用不同于过程S120的实际负载插入过程S122替换包含于根据第一实施例的设计方法(图1)中的实际负载插入过程S120来获得本设计方法。在图11中示出的过程中,与图1中示出的过程相同的过程设置为相同的参考标记且在此不再描述。
如同根据第二实施例的实际负载插入过程S121一样,在实际负载插入过程S122中,设计工具根据预定的标准确定是否需要虚拟缓冲器,然后根据确定为需要虚拟缓冲器,将虚拟缓冲器插入在分支点检测过程S110中检测到的分支点之后的布线上的预定点处。根据本实施例的实际负载插入过程S122包括逐分支(branch-by-branch)总负载电容计算过程S184和有条件的实际负载插入过程S185。在逐分支总负载电容计算过程S184中,设计工具对在分支点检测过程S110中检测到的分支点之后的每一布线计算该布线之后的总负载电容(下文称之为逐分支总负载电容)。更为详细地,考虑一种情况,其中在分支点处布线分支成两个方向至布线W1和布线W2。在该情况中,设计工具计算布线W1之后的布线电容与连接于布线W1的单元的输入管脚电容的总和值作为布线W1的逐分支总负载电容Cw1。同样,设计工具计算布线W2的逐分支总负载电容Cw2。
接着,在有条件的实际负载插入过程S185中,设计工具比较布线W1的逐分支总负载电容Cw1与布线W2的逐分支总负载电容Cw2。如果这些电容的不均衡程度高于预定程度,设计工具在其逐分支总负载电容比另一个的大的布线上的预定点处插入虚拟缓冲器。即,如果逐分支总负载电容Cw1比逐分支总负载电容Cw2大一个大于预定值的值,就在布线W1上的预定点处插入虚拟缓冲器。相反地,如果逐分支总负载电容Cw2比逐分支总负载电容Cw1大一个大于预定值的值,就在布线W2上的预定点处插入虚拟缓冲器。否则(即,如果逐分支总负载电容Cw1与Cw2之间的差小于预定值),就没有虚拟缓冲器插入在布线W1或W2上。如果布线分支成三个方向,设计工具使三个布线经过计算逐分支总负载电容与比较计算结果的过程。
下面描述要在图10中示出的布局结果上执行的实际负载插入过程S122的具体实例。图10中示出的布线49具有四个分支点a至d。而且,布线Na1与Na2位于分支点a之后,布线Nb1与Nb2位于分支点b之后。在逐分支总负载电容计算过程S184中,例如,对于分支点a,计算从分支点a到次单元42至45的布线电容与次单元42至45的输入管脚电容的总和值作为布线Na1的逐分支总负载电容CNa1。而且,计算从分支点a至次单元41的布线电容与次单元41的输入管脚电容的总和值作为关于分支点a的布线Na2的逐分支总负载电容CNa2。对于分支点b,计算从分支点b至次单元44和45的布线电容与次单元44和45的输入管脚电容的总和值作为布线Nb1的逐分支总负载电容CNb1。同样,计算从分支点b至次单元42和43的布线电容与次单元42和43的输入管脚电容的总和值作为分支点b的布线Nb2的逐分支总负载电容CNb2。
在图10中示出的布局结果中,布线Na1的逐分支总负载电容CNa1远大于布线Na2的逐分支总负载电容CNa2。因此,如果在布线Na1上的预定点处插入虚拟缓冲器,以一个大于预定量的量来改变具有比预定程度严格的时序限制的路由的延迟量有很高的可能性。因此,可以认为插入虚拟缓冲器是有效的。另一方面,布线Nb1的逐分支总负载电容CNb1近似等于布线Nb2的逐分支总负载电容CNb2。因此,如果在布线Nb1或Nb2上的预定点处插入虚拟缓冲器,以一个大于预定量的量来改变具有比预定程度严格的时序限制的路由的延迟量有很低的可能性。因此,可以认为插入虚拟缓冲器是无效的。
在有条件的实际负载电容插入过程S185中,如果分支点之后的布线的逐分支总负载电容Cw1和Cw2的不均衡程度大于预定程度(例如如图10中示出的分支点a的情形),在其逐分支总负载电容大于另一个的布线(在该例中,是布线Na1)上的预定点处插入虚拟缓冲器。如果这些电容的不均衡程度没有大于预定程度(例如如图10中示出的分支点b的情形),就没有虚拟缓冲器插入。由此,在有条件的实际负载插入过程S185中,限制在其处插入虚拟缓冲器的点为允许有效减小电路功耗的点。通过执行有条件的实际负载插入过程S185,由于与第二实施例相同的原因,减小了在延迟量计算过程S130中的处理时间。
如上所述,根据本实施例的设计方法,通过限制在其处插入虚拟缓冲器的点,减少计算每一路由延迟量的次数,由此减小整个设计方法所需的处理时间。
(第四实施例)参考图10和12,下面描述本发明的第四实施例。图12是根据本发明第四实施例的设计方法的过程流程图。
通过用不同于过程S120的实际负载插入过程S123来替换包含于根据第一实施例的设计方法(图1)中的实际负载插入过程S120来获得本设计方法。在图12中示出的过程中,与图1中示出的过程相同的过程设置为相同的参考标记且在此不再描述。
如同根据第二和第三实施例的实际负载插入过程S121和S122一样,在实际负载插入过程S123中,设计工具根据预定的标准确定是否需要虚拟缓冲器,然后根据确定为需要虚拟缓冲器,将虚拟缓冲器插入在分支点检测过程S110中检测到的分支点之后的布线上的预定点处。根据本实施例的实际负载插入过程S123包括逐分支时序限制计算过程S186和有条件的实际负载插入过程S187。在逐分支时序限制计算过程S186中,对于分支点检测过程S110中检测到的分支点之后的每一布线,设计工具计算包括该布线的路由上的时序限制的最差值(下文称之为逐分支时序限制的最差值)。更为详细地,对于在其处布线分支成两个方向成为布线W1和布线W2的分支点,设计工具计算从分支点经由布线W1至分支点之后的次单元的路由上的时序限制的最差值作为布线W1的逐分支时序限制的最差值Tw1,布线W1是该分支点之后的布线中的一个。同样,设计工具计算布线W2的逐分支时序限制的最差值Tw2,布线W2为该分支点之后的另一条布线。
接着,在有条件的实际负载插入过程S187中,设计工具比较布线W1的逐分支时序限制的最差值Tw1与布线W2的逐分支时序限制的最差值Tw2。如果这些最差值的不均衡程度大于预定程度,设计工具将虚拟缓冲器插入在其逐分支时序限制较严格的布线上的预定点处。即,如果逐分支时序限制的最差值Tw1表现为其时序限制以一个大于预定程度的程度严格于最差值Tw2的,就在布线W1上的预定点处插入虚拟缓冲器。相反地,如果逐分支时序限制的最差值Tw2表现为其时序限制以一个大于预定程度的程度严格于最差值Tw1的,就在布线W2上的预定点处插入虚拟缓冲器。否则(即,如果逐分支时序限制的最差值Tw1与Tw2之间的差小于预定值),就没有虚拟缓冲器插入在布线W1或W2上。如果布线分支成三个方向,设计工具使三个布线经过计算逐分支时序限制的最差值和比较计算结果的过程。
下面描述要在图10中示出的布局结果上执行的实际负载插入过程S123的具体实例。图10中示出的布线49具有四个分支点a至d,并且布线Nb1与Nb2位于分支点b之后。在逐分支时序限制计算过程S186中,例如,对于分支点b,执行下面的过程。即,首先,对从分支点b到次单元42至45的路由计算时序限制T42至T45。然后,在时序限制T44和T45中,较严格的时序限制被选择为布线Nb1的逐分支时序限制的最差值TNb1,布线Nb1为分支点b之后的一条布线。同样,在时序限制T42和T43中,较严格的时序限制被选择为布线Nb2的逐分支时序限制的最差值TNb2,布线Nb2为分支点b之后的另一条布线。
考虑一种情况,其中上述计算出的布线Nb1的逐分支时序限制的最差值TNb1比上述计算出的布线Nb2的逐分支时序限制的最差值TNb2大一个大于预定值的值。在这种情况中,如果在布线Wb1上的预定点处插入虚拟缓冲器,则以一个大于预定量的量来改变具有比预定程度严格的时序限制的路由的延迟量有很高的可能性。因此,可以认为插入虚拟缓冲器是有效的。另一方面,考虑另一种情况,其中布线Nb2的逐分支时序限制的最差值TNb2比上述计算出的布线Nb1的逐分支时序限制的最差值TNb1大一个大于预定值的值。在这种情况中,如果在布线Wb2上的预定点处插入虚拟缓冲器,则以一个大于预定量的量来改变具有比预定程度严格的时序限制的路由的延迟量有很高的可能性。因此,可以认为插入虚拟缓冲器是有效的。否则,(即,如果在逐分支时序限制的最差值Tb1与Tb2之间的差小于预定值),则以一个大于预定量的量来改变具有比预定程度严格的时序限制的路由的延迟量有很低的可能性。因此,可以认为插入虚拟缓冲器是无效的。
在有条件的实际负载插入过程S187中,如果关于分支点之后的布线的逐分支时序限制的最差值TNb1和TNb2的不均衡程度高于预定程度,那么在其时序限制严格于其他布线的时序限制的布线上的预定点处插入虚拟缓冲器。如果这些最差值的不均衡程度没有高于预定程度,就没有虚拟缓冲器插入。由此,在有条件的实际负载插入过程S187中,将在其处插入虚拟缓冲器的点限制为允许有效减小电路功耗的点。通过执行有条件的实际负载插入过程S187,由于与第二和第三实施例相同的原因,减小了在延迟量计算过程S130中的处理时间。
如上所述,根据本实施例的设计方法,通过限制在其处插入虚拟缓冲器的点,减少计算每一路由的延迟量的次数,由此减小整个设计方法所需的处理时间。
(第二至第四实施例的示例性修改)在第二至第四实施例中,已经描述了用于减小低功耗设计方法的处理时间的示例性方法。可以任意地合并这三个处理时间减小方法中的两个或三个。图13是根据本发明第二至第四实施例的示例性修改的设计方法的过程流程图。在图13中示出的过程中,与图1、9、11和12中示出的过程相同的过程设置为相同的参考标记且在此不再描述。
如同实际负载插入过程S121至S123一样,在实际负载插入过程S124中,设计工具根据预定的标准确定是否需要虚拟缓冲器,然后根据确定的需要虚拟缓冲器,将虚拟缓冲器插入于在分支点检测过程S110中检测到的分支点之后的布线上的预定点处。图13中示出的实际负载插入过程S124包括分支后总负载电容计算过程S181、总负载电容计算过程S182、逐分支总负载电容计算过程S184、逐分支时序限制计算过程S186和有条件的实际负载插入过程S188。
图14是示出有条件的实际负载插入过程S188的细节的流程图。在分支点检测过程S110中检测到的每一分支点上执行图14中示出的过程。通过参考在分支后总负载电容计算过程181中计算的分支后总负载电容Cpart、在总负载电容计算过程S182中计算的总负载电容Call、在逐分支总负载电容计算过程S184中计算的逐分支总负载电容Cw1与Cw2和在逐分支时序限制计算过程S186中计算的逐分支时序限制的最差值Tw1和Tw2,来执行图14中示出的过程。
在有条件的实际负载插入过程S188中,设计工具执行下述过程。设计工具首先确定分支后总负载电容Cpart对总负载电容Call的比是否大于预定值(步骤S301)。如果该比大于预定值,设计工具转到步骤S302。在这种情况中,设计工具然后确定逐分支总负载电容Cw1与Cw2的不均衡程度是否高于预定程度(步骤S302)。如果这些逐分支总负载电容Cw1与Cw2的不均衡程度高于预定程度,设计工具将虚拟缓冲器插入在其逐分支总负载电容大于另一布线的逐分支总负载电容的布线上的预定点处(步骤S303)。
另一方面,如果这些逐分支总负载电容Cw1与Cw2的不均衡程度没有高于预定程度,那么设计工具确定逐分支时序限制的最差值Tw1与Tw2的不均衡程度是否高于预定程度(步骤S304)。如果这些逐分支总负载电容Cw1与Cw2的不均衡程度高于预定程度,那么设计工具将虚拟缓冲器插入在其逐分支时序限制严格于其他布线的时序限制的布线上的预定点处(步骤S305)。
如果在步骤S301中确定为否或在步骤S302和S303中都确定为否,那么设计工具结束有条件的实际负载插入过程S188而不插入虚拟缓冲器。
如上所述,通过任意合并用于减小低功耗设计方法的处理时间的方法以便于限制在其处插入虚拟缓冲器的点,来减少计算插入虚拟缓冲器的每一路由的延迟量的次数,由此减小整个设计方法所需的处理时间。
(第五实施例)参考图15至18,下面描述本发明的第五实施例。图15是根据本实施例的设计方法的过程流程图。本设计方法包括分支点检测过程S110、删除候选(candidate)检测过程S114、实际负载插入过程S120、延迟量计算过程S134、插入点确定过程S140、驱动能力计算过程S150、布局可能性判定过程S160和布局修改过程S174。在图15中示出的过程中,与图1中示出的过程相同的过程设置为相同的参考标记且在此不再描述。
在删除候选检测过程S114中,设计工具在要处理的布局结果中检测不影响电路逻辑功能的且其输出端连接于在其上具有分支点的布线的缓冲器(该缓冲器下文中被称之为可删除缓冲器)。通过自顶向下的设计方法设计的电路中通常包含有大量的这种可删除缓冲器。
在延迟量计算过程S134中,如同根据第一至第四实施例的延迟量计算过程S130一样,设计工具计算多个在实际负载插入过程S120中实际插入虚拟缓冲器的延迟量和一个没有插入虚拟缓冲器的延迟量。而且,在延迟量计算过程S134中,在实际删除可删除缓冲器的情况中,设计工具计算连接位于在删除候选检测过程S114中检测的可删除缓冲器之前的单元和直接在可删除缓冲器之后的单元的路由的延迟量。
在插入点确定过程S144中,如同根据第一至第四实施例的插入点确定过程S140一样,根据在延迟量计算过程S134中计算的延迟量,设计工具在布线上确定应该插入负载分配缓冲器的点。值得注意的是,在根据本实施例的插入点确定过程S144中,同样考虑实际删除可删除缓冲器的路由的延迟量来确定负载分配缓冲器的插入点。由此,确定将要实际删除的可删除缓冲器。
在布局修改过程S174中,如同根据第一至第四实施例的布局修改过程S170一样,设计工具在要处理的关于在布局可能性判定过程S160中确定的插入点的布局结果上执行布局修改过程,在该插入点处允许插入负载分配缓冲器。在根据本实施例的布局修改过程S174中,如果实际需要删除,设计工具还在要处理的布局结果上执行删除在插入点确定过程S144中确定的可删除缓冲器的过程。
图16以流程图的形式示出图15中示出的从分支点检测过程S110至延迟量计算过程S134的过程。比较图15与16,分支点检测过程S110对应于步骤S402和S403,删除候选检测过程S114对应于步骤S409至S411,实际负载插入过程S120对应于步骤S404和S406,而延迟量计算过程S134对应于步骤S401、S405和S407。
图16中示出的步骤S401至407与图2中示出的步骤S201至S207相同,因此在此不再描述。在步骤S407之后,设计工具执行下面的过程。设计工具首先确定在步骤S402中选择的分支点是否为布线上的第一分支点(步骤S408),然后确定在该分支点之前的驱动单元是否改变电路的逻辑功能(步骤S409)。如果在步骤S408中确定为是而在步骤S409中确定为否,设计工具删除分支点之前的驱动单元(步骤S410),计算删除驱动单元的路由的延迟量(步骤S411),然后转到步骤S402。如果在步骤S408中确定为否或在步骤S409中确定为是,设计工具直接转到步骤S402而不执行步骤S410和步骤S411。
下面描述要在图17A中示出的布局结果上执行的根据本实施例的设计方法的具体实例。图17A示出了作为布局结果的驱动单元50、五个次单元51至55、位于驱动单元50之前的在先单元56、连接于在先单元56的单元57和布线59。布线59具有连接驱动单元50的输出端与次单元51至55的输入端的四个分支点a至d。驱动单元50不影响电路的逻辑功能。从驱动单元50到次单元51至55的五个路由中,假定从驱动单元50至次单元54的路由(由粗体线表示的)具有最严格的时序限制。
当要处理图17A中示出的布局结果时,在分支点检测过程S110中,在布线59上检测四个分支点a至d。而且,驱动单元50不影响电路的逻辑功能,且其输出端连接于具有这些分支点的布线59。因此,在删除候选检测过程S114中,检测作为可删除缓冲器的驱动单元50。在延迟量计算过程S134中,计算在分支点a至d之后的布线上实际插入虚拟缓冲器的路由延迟量、没有实际插入虚拟缓冲器的路由延迟量和具有实际将要删除的驱动单元50的路由延迟量。
在插入点确定过程S144中,根据在延迟量计算过程S134中计算的延迟量,确定在其处要插入负载分配缓冲器且要实际删除可删除缓冲器的插入点。下面,通过仅举例的方式,假设作出如此确定负载分配缓冲器插入在图17A中示出的插入点R处且驱动单元50将要被删除。在这种情况中,在布局修改过程S174中,将负载分配缓冲器58放置在插入点R处,删除驱动单元50,然后改变与连接于负载分配缓冲器58和驱动单元50的布线相关的布线信息。结果是,将图17A中示出的布局结果改变为图17B示出的布局结果。
如上所述,根据本实施例的设计方法,假设在驱动单元驱动多个次单元,且虽然具有严格时序限制的路由短,但由于布线电容与次单元的输入管脚电容的总和值大而需要驱动单元具有高驱动能力的情况中,新插入用于驱动具有不太严格的时序限制的次单元的负载分配缓冲器。而且,删除驱动单元以便于驱动在该驱动单元之前的具有严格时序限制的在先单元。由此,减小电路功耗。
下面描述要在图18A中示出的布局结果上执行的根据本实施例的设计方法中的过程的另一具体实例。图18A中的单元和单元之间的布线的布置与图17A中示出的相同。驱动单元60是不影响电路逻辑功能的单元。假设,在从驱动单元60到次单元61至65的五个路由中,从驱动单元60至次单元63的路由(由粗体线表示)为具有最严格时序限制的路由。
还假设,在插入点确定过程S144中,确定在图18A中示出的插入点S处插入负载分配缓冲器且驱动单元60要被删除。在这种情况中,在布局修改过程S174中,在插入点S处插入负载分配缓冲器68,删除驱动单元60,然后改变与连接于负载分配缓冲器68和驱动单元60的布线相关的布线信息。结果是,将图18A中示出的布局结果改变为图18B所示的布线结果。
如上所述,根据本实施例的设计方法,假设在驱动单元驱动少量具有严格时序限制的次单元和大量具有不那么严格的时序限制的次单元,且由于布线电容和其他次单元的输入管脚电容的总和值大而需要驱动单元具有高驱动能力的情况中,在具有严格时序限制的路由上新插入负载分配缓冲器以便于有选择地仅在该路由的周围部分执行高速驱动。而且,删除驱动单元以便于驱动在该驱动单元之前且具有不那么严格的时序限制的单元。这样,可以减小电路功耗。
下面描述本实施例的效果。根据上述第一实施例的设计方法,在分支点之后的布线上的预定点处插入负载分配缓冲器,且减小驱动单元的驱动能力。由此,可以减小电路功耗。通过将在要处理的布局结果中检测可删除缓冲器的过程和从布局结果中删除检测到的可删除缓冲器的过程提供给根据第一实施例的方法来获得根据本实施例的设计方法。添加负载分配缓冲器的过程和删除可删除缓冲器的过程等同于缓冲器移走过程。因此,根据本实施例的方法,不仅可以通过缓冲器添加过程还可以通过缓冲器移走过程来获得电路功耗减小。因此,可以进一步提高减小功耗的效果。
(第一至第五实施例的示例性修改)
对于根据第一至第五实施例的设计方法,可以做出各种示例性的修改。例如,在分支点检测过程中,可以检测包含于要处理的布局结果中的所有分支点,或者可以检测预定数量的分支点。而且,在延迟量计算过程中,可以使用计算延迟量的任意方案。此外,可以将通过限制在第二至第四实施例中描述的虚拟缓冲器插入点来减小处理时间的方法应用于根据第五实施例的设计方法。
此外,可以执行在根据上述实施例的每一个的设计方法中从开始直到延迟量计算过程的过程作为延迟信息计算方法。具体地,在根据第一至第四实施例的每一个的设计方法中,在半导体集成电路上执行负载分配的情况中,分支点检测过程S110、实际负载插入过程S120至S124和延迟量计算过程S130可以作为计算延迟量信息的方法来执行。此外,在根据第五实施例的设计方法中,分支点检测过程S110、删除候选检测过程S114、实际负载插入过程S120和延迟量计算过程S134可以作为延迟信息计算方法来执行。
根据延迟信息计算方法,可以获得在分支点之后的布线上插入虚拟缓冲器的情况下的延迟信息。以合适的方式将获得的延迟信息呈现给设计者,设计者可以容易地认识到关于电路中负载分配的情形。同样,设计者可以认识到关于根据虚拟缓冲器的插入的路由延迟量中的改变的情形,且可以检测到包含于电路布局结果中的设计余量。
虽然已经详细描述了本发明,前述说明在所有方面为示例性而非限制性的。应理解可以作出大量的不脱离本发明的范围的其他修改和变形。
权利要求
1.一种用于改变半导体集成电路布局结果的设计方法,该方法包括步骤检测布局结果中的布线的分支点,该布局结果包含有关单元类型的信息、有关单元布置的信息和有关单元之间布线的信息;在被检测的分支点之后的一条布线上的预定点处实际插入具有预定量的负载;计算插入负载的经由分支点连接单元的每一路由的延迟量和没有插入负载的该路由的延迟量;根据每一路由的延迟量,确定要在其处插入负载分配缓冲器的插入点;如果负载缓冲器要插入在被确定的插入点,根据每一路由的时序限制,计算位于该插入点之前的驱动单元的驱动能力;根据布局结果判定负载分配缓冲器是否可插入在插入点;和根据判定结果来执行改变布局结果的过程,该过程包括在插入点放置负载分配缓冲器的过程、将驱动单元改变为具有计算出的驱动能力的单元的过程和根据电路的改变来改变布线信息的过程。
2.如权利要求1所述的半导体集成电路设计方法,其中当以一个大于在该预定点处实际插入负载的预定量的量来改变在预定判定标准下确定为具有严格时序限制的路由的延迟量时,插入点确定步骤确定该预定点为在其处要插入负载分配缓冲器的插入点。
3.如权利要求2所述的半导体集成电路设计方法,其中在经由分支点连接单元的路由中,插入点确定步骤确定具有最严格时序限制的路由为具有严格时序限制。
4.如权利要求1所述的半导体集成电路设计方法,其中当根据预定的标准确定需要负载时,负载插入步骤在被检测的分支点之后的布线上的预定点处实际插入负载。
5.如权利要求4所述的半导体集成电路设计方法,其中负载插入步骤包括步骤计算分支点之后的总负载电容;计算驱动单元的总负载电容;和当该分支点之后的总负载电容对该驱动单元的总负载电容的比大于预定值时,在该分支点之后的布线上的预定点处实际插入负载。
6.如权利要求4所述的半导体集成电路设计方法,其中负载插入步骤包括步骤对于分支点之后的每一布线,计算所述布线中的一条之后的总负载电容;和在所述总负载电容的不均衡程度高于预定程度的情况下,在该布线上的预定点处实际插入负载以使该布线之后的总负载电容是分支点之后的布线的所有总负载电容中最大的。
7.如权利要求4所述的半导体集成电路设计方法,其中负载插入步骤包括步骤对于分支点后的每一布线,计算包括所述布线中的一条的路由的时序限制的最差值;和在该分支点之后的所述布线的时序限制的最差值的不均衡程度高于预定程度的情况下,在其时序限制的最差值表示为所有计算出的时序限制最差值中时序限制最严格的布线上的预定点处实际插入负载。
8.如权利要求4所述的半导体集成电路设计方法,进一步包括在路由延迟量计算步骤之前的一个在布局结果中检测可删除缓冲器的步骤;该可删除缓冲器不影响电路的逻辑功能且在输出端连接于具有分支点的布线,其中路由延迟量计算步骤还计算带有实际要删除的可删除缓冲器的、连接位于可删除缓冲器之前的单元和直接在可删除缓冲器之后的单元的路由的延迟量;和布局结果改变步骤还执行从布局结果中删除可删除缓冲器的过程。
9.一种获得在根据半导体集成电路的布局结果执行负载分配时出现的有关延迟的延迟信息的方法,该方法包括步骤检测布局结果中的布线的分支点,该布局结果包含有关单元类型的信息、有关单元布置的信息和有关单元之间布线的信息;在被检测的分支点之后的布线上的预定点处实际插入具有预定量的负载;和计算插入负载的经由该分支点连接单元的每一路由的延迟量和没有插入负载的该路由的延迟量。
10.如权利要求9所述的用于半导体集成电路的延迟信息计算方法,其中当根据预定的标准确定需要负载时,负载插入步骤在被检测的分支点之后的布线上的预定点处实际插入负载。
11.如权利要求9所述的用于半导体集成电路的延迟信息计算方法,进一步包括在路由延迟量计算步骤之前的一个在布局结果中检测可删除缓冲器的步骤,该可删除缓冲器不影响电路的逻辑功能且在输出端连接于具有分支点的布线,其中路由延迟量计算步骤还计算带有实际要删除的可删除缓冲器的、连接位于可删除缓冲器之前的单元和直接在可删除缓冲器之后的单元的路由的延迟量。
全文摘要
在布局结果中检测布线上的分支点(S101)。然后计算在分支点之后的布线上插入虚拟缓冲器的路由的延迟量(S102)与没有插入虚拟缓冲器的路由的延迟量(S103)。根据延迟量,确定要在其处插入负载分配缓冲器的插入点(S104)。如果负载分配缓冲器要插入在该插入点,计算在该插入点之前的驱动单元的驱动能力以使满足时序限制(S105)。然后在确定负载分配缓冲器可插入在该确定的插入点(S106)之后,在布局结果上执行放置负载分配缓冲器、改变驱动单元的驱动能力和改变布线信息的过程(S107)。
文档编号H01L21/70GK1540745SQ200410035168
公开日2004年10月27日 申请日期2004年4月23日 优先权日2003年4月25日
发明者藤田光俊, 近藤秀二, 二 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1