用于EDA软件的路径间收敛偏移的方法及存储介质转让专利

申请号 : CN202310601221.3

文献号 : CN116402011B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李宝同

申请人 : 南京芯驰半导体科技有限公司

摘要 :

本申请涉及一种用于EDA软件的路径间收敛偏移的方法及存储介质。所述方法包括在利用EDA软件进行芯片实现时获取所述EDA软件的静态时序验证结果,在所述静态时序验证结果中存在路径间偏移违例的情况下:将各个路径按照路径的第一属性进行第一分组,以得到包括多个具有不同的第一属性的第一组;对于各个第一组的组内的路径间偏移违例进行修复,使得各个第一组的组内的路径间偏移收敛,以及对于组内的路径间偏移已收敛的各个第一组,对彼此之间的组间的路径间偏移违例进行修复,直至各个路径间偏移收敛。本申请的方法能够在不造成过多芯片面积浪费的情况下,使得各个路径间偏移能够更快、更好地收敛,并且可以适用于更高频率的时钟域。

权利要求 :

1.一种用于EDA软件的路径间收敛偏移的方法,其特征在于,包括:

在利用EDA软件进行芯片实现时,设定路径中各条异步路径对应的最大路径延迟和最小路径延迟,来得到包括同步路径和异步路径在内的各个路径的路径间偏移,并通过所述EDA软件的静态时序验证来识别所述各个路径的路径间偏移违例状况,在存在路径间偏移违例的情况下:将各个路径按照路径的第一属性进行第一分组,以得到包括多个具有不同的第一属性的第一组,其中,所述第一属性包括路径的起点、路径的终点、路径所属的功能区域和路径所属的时钟域中的至少一种;

对于各个第一组的组内的路径间偏移违例进行修复,使得各个第一组的组内的路径间偏移收敛,以及对于组内的路径间偏移已收敛的各个第一组,对彼此之间的组间的路径间偏移违例进行修复,直至各个路径间偏移收敛。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括,在所述静态时序验证结果中存在路径间偏移违例的情况下:在按照路径的第一属性的第一分组的结果的基础上,将各个第一组按照路径的至少一种第二属性进行第二分组,以得到各个第一组下的细分的第二子组;

对于各个第一组下的细分的各个第二子组,先对各个第二子组的组内的路径间偏移违例进行修复,使得各个第二子组的组内的路径间偏移收敛,再对于组内的路径间偏移已收敛的各个第二子组,对彼此之间的组间的路径间偏移违例进行修复,直至各个第一组内的路径间偏移收敛。

3.根据权利要求2所述的方法,其特征在于,所述第二属性至少包括路径的起点、路径的终点和路径所属的功能区域中的至少一种。

4.根据权利要求1‑3中任一项所述的方法,其特征在于,所述方法还包括:

设定路径中包括各条同步路径和各条异步路径对应的最大路径延迟和最小路径延迟,来得到各个路径间偏移,以便通过静态时序验证识别路径间偏移违例状况。

5.根据权利要求1‑3中任一项所述的方法,其特征在于,所述方法进一步包括:在不改变在组内的路径间偏移的收敛状态的情况下,对组间的路径间偏移违例进行修复。

6.根据权利要求1‑3中任一项所述的方法,其特征在于,所述方法进一步包括,在存在组间的路径间偏移违例的情况下,采用整组修复的方式修复组间的路径间偏移违例。

7.根据权利要求1‑3中任一项所述的方法,其特征在于,所述方法进一步包括:在进行路径间偏移违例修复时,路径间偏移违例程度越高,进行路径间偏移违例修复的优先级越高。

8.根据权利要求1‑3中任一项所述的方法,其特征在于,所述方法进一步包括:在存在组内的路径间偏移违例或组间的路径间偏移违例,并且相关联的路径有重合部分的情况下,通过在相关联的路径的重合部分的起点之前和/或终点之后执行修复动作来对该路径间偏移违例进行修复。

9.根据权利要求1‑3中任一项所述的方法,其特征在于,所述方法进一步包括:通过在路径间偏移违例相关联的路径上添加或去除缓冲器、添加或去除成对的反相器、增加或者减小线长中的一种或其组合,来对路径间偏移违例进行修复。

