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

布局方法与计算机系统与流程

2023-02-19 13:40:16 来源:中国专利 TAG:


1.本揭露是有关于集成电路设计的布局方法,可以解决全局布线壅塞以及局部布线壅塞。


背景技术:

2.在现代超大规模集成(very-large-scale integration,vlsi)设计中,单元布局(cell placement)仍然是物理设计中最重要的阶段。布局结果会直接影响晶片的线长、可布线性(routability)和时序性。尽管在过去的几十年里已经开发了许多演算法,但布局仍然是最具挑战性的问题,并且有很大的空间改进。
3.为了降低设计复杂度,许多研究将布局划分为三个阶段,分别包括全局布局(global placement,gp)、合法化(legalization,lg)和详细布局(detailed placement,dp)。全局布局的目标是在放置区域上放置标准单元,同时优化一些特定的问题,例如线长和可布线性,其结果对其余阶段具有关键影响。布线壅塞(routing congestion)是当代全局布局演算法的主要考量,因为布局品质对布线期间的可布线性有直接影响。然而,在布局中考虑可布线性是相当复杂的,因为布线壅塞可能来自不同的来源,称为全局(global)布线壅塞和局部(local)布线壅塞。图1绘示了一个范例来说明不同原因引起的布线壅塞。每一种情境110、120、130绘示了在区域中有25个绕线网格(g-cell),每个绕线网格中可能会产生绕线壅塞,而一个绕线壅塞区域可能包含一个或多个壅塞的绕线网格。具体来说,情境110包含四个产生绕线壅塞的绕线网格(用点状的背景来表示),情境120包含三个产生绕线壅塞的绕线网格,并且情境130包含两个产生绕线壅塞的绕线网格。我们将情境110和120视为局部布线壅塞,因为它们可以通过将单元从壅塞区域移开来解决。然而,情境130中的壅塞不能通过移动单元来消除,这被认为是全局布线壅塞。为了能够解决布局期间的布线壅塞,我们必须分别处理全局和局部布线壅塞。


技术实现要素:

