一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种芯片输入输出模块排布方法、装置和存储介质与流程

2022-07-02 08:42:52 来源:中国专利 TAG:


1.本公开涉及但不限于芯片技术,更具体地,涉及一种芯片输入输出模块排布方法、装置和存储介质。


背景技术:

2.随着摩尔定律的发展,芯片尺度的进一步缩小,对芯片设计提出了更高的要求。芯片输入输出模块(io:input and output)是芯片设计中重要的组成部分,主要用于将芯片工作所需的外界信号输入及将芯片处理后的信号输出给外界,还有一些其他模块用于辅助完成该工作。常见的芯片io包括通用输入输出模块(gpio:general purpose input/output)、供电电源模块,电源控制模块、端接模块、角落模块、普通填充模块等。由于芯片io通常放置在芯片的边缘,当芯片制程发展到10nm以下时,给芯片io可排布的空间进一步缩小,这给芯片io的排布带来了挑战,芯片io的排布难度进一步增大,排布方案需要反复调整,工作量大,且易于产生人为错误,设计成本高,设计周期长。


技术实现要素:

3.以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
4.本公开实施例提供了一种芯片输入输出模块排布方法,包括:
5.确定芯片周边边界处用于排布输入输出模块的一条或多条连通区域,及芯片上需要通过gpio出线的焊锡凸块;
6.在所述连通区域中自动放置输入输出模块,包括:以与邻近边界的所述焊锡凸块一一对应的方式放置模块组,其中,沿设定的排布方向依次放置模块组的过程中,通过增加或减少模块组内的供电电源模块,使得每一模块组内的gpio与该模块组对应的焊锡凸块的位置偏差保持在允许的范围之内。
7.本公开实施例还提供了一种芯片输入输出模块排布装置,包括处理器以及存储有计算机程序的存储器,其中,所述处理器执行所述计算机程序时能够实现如本公开任一实施例所述的芯片输入输出模块排布方法。
8.本公开上述实施例芯片输入输出模块排布方法和装置,在连通区域中自动放置输入输出模块,其中,以与邻近边界的焊锡凸块一一对应的方式放置模块组,通过增加或减少模块组内的供电电源模块,使得每一模块组内的gpio与该模块组对应的焊锡凸块的位置偏差保持在允许的范围之内,可以自适应地实现芯片输入输出模块的自动排布,使芯片的输入输出模块满足出线合理性和信号完整性要求,极大地提高了排布效率,方便快捷。
9.本公开实施例还提供了一种非瞬态计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其中,所述计算机程序时被处理器执行时能够实现如本公开任一实施例所述的芯片输入输出模块排布方法。
10.在阅读并理解了附图和详细描述后,可以明白其他方面。
附图说明
11.附图用来提供对本公开实施例的理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开的技术方案,并不构成对本公开技术方案的限制。
12.图1是本公开一实施例芯片输入输出模块排布方法的流程图;
13.图2是本公开一实施例芯片上连通区域及输入输出模块排布的示意图;
14.图3是按本公开实施例芯片输入输出模块排布方法得到的排布结果的示意图;
15.图4是图3的局部放大图;
16.图5是本公开一实施例芯片输入输出模块排布方法的流程图;
17.图6是本公开一实施例芯片输入输出模块排布装置的示意图。
具体实施方式
18.本公开描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本公开所描述的实施例包含的范围内可以有更多的实施例和实现方案。
19.本公开的描述中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本公开中被描述为“示例性的”或者“例如”的任何实施例不应被解释为比其他实施例更优选或更具优势。本文中的“和/或”是对关联对象的关联关系的一种描述,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。“多个”是指至少两个,包括两个或多于两个的情况。另外,为了便于清楚描述本公开实施例的技术方案,使用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
20.在描述具有代表性的示例性实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本公开实施例的精神和范围内。
21.本公开一实施例提供了一种芯片输入输出模块排布方法,可以实现输入输出模块的自动排布,如图1所示,所述方法包括:
22.步骤110,确定芯片周边边界处用于排布输入输出模块的一条或多条连通区域,及芯片上需要通过gpio出线的焊锡凸块;
23.步骤120,在所述连通区域中自动放置输入输出模块,包括:以与邻近边界的所述焊锡凸块一一对应的方式放置模块组,其中,沿设定的排布方向依次放置模块组的过程中,通过增加或减少模块组内的供电电源模块,使得每一模块组内的gpio与该模块组对应的焊锡凸块的位置偏差保持在允许的范围之内。
24.本公开实施例中,确定了芯片尺寸后,根据芯片上各个功能模块的预估位置与大小确定剩余空间。然后在剩余空间内的芯片边界处进行芯片io的排布。如图2所示的一个示
a-b-a-b
……
的方式交替放置(也可以称为穿插放置),也可以按照aa-bb-aa-bb
……
的方式交替放置。
28.如图2所示,一个条状的连通区域可以包括多个边上的区域,这些区域的延伸方向是不同的,文中将一个连通区域分为多个直带区域,一个直带区域只在一个方向上延伸,在本示例中,这些直带区域不包括角部的区域。但这只是划分上的方便,将角部区域包括到某一个直带区域中,并不会影响输入输出模块的排布,应视为等同的变换。
29.在图2和图3所示的示例中,以逆时针方向为排布输入输出模块的方向,简称为排布方向。对不同的直带区域,排布方向会呈现出不同。例如,对下边界上的直带区域来说,排布方向是从右至左的方向;对于左边界上的直带区域来说,排布方向是从下至上的方向;对于上边界的直带区域来说,排布方向是从左至右的方向,对于右边界的直带区域来说,排布方向是从上至下的方向。在排布方向确定之后,就可以根据排布方向来确定第一个bump的位置。例如,在图2、图3所示的示例中,下边界上的两个直带区域中,左侧的直带区域的第一个bump是标志为41的bump,其他直带区域可以依此类推。一个gpio的位置可以用该gpio的两个坐标来表示,一个坐标是排布方向上的坐标,另一个坐标是与排布方向垂直的方向上的坐标,而模块组和对应的bump之间的位置偏差可以用模块组内的每一gpio在排布方向上的第一坐标和该bump在排布方向上的第二坐标之差来表示。
30.参见图4,以下边界左侧的直带区域为例,第一个模块组内的gpio与邻近该直带区域的第一个bump 41之间的位置偏差用排布方向上gpio的坐标和bump的坐标之差来表示。作为示例,模块组内的gpio在排布方向上的位置以模块组内第一个gpio的中心点在排布方向(图中箭头所指的方向)上的坐标和第二个gpio的中心点在排布方向上的坐标表示,这两个gpio的坐标均称为第一坐标。而第一个bump 41在排布方向上的位置以该bump 41中心点在排布方向上的坐标表示,该坐标称为第二坐标。但这仅是示例性,例如,可以用gpio上任一点(如左边界或右边界上的点)在排布方向上的坐标来表示gpio的位置,以bump上任一点(如图中最左边的点或最右边的点)在排布方向上的坐标来表示bump的位置,等等。图4所示的示例中,第一个模块组内第一个gpio中心点和第一个bump 41中心点在排布方向(用图下方的箭头来表示)上的坐标相等,两者是对齐的。
31.文中,一个直带区域中的输入输出模块的排布长度是指该输入输出模块放置在该直带区域后在该直带区域的排布方向上的尺寸,而一个模块组的排布长度等于该模块组内所有输入输出模块的排布长度之和,参见图3,图中的lm表示一个模块组的排布长度。由于一个模块组的排布长度并不刚好等于bump间距,因此每放置一个模块组外,gpio和对应的bump之间的位置偏差的绝对值会逐渐变大。使得gpio与对应的bump之间的出线距离变长。如图4所示,在放置到图中最后一个模块组后,模块组内第一个gpio与对应bump之间的位置偏差从0变为图中的d。
32.本实施例在沿设定的排布方向依次放置模块组的过程中,通过增加或减少模块组内的供电电源模块,使得每一模块组内的gpio与该模块组对应的焊锡凸块的位置偏差保持在允许的范围之内。在一个示例中,将位置偏差保持在允许的范围之内是指保证第一坐标和第二坐标之差的绝对值均小于或等于焊锡凸块的间距d的一半,即d/2。即模块组内的第一个gpio的中心点在排布方向上的坐标与该模块组对应的bump中心点在排布方向上的坐标之差小于d/2,模块组内的第二个gpio的中心点在排布方向上的坐标与该模块组对应的
bump中心点在排布方向上的坐标之差也小于d/2。如此可以保证出线的合理性和信号完整性的要求。
33.芯片io的排布如果由人为设计,需要耗费大量时间与精力。特别是当芯片的功能模块平面图(floor plan)尚未确定、需要反复迭代时,排布方案需要反复的调整,需要巨大的工作量。而且易产生人为错误,给芯片设计带来不必要的设计成本,延长设计周期。本实施例芯片输入输出模块排布方法,在连通区域中自动放置输入输出模块,其中,以与邻近边界的焊锡凸块一一对应的方式放置模块组,通过增加或减少模块组内的供电电源模块,使得每一模块组内的gpio与该模块组对应的焊锡凸块的位置偏差保持在允许的范围之内,自适应地实现了芯片输入输出模块的自动排布,且使芯片的输入输出模块满足出线合理性和信号完整性要求,提高了排布效率。
34.在本公开一示例性的实施例中,在一个连通区域中自动放置输入输出模块时,还包括依照以下方式中的部分或全部自动放置输入输出模块:
35.a)在连通区域包括芯片角部的情况下,在每一角部放置一角落模块。如图2所示,3个连通区域均包括芯片角部,在这些芯片角部分别放置一个角落模块7。
36.b)在连通区域的两端分别放置端接模块。如图2所示,每一个连通区域的两端均放置有一个端接模块1。本文中,依照排布方向将处于连通区域开始位置的一端称为连通区域的首端,处于连通区域结束位置的一端称为连通区域的末端,对于直带区域的首端和末端也如此定义。对于直带区域来说,如果该直带区域的首端是所属连通区域的首端,则在该直带区域的首端放置一个端接模块1,如图中下边左侧的直带区域。如该直带区域的末端是所属连通区域的末端,则在该直带区域的末端放置一个端接模块1,如图中左边下侧的直带区域。在其他示例中,如果该直带区域即是一个完整的连通区域,则在该直带区域的首端和末端分别放置一个端接模块1。如果该直带区域不包括所属连通区域的首端和末端(如图中右边的直带区域),则该直带区域不需要放置端接模块1。
37.c)在连通区域中放置至少一电源控制模块。如图2所示,每一连通区域构成一电源域。在每一连通区域中放置一个电源控制模块6以实现本区域的电源控制功能,文中将放置有电源控制模块的直带区域称之为电源控制域。在一个连通区域包括多个直带区域时,电源控制模块可以放置在任一直带区域中。在图2所示的示例中,电源控制模块6是紧邻角落模块7放置,但本公开不局限于此。
38.d)在连通区域中除模块组、角落模块、端接模块和电源控制模块外的其他区域内放置的供电电源模块。请参见图3,在模块组、角落模块7、电源控制模块6、端接模块1之外的其他区域中放置的供电电源模块21、22。需要说明的是,与常规的放置方式相同,本公开实施例在依次放置输入输出模块时,均是一个紧邻着一个放置,中间没有间隙。按这种放置方式放置供电电源模块即可以在连通区域中放置尽可能多的供电电源模块。
39.e)在供电电源模块与其他输入输出模块的间隙内放置普通填充模块。普通填充模块可以有多种不同尺寸,如图3所示,在下边的直带区域的左侧,在供电电源模块21和电源控制模块6之间放置了2种普通填充模块:排布长度相对较大的普通填充模块51和排布长度相对较小的普通填充模块52。而在左边直带区域则是在供电电源模块21和端接模块1之间放置了普通填充模块52,放置普通填充模块可以使得一个连通区域中的所有输入输出模块连成一片。
40.本公开一实施例提供了一种芯片输入输出模块排布方法,通过前一个直带区域分为前段、后段和中段的方式来依次放置各种输入输出模块。参见图3,下边的直带区域的前段、后段和中段分别表示为b1,b2和b3。左边直带区域的前段、后段和中段分别表示为l1,l2和l3。需要说明的是,并不是所有的直带区域都包括完整的三段,可以只包含其中的一部分。以下对直带区域的前段、中段和后段的输入输出模块排布方法的描述,是以直带区域包括相应的段为基础的,并不意味着所有直带区域都是按照三段的方式放置输入输出模块。
41.其中,将所述连通区域分为一个或多个不包括芯片角部的直带区域,在所述直带区域的前段,按以下方式放置输入输出模块:
42.根据所述排布方向确定该直带区域的首端是否所属连通区域的首端;
43.若是所属连通区域的首端,从该直带区域的首端向末端依次放置一端接模块和k个供电电源模块,直到最后放置的供电电源模块到邻近该直带区域的第一个所述bump的位置之间不足以放置下一供电电源模块;
44.若不是所属连通区域的首端,从该直带区域的首端向末端方向依次放置k个供电电源模块,直到最后放置的供电电源模块到邻近该直带区域的第一个所述bump的位置之间不足以放置下一供电电源模块;
45.其中,所述排布方向为逆时针方向或顺时针方向,k为自然数。
46.本实施例中,邻近该直带区域的第一个bump的位置用该bump在排布方向(指该bump邻近的直带区域的排布方向)上的坐标来表示,如图3中的第一个bump 41的位置可以用bump 41的中心点的x坐标表示(在其他示例也可以用bump 41上其他位置的点的坐标表示)。图3所示的示例中,位于下边界的直带区域的前段(b1)从首端开始,依次放置了1个端接模块和10个供电电源模块。
47.在有些情况下,直带区域的首端到邻近该直带区域的第一个bump的位置之间不足以放置一个供电电源模块,此时k=0即不放置供电电源模块。
48.在本实施例的一个示例中,直带区域的中段是对应于邻近该直带区域的bump的区域,如果一个直带区域没有邻近的bump,则该直带区域没有中段。如前所述,在所述直带区域的中段,以与邻近边界的所述焊锡凸块一一对应的方式放置模块组,其中,沿设定的排布方向依次放置模块组的过程中,通过增加或减少模块组内的供电电源模块,使得每一模块组内的gpio与该模块组对应的焊锡凸块的位置偏差保持在允许的范围之内。如果一个直带区域没有邻近的需出线的bump,则该直带区域没有中段,不必进行中段的输入输出模块放置。
49.在该示例中,中段模块放置的步骤包括:
50.在所述直带区域的中段,从前段最后放置的供电电源模块处开始沿所述排布方向依次放置所述模块组,开始放置的模块组是包括m个gpio和n个供电电源模块的第一模块组;
51.每放置一个模块组后,计算已放置模块组的排布长度与i
·
d的误差,在所述误差小于误差阈值的情况下,继续放置一个第一模块组,在所述误差大于或等于误差阈值的情况下,改为放置一个包括m个gpio和n’个供电电源模块的第二模块组,使得所述误差小于误差阈值;在已放置模块组的数目等于邻近该直带区域的所述焊锡凸块的个数时,结束放置所述模块组;
52.其中,i为已放置模块组的数目,d为所述焊锡凸块的间距,m,n为正整数,m为通过一个模块组内的gpio出线的所述焊锡凸块的个数,单个第一模块组的排布长度小于1.5d且大于0.5d。
53.本实施例的模块组分为两种,一种是正常尺寸的模块组即上述第一模块组,第一模块组的排布长度小于1.5d且大于0.5d。在很多情况下,第一模块组的排布长度并不正好等于d,因此在放置多个模块组后,模块组与对应的bump之间的位置偏差会累积而逐渐变大,如果不加以调整,就不能够保持模块组与bump之间一一对应的放置方式。位置偏差在实际排布时以误差表示。因此,在误差大于误差阈值时,需要放置用于调整位置偏差的第二模块组。在第一模块组的排布长度大于d时,n’可以取n-1,即减少一个供电电源模块;在第一模块组的排布长度小于d时,n’可以取n 1,即增加一个供电电源模块,从而使得误差变成小于误差阈值的值,在其他示例中,也可以减少或增加更多数量的供电电源模块来对位置偏差加以调整。
54.在图3所示的示例中,处于芯片下边界的直带区域中,一个模块组包括2个gpio和一个供电电源模块。中段的第一个模块组内第1个gpio的中心点和邻近该直带区域的第一个bump 41的中心点在排布方向上基本对齐,该模块组内第2个gpio与第一个bump 41的位置偏差较大。误差可以用组内第2个gpio的左侧边在排布方向上的坐标与bump 41的中心点在排布方向上的坐标之差表示,误差阈值可以取为0.5d。在放置多个模块组后,该误差累积到大于或等于误差阈值时,表示模块组内第2个gpio的左边界与该模块组对应的bump的中心点在排布方向上的坐标之差已经超过bump间距的一半,此时取消下一个放置的模块组内的供电电源模块,使得该误差变小。图中箭头所指位置取消了一个供电电源模块,将两个模块组内的gpio连续放置以调整位置偏差。如图所示,再继续放置下一模块组时,恢复为放置包括2个gpio和一个供电电源模块的模块组。
55.误差阈值的大小与邻近该直带区域的第一个bump的位置以及用于表示误差的坐标有关。例如,在第一个bump的位置用该bump中心点的坐标表示,或用该bump上最右侧的点的坐标表示时,误差阈值可以取不同的值。误差阈值的取值能够使得每一模块组内的gpio与该模块组对应的焊锡凸块的位置偏差保持在允许的范围之内即可。
56.本实施例的一个示例中,在所述连通区域中自动放置输入输出模块,还包括:在所述直带区域的后段,按以下方式放置输入输出模块:
57.从中段最后放置的所述模块组处开始依次放置l个供电电源模块,直到最后放置的供电电源模块到电源控制模块或端接模块或该直带区域的末端之间不足以放置下一供电电源模块,l为自然数;
58.若该直带区域的末端为所属连通区域的末端,在该直带区域末端放置一端接模块;若该直带区域为所属连通区域的电源控制域,在该直带区域的末端或紧邻端接模块处放置一电源控制模块;
59.在后段放置的供电电源模块和其他输入输出模块之间存在间隙时,在所述间隙放置普通填充模块。
60.如上文所述,有些直带区域需要放置端接模块,有些不需要。有些直带区域需要放置电源控制模块,有些不需要。也可能有些直带区域既不需要放置端接模块,也不需要放置电源控制模块。因此在确定可以放置的供电电源模块的数目时,需要考虑直带区域是否需
要放置端接模块和电源控制模块。本实施例在直带区域的后段需要放置端接模块和电源控制模块时,将端接模块放在直带区域的末端,将电源控制模块紧邻该端接模块放置,在中段最后放置的模块组到该电源控制模块之间的剩余区域中放置供电电源模块。在直带区域的后段只需要放置端接模块时,将端接模块放在直带区域的末端,在中段最后放置的模块组到该端接模块之间的剩余区域中放置供电电源模块。在直带区域的后段只需要放置电源控制模块时,将电源控制模块放置在直带区域的末端,在中段最后放置的模块组到该电源控制模块之间的剩余区域中放置供电电源模块。如果剩余区域不足以放下供电电源模块,则l=0,即不在该直带区域的后段放置供电电源模块。
61.本实施例在所述连通区域中自动放置输入输出模块之前,还包括:确定输入输出模块的排布参数,所述排布参数包括以下部分或全部:
62.每一种输入输出模块的尺寸,根据输入输出模块的尺寸(如长、宽)可以确定在直带区域中排布的输入输出模块的排布长度;
63.焊锡凸块的间距;
64.需要从直带区域出线的焊锡凸块的数目信息;这个数目信息可以是直带区域邻近的所述焊锡凸块的数目(即邻近直带区域的一排或一列焊锡凸块中需要从gpio出线的焊锡凸块的数目),也可以是需要从一个直带区域出线的所有焊锡凸块的个数。
65.直带区域邻近的第一个所述焊锡凸块的位置信息;
66.模块组内不同供电电源模块的交替频率;例如一个模块组内有两种不同电平的供电电源模块a和b时,连续的多个模块组内的供电电源模块可以按a-b-a-b-a-b-a-b
……
的方式交替,也可以按aa-bb-aa-bb
……
的方式交替。
67.模块组内的供电电源模块的数目;
68.调整位置偏差时增加或减少的供电电源模块的种类。例如一个模块组内有两种不同电平的供电电源模块a和b,两种供电电源模块的排布长度也不相同,此时可以设配置增加或减少的供电电源模块为a或b。
69.本实施例的一个示例中,所述在所述连通区域中自动放置输入输出模块之后,所述方法还包括:
70.检查已排布的输入输出模块之间是否满足约束规则,所述约束规则包括同一电平的供电电源模块之间的间距不超过设定的距离阈值;
71.在不满足约束规则的情况下,调整参数重新进行排布,调整的所述参数包括以下至少一种:模块组中不同供电电源模块的交替频率、模块组内的供电电源模块数目,调整位置偏差时增加或减少的供电电源模块的种类。
72.本实施例的一个示例中,在芯片上所有的连通区域完成输入输出模块的排布之后,可以生成用于表示输入输出模块排布方式的表格,记录在连通区域中放置的每一个输入输出模块的种类和位置,该表格可以转换为芯片设计软件可以识别的文件,即形成模块排布顺序(pad order)的设计文件。
73.本公开实施例芯片输入输出模块排布方法可以自适应地实现芯片输入输出模块的自动排布,使芯片的输入输出模块满足出线合理性和信号完整性要求,极大地提高了排布效率,方便快捷。
74.本公开一实施例还提供了一种在芯片的直带区域排布输入输出模块的方法,如图
5所示,包括:
75.步骤210,输入用排布参数;
76.这里的排布参数包括芯片的设计参数,例如,输入输出模块的尺寸列表、直带区域首端的x坐标x
len
或y坐标y
len
,邻近该直带区域的第一个bump的x坐标x
fp
或y坐标y
fp
,需要通过该直带区域出线的bump数目(也即该直带区域需要包括的gpio数目)n
total
,bump间距p
bump
等。排布参数还可以包括排布时的一些设置,例如,模块组内不同供电电源模块的交替频率;模块组内的供电电源模块的数目;调整位置偏差时增加或减少的供电电源模块的种类。
77.下面图3中芯片下边界的直带区域(包括前段b1,中段b2和后段b3)为例描述排布过程,该直带区域中输入输出模块的排布方向为x方向,使用的是直带区域首端的x坐标x
len
,及邻近该直带区域的第一个bump的x坐标x
fp