10.根据权利要求1‑3中任一项所述的方法,其特征在于,所述方法进一步包括:选择路径间偏移违例相关联的路径中时序裕度更大的路径进行路径间偏移违例的修复。

11.一种非暂时性计算机可读存储介质,其上存储有计算机可执行指令,所述计算机可执行指令由处理器执行时,实现根据权利要求1‑10中任何一项所述的用于EDA软件的路径间收敛偏移的方法。

说明书 :

用于EDA软件的路径间收敛偏移的方法及存储介质

技术领域

[0001] 本申请涉及芯片设计技术领域,更具体地,涉及一种用于EDA软件的路径间收敛偏移的方法及存储介质。

背景技术

[0002] 随着电子工业的发展,电子产品对芯片(Integrated Circui,IC,也称集成电路)的要求越来越苛刻,一方面需要更好更全面的功能和更优良的性能,另一方面要求芯片生产更经济。这就导致芯片设计中会引入更复杂多样的路径,以满足性能需要。在利用EDA软件进行芯片设计的中后端实现过程中,如何快速收敛各条寄存器‑寄存器之间的路径的路径间偏移(也称skew),是影响芯片设计效率和芯片性能的关键技术。
[0003] 目前常用的收敛skew的方法包括通过将skew的要求值设定为set_max_delay的参数值,从而控制所有可能的路径满足最小的偏移量。图1示出现有技术中用于EDA软件的路径间收敛偏移的方法的示意图,如图1所示,对于以寄存器register_b1、寄存器register_b2和寄存器register_b3为起点,以寄存器register_e1 寄存器register_e6为终点的各条~路径,均利用set_max_delay将从各个register_b 到各个register_e 的最大延时设置为max_skew值。这种方法使得各个路径均在延时最小的情况下满足路径间skew的要求,虽然操作简单,但往往对时序要求过于严苛,时序越严苛,对芯片布局布线要求就过高,因此可能导致芯片面积不必要的浪费。此外,该方法对于频率越高的时钟域就越难实现,甚至可能存在无法收敛的情况。

发明内容

[0004] 提供了本申请以解决现有技术中存在的上述问题。
[0005] 需要一种用于EDA软件的路径间收敛偏移的方法及存储介质,能够在利用EDA软件进行芯片布局布线实现时,在不造成过多芯片面积浪费的情况下,使得各个路径间偏移能够更快更好地收敛,并且可以适用于更高频率的时钟域。
[0006] 根据本申请的第一方案,提供一种用于EDA软件的路径间收敛偏移的方法,包括获取所述EDA软件的静态时序验证结果,在所述静态时序验证结果中存在路径间偏移违例的情况下:将各个路径按照路径的第一属性进行第一分组,以得到包括多个具有不同的第一属性的第一组;对于各个第一组的组内的路径间偏移违例进行修复,使得各个第一组的组内的路径间偏移收敛,以及对于组内的路径间偏移已收敛的各个第一组,对彼此之间的组间的路径间偏移违例进行修复,直至各个路径间偏移收敛。
[0007] 根据本申请的第二方案,提供一种非暂时性计算机可读存储介质,其上存储有计算机可执行指令,所述计算机可执行指令由处理器执行时,实现根据本申请各个实施例所述的用于EDA软件的路径间收敛偏移的方法。
[0008] 利用根据本申请各个实施例的用于EDA软件的路径间收敛偏移的方法及存储介质,将芯片中的各条复杂路径按照路径的属性进行分组,并按照先组内路径间偏移收敛,再组间路径间偏移收敛的顺序,使路径间偏移的收敛问题化繁为简,能够实现全部的路径间偏移的快速收敛,并且由于其对时序的要求更为宽松、合理,因此能够适用于更高频率的时钟域。
[0009] 上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。

附图说明