4.本揭露的实施例提出一种集成电路设计的布局方法,用于计算机系统。布局区域被划分为多个网格,多个单元组成多个连线,每一个连线连接至少两个单元。此布局方法包括:将单元当作多个群,并且从下至上在多个层级中的每一个层级合并群;进行初始化的布局;以及从上至下在每一个层级中解开群并执行第一布局程序。第一布局程序包括:为每一个连线建立一个包围盒,包围盒覆盖第一网格;对于每一个连线,根据包围盒与第一网格的重叠面积以及第一网格的溢出值计算一绕线壅塞惩罚;以及根据连线的绕线壅塞惩罚建立第一目标函数并决定群的位置使得第一目标函数有极值。
5.在一些实施例中,合并群的步骤包括:产生一新群以包含第一群与第二群;以及至少将第一群的内部连线强度、第二群的内部连线强度以及第一群与第二群之间的一分数相加以得到新群的内部连线强度,其中分数与第一群以及第二群之间的连线的分支数负相关。
6.在一些实施例中,当第一群或第二群属于层级中的一最低层级时,对应的内部连线强度为0。上述的分数也与第一群的面积以及第二群的面积负相关。
7.在一些实施例中,第一布局程序还包括:更新每一个网格的溢出值;以及对于每一个群,取得网格中与群有最大重叠的第二网格,根据第二网格的溢出值以及群的内部连线强度计算膨胀比例,并根据膨胀比例调整群的大小。
8.在一些实施例中,第一布局程序还包括:在计算膨胀比例时,将对应的群的内部连线强度乘上一权重,此权重与目前层级正相关。
9.在一些实施例中,膨胀比例是根据以下数学式所计算。
[0010][0011][0012][0013]
其中l表示目前层级,表示在目前层级的第i个群,表示第i个群的膨胀比例,n
l
表示层级的数目。γ
min
、γ
max
、o
t
以及η
t
为预设的实数。表示第i个群所对应的第二网格的溢出值,表示第i个群的内部连线强度,o
max
为网格中的最大溢出值,η
max
表示群的最大内部连线强度。
[0014]
在一些实施例中,布局方法还包括:在第一布局程序之前执行第二布局程序。第二布局程序包括:对于每一个群,计算群的膨胀比例,并根据膨胀比例调整群的大小;以及建立第二目标函数并决定群的位置使得第二目标函数有极值,其中第二目标函数不包括绕线壅塞惩罚。
[0015]
在一些实施例中,每一个连线的绕线壅塞惩罚是由根据以下数学式所计算。
[0016][0017]
其中ci表示连线中第i个连线的绕线壅塞惩罚,bi表示第i个连线所对应的包围盒,g表示网格所形成的集合,gk表示网格中被包围盒bi所覆盖的网格。ρk表示网格gk与包围盒bi之间的重叠面积与包围盒bi的面积之间的比例,πk表示网格gk的溢出值。
[0018]
以另一个角度来说,本揭露的实施例提出一种计算机系统,其包括:用以将单元当作多个群,并且从下至上在多个层级中的每一个层级合并这些群的程序模块;用以进行初始化的布局的程序模块;以及用以从上至下在每一个层级中解开群并执行第一布局程序的程序模块。
附图说明
[0019]
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图示
作详细说明如下。
[0020]
图1绘示了一个范例来说明不同原因引起的布线壅塞;
[0021]
图2是根据一实施例说明单元与连线的示意图;
[0022]
图3是根据一实施例绘示布局方法的流程图;
[0023]
图4绘示了步骤301的详细流程图;
[0024]
图5是根据一实施例绘示高层级与低层级的布局结果以及对应的壅塞图;
[0025]
图6是根据一实施例绘示了步骤303的详细流程图;
[0026]
图7是根据一实施例绘示连线与包围盒的示意图;
[0027]
图8是根据一实施例绘示连线与壅塞区域的示意图;
[0028]
图9是根据一实施例绘示包围盒与网格重叠的示意图。
[0029]
【符号说明】
[0030]
110,120,130:情境
[0031]
201~204:单元
[0032]
211~214:连线
[0033]
301~303,401~409,601~610:步骤
[0034]
501,530:布局区域
[0035]
520,540:壅塞图
[0036]
710:连线
[0037]
721~724:接脚
[0038]
730:包围盒
[0039]
810,820:情境
[0040]
821~823:壅塞区域
[0041]
831~833:连线
[0042]
901~904:网格
[0043]
910:包围盒
具体实施方式
[0044]
关于本文中所使用的“第一”、“第二”等,并非特别指次序或顺位的意思,其仅为了区别以相同技术用语描述的元件或操作。
[0045]
图2是根据一实施例说明单元与连线的示意图。图2绘示了四个单元201~204,这些单元201~204组成了连线(net)211~214。每个连线用以连接单元201~204上的接脚(pin),每个连线会连接至少两个单元。例如,连线211用以连接单元201的一个输入接脚与单元202的一个输出接脚,以此类推。在此,连线的分支数定义为所连接的接脚数,例如连线211的分支数为2,而连线214的分支数为3。在此实施例中单元201~204为逻辑门,但在其他实施例中也可以为正反器或其他任意合适的电路。
[0046]
在此提出的布局方法,是要在一个布局区域中散布所有的单元,也就是决定每个单元的位置。图3是根据一实施例绘示布局方法的流程图。请参照图3,在此提出的布局方法是基于多层级的框架,共包括了三个步骤301~303。步骤301亦称为粗化(coarsening),用以把所有的单元当作多个群(cluster),并且从下至上在每个层级中合并这些群。在步骤
302中,进行初始化的布局,在此可以采用任意已知的做法,例如任意的二次布局(quadratic placement)演算法。步骤303亦称为去粗化(uncoarsening)或细化(refinement),用以从上至下在每个层级中解开群并决定每个群的位置。以下将举实施例详细说明。
[0047]
图4绘示了步骤301的详细流程图。在步骤401,建立设计阶层树(design hierarchy tree,dht),此步骤可以参照论文lin,jai-ming,szu-ting li,and yi-ting wang."routability-driven mixed-size placement prototyping approach considering design hierarchy and indirect connectivity between macros."proceedings of the 56th annual design automation conference 2019。在此用l来表示层级,此层级被初始化为0。在层级0,每个单元被当作一个群,表示为
[0048]
在此要被合并的两个群分别表示为以及而产生的新群则表示为在步骤402,产生一个新群以包含群以及群其中群以及群之间具有最大的分数计算方式如以下数学式1。
[0049]
[数学式1]
[0050][0051]
其中表示群的面积,表示群的面积。a
avg
表示所有群的平均面积。μ为预设(可由使用者决定)的实数。e
j,k
表示连接群以及群的连线所形成的集合。em表示连接群以及群的其中一个连线。d(em)表示连线em的分支数。较大的分数表示群有较小的面积以及比较强的连接强度(数学式1中的第二个项次)。在此,分数与群的面积负相关。特别的是,分数与连线的分支数d(em)负相关,这是因为如果一个连线的分支数比较小,则表示对应的两个群只依靠比较少的线路连接,因此两者之间的连接强度比较强;相反的如果连线的分支数比较大,表示对应的两个群可以透过多条线路连接,因此两者之间的连接强度比较弱。
[0052]
在步骤403,计算新群的内部连线强度(internal connectivity intensities,ici),如以下数学式2所示。
[0053]
[数学式2]
[0054][0055]
其中表示新群的内部连线强度,表示群的内部连线强度,表示群的内部连线强度。以另一个角度来说,将群的内部连线强度、群的内部连线强度以及这两个群之间的分数相加可得到新群的内部连线强度。当群属于最低层级
(l=0)时,群的内部连线强度为0,也就是值得注意的是,较大的分数会产生较大的内部连线强度
[0056]
在步骤404,判断是否停止合并。在一些实施例中由于群的数目会越来越小,因此可以根据群的数目来判断是否要继续合并。例如,可以判断n
l
/n

