在布局中考虑到斜布线的方法和装置的制作方法

文档序号:6476778阅读:243来源:国知局
专利名称:在布局中考虑到斜布线的方法和装置的制作方法
技术领域
本发明涉及在布局中考虑到斜布线的方法和设备。
背景技术
集成电路(“IC”)是包括许多电子元件(如,晶体管、电阻、二极管等)的器件。这些元件经常互相连接以在IC上形成多路电路元件(如,门、单元、存储单元、运算单元、控制器、译码器等)。IC的电子和电路元件在下文中都被称为元件。
IC还包括将其电子和电路元件相互连接的多层布线(“布线层”)。例如,目前通常用金属或多晶硅布线层(在下文中共同被称为“金属层”)制造大量IC,该金属或多晶硅布线层将其电子或电路元件相互连接。一种公知的制造模式使用五层金属层。理论上,金属层上的布线可以是各种角度的布线(即,布线可以处于任意方向上)。这种各种角度的布线一般被称为欧几里得(Euclidean)布线。然而实际中,每一金属层一般具有优选的布线方向,且优选方向在邻接的金属层之间相互交替。许多IC使用曼哈顿(Manhattan)布线模式,其给定优选方向为水平和垂直布线的交替层。在该布线模式中,大多数布线仅制成90°转向。然而,有时在优选的水平和垂直层上允许不多的斜向连线拐角(jog)。
设计工程师通过将IC电路描述转换成几何描述来设计IC,这种几何描述称之为版图。为创造版图,设计工程师一般采用电子设计自动化(“EDA”)应用软件。这些应用软件提供用于产生、编辑和分析IC设计版图的基于计算机的工具组。
EDA应用软件通过使用代表IC上不同材料和器件的几何图形来制造版图。例如,EDA工具一般用正交线表示使IC元件互连的布线部分。这些工具还用具有各种形状和尺寸的几何图形表示电子和电路元件。为了简化讨论,这些几何图形在本文中用矩形框来表示。
同样,在本文中,习语“电路组件”指的是根据EDA应用软件的电子或电路IC元件的几何表示。一般EDA应用软件示出在其边侧具有管脚的电路组件。这些管角连接到互连线。
网格(net)一般被定义为需要加以电连接的管脚的集合。在版图中全部或一些网格的表被称为网格表。换句话说,网格表确定一组网格,其依次确定在一组管脚之间的互连。


图1示出一种IC版图100的例子。该版图包括五个具有管脚130-160的电路组件105、110、115、120和125。四根互连线165-180通过组件的管脚连接这些组件。另外,三个网格确定管脚之间的互连。特别地,管脚135、145和160限定出一个三管脚网格,而管脚130与155、和管脚140与150分别限定出两个二管脚网格。如图1中所示,电路组件(如105)可以在多重网格上具有多个管脚。
IC设计程序需要多种操作(operation)。通常EDA应用软件执行的用以获得IC版图的一些物理设计操作是(1)电路分割,如果电路对于单个芯片太大,则对电路进行分割;(2)芯片布局,找出电路组件的对准(alignment)和相对定位;(3)布局,更精确地识别电路组件的位置;(4)布线,完成电路组件之间的互连;(5)精简,压缩版图以减小总IC面积;和(6)验证,检测版图以保证其能够满足设计和功能的需要。
在物理设计周期中布局是关键的操作。它是在版图上排列电路组件的程序,为获得一定的目的,例如减小版图面积、布线长度、布线拥塞等。差的布局结构不仅消耗大的面积,还可能使布线困难并导致差的性能。
迄今为止已提出了大量的EDA布局器。某些布局器是约束优化布局器,它们(1)使用成本计算函数以产生量化布局结构质量的布局分数(score)(即布局成本),和(2)使用优化算法以迭代修改布局结构从而改善由成本计算函数产生的布局分数。
约束优化布局器一般接收(1)电路组件表,(2)这些组件的初始布局结构,和(3)规定组件之间互连的网格表。该初始布局结构可以为任意的(即所有组件可以任意放置)。选择性地,该初始结构可以部分或全部地由先前的物理设计操作如芯片布局来确定。
约束优化布局器然后使用成本计算函数以估算初始布局结构的质量。成本函数产生表示布局质量的量度分数(metric score)。不同的成本计算函数估算不同的量度分数。例如,如下文中更为详细的描述,一些函数估算布线长度(如估算每一网格的最小生成树、斯坦纳Steiner树、或边界框参数,等),而另一些估算拥塞(如由切割线横切的网格的数目)。
在计算初始布局结构的量度分数之后,约束优化布局器使用优化算法以迭代性地修改布局结构从而改善由其成本计算函数产生的布局分数。不同的优化技术不同地修改布局结构。例如,在每一次迭代,一些技术移动一个电路组件,另一些则交换两个组件,还有一些移动大量相关组件。同样,在每一迭代,一些优化技术(如KLFM和列表搜索运算)搜索最佳移动,而另一些(如模拟退火和局部优化)选择任意的移动。另外,一些技术(如模拟退火)接受使量度分数变坏的移动,而另一些(如局部优化)则不接受。
下面描述四类约束优化布局技术。
A.最小切割二分法一些布局器使用最小切割二分法。该技术使用水平和垂直切割线将IC版图递归分割成连续的成对区域。在每一递归级,为了减小由切割线横切的那一级网格的数目,该技术在该级的区域之间移动电路组件。通过最小化在每一递归级上的网格-切割成本,这些技术减小了穿过切割线的布线拥塞。
图2和3示出了一个最小切割二分法的例子。图2示出一个IC版图200,其首先被垂直切割线205分割成两个区域210和215。在限定该初始切割线之后,最小切割二分法计算由该切割线横切的网格的数目。该数目表示关于该切割线的布线拥塞。然后使用优化算法(如LKLFM)来迭代修改初始布局(即迭代移动电路组件),以最小化穿过初始切割线205的网格-切割成本。
一旦经过初始切割线的拥塞被最小化,就对由初始切割线产生的两个区域递归实施最小切割二分法,然后对由随后的切割线产生的作为结果的区域实施该方法,依次进行。图3示出经过由7条切割线205和220-245递归分割的IC版图200。
B.半周长方法半周长方法是另一种由一些约束优化技术使用的成本计算函数。该方法快速产生对布局的布线长度成本的评估。对于每一网格,该方法通常(1)找出包围所有网格管脚的边界框矩形,和(2)计算该边界矩形的半周长。
图4示出包含图1的管脚135、145和160的网格的边界框400。算出的该框400的半周长值等于其宽度405和高度410之和。该计算出的半周长值提供一个对布线网格所需的布线的数量最低限评估。
半周长方法对所有网格的所有边界矩形的半周长值求和以获得用于布局结构的估计出的布线成本。然后可以使用一优化技术来迭代修改布局结构以减小该布线成本的估计,并由此获得合意的布局结构。
C.最小生成树为估计布局结构的布线长度成本,一些约束优化布局技术对每一网格计算并添加直线最小生成树(“RMST”)。网格的RMST通常定义为这样的树其通过仅在管脚位置分支的最短的曼哈顿布线路线连接(即跨越)网格管脚。
更特别地,用于N-管脚网格的RMST包括(1)相应于N个管脚的N个节点(也可称之为点或顶点),和(2)连接其N个节点的N-1个边。另外,RMST的边为水平或垂直,且这些边起始和终止于树的N个节点之一。图5示出包含图1的管脚135、145和160的网格的RMST505。
每一网格的RMST的长度之和提供布局的布线成本的估计。然后可以使用优化算法来迭代修改布局结构以最小化该布线长度成本。
D.斯坦纳树直线斯坦纳树是另一种类型的树结构,其优化布局技术产生对布局结构的布线长度成本的估计。直线斯坦纳树类似于RMST,只是斯坦纳树不将分支仅限制到管脚位置。在直线斯坦纳树中,水平或垂直边可以从连接两个其它网格管脚的边上的一点分支。
为了构建N-管脚网格的斯坦纳树,通常给网格添加被称之为斯坦纳点的附加点。如果给网格添加R个斯坦纳点,N-管脚网格的直线斯坦纳树是在N+R点上的RMST。图6示出包含图1的管脚135、145和160的网格的斯坦纳树605。在该例子中,已添加的斯坦纳点为点610。
经常使用试探法来选择R个斯坦纳点并构建斯坦纳树,因为这些问题不能在多项式时间中解决。试探法是一种较聪明的算法,它仅在整个搜索空间的子空间内搜索,甚至优于满足所有设计约束条件的最佳解法。
因此,为得到对布局的布线成本的估计,一些约束优化布局技术使用试探近似法来识别网格的直线斯坦纳树。所有网格的试探斯坦纳树长度的和提供对布局的布线长度成本的估计。然后可以使用优化算法来迭代修改布局结构以最小化该布线长度成本。
E.递归网格分割递归网格分割是另一种用于计算布局结构的布线长度成本的技术。递归网格分割布局器通常使用一组交叉的水平和垂直线将IC版图递归分割成几个子区域。在每一递归级,布局器使用优化算法来移动限定在那一递归级的子区域之间的电路组件,以便减小布线长度成本。最小化在特定递归级的布线长度成本之后,布局器递归分割那一级的满足特定标准的子区域,从而进一步优化在那些被分割的子区域内的布线长度成本。
例如,一旦递归分割技术将IC版图递归分割成四部分(即四个区域)。在该方法下,通常使用最小生成树来估计用于连接在不同的四部分中的组件的布线长度成本。另一递归分割技术将IC版图递归分割成9个区域。该分割方式有时被称为“锐”分割。对于该分割类型,通常使用斯坦纳树来估计用于连接在不同区域中的组件的布线长度成本。
上述布局技术在计算它们的布局结构中并未考虑到斜布线。因此,当选择斜线路用于互连线时,这些技术产生差的布局结构,这无益地耗费版图面积、使用过多的布线,且/或具有差的布线拥塞。因此,在本领域中需要在计算它们的布局结构成本中考虑到斜布线的布局器。