78.步骤220、在直带区域的前段放置输入输出模块,直到邻近直带区域的第一个bump的位置;
79.由于信号完整性与走线合理性的考虑,gpio需要离bump距离尽可能近,因此在邻近该直带区域的第一个bump与最后一个bump以外的空余空间可以用来放置隔绝电源域的端接模块和维持供电稳定的供电电源模块。
80.求得可以放置的供电电源模块的数目
[0081][0082]
式中x
vdd
为供电电源模块的x尺寸,底角括号表示取整,x
endcap
为端接模块的x尺寸。
[0083]
同时求得前段放置的输入输出模块的结束位置的x坐标x
loc

[0084][0085]
该x坐标将作为在中段放置输入输出模块的开始位置,即是从前段最后放置的模块处开始放置中段的输入输出模块。
[0086]
在供电电源模块有两种以上电平模式的情况下,本实施例要求同一种电平的供电电源模块的间距小于固定值,以保证供电稳定,因此交替放置两种或以上电平供电电源模块。
[0087]
步骤230,在直带区域的中段依次放置模块组,并进行误差的累积;
[0088]
在中段放置的模块组与邻近该直带区域的bump一一对应,一个模块组内的gpio到该模块组对应的bump的距离小于到其他bump的距离,一个模块组内的gpio与该模块组对应的bump基本对齐,以保证信号完整性与出线合理性,由于gpio需要附近的供电电源模块为其供电,且通常两种电平模式都需要,因此本实施例以n个gpio与供电电源模块为一组进行放置,图3所示的示例采用了2个gpio和一个供电电耗模块。
[0089]
在沿排布方向依次放置模块组的过程中,进行误差的累积。因为放置的过程由于一个模块组的排布长度与bump间距不是恰好相等的,产生的偏移会不断累积,后方的bump可能会产生无法正常出线的情况。因此每放置一个模块组后,需要进行误差的累积,该累积的误差记为ea。
[0090]
在本实施例中,在放置第一个模块组时会产生一个初始误差,此时的误差e
a,1
等于第一个模块组内第2个gpio的左侧边(左侧边是示例中作为gpio在排布方向的末端的侧边,
在其他示例,该侧边也可以是上侧边、右侧边等)的x坐标与第一个bump 41中心点的x坐标之差。
[0091]
在进行位置偏差的调整之前,模块组包括n个gpio和1个供电电源模块,每增加一个模块组,误差ea的增加值等于模块组(即上文中的第一模块组)的排布长度与bump间距之差,用e表示为:
[0092]
e=n*x
gpio
x
vdd-p
bump
[0093]
式中p
bump
表示bump间距,x
gpio
表示一个gpio的排布长度,n为一个模块组内的gpio的数目,本实施例中,n=2。
[0094]
本实施例在进行位置偏差的调整时,会放置一个包括n个gpio的模块组,此时误差ea的增加值等于n个gpio的排布长度与bump间距之差。用e