l
》α是否成立,其中n
l
为群在层级l的初始数目,n

l
为群的目前数目,α为使用者决定的实数(例如为1.7),如果上述不等式成立则停止合并(进行步骤408),否则继续合并(进行步骤405)。
[0057]
在步骤405中,判断是否没有合适的群可以进行合并,基于设计阶层树的演算法,在此只会挑选设计阶层树中同一个阶层的群。如果步骤405的结果为是,在步骤406中修改设计阶层树,接着进行步骤407,处理设计阶层树中新的阶层。如果步骤405的结果为否,则回到步骤402。关于步骤405~407的详细内容可以参照设计阶层树的论文,在此不再详细赘述。
[0058]
在步骤408中,判断是否停止建立新的层级。在一些实施例中也可以根据群的数目来判断是否要停止,例如可以判断n

l
<β是否成立,其中β为使用者决定的实数,在此实施例中β=0.05
×
n0。如果此不等式的结果为是,则结束流程,否则进行步骤409,进行下一个层级,也就是l=l 1。
[0059]
在此实施例是采用设计阶层树来合并群,但在其他实施例中也可以采用任意的演算法来合并群,只要在每个层级计算群的内部连线强度都符合本揭露的精神。换言之,在合并群时也可以采用不同于数学式1的其他分数计算。除此之外,在合并群时所采用的分数以及计算内部连线强度时所采用的分数也可以不相同,在计算内部连线强度时只要分数与两个群之间的连线强度正相关就符合本揭露的精神。更进一步来说,在上述的实施例是用连线的分支数来表示连线强度,而连线的分支数与连线强度负相关,本领域具有通常知识者当根据上述揭露而设计出不同的分数
[0060]
接下来要进行去粗化,在一些已知技术中为了避免局部布线壅塞会使用膨胀(inflation)的技术来增加单元的大小,借此单元可能会从壅塞的区域中移出,这样的作法需要仰赖壅塞图(congestion map),壅塞图是根据网格的溢出值(overflow)来决定。然而,在高层级的壅塞图并不准确。图5是根据一实施例绘示高层级与低层级的布局结果以及对应的壅塞图。请参照图5,布局区域510绘示了在高层级的布局结果,壅塞图520也是在高层级计算的结果。此外,布局区域530是在低层级的布局结果,壅塞图540是在低层级计算的结果。从图5可以看出壅塞图520与壅塞图540有很大的差异,这是因为在群内部的壅塞是不可知的。在此实施例中,是根据壅塞图以及群的内部连线强度来执行膨胀,借此可以减少局部布线壅塞。
[0061]
图6是根据一实施例绘示了步骤303的详细流程图。在步骤601,更新壅塞图,此壅塞图包含了每个网格的溢出值,溢出值是定义为一个网格所需要的线路数目减去此网格所能提供的线路数目,溢出值越大则表示此网格越壅塞,每个网格的溢出值都会根据目前的布局而被更新。本领域具有通常知识者当可理解壅塞图,在此不详细赘述。
[0062]
在步骤602,解开目前层级l中的群。在步骤603,根据壅塞图与内部连线强度计算每个群的膨胀比例。具体来说,膨胀比例可以根据以下数学式3~5来计算。
[0063]
[数学式3]
[0064][0065]
[数学式4]
[0066][0067]
[数学式5]
[0068][0069]
其中表示群的膨胀比例。由于群可能会重叠多个网格,在此仅考虑和群有最大重叠的网格,表示为g,而表示网格g的溢出值。表示正规化的溢出值,o
max
表示所有网格中最大的溢出值。表示群的内部连线强度,表示正规化的内部连线强度,η
max
表示所有群中最大的内部连线强度。此外,o
t
、η
t
、γ
min
、γ
max
为预设(可由使用者决定)的实数,n
l
表示所有层级的数目。在一些实施例中是限制膨胀比例介于1至2之间,因此可设定γ
min
=1,γ
max
=2。在一些实施例中,η
t
为在目前层级l中所有群的内部连线强度的平均的两倍。
[0070]
值得注意的是,数学式3中的l/n
l
为一权重,此权重与目前层级l正相关,由于在去粗化的过程中目前层级l是逐渐减少,因此权重l/n
l
是从最高层级的1一直递减到最低层级的0(因为在最低层级时每个群只包含一个单元)。权重l/n
l
被设定为递减是因为在高层级的时候一个群具有更多的内部连线强度,且溢出值并不准确。相反的,在较低层级时一个群具有较少的内部连线强度,而溢出值较准确。在计算膨胀比例以后,便可以根据此膨胀比例来调整群的大小(即在布局区域中所占据的面积)。
[0071]
在步骤604中,执行以线路长所驱动的分散方法。具体来说,可建立一目标函数并决定群的位置使得此目标函数有极值,此目标函数可表示为以下数学式6。
[0072]
[数学式6]
[0073][0074]
在此实施例中,布局区域被分为多个槽(bin),槽的大小可以大于、等于或小于网格的大小。w(x,y)表示线路的总长。ub(x,y)表示在槽b中的单元的面积总和。mb表示在槽b中所允许的最大单元面积。λ1与λ2为使用者定义的实数。上述数学式6的详细内容可以参照论文chen,tung-chieh,et al."ntuplace3:an analytical placer for large-scale mixed-size designs with preplaced blocks and density constraints."ieee transactions on computer-aided design of integrated circuits and systems 27.7(2008):1228-1240,在此不详细赘述。
[0075]
在步骤605中,判断是否已经足够分散。若是的话则进行步骤606,否则回到步骤604。在一些实施例中,可以计算每个槽的溢出面积,定义为槽中所有单元(群)的面积总和减去槽的面积,当溢出面积越小则表示壅塞的程度较低。将所有槽的溢出面积总和除以所有可移动模块(群)的面积总和则会得到一面积溢出比例,如果此面积溢出比例小于一预设值(例如为0)则判断已经足够分散。
[0076]
在步骤606中,更新每个网格的溢出值。在步骤607中,对于每个群,根据网格的溢出值以及群的内部连线强度计算膨胀比例,并根据此膨胀比例调整群的大小,此步骤607可参照步骤603,在此不重复赘述。
[0077]
在步骤608,执行以可布线性所驱动的布局方法。由于只考虑线路长度时无法解决全局壅塞的问题,在此将每个连线视为可移动且形状可改变的包围盒。图7是根据一实施例绘示连线与包围盒的示意图。请参照图7,连线710连接了接脚721~724,而包围盒730是能够涵盖所有接脚721~724的最小矩形。在此实施例中,根据每个连线所占据的区域可以给予一个惩项,当包围盒730涵盖更多个壅塞区域时对应的连线会得到更多的惩罚。如此一来,包围盒730的位置与形状都会自动的改变,将连线移动到低壅塞的区域。图8是根据一实施例绘示连线与壅塞区域的示意图。请参照图8,情境810绘示了已知作法的布局结果,情境810包含了三个壅塞区域821~823与三个连线831~833。透过此揭露所提出的方法,连线可改变形状与位置,结果如情境820所示,连线831~833的形状可改变,并且会移动到低壅塞的区域。
[0078]
具体来说,在此用ni来表示第i个连线,而bi表示连线ni所对应的包围盒。在给定的布局位置下,连线ni所对应的绕线壅塞惩罚(作为一惩罚项)由以下数学式7所计算。
[0079]
[数学式7]
[0080][0081]
其中ci表示连线ni的绕线壅塞惩罚。g表示所有网格所形成的集合。gk表示包围盒bi所覆盖的网格,πk表示网格gk的溢出值。ρk表示网格gk与包围盒bi之间的重叠面积与包围盒bi的面积之间的比例。举例来说,图9是根据一实施例绘示包围盒与网格重叠的示意图。请参照图9,其中绘示了四个网格901~904,其中网格901的溢出值为1.41,网格902的溢出值为1.02,网格903的溢出值为0.9,而网格904的溢出值为0.89。包围盒910重叠于网格901~904,包围盒910有15%的面积重叠于网格901,有22%的面积重叠于网格902,有28%的面积重叠于网格903,有35%的面积重叠于网格904。因此,包围盒910所对应的连线ni的绕线壅塞惩罚为0.15
×
1.41 0.22
×
1.02 0.28
×
0.9 0.35
×
0.89=0.9994。当连线ni覆盖更多的壅塞区域时,它会得到更多的惩罚。换言之,在此实施例中是用绕线壅塞惩罚来表示可布线性,当绕线壅塞惩罚越大表示可布线性越低。为了将上述数学式7表示为单元的座标,可将数学式7转换为以下数学式8。
[0082]
[数学式8]
[0083][0084]
其中φ(bi,gk)表示网格gk所贡献的惩罚,可由以下数学式9来计算。
[0085]
[数学式9]
[0086][0087]
其中p
x
(bi,gk)为包围盒bi与网格gk之间的重叠区域的宽度,py(bi,gk)为包围盒bi与网格gk之间的重叠区域的高度。由于p
x
(bi,gk)与py(bi,gk)不可微分,可根据钟型函数(bell-shaped potential function)来将他们替换为与如以下数学式10、11所示。可根据类似的方式来计算。
[0088]
[数学式10]
[0089][0090]
[数学式11]
[0091][0092][0093]
其中d
x
表示包围盒bi的中心与网格gk的中心之间在x轴上的距离。表示包围盒bi的宽度。表示网格gk的宽度。为了计算距离d
x
,需要取得包围盒bi的中心座标,表示为由以下数学式12所计算。而宽度由以下数学式13所计算。
[0094]
[数学式12]
[0095][0096]
[数学式13]
[0097][0098]
其中vk表示连线ni中的一个单元。xk表示单元vk的中心的x座标。由于函数以及不可微分,因此可采用对数总和指数函式(log-sum-exp function)来计算。
[0099]
根据上述揭示内容,步骤608所建立的目标函数可以表示为以下数学式14。
[0100]
[数学式14]
[0101][0102]
以下数学式15。
[0103]
[数学式15]
[0104][0105]
其中ψ表示包含所有连线的清单。在一些实施例中,λ1以及λ2设定如以下数学式16、17。λ3为预设(可由使用者决定)的实数,在一些实施例中可设定为1。
[0106]
[数学式16]
[0107][0108]
[数学式17]
[0109][0110]
在一些实施例中,为了让单元平均的分布在布局区域,λ1以及λ3是固定的,而λ2可在每次迭代中增加(例如乘以2)。在一些实施例中,数学式14可透过共轭梯度(conjugate gradient,cg)方法来计算出每个群的座标x、y,借此让目标函数有极值(在此例子中为最小值),但本揭露并不限制用什么方法来求解数学式14。
[0111]
在步骤609,判断是否为最低层级,若是的话结束流程,否则进行步骤610,进行更低的层级,也就是l=l-1。
[0112]
步骤603~605可以合称为第二布局程序620,步骤606~608可以合称为第一布局程序630。在此实施例中,在步骤608中的目标函数包含绕线壅塞惩罚c(x,y),但步骤604的目标函数则没有包含绕线壅塞惩罚,这是因为在布局初始阶段所有的群会挤在一起,此时无法考虑绕线壅塞惩罚,必须先考虑线路长度将这些群分散开来。然而,本揭露并不限于图6的流程图,在其他实施例中步骤604可以采用任意的目标函数,或者第二布局程序620可省略。此外,本揭露也不限于上述数学式14的目标函数,任意合适的目标函数只要包含了绕线壅塞惩罚c(x,y)都符合本揭露的精神。
[0113]
以另外一个角度来说,本发明也提出了一计算机系统,此计算机系统包括多个程序模块,这些程序模块可由任意的程式语言及/或平台所撰写,当这些程序模块被执行时可完成上述的布局方法。
[0114]
本揭露至少有三个特点。第一,我们在多层级的框架下采用不同的策略来解决全局壅塞以及局部壅塞的问题。第二,我们提出了一个以壅塞作为连线惩罚的模型来减少全局壅塞。第三,我们提出了新的膨胀技术,同时考虑一个群的内部连线强度以及此群所占据的壅塞值,借此减轻局部壅塞。
[0115]
虽然本发明已以实施例揭露如上,然其并非用以限定本发明,任何所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视所附的权利要求书所界定的范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献