发明内容
本发明涉及在布局中考虑到斜布线的方法和设备。本发明的一些实施例是在计算可能的布局结构的成本中使用斜线的布局器。例如,一些实施例,通过(1)对网格表中的每一网格,识别包围网格的所有电路元件的边界框;(2)通过使用全部或部分为斜线的线来计算每一边界框的属性;和(3)根据所算出的属性来计算布线长度成本的估计,以估计布局结构的布线长度成本。
为估计不同布局结构的布线长度成本,其它实施例构建模拟网格互连拓扑的连接图。这些连接图可以具有完全或部分为斜线的边。这些实施例还可以计算连接图的其他属性。
还有一些实施例将所涉及的电路区域分割成几个子区域。对该电路区域中的一个网格,这些实施例识别包含该网格的电路元件组的子区域组,然后识别横穿所识别的子区域组的连接图的属性(例如布线长度)。所识别的该连接图至少具有一个完全或部分的斜边。然后这些实施例使用所识别出的属性来计算布局量度。
对于布局结构,一些实施例计算出用于可能的斜布线的延迟成本。例如,一些实施例从网格的布线长度的布局成本计算出该网格的延迟成本。
另一些实施例使用斜线来计量可能的布局结构的拥塞成本。例如,一些布局器使用斜线作为将IC版图分割成区域的切割线。然后这些布局器通过计量由这些斜切割线切割的网格的数目来产生拥塞成本估计。
附图简要说明本发明的新颖性特征在附属的权利要求书中提出。然而,为了解释说明,在下述附图中提出本发明的几个实施例。
图1示出一个IC版图的例子。
图2示出由垂直切割线初始分割成两个区域的IC版图。
图3示出经过7条切割线递归分割后的图2的IC版图。
图4示出包含图1的管脚135、145和160的网格的边界框。
图5示出包含图1的管脚135、145和160的网格的RMST。
图6示出包含图1的管脚135、145和160的网格的斯坦纳树。
图7示出不仅使用斜线还使用水平和垂直线的IC版图的布线结构。
图8示出实施图7中示出的布线结构的一种方法。
图9提供由图1的管脚135、145和160表示的网格的边界框的一个例子。
图10示出用于根据本发明的边界框产生布线长度估计的程序。
图11表示具有斜边的最小生成树。
图12示出用于通过构建包括水平、垂直和45°边的最小生成树来产生布线长度估计的程序。
图13示出由图1的管脚135、145和160表示的网格的具有45°边的试探构建的斯坦纳树。
图14示出通过构建具有45°斜边的斯坦纳树来产生布线长度估计的程序。
图15示出仅通过斜切割线而被递归分割成大量区域的IC版图。
图16和17示出通过斜、水平和垂直切割线的结合被递归分割的两个IC版图。
图18是限定将版图区域分割成两个较小的区域的切割线的程序。
图19示出产生拥塞成本估计并关于切割线分割网格组的程序。
图20、21和22示出用于识别管脚区域的程序。
图23示出为分割布局方法产生长度估计的程序。
图24示出为三组水平和垂直的分割线分割成16个子区域的IC版图。
图25-27示出三个用于图24中所示网格的斯坦纳树。
图28示出一个程序,该程序关于分割网格的每一可能的网格结构而构建斯坦纳树,并将所构建的每一个斯坦纳树的长度存储在一查看表(“LUT”)中。
图29图示出用于由4乘4分割网格制作的16个切口(slot)的16个斯坦纳树节点。
图30示出用于识别潜在的斯坦纳树节点的程序。
图31示出图28的程序使用其来构建最小生成树的程序。
图32示出计算延迟成本的程序。
图33示出一个局部优化程序的例子。
图34示出一个模拟退火程序的例子。
图35示出一个KLFM程序的例子。
图36示出由本发明的几个实施例使用的计算机系统。
发明详细描述本发明涉及在布局中考虑到斜布线的方法和装置。在下文的描述中,为了解释说明,阐述了大量细节。然而,本领域普通技术人员能够了解可以不使用这些特定细节而实施本发明。在另一些情况中,以框图形式显示公知的结构和器件以使本发明的描述清楚而不必繁琐。
本发明的一些实施例是在计算潜在的布局结构的成本时考虑斜线的布局器。例如,一些实施例,通过(1)对每一网格,识别包围网格的所有电路元件(即管脚或电路组件)的边界框;(2)通过使用全部或部分为斜线的线来计算每一边界框的属性;(3)根据计算出的属性产生布局成本,来估计布局结构的布线长度成本。下面的部分II将讨论使用这种边界框方法的几个实施例。
另一些实施例模拟潜在的互连拓扑来估计不同布局结构的布线长度成本。这些实施例构建可以具有全部或部分为斜线的边的连接图。这样的连接图的例子包括最小生成树和斯坦纳树。部分III表示几个这样的例子。
另一些实施例使用斜线作为将IC版图分割成区域的切割线。然后这些实施例通过估量由斜切割线切割的网格的数目来产生拥塞成本估计。部分IV讨论几个这样使用具有斜切割线的最小切割二分法的实施例。
另一些实施例使用分割线将IC区域分割成子区域,然后根据与子区域相关的网格结构来估量布线成本。部分V讨论几个这样的实施例。同样地,一些实施例计算出用于在规定路线期间的潜在的斜布线的布局延迟成本。部分VI讨论了几个这样的实施例。
在讨论部分II-VI中提出的实施例之前,在部分I中描述可以与本发明的成本计算方法结合使用的几个斜布线结构。同样,部分VII提出几个优化技术,这些优化技术可以用来优化由描述于部分II-VI中的成本计算方法所计算的成本。然后部分VIII示出用于本发明的几个实施例的计算机系统。最后,部分IX描述在布局中考虑斜布线的优点。
I.斜布线结构本发明的几个实施例对具有对脚互连线(即斜布线)的IC版图计算布局结构的成本。在其中一些实施例中,IC版图不仅具有斜互连线,还具有水平和垂直互连线。
正如在本文中使用的,如果其相对于版图的边界线的其中一边形成0或90度之外的角度,互连线为“斜线”。另一方面,如果其相对于版图的其中一边形成0°或90°的角度,互连线为“水平”或“垂直”。
图7示出利用水平、垂直和45°斜互连线的IC版图700的布线结构(即互连线结构)。在本文中,该结构被称为八角形布线模式,用以表示互连线可以从任意给定点穿过八个独立的方向。
水平线705是平行于x轴(即为0°)的线,该x轴被规定为平行于版图的宽710。垂直线715则平行于y轴,该y轴被规定平行于版图的高720。换句话说,垂直互连线715垂直于(即为90°)IC版图的宽。在这种结构中,一组斜线725相对于IC版图的宽成45°,而另一组斜线730则相对于该IC版图的宽成45°。
图8示出一种在IC上实施图7中示出的布线结构的方法。特别地,图8示出IC的五个金属层。最初三层805-815为曼哈顿层。换句话说,在这些层中布线的优选方向为水平方向或垂直方向。在最初三层中的优选布线方向通常交替变换以使得没有两个相邻层具有相同方向的布线。然而,在有些情况下,相邻层中的布线处于相同的方向。
下两层820和825为斜线层。在斜线层中,布线优选方向为±45°。同样,如在最初三层中一样,在第四和第五层中的布线方向一般为正交(即一层为45°而另一层为-45°),虽然它们并非一定如此。
即使下文中描述的本发明的一些实施例利用上述八边形布线模式制作IC版图,一名普通技术人员会理解本发明可以与任意布线模式一起使用。例如,本发明可以与严格为斜(即不具有水平和垂直的优选方向布线)的布线结构一起使用。
同样,一些实施例用于非45°斜布线。例如,一些实施例用于具有水平、垂直和±120°斜互连线的IC版图。
II.边界框方法对于使用水平、垂直和斜互连线的IC版图,本发明的一些实施例通过以下步骤来计算网格表中的每一网格的布线长度成本估计(1)识别包围该网格的所有电路元件的边界框;和(2)通过使用至少部分为斜的线来计算上述边界框的属性。这些实施例然后根据所算出的网格表中所有网格的属性来产生布线长度成本估计。例如,一些实施例求和计算得到的属性来获得布局结构的布线长度成本的估计。
在一些实施例中,计算得到的网格边界线的属性为边界框对角之间的最小距离。图9和10示出本发明的一个这样的实施例。图9示出由图1的管脚135、145和160表示的网格的边界框905的例子。线910经过框905的两个对角935和940之间的最短距离。如图9中所示,在该例中,这条线部分是斜的。具体地说,在该例中,该线的一段920为斜的,而另一段915为水平的。
下面的方程式(A)提供了边界框905的两个对角935和940之间的最小距离距离=[L-{S(cosA/sinA)}+S/sinA (A)在该方程式中,“L”为框的长边,其在该例子中为框的宽925,而“S”为框的短边,其在该例子中是它的高度930。同样,在该方程式中,“A”为斜线段915相对于边界框的长边所成的角。
在一些实施例中,上述角A相应于IC版图中一些斜互连线的方向。例如,在一些实施例中,当IC版图使用八边形布线模式时角A等于45°。如此,穿过边界框的斜切割线920表示在边界框的两对角之间形成连接的斜互连线。
方程式(B)至(D)示出怎样推导出方程式(A)。线910的长度等于它的两段915和920的长度之和。方程式(B)提供水平段915的长度,而方程式(C)提供斜线段920的长度。
915的长度=L-(920的长度)*(cosA) (B)920的长度=S/sinA (C)可以合并方程式(B)和(C)以获得下面的方程式(D),当其被简化时提供上述的方程式(A)距离=915的长度+920的长度=L-S/sinA*(cosA)+S/sinA (D)当角A等于45°时,方程式(A)化简为下面的方程式(E)
如果边界框没有宽或高度,边界框就只是一条线,由该边界框的长(且唯一的)边提供该线的对角之间的最小距离,其将为水平或垂直线。可选择地,当边界框为正方形且角A为45°时,完全为斜的线表示该框的两对角之间的最短距离。
当角A相应于IC版图中的一些斜互连线的方向时,由方程式(A)计算的最小距离相应于连接两个假定的设置在边界框对角的网格电路元件所需的布线最短长度。在这些情况中,由方程式(A)计算出的距离可能不表示具有三个或更多电路元件的网格所需的布线长度。而且,如果不能够沿线910对网格布线,则即使对于两个元件的网格,该距离也可能比实际所需的布线路径要短。由方程式(A)计算出的距离值仅对在使用水平、垂直和斜布线的布线结构中给网格布线所需的布线数量提供下限估计。一些实施例还对其它任意的布线模式使用该方程式。然而,这些实施例中,其中一些在几个选择中选择角A以使由该方程式所确定的距离最小化。
图10示出使用上述边界框方法的成本计算程序1000。布局器可以使用该成本计算程序对网格表上一组网格产生布线长度成本的估计。在一些实施例中,每当其接收确定多个网格的网格表时程序1000就开始。
每一个所接收的网格具有几个与其相关的电路元件(即每一网格被限定成包括几个电路元件)。换句话说,网格表上的网格确定在IC版图中一些电路元件或所有电路元件之间的互连。在下述实施例中,与网格相关的电路元件为IC版图中电路组件的管脚。然而,其它实施例将电路组件作为网格的电路元件。这些实施例中,其中一些通过假设每一组件的管脚都设置在统一的位置(如设置在组件的原点)而将电路组件作为网格电路元件,并避免了在不同管脚位置之间识别的需要。
在一些实施例中,在程序1000开始之前,网格电路元件的位置就限定了一个初始布局结构。在这些实施例中,其中一些的初始电路元件的位置是任意的。在其它实施例中,先前的物理设计操作,如芯片布局,部分或全部地确定这些元件的初始位置,且使用程序1000优化使用斜布线的布线结构的布局结构。
程序1000起初(在1005)设布线长度成本估计(WL Cost)为0,且从接收到的网格表选择第一网格。每个网格具有一管脚组N。在1005,程序还规定一管脚组P等于所选择网格的该管脚组N。在1010,程序从所规定的该管脚组P中选择一个管脚,并从组P中除去该被选择的管脚。然后程序使用(在1015)被选择的管脚的x和y坐标来初始化当前网格的边界框的最大和最小的x和y坐标。
接着,程序(在1020)从当前网格的管脚组P选择另一管脚。在1025,程序检查在1020选择的管脚(即当前管脚)的x和y坐标,以确定是否需要修改当前网格的边界框的最大和最小x和y坐标。具体地说,如果边界框的最大x坐标(XMAX)小于当前管脚的x坐标,程序就将边界框的最大x坐标(XMAX)设置成等于当前管脚的x坐标。可选择地,如果边界框的最小x坐标(XMIN)大于当前管脚的x坐标,程序就将所述边界框的最小x坐标(XMIN)设置成等于当前管脚的x坐标。类似地,如果边界框的最小y坐标(YMIN)大于当前管脚的y坐标,程序就将边界框的最小y坐标(YMIN)设置成等于当前管脚的y坐标。另一方面,如果边界框的最大y坐标(YMAX)小于当前管脚的y坐标,则程序将边界框的最大y坐标(YMAX)设置成等于当前管脚的y坐标。
在1025之后,程序(在1030)确定在组P中是否还有管脚(即在当前网格中是否有其尚未检查到的管脚)。如果有,程序转回至选择(在1020)另一管脚,并确定其(在1025)是否需要使用所选择的管脚坐标来修改边界框的x和y坐标。如果程序确定(在1030)其已经检查了当前网格的所有管脚,程序即定义出(在1035)当前网格的边界框的四个坐标为(XMIN,YMIN)、(XMIN,YMAX)、(XMAX,YMIN)和(XMAX,YMAX)。
接着,程序确定(在1040)所述边界框的宽度和高度。程序确定(1)宽度,这通过计算边界框的最大和最小x坐标之差来完成;和(2)高度,这通过计算边界框的最大和最小y坐标之间的差来完成。然后程序确定(在1045)是否所计算出的宽度大于所计算出的高度。如果是,程序(在1050)将宽定义为长边而将高定义为短边。否则,程序就(在1055)将宽定义为短边而将高定义为长边。
然后程序(在1060)通过使用上述的方程式(A)计算边界框两对角之间的距离来计算当前网格的布线长度成本估计(Net_WL_Cost)。程序(在1065)接着(1)将计算出的网格布线长度成本(Net_WL_Cost)添加到总布线长度成本(WL_Cost);且(2)存储该网格布线长度成本(Net_WL_Cost)。在1070,程序确定是否检查网格表中的所有网格。如果否,在1075,其从网格表中选择另一网格,并规定一管脚组P等于被选择网格的该管脚组N。程序然后转回至1010以计算该被选择的网格的边界框成本。
当程序计算完所有网格的边界框时,程序(在1070)确定其已检查网格表中所有网格。在这一点,程序返回(return)布线长度成本变量的数值(WL_Cost)作为所接收网格表的估计出的布线长度成本,然后结束。
在本发明的一些实施例中,当其接收确定初始布局结构的网格表(即在对版图中组件位置的任意修改之前,确定版图中所有网格的网格表)时,程序1000对初始的布局结构产生布线长度成本估计(WL_Cost)。
在获得初始布局结构的布线长度成本之后,一些实施例使用迭代修改布局结构的优化程序来改善布局结构成本。在一些实施例中,所述优化程序使用程序1000来计算对布局结构的每一可能的迭代修改的布局结构成本。这会在下面的部分VII中进一步描述,其中示出了几种适合的优化技术。
III.具有潜在斜线的连接图本发明的一些实施例构建出模拟潜在互连(即布线)拓扑的连接图,以便于估计不同布局结构的布线长度成本。通常,网格的连接图(1)将每一网格元件(即管脚或组件)模拟为节点(也称为顶点或点);并(2)将连接两个网格元件的每一潜在互连线模拟为边(也称之为线)。
本发明的连接图可以包括完全或部分为斜的边。这种连接图包括下文中描述的最小生成树(“MST”)和斯坦纳树。普通技术人员会理解本发明的其它实施例使用其它连接图(如完全图、最小链图(minimum chain graph)、源汇图(source-to-sink graph),等等)来模拟潜在的互连拓扑。
A.最小生成树一些实施例通过(1)对每一网格构建具有斜边的MST、(2)计算每一MST的长度和(3)求和所计算得到的长度,从而产生布局结构的布线长度成本估计。网格的最小生成树是通过仅在元件处分支的最短布线而连接(即横跨)网格元件的树。最小生成树的长度提供互连网格元件(即网格的管脚或组件)所需的布线数量的下限估计。
更具体地说,一个N元件网格的生成树包括(1)相应于N个元件的N个节点;和(2)连接其N个节点的N-1条边。最小生成树的边仅能起始并终止于树的N个节点之一。同样在MST中,一般选择边来提供连接其节点的最短可用布线。
在本发明的一些实施例中,MST的边可以为水平、垂直或斜的。斜边可以全部或部分为斜。同样,当IC版图使用斜互连线(如±120°互连线)时,MST的斜边可以与版图中的一些斜互连线处于相同方向(例如可以处于±120°方向)。
例如,当IC版图使用八边形布线模式(即使用水平、垂直和45°斜线)时,一些实施例构建具有水平、垂直和45°斜边的MST。图11示出这种MST的例子。所示树1105为包含图1中的管脚135、145和160的网格的MST。该树具有两边1110和1115,其中第一边1110具有一个水平段1120和一个+45°斜段1125,而第二边1115具有一个垂直段1130和一个-45°斜段1135。
通过将每一MST边的两个节点视为框的两个对角,每一MST边的长度可以通过使用上述方程式(A)来获得。
距离=[L-{S(cosA/sinA)}]+S/sinA (A)如上所述,在这一方程式中,“L”是框的长边,“S”是框的短边,而“A”为边的斜段相对于边界框的长边所成的角。
图12示出计算模拟几个网格的互连拓扑的MST长度的成本计算程序1200。布局器可以使用该程序来对网格表上一组网格产生布线长度成本估计。在一些实施例中,一旦其接收到确定了多个网格的网格表,程序1200即行开始。
每一接收到的网格具有几个与其相关的电路元件(即每一网格被规定为包括几个电路元件)。换句话说,网格表上的网格确定了IC版图中一些电路元件或所有电路元件之间的互连。在下述实施例中,与网格相关的电路元件为IC版图中的电路组件的管脚。然而其它实施例将电路组件作为网格的电路元件。这些实施例的其中一些通过假设每一组件的管脚都设置在统一位置(如设置在组件的原点),而将电路组件视为网格电路元件从而避免了在不同管脚位置之间的识别需要。
在一些实施例中,在程序1200开始之前的网格电路元件的位置规定出初始布局结构。在其中一些这类实施例中,初始电路元件位置是任意的。而在其它实施例中,先前的如芯片布局的物理设计操作部分或全部地确定了这些元件的初始位置。其它实施例使用另一布局器来确定电路元件的初始位置,并随后使用程序1200对使用斜布线的布线结构优化布局结构。
程序1200初始时(在1205)将布线成本估计(WL_Cost)设置成0,且从接收到的网格表中选择第一网格。接着,程序(在1210)规定管脚组P等于被选择的网格的管脚组。然后程序(在1215)将被选择的网格的最小生成树成本(MST_Cost)设置成0。
接着,程序(在1220)(1)从被检索的管脚组中选择一个管脚作为生成树的第一节点,且(2)从该组中除去该管脚。然后程序(在1225)规定剩余管脚组R等于当前管脚组P。在1230,程序从剩余管脚组R中选择一个管脚,并从该管脚组中除去该被选择的管脚。
然后,程序计算并存储(在1235)在1230所选择的管脚和生成树的每一当前节点之间的距离。在被选择的管脚和每一节点之间的距离为完全斜或部分斜的边所横穿。因此,程序使用(在1235)方程式(A)来计算被选择的管脚和每一节点之间的最小距离。
接着程序(在1240)确定在组R中是否还有管脚剩余。如果是,程序返回1230以从该组中选择另一管脚,从而其能够在1235计算该管脚与生成树的当前节点之间的距离。否则,程序(在1245)识别在1235所记录的最小距离,并识别产生该距离的管脚和节点的结合。然后该程序(在1250)将所识别的最小距离添加到最小生成树成本(MST_Cost)。程序(在1255)还(1)规定相应于在1245被识别的管脚的树节点,(2)从管脚组P中除去被识别的该管脚,并(3)将所规定的树节点连接到在1245被识别的节点。
然后程序(在1260)确定管脚组P是否为空。如果否,程序转回至1225来识别最接近该树的当前节点的下一管脚。否则,程序(在1265)(1)将当前网格的最小生成树成本(MST_Cost)添加到布线长度成本(WL_Cost),和(2)存储当前网格的最小生成树成本(MST_cost)。然后程序(在1270)确定是否其已经构建所有接收到的网格的最小生成树。如果否,程序(在1275)选择另一网格,并转回至1210以构建该网格的最小生成树。
否则,如果程序确定其已经构建所有网格的MST,程序即返回布线长度成本变量的数值(WL_Cost)作为当前布局结构的估计的布线长度成本。然后结束程序。
在本发明的一些实施例中,当其接收到确定了初始布局结构的网格表(即在版图中组件的位置做任何修改之前,识别出IC版图中所有网格的网格表)时,程序1200产生初始布局结构的布线长度成本估计(WL_Cost)。
在获得初始布局结构的布线长度成本之后,一些实施例使用迭代修改布局结构的优化程序以改善布局结构的成本。在一些实施例中,所述优化程序使用程序1200来计算对布局结构每一种可能的迭代修改的布局结构成本。这在下面的部分III中进一步加以描述,该部分示出了几种适合的优化技术。
B.具有斜边的斯坦纳树一些实施例通过(1)对每一网格构建具有斜边的斯坦纳树、(2)计算每一斯坦纳树的长度和(3)求和计算出的长度从而产生对布局结构的布线长度成本估计。斯坦纳树相似于最小生成树,只是斯坦纳树不限于仅在网格的元件位置分支。在一些实施例中,斯坦纳树可以具有从其它边的处于中间的点分支(即开始或终止)的边。
在本发明的一些实施例中,斯坦纳树的边可以是水平、垂直或斜的。斜边可以完全斜或部分为斜。同样,当IC版图使用斜互连线(如±120°互连线)时,斜边可以与版图中的一些斜互连线处于相同的方向(例如可以处于±120°方向)。
为了构建N-元件网格的斯坦纳树,可以将附加点,即所谓斯坦纳点,添加到网格中。通常使用试探法来选择斯坦纳点。图13示出一种在本发明的一些实施例中对IC版图所使用的试探法,其中该IC版图使用了八边形布线模式(即使用了水平、垂直和45°互连线)。该图示出包含图1中的管脚135、145和160的网格的斯坦纳树1305。在该例中,斯坦纳树1305包括三个相应于管脚135、145和160的原始节点1335、1345和1360。
同样在该例中,通过从斯坦纳树的每一个原始节点穿过四条线来识别一组潜在的斯坦纳点。在这四条线中,一条线1310为水平、一条线1315为垂直、一条线1320为+45°斜线,以及一条线1325为-45°斜线。如图13中所示,经过每一原始节点的线的交叉点定义出一组潜在的斯坦纳点1330。然后,为了最小化该树的长度,这些潜在的点中的一小部分可以被添加作斯坦纳树中的节点。在图13中,斯坦纳点1340已经被添加为树中的节点。
图14示出成本计算程序1400,该程序计算模拟几个网格的互连拓扑的斯坦纳树的长度。布局器可以使用该程序对网格表上一组网格产生布线长度成本估计。在一些实施例中,程序1400一旦其接收到确定了多个网格的网格表时就开始。
每一被接收的网格具有几个与其相关的电路元件(即每个网格被规定为包括几个电路元件)。换句话说,网格表上的网格确定IC版图中一些电路元件或所有电路元件之间的互连。在下述实施例中,与网格相关的电路元件为IC版图中电路组件的管脚。然而其它实施例将电路组件作为网格的电路元件处理。通过假设每一组件的管脚都设置在统一位置(如设置在组件的原点),其中一些这类实施例将电路组件作为网格电路元件处理并避免了在不同管脚位置之间加以识别的需要。
在一些实施例中,在程序1400开始之前,网格电路元件的位置规定了初始布局结构。在其中一些这类实施例中,初始电路元件的位置是任意的。在其它实施例中,原先的物理设计操作,如芯片布局,部分地或全部地确定了这些元件的初始位置。其它实施例使用另一布局器来确定电路元件的初始位置,然后使用程序1400来对使用斜布线的布线结构的布局结构加以优化。
程序1400是单斯坦纳程序的修改。像传统的单斯坦纳程序,该程序1400通过添加斯坦纳节点来构建试探性斯坦纳树,该斯坦纳节点最小化原始和附加的管脚节点的MST。然而,与传统单斯坦纳程序不同的是,该修改程序允许试探性斯坦纳树的边部分为斜的或全部为斜的。
该程序初始时(在1405)设置布线长度成本估计(WL_Cost)为0,并从接收到的网格表中选择第一网格。接着,程序规定(在1410)管脚组P等于被选择的网格的管脚组。然后,程序(在1415)设置被选择的网格的布线长度成本(WL_Cost)为0。在1415之后,程序(在1420)构建被选择的网格的最小生成树,并计算该树的成本(MST_Cost)。该最小生成树可以具有全部或部分为斜的边。程序可以通过执行图12所示1210-1260的操作来构建MST。
在构建被选择网格的MST之后,程序识别(在1425)候选(candidate)斯坦纳点组S。如上述参考图13,程序可以由穿过网格中每一管角的一对斜线和一对曼哈顿线来识别这些点,并识别这些点的交叉点。当IC版图使用斜互连线(如±120°互连线)时,经过每一管角的斜线可以与版图中的一些斜互连线一样处于相同的方向(如可以处于±120°的方向)。
接着,程序规定(在1430)节点的剩余组R等于当前的潜在斯坦纳点组S。在1435,程序从剩余节点组R中选择一节点,并从该组除去被选择的节点。程序(在1440)随后(1)为在1435所选择的节点和被选择网格的当前MST的节点构建最小生成树(MST′);及(2)计算并存储该最小生成树(MST′)的成本(MST_Cost′)。程序通过使用全部斜或部分为斜的边来构建该最小生成树(MST′)。同样,程序可以通过执行图12所示1210-1260的操作来构建该树MST′。
接着,程序(在1445)在组R中是否有节点剩余。如果是,程序返回1435以从该组中选择另一节点,以便其可以对当前MST的该节点和其它节点构建最小生成树。
否则,程序(在1450)识别在1440计算出的最小的最小生成树成本(MST_Cost′)。然后程序确定(在1455)所识别的最小的最小生成树成本(MST_Cost′)是否小于在1420产生的当前最小生成树(MST)的成本(MST_Cost)。如果否,程序转到下面将要描述的1480。否则,程序(在1460)从潜在的斯坦纳节点组S中除去产生最小的最小生成树成本(MST_cost′)的斯坦纳节点,该最小的最小生成树成本(MST_cost′)系在1450被识别出。然后,程序(在1465)识别最小生成树(MST′),该最小生成树(MST′)产生作为当前最小生成树(MST)的被识别的最小的最小生成树成本(MST_Cost′)。程序还设置(在1470)最小生成树成本(MST_Cost)等于被识别的最小的最小生成树成本(MST_Cost′)。
接着,程序确定(在1475)候选的斯坦纳点组S是否为空。如果否,程序返回1430以查看是否能找到能使当前最小生成树的长度进一步减小的另一潜在的斯坦纳点。
如果程序1400确定(在1475)所有候选的斯坦纳点已经被检测且组S为空,则其(在1480)(1)将斯坦纳树规定为当前MST,(2)将该MST的成本(MST_Cost)添加到估计的布线长度成本(WL_Cost),和(2)将该MST的成本(MST_Cost)存储,作为当前网格的成本。在1480之后,程序确定(在1485)是否其已经对在被接收的网格表中的所有网格构建斯坦纳树。如果否,程序选择(在1490)另一网格并返回到1410以为该网格构建斯坦纳树。否则,程序返回(在1495)当前布局结构的布线长度成本(WL_Cost),并随后结束。
在本发明的一些实施例中,当其接收到确定了初始布局结构的网格表(即在对版图中的组件位置做任何修改之前识别出版图中所有网格的网格表)时,程序1400对初始的布局结构产生布线长度成本估计(WL_Cost)。
在获得初始布局结构的布线长度成本之后,一些实施例使用迭代修改布局结构的优化程序来改善布局结构的成本。在一些实施例中,所述优化程序使用程序1400来对布局结构的每一可能的迭代修改计算布局结构成本。这在下面的部分VII中进一步描述,其中展示了几种合适的优化技术。
IV.使用斜线的最小切割二分法本发明的一些实施例为利用斜切割线的最小切割二分法技术。如下面参考图15-17的进一步描述,一些实施例仅使用斜切割线,而另一些实施例使用斜的、水平的和垂直的切割线。
切割线被用来将IC版图递归地分割成邻接的区域对。在每一递归级规定切割线之后,本发明的最小切割二分法方法计算为特定级别的切割线所横切的网格的数目。该数目表示关于此切割线的布线拥塞。接着,在每一递归级,使用优化技术移动在那一级的各区域之间的电路组件,以便减小由那一级切割线横切的网格数目。在每一递归级的网格切割成本的最小化减小了经过那一级切割线的布线拥塞。
可以将本发明的最小切割二分法技术与仅使用曼哈顿布线模式(即,IC版图仅具有优选的水平和垂直方向的布线)的IC版图一起使用。在其它例子中,本发明的最小二分法技术可以与具有斜互连线的IC版图一起使用。在其中一些这类例子中,斜切割线与部分或全部的斜互连线处于相同方向。例如,对于使用八边形布线模式(即使用水平、垂直和45°斜线)的IC版图,一些实施例使用45°斜切割线。
图15示出仅被斜切割线递归分割成多个区域的IC版图1500。当IC版图仅使用斜互连线时,一般使用一种严格的斜分割方法。然而,当IC版图使用斜线和曼哈顿互连线时可以采用这样的方法。
图16和17示出由斜的、水平的、和垂直的切割线的结合所递归分割的两个IC版图。在图16中,在所有递归级中使用斜切割线。另一方面,在图17中,仅在较高的递归级中使用斜切割线,而在较低的递归级中使用曼哈顿切割线。
换句话说,图17示出的分割方案一旦其到达较低的递归操作级的一些便停止使用斜切割线。这样的分割方案(即在较低的递归级停止使用斜切割线的方案)对于将它们的斜线层作为其顶层金属层的IC版图非常有用。该分割方案对于该版图非常有用是因为第一组切割线减小较长布线的拥塞,而较长的布线很可能为斜布线。在将斜线层作为顶层金属层的八边形布线模式中,斜布线趋向于是长的,因为否则其将不经济地招致与通过在较高层执行布线的需要相关的延迟成本。
图18和19示出两个程序1800和1900,布局器可用以执行利用斜切割线的最小切割二分法。布局器可以重复使用这些程序1800和1900,从而最小化穿过IC版图的拥塞。更具体地说,布局器可以重复执行图18所示的程序1800来规定一系列将IC版图递归切割成越来越小的区域的切割线。在每一特定的递归级规定切割线之后,布局器可以使用图19所示的程序1900来获得拥塞成本估计和分割经过那一级切割线的网格。
程序1800开始于其接收到IC版图的一区域的坐标之时。如图18中所示,该程序首先规定(在1805)将接收的区域分割成两个子区域的水平、垂直或斜切割线。规定切割线之后,程序1800规定(在1810)由切割线产生的两个区域。一些实施例使用下述惯例来规定区域(1)当切割线为水平的或斜的,第一区域在此切割线之上,而第二区域在此切割线之下;且(2)当切割线为垂直的,第一区域在此切割线的右边,而第二区域在此切割线的左边。
最后,程序初始化两个网格表,这两个网格表对应于由在1805所规定的切割线产生的两个区域。如下面进一步描述,一经对在被接收的区域中的所有网格执行程序1900,程序1900就向这两个网格表添加在被接收的区域中的网格和这些网格的管脚。同样,如下面进一步描述,布局器和程序1900在最优化处理期间可以向这两个网格表除去和添加网格和管脚。
图19示出一个程序1900,布局器可用以分割一组网格并计算这些网格关于切割线的拥塞,该切割线可以为斜线。程序1900开始于其接收到(1)网格表和(2)用于分割网格的切割线之时。
在接收到的网格表上的每一网格具有几个与其相关的电路元件(即,每一网格被规定为包括几个电路元件)。换句话说,网格表上的这些网格确定了在IC版图中的一些电路元件或所有电路元件之间的互连。在下述实施例中,与网格相关的电路元件是在IC版图中的电路组件的管脚。然而,其它实施例,将电路组件视为网格的电路元件处理。通过假设每一组件的管脚都设置在统一位置上(如设置在组件的原点),其中一些这类实施例将电路组件作为网格电路元件并避免了在不同管脚位置之间进行识别的需要。
在一些实施例中,在对第一切割线执行程序1900之前,由网格电路元件的位置规定一初始的布局结构。在其中一些这类实施中,初始布局结构是任意的。在其它实施例中,先前的物理设计操作,如芯片布局,部分或全部地确定了初始布局结构。其它实施例使用另一布局器来确定初始布局结构,然后使用程序1800和1900来优化使用斜布线的布线结构的布局结构。
如图19中所示,程序1900首先设置(在1905)拥塞成本(Cost)等于0。然后程序(在1910)从接收到的网格表中选择一个网格。其然后(在1915)设置网格切割变量(C)为0。程序接着(在1920)从被选择的网格中选择第一管脚。在选择管脚之后,程序(在1925)确定由切割线所限定的两个区域中,哪一个包含该管脚。程序1900使用图20、21和22中示出的三个程序之一来识别该管脚的区域。
当切割线为水平时,程序1900调用图20的程序2000。如图20中所示,程序2000(在2005)确定管脚的y坐标是否大于水平切割线的y坐标。如果是,程序(在2010)确定该管脚位于由切割线限定的第一区域中。否则,程序(在2015)确定该管脚位于由切割线限定的第二区域中。
当切割线为垂直时,程序1900调用图21的程序2100。如图21中所示,程序2100确定(在2105)该管脚的x坐标是否大于该垂直切割线的x坐标。如果是,程序确定(在2110)该管脚位于由该切割线限定的第一区域中。否则,程序确定(在2115)该管脚位于由该切割线限定的第二区域中。
当切割线为斜线时,程序1900调用图22的程序2200。如图22中所示,程序2200(在2205)在表示切割线的线性方程(y=mx+b)中插入管脚的x坐标。该方程根据其斜率(m)、x坐标和y截距(b)表达切割线的y坐标值。然后程序(在2210)识别在所插入的x位置处的斜线的y值是否大于该管脚的y坐标。如果否,程序就(在2215)识别该管脚位于由该切割线限定的第一区域中。否则,程序即(在2220)识别该管脚位于由切割线限定的第二区域中。
在对管脚识别区域之后,程序(在1930)向被识别的区域的网格表添加被选择的网格和管脚。然后,程序(在1935)选择网格中的下一管脚。在1940,程序通过调用与上述1925相同的程序来为在1935选择的管脚识别区域。
程序然后确定(在1945)当前管脚(即在1935选择的管脚)是否落入与第一管脚相同的区域中。如果是,程序向先前(在1930)添加到被识别区域的网格表中的网格添加当前管脚。然后程序转到1970,其将在下面予以详述。
另一方面,如果程序(在1945)确定当前管脚没有落入与第一管脚相同的区域中,程序就确定该横切(intersection)变量C是否等于0。如果是,程序意识到其已经检测了一个网格切割。因此,其将横切变量C的值变为1,并向当前管脚的被识别区域的网格表中添加该网格和该当前管脚。然而,如果程序(在1955)识别横切变量不为0,程序意识到其先前已经检测过该网格切割。因此,程序(在1960)直接向识别区域的网格表添加该当前管脚。
程序从1960和1965转到1970,在那里确定其是否检测完当前网格中的最后一个管脚。如果否,程序转回到1935来检测网格中的下一管脚。否则,程序(在1975)(1)向拥塞成本(Cost)添加横切成本C,和(2)将该横切成本C存储为当前网格的成本。
接着,程序(在1980)确定其是否检测完完最后一个网格。如果否,程序转回到1910以(1)选择另一网格;(2)关于该切割线分割该网格,和(3)确定该网格是否经过该切割线。否则,程序(在1985)返回(1)当前布局结构的拥塞成本,和(2)表示所接收网格表关于该被接收的切割线的分割的两个网格表。
如上面所述,布局器可以重复执行图18的程序1800来规定一系列将IC版图递归分割成越来越小的区域的切割线。然后在每一递归级,布局器可随后使用图19的程序1900来获得拥塞成本估计,并分割经过那一级切割线的网格。
具体地说,对每一递归级,布局器首先向程序1900提供(1)该切割线规定级的切割线和(2)在该级区域中的所有网格的表。程序1900然后(1)关于该切割线分割在那一区域中的网格(即如上所述,程序向由切割线产生的子区域的合适的网格表中添加网格和相应的管脚);和(2)计算经过切割线的拥塞成本。
在从程序1900接收在递归级区域内的初始网格结构的拥塞成本之后,布局器就使用递归修改该区域内网格结构的优化算法来改善由程序1900产生的拥塞成本。在一些实施例中,优化程序使用程序1900来对布局结构的每一可能的递归修改计算布局结构成本。这在下面部分II中进一步描述,该部分展示了几种合适的最优化技术。
V.分割布局技术本发明的一些实施例使用分割技术,该分割技术(1)将设计区域分割成多个子区域(还称之为切口);(2)对至少一个网格识别包含该网格电路元件的子区域组(即切口组);(3)识别连接该网格的被识别的子区域组的布线,其中布线具有至少一个部分斜或全部斜的边;和(4)根据所识别的布线为该网格计算布局成本。
图23概念性地示出一个这样的布局程序2300。该程序开始于其每一次接收IC版图区域的坐标之时。被接收的区域可以是整个IC版图,或该版图的一部分。在一些实施例中,该程序还接收一网格表,该网格表确定在被接收的IC区域中具有电路元件的所有网格。在其它实施例中,程序接收在被接收的IC区域中的所有电路元件的表,并从该表识别具有在被接收的IC区域中的电路元件的网格。
每一被接收的或被识别的网格具有一组与其相关的电路元件(即每一网格规定为包括一组电路元件)。在一些实施例中,与网格相关的电路元件是在IC版图中的电路组件的管脚。然而,在下述的实施例中,电路元件为电路组件。通过假设每一组件的管脚都设置在统一位置上(如设置在组件的原点),其中一些这类实施例将电路组件作为网格电路元件处理,并避免了在不同管脚位置之间进行识别的需要。
同样,在一些实施例中,在接收的IC区域中的电路元件的位置规定在该区域内的布局结构。在一些实施例中,在程序2300开始之前的初始电路元件位置是任意的。可选择地,一些实施例使用原先物理设计操作如芯片布局来部分或全部地确定这些元件的初始位置。还有一些实施例使用另一布局器来确定在被接收的IC区域中的电路元件的初始位置,且使用程序2300来优化使用斜布线的布线结构的布局结构。
在程序2300开始之前,规定一组分割线。该组将接收到的IC区域分割成几个子区域(还称之为切口(slot))。在下述实施例中,分割线为限定分割栅格的交叉线。在其中一些这类实施例中,交叉分割线是N条水平线和M条垂直线,它们将被接收的IC版图分割成(N+1)(M+1)个子区域,其中N和M可以等于任意整数。例如,这些水平和垂直线(1)当N和M等于1时将被接收的IC区域分割成四部分;(2)当N和M等于2时将被接收的IC区域分割成九部分;(3)当N和M等于3时将被接收的IC区域分割成十六部分;或(4)当N或M等于4而另一个等于5时将被接收的IC区域分割成20部分。
图24示出被三组水平和垂直分割线分割成十六个子区域的IC版图2400。该图还示出网格2405,包括落入这十六个子区域的其中四个内的五个电路组件2410、2415、2420、2425和2430。这四个子区域为切口1、2、8和9。
一旦限定了分割栅格,程序2300首先(在2305)对每一被接收的或被识别的网格识别包含该网格的电路组件的子区域组(即切口组)。每一网格的被识别的子区域组表示关于该被限定栅格的网格结构。
对每一被接收或被识别的网格,程序接着(在2310)识别连接图的长度,该连接图包括连接包含网格电路组件的切口的互连线组(还称之为互连边)。特别地,每一网格的连接图表示横穿包含该网格电路元件的子区域组的布线。根据本发明,连接图可以具有全部为斜或部分为斜的边的连接图。
不同的实施例可以使用不同的连接图。在下述实施例中,连接图是斯坦纳树。图25-27示出图24中所示网格2405的三个斯坦纳树2505、2605和2705。这些斯坦纳树都具有相同的长度。这些树的其中之一(2505)具有一个斯坦纳节点(2520)。另外,这些树中每一个具有至少一条部分为斜的边。在这些例子中,所述斜边相对于版图边界呈45°。当使用八边形布线模式时,这些斯坦纳树的长度近似于在该分割栅格级的网格2405所需的布线长度(互连线)。
在一些实施例中,程序(在2310)通过实时构建该连接图并在构建该图期间或之后确定其长度来识别每一网格连接图的长度。然而,下述实施例以不同方式识别连接图的长度。在程序2300开始之前,这些实施例(1)关于分割栅格来构建每一可能的网格结构的连接图;和(2)在存储装置中对连接图长度预先制表。在布局期间,这些预先制表的实施例接着(在2310)从存储器中检索每一被识别的网格结构的连接图长度。参考图28-31,在下面进一步描述一种构建连接图和对连接图预先制表的方法。
在2315,程序2300使用在2310所识别的长度来计算在被接收的区域内的版图中被接收的或被识别的网格的布局成本。一些实施例通过合并(如求和、相乘等等)每一图的长度来计算该成本。
在本发明的一些实施例中,当其接收到确定初始布局结构的网格表(即在对版图中的组件位置作任意修改之前识别IC版图中所有网格的网格表)时,程序2300产生对初始布局结构的布局成本估计。
在获得初始布局结构的延迟成本之后,一些实施例使用迭代修改被接收的IC区域中布局结构的优化算法,以便改善布局成本。本发明的不同实施例使用不同的优化技术,如退火、局部优化、KLFM、列表搜索,等。同样,不同的优化技术不同地修改布局结构。例如,在每一次迭代,在由分割栅格规定的子区域之间,一些技术移动一个电路组件,另一些技术则交换两个组件,还有一些技术移动几个相关组件。同样,在每一迭代,一些优化技术(如KLFM和列表搜索运算)寻求最佳移动,而另一些优化技术(如模拟退火和局部优化)选择随机的移动。另外,一些技术(如模拟退火)接受使量度分数变坏的移动,而另一些(如局部优化)不接受。在下面部分VII中将讨论几个合适的优化程序。
在优化期间的每一迭代修改之后,通过对所有网格或仅对被移动的电路组件或组件存在于其上的网格重复程序2300来对布局结构再计算。在优化布局结构之后,一些实施例终止它们的布局操作。另一些实施例在每一被规定的符合一个或更多标准的子区域(即由分割栅格限定的子区域)上递归重复程序2300和优化操作。例如,一些实施例在包含多于确定数目的电路组件的每一子区域上递归执行分割和优化操作。
一些实施例在递归处理中对不同的级使用不同形状的分割栅格。其它实施例对所有递归级使用相同形状的分割栅格。在每一递归级,这些实施例简单地调节分割栅格的坐标以与在那一递归级的IC区域的坐标相匹配。对所有递归级使用相同形状的分割栅格具有几个优点。例如,它允许预先制表的实施例仅存储一个分割栅格的网格结构长度;这些长度可以在所有的递归级重复使用,因为可以使用它们来规定在任意一级的网格结构的相对成本。
图28-31示出一种预先制表的斯坦纳树长度,其模拟了关于分割栅格的可能的网格结构。具体地说,图28示出程序2800,该程序(1)关于分割栅格而构建每一可能的网格结构的斯坦纳树,和(2)在一查看表(“LUT”)中存储每一被构建的斯坦纳树的长度。
程序2800首先通过对每一子区域(还称之为切口)规定斯坦纳树节点开始(在2805),该子区域被特定的分割栅格所限定。图29图示出由4乘4分割栅格产生的十六个切口的十六个斯坦纳树节点2905。这些节点表示模拟所有网格结构的互连拓扑的斯坦纳树的所有潜在节点。在图29中,被识别的节点设置在每一切口的中心。在其它实施例中,可以规定节点均匀地处于切口中的其它位置(如可以均匀地设置在切口的其中一个角)。
接着,程序2800(在2810)规定可能的节点结构组N。当栅格分割限定了Y(如四、九、十六、二十等等)个子区域时,组N包括2Y个节点结构。少于两个节点的节点结构不具有斯坦纳树。因此,程序将这些结构的长度设置为零。
在2810之后,程序2800(在2815)从在2810所规定的组中选择一个具有两个以上节点的可能的节点结构NT。然后程序(在2820)对在2815选择的节点结构构建最小生成树(“MST”),并计算该树的长度(MST_Cost)。程序通过使用全部或部分为斜的边来构建该最小生成树。下面将参考图31描述一种构建这样的MST并计算其长度的方法。
在对被选择的节点结构构建MST之后,程序2800(在2825)识别潜在的斯坦纳节点。图30示出用于识别潜在斯坦纳节点的程序3000。该程序(在3005)通过初始化潜在斯坦纳节点组P开始,该潜在斯坦纳节点组P等于在2805所规定的、不属于在2815被选择的节点结构的部分的所有节点。然后该程序选择(在3010)选择一个潜在的斯坦纳节点。
接着,程序3000确定(在3015)在3010被选择的节点(Q)是否在被选择节点结构中的两个节点之间的最短路径上。为做出该决定,程序确定是否有任意两节点(B和C)存在于该节点结构中,使得这两节点(B和C)之间的距离等于以下距离之和(1)第一节点(B)与被选择节点(Q)之间的距离;和(2)第二节点(C)与被选择节点(Q)之间距离。在一些实施例中,程序通过使用上述边界框的方法和方程式(A)来计算任意节点对之间的距离。
如果程序确定在3010被选择的节点Q处于节点结构中的任意两节点之间的最短路径上,程序就(在3020)将被选择的节点保存在潜在的斯坦纳节点组P中,将该节点标记为已经检测的节点,并转到下面将描述的3030。另一方面,如果被选择的节点(Q)不在被选择的节点结构中的任意两节点之间的最短路径上,程序就(在3025)从潜在的斯坦纳节点组P中除去被选择的节点,并转到3030。
在3030,程序确定其是否已检测了潜在的斯坦纳节点组P中的所有节点。如果否,程序转回3010来选择该组中的另一节点,以便其可以在3015确定该节点是否在被选择的节点结构中任意两节点之间的最短路径上。当程序确定(在3030)其已检测在潜在的斯坦纳节点组中的所有节点时,程序结束。
一旦程序2800(在2825)执行图30的程序3000以识别潜在的斯坦纳节点,程序2800就(在2830)规定所有可能的斯坦纳节点组。每一被规定的斯坦纳节点组包括一个或多个在2825被识别的斯坦纳节点。同样,每一被规定的斯坦纳节点组具有最大尺寸,该最大尺寸比被选择节点结构中的节点数目少两个节点。
然后程序2800(在2835)选择一个在2830规定的一个斯坦纳节点组。然后程序(在2840)(1)对在被选择节点结构中和被选择的斯坦纳节点组中的节点构建最小生长树(MST);和(2)计算并存储该MST的长度(MST_Cost)。程序通过使用全部或部分为斜的边来构建该MST。下面通过参考图31将描述一种构建这样的MST并计算其长度的方法。
接着,程序确定(在2845)在2830规定的斯坦纳节点组中是否有还未检测到的另外的斯坦纳节点组。如果是,程序返回到2835以选择另一斯坦纳节点组,以便其能对该组的节点和被选择的节点结构中的节点构建MST。
当程序(在2845)确定其已产生了被选择节点结构和每一斯坦纳节点组的MST时,程序(在2850)识别在2820和2840计算出的最小的MST_Cost。程序然后(在2855)在LUT中存储在2850被识别的MST_Cost作为在2815被选择的节点结构的斯坦纳树布线的长度。在布局操作期间,布局器则可以通过从存储装置中检索被存储的长度来快速识别当前节点结构的斯坦纳树长度。
接着,程序(在2860)确定其是否已经检测了所有在2810所规定的具有两个或更多节点的组中的节点结构。如果否,程序返回到2815以选择具有两个或更多节点的未被检测到的节点结构,然后重复2820-55的操作以确定并存储该节点结构的斯坦纳长度。否则程序结束。
图31示出程序3100,图28中的程序2800在2820和2840使用该程序3100来构建最小生成树。节点结构的最小生成树是具有N-1条边的树,该N-1条边通过最短布线连接(即跨越)该结构的N个节点,该树仅在节点处分支(即起始与终止)。网格结构的MST长度提供需用以使与该网格结构相关的节点互连的布线数量的下限估计。
根据下述的实施例,MST的边可以为水平的、垂直的或斜的。斜边可以全部或部分为斜。同样,当IC版图使用斜互连线(如±120°互连线)时,MST的斜边可以与版图中的一些斜互连线处于相同方向(如可以处于±120°方向)。
例如,当IC版图使用确定水平、垂直和45°斜线的八边形布线模式时,一些实施例构建具有水平、垂直和45°斜边的MST。上述的图11示出这样的MST的一个例子。同样,如上所述,通过将MST的每一边的两个节点作为边界框的两对角处理,可以通过使用上述边界框的方法和方程式(A)获得每一边的长度。
每当程序2800(在2820或2840)调用其(1)为节点组M构建MST、和(2)计算该MST的长度时,程序3100就开始。该程序首先(在3105)设置MST长度(MST_Cost)为0。接着,程序(在3110)(1)从接收的节点组M中选择节点作为生成树的第一节点并(2)从该组M中除去该节点。
然后程序(在3115)规定剩余节点组R等于当前的节点组M。在3120,程序从剩余节点组R中选择一节点并从剩余节点组中除去该被选择的节点。然后程序计算并存储(在3125)在3120被选择的节点和生成树的每一当前节点之间的距离。在被选择节点和每一节点之间的距离可以被全部是斜的或部分是斜的边所横穿。因此,在一些实施例中,程序使用上述边界框方法和方程式(A)来计算被选择节点和每一节点之间的最小距离。
接着,程序(在3130)确定在组R中是否有节点剩余。如果是,程序返回3120以从该组中选择另一节点,使得其可以(在3125)计算该节点和生成树的当前节点之间的距离。否则,程序(在3135)识别在3 125记录到的最小距离,并识别产生该距离的节点结合(即在组M中的节点和MST的节点)。然后程序(在3140)将被识别的最小距离添加至MST长度(MST_Cost)。
接着程序(在3145)(1)规定相应于在3135识别的节点的树节点;(2)从节点组M中除去该被识别的节点;和(3)将规定的树节点连接到在3135识别的MST节点。然后程序(在3150)确定节点组M是否为空。如果否,程序转回到3115以识别最接近于MST的当前节点的下一节点(在该组M中)。否则,程序确定其已经对接收到的节点组M构建了MST,返回对该组计算的MST长度(MST_Cost),并结束。
VI.延迟量度上面描述的几个实施例计算对不同布局结构花费的长度量度。这些长度量度考虑到包括斜布线的布线模式的使用。一名普通技术人员会理解其它实施例可以使用其它类型的布局量度。
例如,一些实施例计算考虑到使用斜布线的布局延迟成本。这些实施例中,有一些从对这样的布局所导出的网格长度成本中推导出对于网格布局的延迟成本。例如,一些实施例通过使用线性方程如下面引用的方程式(F)从长度成本推导出延迟成本延迟成本=A*布线长度成本+B(F)其中A和B为标量常数。其它实施例通过使用非线性方程如下面引用的方程式(G)从长度成本推导出延迟成本延迟成本=A*布线长度成本D+A′*布线长度成本D-1+…+B(G)其中A、A′、B和D为标量常数。在上述方程式中,D可以为大于一的任意值。同样方程式可以具有依长度而定的多个要素。在这些方程式中,可以根据上述任意一种方法来计算长度成本。
同样,当根据上述预先制表分割方法来计算长度成本时,延迟成本可以和长度成本一起预先制表。例如程序2800可以当其识别关于分割栅格的网格结构的长度成本时,在2855计算并存储延迟成本。具体地说,程序2800可以在2855使用上述方程式(F)或(G)而从在2850被识别的长度成本中计算延迟成本,然后可以在LUT中与长度成本一起存储延迟成本。
图32示出计算延迟成本的程序3200。布局器可以使用该程序来对网格表上的一组网格产生延迟成本估计。在一些实施例中,每当其接收确定多个网格的网格表时程序3200就开始。
每一被接收的网格具有一组与其相关的电路元件(即每一网格被规定为包括几个电路元件)。换句话说,网格表上的网格确定了IC版图中一些电路元件或所有电路元件之间的互连。在下述实施例中,与网格相关的电路元件是IC版图中的电路组件的管脚。然而,其它实施例将电路组件视为网格的电路元件处理。这些实施例中,有一些通过假设每一组件的管脚都设置在统一的位置上(如设置在组件的原点)而将电路组件视为网格电路元件处理,并避免了在不同管脚位置之间识别的需要。
在一些实施例中,在程序3200开始之前网格电路元件的位置定义了一个初始布局结构。在这些实施例的一些中,初始电路元件的位置是随机的。在其它实施例中,原先的物理设计操作,如芯片布局,部分或全部地确定了这些元件的初始位置。其它实施例使用另一布局器来确定电路元件的初始位置,然后使用程序3200来优化使用斜布线的布线结构的布局结构。
程序3200首先(在3205)选择一个网格。对被选择的网格,其根据该网格的长度成本识别(在3210)延迟成本。可以根据上述程序1000、1200、1400、1900和2300中的任意一个来计算长度成本。同样,可根据任意数目的数学关系式,如以方程式(F)和(G)描述的那些数学关系式,从长度成本推导出被识别的延迟成本。如上所述,使用预先制表分割法的实施例可以对每一网格结构的延迟成本预先制表。因此在这些实施例中,程序3200(在3210)通过使用关于分割栅格的被选择的网格结构来识别延迟成本,以从存储装置中检索预先计算的延迟成本。
在3210之后,如果需要,程序(在3215)存储被选择网格的被识别延迟成本。当其使用上述利用被预先制表的延迟成本的分割方法时,程序3200不必要存储被识别的延迟成本。在这些实施例中,已经对关于分割栅格的每一网格结构存储延迟成本。
然后程序(在3220)其是否已经检测到被接收的网格表中的最后一个网格。如果否,程序3205返回到3205以选择另一网格并且随后对新选择的网格重复3210到3215。否则,对被接收的布局结构,程序(在3225)根据在3210识别的延迟成本计算整体延迟成本。在一些实施例中,程序计算整体延迟成本,作为在3210所识别的延迟成本之和。在3225之后,程序结束。
在本发明的一些实施例中,当其接收到确定初始布局结构的网格表(即,在对版图中的组件位置作任意修改之前识别IC版图中所有网格的网格表)时,程序3200对初始布局结构产生延迟成本估计。
在获得初始布局结构的延迟成本之后,一些实施例使用迭代修改布局结构的优化程序来改善布局结构成本。在一些实施例中,优化程序使用程序3200来对布局结构的每一可能的迭代修改计算布局结构成本。这在下面的部分VII中将进一步描述,该部分示出了几种合适的优化技术。
VII.优化技术如上所述,本发明的成本计算方法可以与各种各样的优化技术一起使用。下面描述三种合适的优化技术。这三种为(1)局部优化;(2)模拟退火;和(3)KLFM。
A.局部优化局部优化是一种迭代修改布局结构以改善由成本计算函数产生的布局分数的技术。在每一次迭代,该技术可以移动一个电路组件、交换两个组件或移动多个相关组件,等等。同样,在每次迭代,该技术随机选择移动。另外,这种技术并不接受使计算成本变坏的移动。
图33示出一个局部优化程序3300的例子。该程序首先(在3305)接收初始布局结构。在一些实施例中,程序通过接收电路组件表、这些组件的起始布局结构和确定这些组件之间互连的网格表来接收初始结构。
在接收初始布局结构之后,程序3300(在3310)调用成本计算方法,该成本计算方法例如是在上面部分II至部分VI中描述的其中一种成本计算方法。作为响应,该成本计算方法计算并返回初始布局结构的成本(C)。
当程序3300调用成本计算方法时,其向该方法提供确定初始布局结构的网格表(即在对版图中组件的位置作任意修改之前识别IC版图中所有网格的网格表)。
同样,当成本计算方法为上述的二分法程序1900时,程序3300在调用程序1900之前调用程序1800。如上所述,程序1800对于正在被优化程序3300所优化的当前IC区域规定切割线。程序3300向拥塞计算程序1900提供该切割线和初始布局结构的网格表,以便从程序1900接收初始布局结构的网格切割拥塞成本(C)。从程序1900中,程序3300还接收在由当前切割线限定的两个区域中确定网格和管脚的两个网格表。
在3310获得初始布局结构的成本后,程序(在3315)设置无效迭代计数器(futile-iteration counter)(F)等于1。如下面进一步描述,程序使用计数器来确定是否需要在其已经执行预定次数的迭代而未改善分数时终止其操作。
然后程序(在3320)选择需要对IC版图中的一个或更多电路组件的坐标修改的随机移动。当程序3300使用分割程序1900或2300中的任意一个时,随机移动使得电路组件中的一个或多个电路组件相对于分割线重新定位。例如,对程序2300,随机移动可以确定电路组件从一个切口到另一个切口的位置变化。
程序接着识别(在3325)受该随机移动影响的所有网格。依据如何规定网格,这些网格是这样的网格其或者(1)包含为移动所选择的一个电路组件或多个组件,或者(2)包含这些电路组件管脚的网格。
在3330,程序对在3325被识别的网格计算当前成本。如上所述,成本计算程序1000、1200、1400、1900、2300和3200存储每一网格的成本。因此,程序3300可以通过求和所存储的这些网格的成本数值来对被识别的网格计算当前成本。
根据被选择的随机移动,程序3300(在3335)修改受移动影响的每一电路组件或管脚的坐标。换句话说,在3335,程序通过修改受影响的一个电路组件或多个组件和/或与它们相关的管脚的坐标来做移动以与在3320识别的随机位置相匹配。
然后程序调用成本计算程序并向该程序提供确定受被选择移动影响的被识别的网格的网格表。程序3300在3335修改受影响的电路组件和/或管脚的坐标之后,所述网格表在所选择的移动之后确定被识别网格的结构。在成本计算程序为二分法程序1900的实施例中,程序3300向该程序1900提供用于正在被优化的当前IC区域的切割线以及被识别网格的表。
响应于在3340的调用,成本计算方法在可能的修改之后计算并返回被识别网格的结构的成本。当成本计算方法为二分法程序1900时,该程序还关于切割线而分割被识别的网格,并返回反映这一分割的两个网格表。
在接收(在3340)可能的修改之后被识别网格的成本以后,程序(在3345)通过从在可能的修改之前被识别的网格成本(即在3330计算的成本)中减去在可能的修改之后被识别网格的成本(即在3340计算的成本)来产生δ成本。
在3350,程序确定δ成本是否小于零。如果是,被选择的移动就减小了布局成本,而且程序决定保留该移动。具体地说,当δ成本小于零时,程序(在3355)设置当前布局结构(即有被选择移动时的布局结构)的成本等于先前布局结构的成本(即没有被选择移动时的布局结构)加上δ成本。δ成本为负于是由此减小整个布局结构成本C。
程序3300然后重设(在3360)无效迭代计数器F为1。同样,当成本计算方法为二分法1900时,程序3300在3340使用由方法1900返回的两个网格表来修改由当前切割线限定的两个子区域的两个网格表。然后程序返回到3320来选择另一随机移动。
一名普通技术人员会理解,在一些实施例中,程序3300并不单独根据在3345计算的δ的值来决定保留移动。例如,当程序3300使用分割程序2300时,在一些实施例中程序3300还计算平衡成本,该平衡成本量化由程序2300的分割栅格规定的每个子区域的拥塞。在这些实施例中,当这样的移动增加上述平衡成本时,程序3300可以不保留使得在3345计算出的δ成本减小的移动。
如果程序(在3350)确定δ不小于零,程序意识到被选择的移动不减小布局成本。因此,程序(在3370)将受影响的单个电路组件或多个组件和/或它们相应的管脚的坐标变回到其移动之前的原始坐标(即它们在3335之前的坐标)。如果需要,程序还将每一被识别网格的成本变回其初始值(即变回在3340之前为网格存储的成本)。当程序3300使用分割长度或延迟成本计算程序2300或3200时——其利用了被预先制表的长度或延迟成本,程序不需要将每一被识别的网格的成本改变到原始值,因为在这些实施例中,程序2300或3200并不首先修改这些成本。
然后程序(在3375)对无效迭代计数器加一。然后程序(在3380)确定无效迭代计数器是否等于预先确定的最大值。如果否,程序返回3320来选择另一随机移动。否则,程序(在3380)意识到其已经执行了不改善布局分数的预定最大数目的迭代。因此,程序(在3385)返回确定当前布局结构的网格表,并结束。
B.模拟退火模拟退火是一种迭代修改布局结构来改善由成本计算函数产生的布局分数的优化技术。在每一次迭代,该技术可以移动一个电路组件、交换两个电路组件、移动多个相关组件,等等。同样,在每一次迭代,该技术随机选择移动。它还接收使计算成本变坏的移动,但随着迭代数目增加,其容忍更少的劣质移动。
图34示出一个局部优化程序3400的例子。该程序首先(在3405)接收初始布局结构。在一些实施例中,程序通过接收电路组件的表、这些组件的起始布局结构和确定这些组件之间互连的网格表来接收初始结构。
在接收初始布局结构之后,程序3400(在3410)调用成本计算方法,如上面在部分II-VI中所述的成本计算方法之一。作为响应,该成本计算方法计算并返回初始布局结构的成本(C)。
当程序3400调用成本计算方法时,向该方法提供确定初始布局结构的网格表(即在对版图中的组件位置做任意修改之前在IC版图中识别所有网格的网格表)。
同样,当成本计算方法是上述二分法程序1900时,程序3400在调用程序1900之前调用程序1800。如上所述,程序1800对正在被优化程序3400所优化的当前IC区域规定切割线。程序3400向拥塞计算程序1900提供该切割线和初始结构的网格表,以便从程序1900接收初始布局结构的网格切割拥塞成本(C)。程序3400还从程序1900接收两个网格表,该网格表确定了在为当前切割线所限定的两个区域中的网格和管脚。
在3410获得初始布局结构的成本之后,程序(在3415)设置无效迭代计数器(F)等于1。如下面进一步描述,程序使用计数器来确定是否需要在其已经执行预定数目的迭代而未改善分数时终止其操作。
在3415,程序还设置退火“温度”T和迭代计数器N。如下面进一步描述,退火温度确定程序3400将怎样可能接受坏的移动。迭代计数器用来随时间而减少该温度,以便使程序3400越来越少地愿意接受坏的移动。
在3420,程序然后(1)选择需要IC版图中一个或多个电路组件的坐标修改的随机移动,和(2)递增迭代计数器N。当程序3400使用分割程序1900或2300中任意一个时,所述随机移动关于分割线而重新定位一个或多个电路组件。例如,对程序2300,随机移动可以确定电路组件从一个切口到另一个切口的位置改变。
程序接着(在3425)识别受该随机移动影响的所有网格。依据如何规定网格,这些网格是这样的网格其或者(1)包含为移动所选择的单个电路组件或多个组件、或者(2)包含这些电路组件的管脚。
在3430,程序计算在3425识别的网格的当前成本。如上所述,成本计算程序1000、1200、1400、1900、2300和3200存储每一网格的成本。因此,程序3400通过求和为这些网格存储的成本值来计算被识别网格的当前成本。
根据被选择的随机移动,程序3400(在3435)修改受移动影响的每一电路组件和/或管脚的坐标。换句话说,在3435,程序通过修改受影响的单个电路组件或多个组件和/或它们的相关管脚的坐标来做移动以与在3420识别的随机位置相匹配。
然后程序调用成本计算程序并向该程序提供确定受选择移动影响的被识别网格的网格表。程序3400在3435修改了受影响的电路组件和/或管脚的坐标之后,该网格表在被选择移动之后确定被识别网格的结构。在成本计算程序为二分法程序1900的实施例中,程序3400向该程序1900提供用于正在被优化的当前IC区域的切割线和被识别的网格表。
响应于在3440的调用,在可能的修改之后成本计算方法计算并返回被识别网格的结构的成本(C)。当成本计算方法为二分法程序1900时,该程序还关于该切割线而分割被识别的网格,并返回反映该分割的两个网格表。
在接收(在3440)可能的修改之后的被识别网格的成本后,程序(在3445)通过从在可能的修改之前被识别网格的成本(即在3430计算的成本)中减去在可能的修改之后被识别网格的成本(即在3440计算的成本)来产生δ成本。
在3450,程序识别δ成本是否小于零。如果是,被选择的移动就减小了布局成本,且程序决定保留该移动。具体地说,当延迟成本小于零时,程序(在3455)重新设置无效迭代计数器F为1。然后程序(在3460)设置当前布局结构(即有被选择移动时的布局结构)的成本等于先前的布局结构(即没有被选择移动时的布局结构)的成本加上δ成本。δ成本为负并由此减小整个布局结构成本C。同样,当成本计算方法为二分法1900时,程序3400(在3465)使用由方法1900在3440返回的两个网格表来修改由当前切割线所限定的两个子区域的两个网格表。
程序接着(在3470)确定迭代计数器N是否已经达到最大值。如果否,程序返回3420来选择另一随机移动。否则,程序减小退火温度并在3475重新设置迭代计数器,且返回到3420以选择另一随机移动。
一名本领域普通技术人员会意识到在一些实施例中程序3400并不仅根据在3345计算的δ值来决定保留移动。例如,当程序3400使用分割程序2300时,在一些实施例中程序3400还计算平衡成本,该平衡成本量化了由程序2300的分割栅格确定的子区域的拥塞。在这些实施例中,当这样的移动增加了所述平衡成本时,程序3400可以不保留减小在3345所计算的δ成本的移动。
如果程序(在3450)确定δ成本不小于0,程序(在3480)计算在0和1之间的概率。在一些实施例中,计算概率的方程等于e-(δ)/T,其中δ为在3445计算出的值而T为退火温度。
接着,程序(在3482)选出介于0和1之间的随机数。在3484,程序然后确定是否该随机数小于计算出的概率。如果是,程序决定做移动,并由此转到3460而执行与移动相关的其它操作,如上所述。
如果被选择的随机数不小于算出的概率,程序(在3486)将受影响的单个电路组件或多个组件和/或它们相应管脚的坐标变回到其在移动之前的原始坐标(即它们在3435之前的坐标)。在3486,如果需要,程序还将每一被识别网格的成本变回其原始值(即变回在3440之前存储的网格成本)。
当程序3400使用分割长度或延迟成本计算程序2300或3200——其利用预先制表长度或延迟成本,程序不需要将每一被识别网格的成本变回其原始值,因为在这些实施例中,程序2300或3200并不首先修改这些成本。
然后程序(在3488)给无效迭代计数器加1。然后程序(在3490)确定无效迭代计数器是否等于一预定的最大值。如果否,程序转到3470,其在上面已描述。否则,程序(在3490)意识到其已经执行了预定数目的迭代而未改善布局分数。因此,程序(在3492)返回确定当前布局结构的网格表,并随后结束。
C.KLFMKLFM是一种迭代修改布局结构以改善由成本计算函数产生的布局分数的优化技术。在每次迭代,该技术可以移动一个电路组件、交换两个电路组件、移动多个相关组件,等等。与局部优化和模拟优化不同,KLFM并不随机选择移动。取而代之,在每一次迭代,其选择其可以做的所有可能移动中的最佳移动。KLFM会做使布局成本变坏的移动。在整个搜索中,其识别它所发现的最佳布局结构,且如果该最佳布局结构具有比原始布局结构好的成本,KLFM以改善的解决方案重新开始。
图35示出一个KLFM程序3500的例子。该程序起初(在3505)接收初始布局结构。在一些实施例中,程序通过接收电路组件表、这些组件的初始布局结构和确定这些组件互连的网格表来接收初始结构。
在接收初始布局结构之后,程序3500(在3510)调用成本计算方法,如上面在部分II-VI中描述的成本计算方法之一。作为响应,该成本计算方法计算并返回初始布局结构的成本(C)。
当程序3500调用成本计算方法时,其向该方法提供确定初始布局结构的网格表(即在对版图中的组件位置做任意修改之前识别IC版图中所有网格的网格表)。
同样,当成本计算方法为上述二分法程序1900时,程序3500在调用程序1900之前调用程序1800。如上所述,程序1800对正在被优化程序3500所优化的当前IC区域规定切割线。程序3500向拥塞计算程序1900提供该切割线和初始结构网格表,以便从程序1900接收初始布局结构的网格切割拥塞成本(C)。程序3500还从程序1900接收两个网格表,该网格表确定了在由当前切割线所限定的两个区域中的网格和管脚。
在3510获得初始布局结构的成本之后,程序(在3515)设置标记(F)等于伪(false)。如下面进一步描述,程序在执行多次移动后使用这一标记来确定是否有改善布局结构分数的移动。在3515,程序还(1)识别初始布局结构作为当前的且最佳的布局结构,和(2)初始化上述当前的且最佳的结构的成本为初始结构成本。
接着,程序(在3520)在当前布局结构(P当前)中规定所有移动组M。当程序3500使用分割程序1900或2300中的任意一个时,每一移动关于分割线重新设置一个或多个电路组件。例如,对程序2300,移动可以确定电路组件从一个切口到另一个切口的位置变换。
对M中的每一次移动,程序(在3525)计算在移动之后布局结构的成本(C)。为计算每一移动的成本,程序执行下述六个操作。首先,程序(1)识别受移动影响的所有网格,和(2)通过求和被存储的这些网格的成本值来计算被识别网格的当前成本。其次,程序根据移动而修改受移动影响的每一电路元件的坐标。
第三,向上述成本计算程序提供网格表,该网格表确定受被选择移动影响的被识别网格。当成本计算程序为二分法程序1900时,程序3500还向成本计算程序提供用于当前IC区域的切割线。从成本计算程序中,程序3500接收在可能的移动之后的被识别网格的成本。当成本计算程序为二分法程序1900时,程序3500还接收表示该被识别网格表被程序1900分割的两个网格表。
第四,在接收可能的修改之后的被识别网格的成本后,程序通过从在可能的修改之前的被识别网格成本中减去可能的修改之后的被识别网格成本来产生δ成本。
第五,程序通过向当前布局结构的成本添加算出的δ成本来产生移动成本。第六,程序(1)将受影响的电路元件(组件和/或管脚)的坐标变回到移动之前它们的原始坐标,和(2)如果需要,将每一被识别网格的成本变回其在移动之前的原始值。如上所述,当程序3500使用利用预先制表长度或延迟成本的分割长度或延迟成本计算程序2300或3200时,程序不需要将每一被识别网格的成本变回原始值。另外,当程序3500使用分割程序2300时,程序3500还可以使用另一程序来计算平衡成本,该平衡成本量化由程序2300的分割栅格规定的每一子区域的拥塞。在这些实施例中,程序3500合并计算得到的长度和平衡成本来获得整体成本。
在3530,程序做具有最低布局结构成本的移动来获得一个新的当前布局结构P当前。在此阶段,程序还从可能的移动组M中除去该被选择的移动。程序还设置当前布局结构的成本等于移动后的布局结构的成本。同样,当成本计算方法为二分法1900时,程序(在3530)通过利用在3525该方法对移动返回的两个网格表来修改由当前切割线所限定的两个子区域的两个网格表。
然后程序(在3535)确定当前布局结构(即在3530获得的结构)的成本是否小于已得的最低布局结构成本。如果否,程序转到3545,其将在下面描述。否则,程序(在3540)(1)规定最佳布局结构为当前布局结构;(2)设置最佳布局结构的成本为当前布局结构的成本;和(3)设置标记(F)为真以表示已执行的移动中至少有一个改善了布局成本。然后程序转到3545。
在3545,程序确定可能的移动组M是否为空。如果否,程序转回3525来对该组中每一剩余的移动计算移动之后的布局结构的成本(C)。程序重新计算与移动相关的成本,因为先前的移动可能会影响剩余的移动的布局结构成本。
如果程序(在3545)确定组M为空,程序识别其已执行在3520所规定的组中的所有移动。因此,程序(在3550)通过确定标记(F)是否被设置为真来识别是否已执行的移动之一改善了布局成本。
如果该标记为真,程序(在3555)(1)设置当前布局结构等于在最后搜索整个移动中识别的最佳布局结构;(2)规定当前布局结构的成本等于最佳布局结构的成本;和(3)设置标记(F)为真。然后程序返回3520以对当前布局结构重复,从而确定其是否可以改善该结构。
如果程序(在3550)识别该标记为伪,程序(在3560)返回其所识别的最佳布局结构作为最终布局结构。然后程序结束。
VIII.计算机系统图36示出实现本发明的一个实施例所用的计算机系统。计算机系统3600包括总线3605、处理器3610、系统内存3615、只读存储器3620、永久性存储器3625、输入装置3630和输出装置3635。
总线3605概括表示所有系统、外围设备和使大量计算机系统3600的内部器件通信相连的芯片组总线。例如,总线3605使处理器3610与只读存储器3620、系统内存3615和永久性存储器3625通信相连。
从这些多种存储单元,处理器3610检索待执行的指令和检索待处理的数据,以便执行本发明的程序。只读存储器(ROM)3620存储处理器3610和计算机系统的其它组件所需的静态数据和指令。另一方面,永久性存储器3625是读写存储装置。该装置是即使当计算机系统3600关闭时也存储指令和数据的非易失性存储器。本发明的一些实施例使用海量存储装置(如磁盘或光盘和其相应的磁盘驱动器)作为永久性存储器3625。其它实施例使用可移动存储装置(如软盘或zip盘和其相应的磁盘驱动器)作为永久性存储器。
与永久性存储器3625相同,系统内存3615是读写存储装置。然而,与存储装置3625不同的是,该系统内存是易失性读写存储器,如随机存取存储器。系统内存存储一些处理器在运行时需要的指令和数据。在一些实施例中,本发明的程序被存储在系统内存3615、永久性存储器3625和/或只读存储器3620中。
总线105还连接到输入和输出装置3630和3635。该输入装置能使用户做信息通信并选择对计算机系统的命令。输入装置3630包括字母数字键盘和光标控制器。
输出装置3635显示由计算机系统产生的图像。例如,这些装置显示IC设计版图。所述输出装置包括打印机和显示器,如阴极射线管(CRT)或液晶显示器(LCD)。
最后,如图36中所示,总线3605还通过网络转接器(图中未示)将计算机3600连接到网络3665。通过这种方式,计算机可以成为计算机网络(如局域网(“LAN”)、广域网(“WAN”)、或内部网)或网际网络(如因特网)的一部分。
计算机系统3600中的任一个元件或全部元件都可以与本发明一起使用。然而,一名本领域普通技术人员会理解任何其它系统结构也可以与本发明一起使用。
IX.优点在布局期间分解为斜、水平和垂直布线的本发明的实施例在这样的布线被用于布线网格时产生较好的网格分布。当布线器使用斜、水平和垂直布线而布局器仅被优化用于曼哈顿布线时,布局器拙劣地定位IC版图中的网格。具体地说,在这些情况中,布局器具有忽视斜线位置的趋势,这是因为其倾向于将所有电路元件相对于特定电路元件而放置在该特定电路元件的正上方或正下方、或正右方或正左方。
另一方面,当布局器被优化用于斜、水平和垂直布线时,这样的布局器较少倾向于忽视斜线位置。因此,这样的布局器将相关的电路元件相对于它们彼此的水平、垂直或斜位置放置。这样就提供了相关电路元件的更为均匀的分布。
换句话说,被优化用于斜、水平和垂直布线的布局器可以在更多成本相同的位置定位电路组件。这种能力依次将开放更多的位置来放置电路组件,并由此减小布线长度。
虽然已经参考大量的特定细节来描述本发明,一名本领域普通技术人员会意识到可以在不脱离本发明精神下以其它具体形式来实施本发明。例如,虽然上述布线长度计算程序通过求和各个网格的布线长度成本来计算它们的总成本,然而其它实施例可以通过不同的方式(例如它们可以相乘算出的网格布线长度成本)来合并网格的布线长度成本从而计算其总布线长度成本。
同样上面仅参考具有潜在斜边的各种连接图的布线长度的识别来描述实施例。一名普通技术人员会意识到其它实施例可以识别这种连接图的其它属性。例如,一些实施例可以识别每一图的弯曲数目(即在布线方向中改变的数目)。因此,一名本领域普通技术人员会理解本发明并不受限于前述说明性的细节,而是受限于所述权利要求书。
权利要求
1.一种在电路版图的区域中布局电路组件的方法,该方法包括使用斜线对布局结构的成本做计量。
2.根据权利要求1的方法,其中使用斜线对布局成本所做计量包括使用斜切割线对在该电路版图区域中的拥塞做计量。
3.根据权利要求1的方法,其中一网格组代表在该电路版图区域中的电路元件组之间的互连,每一网格具有一电路元件组,其中使用斜线对布局成本所做计量包括a)使用斜切割线将所述电路版图区域分割成两个子区域;b)在由该斜切割线产生的两个子区域中计量具有电路元件的网格的数目。
4.根据权利要求1的方法,其中该电路版图区域具有多个电路元件,一电路元件组形成一个网格,其中使用斜线对布局成本所做计量包括对一组互连线的长度的估计做计算,该组互连线的长度是为连接所述网格的电路元件所必需的,其中该计算对至少部分为斜的至少第一线的长度做计量。
5.根据权利要求4的方法,其中,对该估计所做计算包括a)构建包围该网格的所有电路元件的边界框;b)使用该第一线来计量该边界框的属性。
6.根据权利要求5的方法,其中所述属性是该边界框的两对角之间的距离,且该第一线横穿该距离。
7.根据权利要求4的方法,其中对该估计所做计算包括构建连接图,该连接图模拟用于连接该网格的电路元件的互连线的拓扑,所述连接图具有一组边,其中至少第一边是至少部分斜的。
8.根据权利要求7的方法,其中,对该估计所做计算进一步包括计算该图的各边的长度。
9.根据权利要求8的方法,其中每一条边连接两个电路元件,其中计算连接两个电路元件的各边的长度包括a)构建包围该两个电路元件的边界框,所述边界框具有长度为L的长边和长度为S的短边,其中该两电路元件为该边界框的两个角;b)通过使用方程式D=[L-{S(cosA/sinA))]+S/sinA来计算该边界框的两个角之间的距离(D);其中在所述方程式中,A表示相对于该版图的一边不为0°或90°的角。
10.根据权利要求4的方法,其中该布局成本为延迟成本,该方法进一步包括从估计的互连线的长度来计算延迟成本,该互连线的长度是为连接该网格的电路元件所必需的。
11.根据权利要求1的方法,其中该电路版图区域具有一组网格,其中每一网格包括一电路元件组,该方法进一步包括a)将该区域分割成多个子区域;b)对每一网格识别包含该网格的电路元件的子区域组;且识别横穿被识别的子区域组的一组互连线的长度;c)其中至少一个被识别的互连线是至少部分斜的;和d)根据每一被识别的互连线组的识别的长度来计算布局量度。
12.一种在电路版图区域中布局电路组件的方法,用于使用布线器的电子设计程序,该布线器使用斜线和曼哈顿布线来对该电路版图的区域中的一组网格布线,所述方法包括在布线期间对考虑到了潜在斜布线的布局量度做计量。
13.根据权利要求12的方法,其中对该布局量度所做计量包括使用斜线对布局成本做计量。
14.根据权利要求13的方法,其中每一网格包括一电路元件组,其中使用斜线对布局成本所做计量包括使用斜切割线对连接每一网格的该组电路元件的潜在布线组的拥塞做估计。
15.根据权利要求13的方法,其中每一网格包括一电路元件组,其中使用斜线对布局成本所做计量包括使用曼哈顿线和斜线对网格组的一组布线长度做计量,其中每一特定布线长度是连接特定网格的该电路元件组所必需的互连线组的长度。
16.根据权利要求12的方法,其中,该布局量度使初始布局结构的布局成本量化。
17.根据权利要求16的方法,其中该初始布局结构由在布线期间不考虑该布线器的潜在斜布线的布局器确定。
18.根据权利要求12的方法,其进一步包括a)对该电路版图区域中的至少一个该电路组件的位置做修改;和b)在所述修改后,对在布线期间考虑潜在斜布线的该布局量度做计量。
19.一种在电路版图区域中布局电路组件的方法,其中所述电路版图区域包括代表该电路版图区域中的多个电路元件的网格,所述方法包括a)构建包围该网格的电路元件的边界框;b)使用斜线对该边界框的属性做计量;和c)根据所计量的属性确定布局成本。
20.根据权利要求19的方法,其中,所述属性是该边界框的两个对角之间的距离,所述斜线至少横穿所述距离的一部分。
21.根据权利要求20的方法,其中该边界框具有长度为L的长边和长度为S的短边,所述斜线与该电路版图的一边形成角A,其中对该边界框的该两个角之间的距离(D)做计量,包括使用方程D=[L-{s(cosA/sinA)}]+S/sinA。
22.根据权利要求21的方法,其中该电路版图区域使用确定不同类型互连线的布线模式,其中该角A对应于至少一种斜线类型的互连线相对于该电路版图的边所成的角。
23.根据权利要求20的方法,其中所述距离提供对连接该网格的电路元件所需的互连线长度的估计。
24.根据权利要求23的方法,其中所述估计为一下限估计。
25.根据权利要求20的方法,其中该电路版图区域包括附加网格,且每一网格代表该电路版图区域中的一电路元件组,所述方法进一步包括对每一特定的附加网格(i)构建包围该网格的电路元件的特定边界框;(ii)计量该特定边界框的两个对角之间的距离;其中多个被计量的距离中的每个距离至少部分被斜线横穿;根据对每一网格被计量的距离而对该布局成本做确定,其中该布局成本是对连接该网格的电路元件所需的互连线长度的估计。
26.根据权利要求25的方法,其中对布局成本所做确定包括添加每个被计量的距离。
27.根据权利要求25的方法,其中每一特定边界框的两个对角之间的距离(D)由方程式D=[L-{S(cosA/sinA)}]+S/sinA来确定;其中L为该特定边界框的最长边,S为该特定边界框的最短边;且其中当S不等于0时,A是由该斜线与该电路版图的一边形成的角,该斜线横穿该特定边界框的对角。
28.根据权利要求27的方法,其中该电路版图区域使用确定不同类型的互连线的布线模式,其中角A相应于至少一斜线类型的互连线相对于该电路版图的边所成的角。
29.根据权利要求28的方法,其中该布线模式包括曼哈顿线和45°斜线。
30.根据权利要求28的方法,其中该布线模式包括曼哈顿线和120°斜线。
31.根据权利要求25的方法,其中所述布局成本是初始布局结构的成本。
32.根据权利要求25的方法,其中该初始布局结构由在布线期间不考虑该布线器的潜在斜布线的布局器确定。
33.根据权利要求28的方法,其进一步包括在计算任意边界框之前,识别在该版图区域中至少一个电路组件的移动;其中该网格是受该电路组件的移动影响的网格;其中该布局成本是由移动之后的该网格所确定的布局结构的成本。
34.根据权利要求33的方法,其进一步包括确定是否根据计算的该布局成本做该移动。
35.根据权利要求25的方法,其中该电路元件包括电路组件的管脚。
36.根据权利要求25的方法,其中该电路元件包括电路组件。
37.一种在电路版图的区域中布局电路组件的方法,其中所述电路版图区域包括代表多个在该电路版图区域中的电路元件的网格,所述方法包括a)构建连接图,该连接图模拟对连接该网格的电路元件的互连线的拓扑,其中所述连接图具有一组边,其中每一边连接该网格的两个电路元件,其中至少一个边是至少部分斜的;b)对该连接图的属性做计量;和c)根据所计量的属性对布局成本做确定。
38.根据权利要求37的方法,其中该属性是该连接图的长度,其中对该长度所做计量包括对每一边的长度做计量并合并计算的边长。
39.根据权利要求38的方法,其中该连接图的长度提供对连接该网格的电路元件所需的互连线的长度的估计。
40.根据权利要求38的方法,其中对每一边的长度所做计量包括a)构建边界框,该边界框具有由边所连接的作为其对角的两个电路元件,该边界框具有长度L和宽度S,其中该长度是该框的最长边,而该宽度是该框的最短边;b)通过使用方程式D=[L-S(cosA/sinA)]]+S/sinA来计算该边界框的两角之间的距离(D);c)其中当S不为零时,A是由连接该框的对角上的该两个电路元件的该边与该电路版图的一边所形成的角。
41.根据权利要求40的方法,其中该电路版图区域使用确定不同类型互连线的布线模式,其中该角A相应于至少一斜线类型的互连线相对于该电路版图的边所成的角。
42.根据权利要求41的方法,其中该布线模式包括曼哈顿线和45°斜线,且A等于45°。
43.根据权利要求42的方法,其中当一条边的该边界框的长度和宽度相等时,该边完全为45°斜线。
44.根据权利要求42的方法,其中当一条边的该边界框的长度和宽度不同且该宽度不为零时,该边包括一水平部分或垂直部分以及一45°部分。
45.根据权利要求41的方法,其中该布线模式包括曼哈顿线和120°斜线。
46.根据权利要求38的方法,其中该电路版图区域包括一网格组,其中每一网格代表在该电路版图区域中的一电路元件组,所述方法包括对每一网格构建连接该网格的电路元件的连接图,其中所述连接图具有一组边,其中每一边连接该网格的两个电路元件;和对该连接图的长度做计量;其中至少一个连接图具有至少一条至少部分为斜的边;根据所计量的每一被构建的连接图的长度对该布局成本做确定。
47.根据权利要求46的方法,其中对布局成本所做确定包括合并每一被构建的连接图的长度。
48.根据权利要求47的方法,其中对每一连接图的长度所做计量包括对该连接图的每一边的长度做计量和对计算的边长做合并;其中对每一边的长度所做计量包括a)构建边界框,该边界框具有由边所连接的作为其对角的两个电路元件,该边界框具有长度L和宽度S,其中该长度是该框的最长边,而该宽度为该框的最短边;b)通过使用方程式D=[L-{S(cosA/sinA)}]+S/sinA来计算在该边界框的两角之间的距离;其中当S不为零时,A为由连接该框的对角上的该两个电路元件的该边与该电路版图的一边所形成的角。
49.根据权利要求48的方法,其中所述布局成本是初始布局结构的成本。
50.根据权利要求49的方法,其中该初始布局结构由在布线期间不考虑布线器的潜在斜布线的布局器识别。
51.根据权利要求48的方法,其进一步包括在构建任意连接图之前,识别在该电路版图区域中至少一个电路组件的移动;其中该网格是受该电路组件的移动影响的网格;其中该布局成本是由移动之后的该网格所确定的布局结构的成本。
52.根据权利要求51的方法,其进一步包括识别是否根据计算的布局成本来做移动。
53.根据权利要求48的方法,其中该电路元件包括电路组件的管脚。
54.根据权利要求48的方法,其中该电路元件包括电路组件。
55.根据权利要求48的方法,其中每一连接图为最小生成树。
56.根据权利要求48的方法,其中每一连接图为斯坦纳树。
57.一种在电路版图的区域中放置电路组件的方法,其中所述电路版图区域包括多个网格,其中每一网格代表在该电路版图区域中的一电路元件组,所述方法包括a)通过使用斜切割线将该电路版图区域分割成两个子区域;b)计量在由该斜切割线产生的该两个子区域中都具有电路元件的网格的数目。
58.根据权利要求57的方法,其进一步包括对电路元件在所述区域中的位置做改变来减小在该两个子区域都具有电路元件的网格的数目。
59.根据权利要求58的方法,其中对该电路元件的位置做改变包括使用KLFM优化程序。
60.根据权利要求58的方法,其中对该电路元件的位置做改变包括使用退火优化程序。
61.根据权利要求58的方法,其中对该电路元件的位置做改变包括使用局部优化程序。
62.根据权利要求58的方法,其进一步包括a)通过使用第二切割线将其中一个子区域分割成两个更小的子区域;b)计量在由该第二切割线产生的该两个更小的子区域中都具有电路元件的网格数目。
63.根据权利要求62的方法,其中该第二切割线为斜线。
64.根据权利要求62的方法,其中该第二切割线为垂直或水平线。
65.根据权利要求62的方法,其进一步包括在该更小的子区域之间移动电路元件来减小在更小的两个子区域中都具有电路元件的网格数目。
66.根据权利要求57的方法,其中所述区域通过使用第三切割线分割较大的区域来限定。
67.根据权利要求66的方法,其中该第三切割线为斜线。
68.根据权利要求66的方法,其中该第三切割线为垂直线或水平线。
69.一种计算布局成本的方法,用于将电路版图的区域分割成多个子区域的布局器,所述方法包括a)对一子区域组,识别连接该子区域组的连接图;其中该连接图具有至少一条至少部分为斜的边;b)计算该连接图的属性;c)根据所计算的该属性识别该布局成本。
70.根据权利要求69的方法,其中该属性是该连接图的长度,且该布局成本等于该连接图的长度。
71.根据权利要求70的方法,其中该连接图的长度提供对在该子区域组中具有电路元件的网格布线所需的布线长度的估计。
72.根据权利要求70的方法,其中所述方法计算该电路版图区域中的网格的布局成本,且每一网格代表该电路版图区域中的一电路元件组;其中该布局器执行该连接图的识别、该属性的计算和该布局成本的识别,且其中在执行该连接图的识别之前,该布局器将该子区域组识别为包含一网格的电路元件组的子区域组;其中该布局成本是该网格的布局成本。
73.根据权利要求72的方法,其进一步包括对该电路版图区域中的每一网格(i)识别包含该网格的电路元件组的一子区域组;(ii)识别连接该子区域组的连接图;(iii)计算该连接图的长度;其中一些连接图具有至少一条至少部分为斜的边;根据所计算的每一连接图的长度识别整体布局成本。
74.根据权利要求70的方法,其中所述方法预先计算关于所分割的该子区域的布局成本,其中所述方法进一步包括对每个特定的子区域组,(i)识别连接该特定的子区域组的连接图;(ii)计算该连接图的长度;其中一些所述连接图具有至少一条至少部分为斜的边。
75.根据权利要求74的方法,其进一步包括对每一特定的子区域组,在一存储装置中存储该连接图的长度作为该特定子区域组的布局成本。
76.根据权利要求75的方法,其中该布局器在经过分割的该电路版图区域中布局电路组件,其中该区域包括一网格组,其中每一网格代表在该电路版图区域中的一电路元件组;其中对该电路版图区域中的每一网格,该布局器(i)识别包含该网格的电路元件组的一子区域组;(ii)从该存储装置中检索连接该子区域组的连接图的长度;其中该布局器从被检索的每一网格的长度识别该网格的布局成本。
77.根据权利要求74的方法,其进一步包括对每一特定的子区域组从所计算的长度导出延迟成本;将该延迟成本存储在一存储装置中作为该特定的子区域组的布局成本。
78.根据权利要求69的方法,其中该连接图是最小生成树。
79.根据权利要求69的方法,其中该连接图是斯坦纳树。
80.根据权利要求69的方法,其中该电路版图区域使用包括不同类型的互连线的布线模式,其中以角A对应于至少一个斜线类型的互连线相对于该电路版图的边所成的角。
81.一种在电路版图的区域中布局电路组件的方法,用于使用布线器的电子设计程序,该布线器使用斜线和曼哈顿布线来对电路版图的区域中的一组网格布线,其中所述电路版图区域包括多个网格,所述方法包括a)选择网格;b)对该被选择的网格,在布线期间考虑到潜在斜布线而计算延迟成本;c)从所计算的延迟成本识别布局成本。
82.根据权利要求81的方法,其中该布局成本等于该延迟成本。
83.根据权利要求81的方法,其进一步包括a)对每一网格,在布线期间考虑到潜在斜布线而计算延迟成本;b)从所计算的延迟成本中识别该布局成本。
84.根据权利要求83的方法,其中该布局成本等于该延迟成本之和。
85.根据权利要求83的方法,其中每一网格代表在该电路版图区域中的一电路元件组,其中对每一网格计算延迟成本包括a)对每一网格计算布线长度估计,其中通过考虑到在布线期间的斜布线而对该布线长度估计做计算;b)根据所计算的该网格的布线长度估计来对每一网格计算延迟成本。
86.根据权利要求85的方法,其中对于至少一个网格,通过利用以下线性关系而根据该网格的布线长度(L)计算延迟成本(D),D=A*W+B,其中A和B为标量常数。
87.根据权利要求85的方法,其中对于至少一个网格,通过利用以下非线性关系而根据该网格的布线长度(L)计算延迟成本(D),D=A*WN+A′*WN-1+…+B,其中A、A′、B和N为标量常数。
88.根据权利要求85的方法,其中以布线模式确定至少一个斜布线方向,其中对每一网格计算布线长度估计包括a)识别包围该网格的电路元件组的边界框;b)通过使用以下方程来计量在该边界框的两对角之间的距离(D)D=[L-{S(cosA/sinA)}]+S/sinA,其中L为该边界框的最长边,S为该边界框的最短边,而A是由该布线模式所确定的一个斜布线方向的角。
89.根据权利要求85的方法,其中对每一网格计算布线长度估计包括识别连接该网格的电路元件的连接图;识别该连接图的长度;其中一些所述连接图包括至少一条至少部分为斜的边。
全文摘要
本发明的一些实施例为在计算潜在布局结构的成本中使用斜线的布局器。例如,一些实施例通过使用全部或部分为斜的线来估计布局结构的布线长度成本。其它实施例使用斜线来计量潜在布局结构的拥塞成本。
文档编号G06F17/50GK1529864SQ01821956
公开日2004年9月15日 申请日期2001年12月5日 优先权日2000年12月6日
发明者S·德格, J·L·甘利, S 德格, 甘利 申请人:凯登斯设计系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1