表示为:
[0095]e′
=n*x
gpio-p
bump
[0096]
放置了i个模块组后累积的误差e
a,i
为:
[0097]ea,i
=e
a,i-1
n*x
gpio-p
bump
[0098]
式中,e
a,i-1
为放置了i-1个模块组后累积的误差。在前述实施例中,该累积的误差表示为已放置模块组的长度与i
·
d的误差,i为已放置模块组的个数,d为bump间距,两种表示方式是等价的。
[0099]
在本步骤中,还不断更新放置完当前模块组后,已放置模块组末端的坐标x
loc,i
,直至gpio数量达到n
total

[0100]
x
loc,i
=x
loc,i-1-n*x
gpio-x
vdd
[0101]
式中x
loc,i-1
为放置第i个模块组后已放置模块组末端的坐标,x
gpio
为gpio的x尺寸。
[0102]
步骤240,判断已放置的gpio的数目是否达到需要放置的gpio的数目,如果达到,执行步骤280,如果没有达到,执行步骤250;
[0103]
此时是判断已放置的gpio的数目是否达到需要放置的gpio的数目,在其他实施例中,也可以判断已放置的模块组的数目是否达到需要放置的模块组的数目(直带区域邻近的一排或一列bump中需通过gpio出线的bump的数目),两者是等价的。
[0104]
步骤250,判断累积的误差是否大于或等于误差阈值?如果大于,执行步骤260,如果不大于,执行步骤270;
[0105]
本步骤在放置第i个模块组后,将e
a,i
与设定的误差阈值比较,本实施例的误差阈值设定为0.5*p
bump
;则有:
[0106]
若e
a,i
≥0.5*p
bump
,执行步骤260;应注意的是,在图3所示的示例中,此时第i个模块组内第2个gpio的中心点的坐标与对应bump中心点的坐标之差(即模块组内gpio与该模块组对应的bump的位置偏差)并没有超过误差阈值,仍保持在允许的范围之内。在其他示例中,如果会导致位置偏差超出允许的范围,可以调整误差阈值或者第一个模块组的放置位置使得位置偏差不超出允许的范围。
[0107]
若e
a,i
《0.5*p
bump
,执行步骤270。
[0108]
步骤260,将包含2个gpio和1个供电电源模块的模块组作为下一个要放置的模块组,返回步骤230继续放置模块组;
[0109]
本实施例包含2个gpio和1个供电电源模块的模块组即第一模块组。在其他实施例中,第一模块组包含的gpio的数目和供电电源模块的数目均可以变化。
[0110]
步骤270,将包含2个gpio的模块组作为下一个要放置的模块组,返回步骤230继续放置模块组;
[0111]
本实施例包含2个gpio的模块组即第二模块组,由于本实施例的第一模块组的排布长度大于bump间距,因此在调整位置偏差时,是减少了模块组内的一个供电电源模块。如果第一模块组的排布长度小于bump间距,则可以增加模块组内的供电电源模块来调整位置偏差。
[0112]
返回步骤230放置包含2个gpio的模块组后,累积的误差将小于误差阈值,因而调整后再放置的模块组将是第一模块组。
[0113]
步骤280,在直带区域的后段放置输入输出模块,直至占满直带区域的空间。
[0114]
以图3中处于下边界的直带区域为例,当达到需要放置的gpio数目时,计算放置角落模块,电源控制模块所占的排布长度,将直带区域剩余的排布长度减去角落模块,电源控制模块所占的排布长度后,所得的剩余长度整除供电电源模块的排布长度,得到可放置的供电电源模块的最大数目。再将这部分供电电源模块所占的排布长度减去,所得的剩余长度从大到小整除普通填充模块,迭代求解直至最小的普通填充模块无法填充剩余空间,用公式表示如下:
[0115][0116][0117][0118]
式中为后段放置的供电电源模块个数,x
corner
为角落模块的x尺寸,x
poc
为电源控制模块的x尺寸,为较大的填充模块的个数,为较大的填充模块的x尺寸,为较小的填充模块的个数,为较小的小填充模块的x尺寸。
[0119]
本实施例仅以两种大小填充模块为例,实际有多种大小的填充模块可采用类似公式迭代求解。
[0120]
上述公式是芯片左下角为坐标原点为例得到的,虽然本示例不将角落模块占据的空间计入直带区域的范围,但在计算后段的可放置供电电源模块的剩余空间时使用到角落模块的x尺寸。
[0121]
步骤290,判断放置的输入输出模块是否约束规则,如果满足,结束,如果不满足,执行步骤300;
[0122]
在完成一次排布后,检查已放置的输入输出模块是否满足约束规则,在一个示例中,约束规则包括但不限于:同一电平的供电电源模块之间的间距不超过设定的距离阈值。
[0123]
步骤300,调整排布参数,返回步骤220重新在直带区域中放置输入输出模块。
[0124]
本步骤可以调整的排布参数包括但不限于以下至少一种:模块组中不同供电电源模块的交替频率、模块组内的供电电源模块的数目,调整位置偏差时增加或减少的供电电源模块的种类。调整排布参数后,重新在所述直带区域进行输入输出模块的排由,最终得到
该芯片io自动排布结果,并可转换为对应的设计方案,即pad order。
[0125]
本实施例的芯片输入输出模块排布方法的示例如图3所示,选取了芯片的一角作为示例,包括下边界的一个直带区域和左边界的一个直带区域。其中芯片角部的三个bump不需要连接信号,排布后各输入输出模块在直带区域的前段、中段和后端的自动排布结果如图所示,中说明。可以看出该自动排布结果很好的实现了预期设计要求,且整个流程所需的时间大大减少,极大地提高了设计效率。
[0126]
本公开实施例自适应的芯片输入输出模块自动排布方法,无需人为干预即可快速生成芯片设计所需的io布局设计文件。该方法能够快速响应设计迭代,缩短设计周期,还具有兼容性广、可拓展性强的优势。同时,芯片尺寸与gpio尺寸的更替对方案无影响,未来的新制程与新gpio的导入设计只需改变输入参数、调整部分函数逻辑即可,很好地适应于集成电路产业的飞速发展。
[0127]
本公开实施例采用自适应的算法,将芯片的io排布所需的信息与规则提取出数据模型,并使用软件依据这些规则与输入参数进行自动化的运算,以计算累积误差的方法确定最重要的gpio与电源管理模块的排布顺序,使得排布结果进行自适应,来满足io的信号完整性与出线合理性,保证io正常工作。
[0128]
本公开实施例可以实现对输入输出模块的自动化排布,使芯片的输入输出模块满足出线合理性和信号完整性要求,极大地提高了设计效率,方便快捷,可用于所有芯片种类与芯片制程的输入输出模块排布,本公开自适应方法对于不同的输入输出模块列表可以进行排布逻辑的调整。
[0129]
如图6所示,本公开一实施例还提供了一种芯片输入输出模块排布装置,包括处理器50以及存储有计算机程序的存储器60,处理器50执行计算机程序时能够实现本公开任一实施例所述的芯片输入输出模块排布方法。本实施例的处理器可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0130]
本公开一实施例还提供了一种非瞬态计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序时被处理器执行时实现如本公开任一实施例所述的芯片输入输出模块排布方法。
[0131]
在上述任意一个或多个示例性实施例中,所描述的功能可以硬件、软件、固件或其任一组合来实施。如果以软件实施,那么功能可作为一个或多个指令或代码存储在计算机可读介质上或经由计算机可读介质传输,且由基于硬件的处理单元执行。计算机可读介质可包含对应于例如数据存储介质等有形介质的计算机可读存储介质,或包含促进计算机程序例如根据通信协议从一处传送到另一处的任何介质的通信介质。以此方式,计算机可读介质通常可对应于非暂时性的有形计算机可读存储介质或例如信号或载波等通信介质。数据存储介质可为可由一个或多个计算机或者一个或多个处理器存取以检索用于实施本公开中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可包含计算机可读介质。
[0132]
举例来说且并非限制,此类计算机可读存储介质可包括ram、rom、eeprom、cd-rom或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可用来以指令或数据结构的形式存储所要程序代码且可由计算机存取的任何其它介质。而且,还可以将任何连接称作计算机可读介质举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(dsl)或例如红外线、无线电及微波等无线技术从网站、服务器或其它远程源传输指令,则同轴电缆、光纤电缆、双纹线、dsl或例如红外线、无线电及微波等无线技术包含于介质的定义中。然而应了解,计算机可读存储介质和数据存储介质不包含连接、载波、信号或其它瞬时(瞬态)介质,而是针对非瞬时有形存储介质。如本文中所使用,磁盘及光盘包含压缩光盘(cd)、激光光盘、光学光盘、数字多功能光盘(dvd)、软磁盘或蓝光光盘等,其中磁盘通常以磁性方式再生数据,而光盘使用激光以光学方式再生数据。上文的组合也应包含在计算机可读介质的范围内。
[0133]
举例来说且并非限制,可由例如一个或多个数字信号理器(dsp)、通用微处理器、专用集成电路(asic)现场可编程逻辑阵列(fpga)或其它等效集成或离散逻辑电路等一个或多个处理器来执行指令。因此,如本文中所使用的术语“处理器”可指上述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。另外,在一些方面中,本文描述的功能性可提供于经配置以用于编码和解码的专用硬件和/或软件模块内,或并入在组合式编解码器中。并且,可将所述技术完全实施于一个或多个电路或逻辑元件中。
[0134]
本公开实施例的技术方案可在广泛多种装置或设备中实施,包含无线手机、集成电路(ic)或一组ic(例如,芯片组)。本公开实施例中描各种组件、模块或单元以强调经配置以执行所描述的技术的装置的功能方面,但不一定需要通过不同硬件单元来实现。而是,如上所述,各种单元可在编解码器硬件单元中组合或由互操作硬件单元(包含如上所述的一个或多个处理器)的集合结合合适软件和/或固件来提供。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献