[0010] 在不一定按比例绘制的附图中,相同的附图标记可以在不同的视图中描述相似的部件。附图大体上通过举例而不是限制的方式示出各种实施例,并且与说明书以及权利要求书一起用于对所公开的实施例进行说明。在适当的时候,在所有附图中使用相同的附图标记指代同一或相似的部分。这样的实施例是例证性的,而并非旨在作为本装置或方法的穷尽或排他实施例。
[0011] 图1示出现有技术中用于EDA软件的路径间收敛偏移的方法的示意图。
[0012] 图2示出根据本申请实施例的用于EDA软件的路径间收敛偏移的方法的流程图。
[0013] 图3示出根据本申请实施例的EDA软件静态时序验证中路径间偏移的计算方法示意图。
[0014] 图4示出根据本申请实施例的第一属性为路径的起点时第一分组的示意图。
[0015] 图5示出根据本申请实施例的用于EDA软件的路径间收敛偏移的方法的另一流程图。

具体实施方式

[0016] 为使本领域技术人员更好地理解本申请的技术方案,下面结合附图和具体实施方式对本申请作详细说明。下面结合附图和具体实施例对本申请的实施例作进一步详细描述,但不作为对本申请的限定。
[0017] 本申请中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分。“包括”或者“包含”等类似的词语意指在该词前的要素涵盖在该词后列举的要素,并不排除也涵盖其他要素的可能。本申请中结合附图所描述的方法中各个步骤的执行顺序并不作为限定。只要不影响各个步骤之间的逻辑关系,可以将数个步骤整合为单个步骤,可以将单个步骤分解为多个步骤,也可以按照具体需求调换各个步骤的执行次序。
[0018] 还应理解,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0019] 在利用EDA(Electronic Design Automation,电子设计自动化)软件进行芯片设计时,不同信号沿布线路径到达不同寄存器等元件所经历的布线长度、驱动和负载等不同,因而所花费的时间也可能不同,基于此,不同路径的两个或多个信号在时序上的差异称为路径间偏移或路径间偏斜(在本申请中或以本领域常用的路径间skew代称)。此处所说的信号,在本申请中所指代的可以是数据信号和时钟信号两者中的至少一者。仅以时钟信号为例,假设一个时钟树包含500个端点,如果说该时钟树的路径间偏移为50ps,则意味着时钟树上最长时钟路径和最短时钟路径之间的延时差为50ps,其中,各条时钟路径是以时钟树的起点作为路径的起点,以诸如触发器等同步元件的时钟引脚作为路径的终点。但须知上述示例仅为了更清楚地说明,本申请中的路径不限于时钟路径,也可以是数据路径,因此路径间skew可以是指任意路径的路径间skew。
[0020] 在芯片设计中,路径间skew几乎永远存在,并且从电路设计的角度,通常会对至少部分路径的路径间skew有特定的条件约束,只有在这些条件约束得到满足的情况下,才能保证数字电路的时序逻辑正确运行,因此,需要利用具有静态时序验证功能的EDA软件对布线后的芯片运行静态时序验证,当所得到的布线后实际的路径间skew无法满足上述路径间skew条件约束时,称为发生了路径间skew违例,在这种情况下将可能导致所设计的数字电路无法按照正确的逻辑运行,称为发生了路径间skew违例,需要采取一定的措施对路径间skew违例进行修复,并再次运行静态时序验证,直到所有的路径间skew违例全部消除。上述路径间skew违例修复的过程即为路径间收敛skew的过程,其为芯片设计的重要环节,在给定具体的电路设计和路径间skew的条件约束设定的情况下,路径间skew违例的收敛速度,甚至其最终能否收敛,与收敛偏移的具体方法和步骤密切相关,因此,本申请旨在提供利用EDA软件进行路径间skew收敛的优化方法,以使得通过静态时序验证发现的路径间skew违例能够更快、更好地收敛。
[0021] 图2示出根据本申请实施例的用于EDA软件的路径间收敛偏移的方法的流程图。如图2所示,在步骤201中,在利用EDA软件进行芯片实现时,获取所述EDA软件的静态时序验证结果,在所述静态时序验证结果中存在路径间skew违例的情况下,执行下述步骤102和步骤103。
[0022] 作为示例,下面结合图3对路径间skew的计算方法和在EDA软件中的获取方式进行举例说明。图3示出根据本申请实施例的EDA软件静态时序验证中路径间skew的计算方法示意图。其中,clock_root为时钟树的树根,其作为寄存器register_b1的时钟端CK的触发信号;register_b 为各条路径的起点寄存器,register_e 为各条路径的终点寄存器;combinational为路径上的组合电路。
[0023] 第一步:如果所要计算的路径(path)是异步路径,则需要在EDA软件中为该路径设定set_max_delay与set_min_delay,这样才能在EDA软件中方便地报告出该路径的max path delay(最大路径延迟)和min path delay(最小路径延迟)。其中,max path delay指考虑OCV(On Chip Variation,片上偏差模式)的情景下,最长的路径;min path delay则指考虑OCV的情景下,最短的路径。
[0024] 如果所要计算的路径是同步路径,则无论设定或不设定set_max_delay与set_min_delay,都可以报告出该同步路径的max path delay和min path delay。
[0025] 具体示例如下:
[0026] 设置set_max_delay m1 ‑from register_b ‑to register_e ,以及set_min_delay m2 ‑fromregister_b ‑to register_e ,由于路径间skew是相对值,m1和m2的设定值并没有固定要求,m1和m2的设定以register_b (指代名称中带有register_b的所有的寄存器,对应于图3中的register_b1)到register_e (指代名称中带有register_e的所有的寄存器,对应于图3中的register_e1、register_e2和register_e3)之间的各条路径间不产生路径间skew违例为最终目标。
[0027] 接下来可以在EDA软件中运行静态时序验证,以图3中的path ①与path②为例,可以得到launching clock latency(发射时钟延时)、path ①与path②各自的max arrival(最大到达时间),分别为 和 ,以及path ①与path②各自的min arrival(最小到达时间),分别为 和 ,根据上述参数,按
照如下公式(1‑1)和公式(1‑2),可以进一步得到path ①与path②之间的路径间skew,即,skew①②:
[0028] 公式(1‑1)
[0029] skew①②= max{max path delay①, max path delay②} ‑ min{min path delay①, min path delay②}
[0030] 公式(1‑2)
[0031] 其中,max{ }表示求取大括号中各项的最大值,min{ }表示求取大括号中各项的最小值。
[0032] 在获取了实际的各个路径间skew之后,通过与芯片设计时给出的所要求的各个路径间skew的约束条件进行比较,可以判定路径间skew的违例状况。
[0033] 由此,可以仅设定路径中各条异步路径对应的最大路径延迟和最小路径延迟,来得到各个路径间skew,以便通过静态时序验证识别路径间skew违例状况。在另一些实施例中,也可以设定路径中包括各条同步路径和各条异步路径对应的最大路径延迟和最小路径延迟,来得到各个路径间skew,以便通过静态时序验证识别路径间skew违例状况。
[0034] 接下来,可以在步骤202中,将各个路径按照路径的第一属性进行第一分组,以得到包括多个具有不同的第一属性的第一组。
[0035] 在一些实施例中,第一属性至少包括路径的起点、路径的终点、路径所属的功能区域和路径所属的时钟域中的至少一种。图4示出根据本申请实施例的第一属性为路径的起点时第一分组的示意图。如图4所示,在按照作为第一属性的路径的起点进行第一分组后,可以得到包括3个具有不同的路径的起点的第一组,其中,以实线示出的是路径的起点为register_b1的第一组(称为I组),包含三条路径,分别是path①register_b1‑>register_e1,path②register_b1‑>e2和path③register_b1‑>e3;以点线示出的是路径的起点为register_b2的第一组(称为II组),包含三条路径,分别是path④register_b2‑>register_e2,path⑤register_b2‑>register_e4和path⑥register_b2‑>register_e5;以虚线示出的是路径的起点为register_b3的第一组(称为III组),包含三条路径,分别是path⑦register_b2‑>register_e3,path⑧register_b2‑>register_e4和path⑨register_b2‑>register_e6。
[0036] 在另一些实施例中,当以路径的终点作为路径分组的第一属性时,分组后可以得到包括6个具有不同的路径的终点的第一组,分别是以register_e1为路径的终点的path①register_b1‑>register_e1;以register_e2为路径的终点的path②register_b1‑>register_e2和path④register_b2‑>register_e2;以register_e3为路径的终点的path③register_b1‑>register_e3和path⑦register_b3‑>register_e3;以register_e4为路径的终点的path⑤register_b2‑>register_e4和path⑧register_b4‑>register_e4;以register_e5为路径的终点的path⑥register_b2‑>register_e5;以register_e6为路径的终点的path⑨register_b3‑>register_e6。
[0037] 在其他一些实施例中,还可以按照路径所属的功能区域进行划分,例如,可以将图像处理功能区域中的路径划分为一个第一组,将逻辑运算和差分等不同功能区域中的路径分别划分为不同的第一组,等等,本申请不做具体限制。
[0038] 在一些实施例中,还可以按照诸如路径所属的时钟域、中间过程的寄存器等其他第一属性对各个路径进行第一分组,本申请在此不一一列举。此外,第一分组所得到的第一组的数量本申请不做限制。
[0039] 在步骤203中,根据各个路径的路径间skew状况,对于各个第一组的组内的路径间skew违例进行修复,使得各个第一组的组内的路径间skew收敛,以及对于组内的路径间skew已收敛的各个第一组,对彼此之间的组间的路径间skew违例进行修复,直至各个路径间skew收敛。
[0040] 在一些实施例中,可以在对全部第一组的组内的路径间skew违例修复完成之后,再次进行静态时序验证,根据静态时序验证的结果,对不同的第一组之间存在的路径间skew违例进行修复,直至最终实现各个路径间skew收敛。
[0041] 在另一些实施例中,例如也可以首先选择部分关联较为紧密(例如所属功能区域关联程度较高等),或者,路径间skew违例程度较高的部分第一组进行组内的路径间skew违例修复,修复完成后,再对路径间skew已收敛的各个第一组进行组间的路径间skew违例修复,然后再对其他部分的第一组进行组内和组间的路径间skew违例修复。上述对组内和/或组间的路径间skew违例进行修复的顺序可以根据违例的分布和违例程度来确定,本申请不作具体限制。
[0042] 由此可见,根据本申请实施例的用于EDA软件的路径间收敛skew的方法通过将芯片中的各条复杂路径按照路径的属性进行分组,将求解困难的大规模路径间skew收敛问题分解为两个步骤,首先进行规模较小、复杂度较低的组内路径间skew收敛,在组内路径间skew收敛的情况下在进行组间路径间skew违例的修复,如此,不仅能够加快路径间skew收敛的速度,还可以得到比原有的整体求解的方式更优的、更合理的路径时序解决方案,因此根据本申请实施例的方法更易于在更高频率的时钟域收敛到可行解,同时还避免了由于对时序过于苛刻的要求而导致的芯片面积的浪费。
[0043] 在一些实施例中,例如在路径数量庞大的情况下,考虑到违例修复的可操作性,分组的层次也可以是两层或以上。图5示出根据本申请实施例的用于EDA软件的路径间收敛skew的方法的另一流程图。
[0044] 如图5所示,步骤501和步骤502分别和图2中的步骤201和步骤202相对应,在此不赘述。
[0045] 接下来,在步骤503中,可以在按照路径的第一属性的第一分组的结果的基础上,将各个第一组按照路径的至少一种第二属性进行第二分组 ,以得到各个第一组下的细分的第二子组。在一些实施例中,与第一属性类似,第二属性也至少包括路径的起点、路径的终点、路径所属的功能区域和路径所属的时钟域中的至少一种。第二属性也可以包括中间过程的寄存器等。仅作为示例,例如可以将路径所属的功能区域作为第一属性,将路径的起点作为第二属性,即:首先按照功能区域对各个路径进行第一分组,再将所得到的各个第一组按照路径的起点进行第二分组,从而得到各个第一组对应的第二子组。其他方式不一一列举。
[0046] 在步骤504中,对于各个第一组下的细分的各个第二子组,先对各个第二子组的组内的路径间skew违例进行修复,使得各个第二子组的组内的路径间skew收敛,再对于组内的路径间skew已收敛的各个第二子组,对彼此之间的组间的路径间skew违例进行修复,直至该第一组内的路径间skew收敛。在此基础上,与结合图2描述的方法类似,可以进一步对组内的路径间skew已收敛的各个第一组,对彼此之间的组间的路径间skew违例进行修复,直至各个路径间skew收敛。
[0047] 图5示出的实施例,特别适用于路径较多的情况,在按照单一的属性仍然无法将所有路径划分为合适规模的组的情况下,可以将路径进行更多层次的分组,以便于按照分组层次从低到高的顺序进行先组内,后组间的路径间skew收敛,提高收敛效率,降低收敛难度,并进一步减少芯片面积的浪费。
[0048] 在一些实施例中,无论对于组内还是组间,在进行路径间skew违例修复时,可以按照一定的规则选择违例修复的顺序,例如,路径间skew违例程度越高,进行路径间skew违例修复的优先级越高,或者,根据组内的路径间或组间的路径间的关联程度来设置违例修复的优先级等,从而尽可能地减少迭代次数,提高收敛速度。例如,在路径组数较多且违例情况复杂的情形下,可设定一定的违例梯度,例如可以是10% max skew,并且,第一次迭代修复大于30% max skew的组别;第二次迭代修复大于20% max skew的组别;第三次迭代修复10% max skew的组别;第四次迭代修复小于10% max skew的组别,等等。以上方式仅作为示例,也可以采用其他的方式,本申请不做限制。
[0049] 在一些实施例中,当在存在组间的路径间skew违例的情况下,优选地,可以采用整组修复的方式修复组间的路径间skew违例。整组修复需要分析的数据较少,操作便捷。
[0050] 在另一些实施例中,当要对组内的路径间skew已收敛的两个第一组的组间的路径间skew违例进行修复时,也可以对单组路径的路径间skew进行修复,但优选地,应该在不改变组内的路径间skew的收敛状态的情况下进行组间的路径间skew违例的修复,如此,避免反复迭代而导致的收敛速度降低,或者造成振荡乃至无法收敛的情况。
[0051] 仍以图4为例,假如I组的path②和II组的路径⑤之间有路径间skew违例,path②上有将延时做短的余地,而做短后不会造成I组组内的路径间skew违例,则可以对path②单独操作,从而修复I组II组的组间的路径间skew违例。
[0052] 在一些实施例中,当存在组内的路径间skew违例或组间的路径间skew违例,并且与路径间skew违例相关联的路径有重合部分的情况下,可以通过在相关联的路径的重合部分的起点之前和/或终点之后执行修复动作来对该路径间skew违例进行修复。例如在图2中,path②和path④在p1段重合,如果在收敛I组组内的路径间skew的时候,需要在register_e2的输入端进行动作a1,注意到如果a1设置在p1段,则不仅对path②有影响,还会影响到path④,有可能发生互斥现象(即,调整动作对两个path各自相关联的路径间skew违例的作用相反),即,动作a1可以使I组组内的路径间skew违例状况变好,但同时使得II组组内的路径间skew违例状况变差。在这种情况下,可以找到重合段p1开始的公共点c1(即,重合部分的起点),在c1之前的路径上进行I组组内路径间skew违例的修复。而当path②和path④存在组间的路径间skew违例需要进行修复时,为了不改变已经收敛的II组的组内收敛状态,也应优先考虑在c1点之前调整path②的延时,与此同时,也应考虑尽可能不破坏I组的组内收敛状态,如此,可以有助于尽快尽好的收敛各个路径间skew违例。同样的道理,独立地或附加地,可以通过在相关联的路径的重合部分的终点之后执行修复动作来对该路径间skew违例进行修复(图4中未示出),在此不赘述。
[0053] 此外,在存在路径间skew违例的路径与其他路径的重合路径不止一段的情况下,需要对各个重合路径进行具体分析,选择尽可能促进违例修复同时不破坏相关联的组的组内和/或组间收敛状态的修复点和修复方式。仍然以图4为例,假设以路径的起点分组,在组内的path②与path③存在路径间skew违例,同时组间的path②与path④存在路径间skew违例的情况下,注意到path②与path③存在重合路径s1,path②与path④存在重合路径p1,另外,尽管path③与path⑦没有路径间skew违例,但两条路径存在重合路径p2,因此,当首先要对I组的组内的路径间skew违例进行修复时,为了使得违例修复有效,同时不影响后续I组与path④所属的II组,以及I组与path⑦所属的III组之间的组间修复,应当优先选择在path②的c3至c1段,和/或,path③的c3至c2段两部分进行修复,以避免对其他第一组的组内的路径间skew违例状况产生不期望的影响。上述修复点的选择为示例性的而非限制性的,实际中可根据具体情况来选择,本申请不做限定。
[0054] 具体地,无论对于组内还是组间的路径间skew违例,都可以通过在路径间skew违例相关联的路径上添加或去除缓冲器、添加或去除成对的反相器、增加或者减小线长中的一种或其组合,来实现对路径间skew违例的修复。
[0055] 在一些实施例中,还可以优先选择路径间skew违例相关联的路径中时序裕度更大的路径进行路径间skew违例的修复,以便于在迭代过程中有更大的时序调整的余地,并且对其他路径的影响也更小,从而减少迭代次数,提高收敛速度。
[0056] 在本申请的各种实施例中,各步骤或过程的序号的大小并不意味着执行顺序的先后,各步骤或过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
[0057] 根据本申请的实施例还提供一种非暂时性计算机可读存储介质,其上存储有计算机可执行指令,所述计算机可执行指令由处理器执行时,实现根据本申请各实施例所述的用于EDA软件的路径间收敛偏移的方法。
[0058] 根据本申请实施例的计算机可读存储介质上所存储的计算机可执行指令可以加载并应用于EDA软件中,仅作为示例,上述EDA软件至少可以涵盖芯片设计流程中的物理综合 (Physical Synthesis)部分,通过集成根据本申请实施例的计算机可执行指令,使得其能够利用本申请中的用于EDA软件的路径间收敛偏移的方法对前端设计好的芯片进行布局布线,从而使得各条寄存器‑寄存器之间的路径间skew收敛。
[0059] 在另一些实施例中,加载并应用本申请实施例的计算机可执行指令的EDA软件还可以涵盖芯片设计流程中诸如功能仿真工具、静态时序分析工具和形式验证工具等其他部分,以支持芯片设计实现、仿真验证等各种所需的功能,本申请对此不做限制。应该理解到,根据本申请各个实施例所揭露的非暂时性计算机可读存储介质中存储的计算机可执行指令可以以相对独立的方式实现,例如通过接口的方式与EDA软件中其他一个或多个单元或组件直接耦合或可通信地连接,以实现协同工作。在另一些实施例中,其也可以与EDA软件中其他一个或多个单元或组件结合或者集成为一个整体,例如嵌入EDA软件中的其他组件,以更紧密的耦合方式共同工作。
[0060] 在计算机上加载和执行所述计算机可执行指令时,可以全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机可执行指令可以存储在计算机可读存储介质中,还可以从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,将其从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述非暂时性计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。
[0061] 应理解,在本申请各个实施例中,处理器可以是中央处理单元(Central Processing Unit,简称CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。需要说明的是,处理器还可以集成有内存单元和/或高速缓存单元等用于存储的部件。
[0062] 在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。本领域普通技术人员可以意识到,结合本申请中所公开的实施例描述的方法的各种步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0063] 此外,尽管已经在本申请中描述了示例性实施例,其范围包括任何和所有基于本申请的具有等同元件、修改、省略、组合(例如,各种实施例交叉的方案)、改编或改变的实施例。权利要求书中的元件将被基于权利要求中采用的语言宽泛地解释,并不限于在本说明书中或本申请的实施期间所描述的示例,其示例将被解释为非排他性的。因此,本说明书和示例旨在仅被认为是示例,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内,真正的范围和精神由权利要求以及其等同物的全部范围所指示。
[0064] 以上描述旨在是说明性的而不是限制性的。例如,上述示例(或其一个或更多方案)可以彼此组合使用。例如本领域普通技术人员在阅读上述描述时可以使用其它实施例。另外,在上述具体实施方式中,各种特征可以被分组在一起以简单化本申请。这不应解释为一种不要求保护的公开的特征对于任一权利要求是必要的意图。相反,本申请的主题可以少于特定的公开的实施例的全部特征。从而,权利要求书作为示例或实施例在此并入具体实施方式中,其中每个权利要求独立地作为单独的实施例,并且考虑这些实施例可以以各种组合或排列彼此组合。本申请的范围应参照权利要求以及权利要求赋权的等同形式的全部范围来确定。