专利名称:超大规模集成电路避障碍的直角Steiner树方法
技术领域:
集成电路计算机辅助设计即IC CAD技术领域,尤其超大规模集成电路布线设计领域。
背景技术:
在集成电路(IC)设计中,物理设计是其中主要的一环,也是最耗时的一步。与物理设计相关的计算机辅助设计技术称为布图设计。在布图设计中,布线是一个极为重要的环节。
集成电路的设计规模目前正由超大规模(VLSI)、甚大规模(ULSI)向G规模(GSI)方向发展,并出现了系统级芯片(SOC)的设计概念。最小直角Steiner树(rectilinear Steinerminimal tree,RSMT)构造方法的研究是VLSI/ULSI/GSI/SOC布图设计、尤其是布线研究中的一个重要问题。而在实际布线过程中,由于宏模块、IP模块以及预布线等都将成为障碍,使得考虑障碍的RSMT方法成为一个非常值得研究的问题。然而到目前为止,人们的研究多集中于无障碍的情况,相比之下对于带障碍的RSMT方法的研究还相对空白,有必要进行深入的研究。针对布线的实际应用,考虑障碍情况进行Steiner树构造方法的研究是布线中的关键问题之一,具有很大的实际意义。
在已报导和所能查阅到的国内外相关研究中,关于“考虑障碍的直角Steiner树构造方法”的研究情况可列举、分析、总结如下对于线网仅含有两个端点这种比较简单的情况,人们做了不少研究,而且其中已经有一些比较成熟的方法。
Lee于1961年提出了迷宫方法([C.Y.Lee,An Algorithm for Connections and ItsApplications,IRE Trans.On Electronic Computers,1961,346-365.]),可用于求解障碍下的两端线网布线中两端点之间的最短路径。但由于该方法在整个搜索中总是对称的,这增加了搜索所需的时间和存储空间。1978年,Soukup提出了一个带有固定意义的非对称搜索方法([J.Soukup,Fast Maze Router,Proc.Of 15th Design Automation Conference,1978,100-102.]),提高了搜索效率。但该方法不能保证找到最优解。另一个改进的方法是Hadlock于1977年提出的,称为Hadlock最小迂回方法([Hadlock,A Shortest PathAlgorithm for Grid Graphs,Networks,1977.7,323-334.])。上述两种改进的迷宫方法的时间与空间复杂度均为0(hw),其中h和w是网格的数目。迷宫方法的最大缺点是要搜索较大的布图空间,所以要花费较大的时间和存储空间。它的优点是能在任何有解的情况下保证找到一个解。
为了克服迷宫方法的缺点,Hightower于1969年([D.W.Hightower,A solution to theLine Routing Problem on the Continuous Plane,Proc.Of the 6th Design AutomationWorkshop,1969,1-24.]),Mikami和Tabuchi于1968年([Mikami K.and Tabuchi K.,AComputer Program for Optimal Routing of Printed Circuit Connectors,IFIPS Proc.,1968,H47,1475-1478])分别提出了线搜索方法。它的计算时间和空间复杂度均为0(L),其中L为该方法所产生的线数。
另外一种比较有代表性的方法是文献[J.M.Ho,M.Sarrafzadeh and A.Suzuki,“An ExactAlgorithm For Single-Later Wire-Length Minimization”,Proceedings of IEEEInternational Conference of Computer Aided Design,pp.424-427,1990.]提出的单层详细布线中的最小化两端线网的方法。它使用一种称为“同伦变换(homotopictransformation)”的方法对线网进行优化变换,所谓的“同伦”就是不改变线网的整体布局。作者提出当路径中不存在“空U”(三段连续的线段构成的形如字母U的线路称为一个“U”,“空U”即指在U形线路的中间那段向U内部仍有上移空间)时,便可断定为最短路径。这个方法只适用于两端线网的处理,它能得到最优路径。
三篇文献[周智,有障碍的Manhattan空间中的最小Steiner树问题(硕士学位论文).合肥中国科学技术大学,1998.]、[周智,陈国良,顾钧.用0(tlogt)的连接图求有障碍时的最短路径.计算机学报,1999,22(5)519-524.]和[周智,蒋承东,黄刘生,顾钧,“用Q(t)的广义连接图求有障碍时的最短路径”,软件学报,2003,14(2)pp.166-174.]中引入了广义连接图GG,其平均复杂度为Θ(t),其中t为障碍的极边数(多边形相邻的三条边,,,若和正好反向,则即为极边)。GG在复杂度上有一定的优势。在这些文献中提出了利用GG来构造两端线网的最小Steiner树,另外也提出GG可以用来构造多端线网,但是他们还没有具体实现。
相比之下,人们针对多端点线网提出的考虑障碍的直角Steiner树方法还相对很少。与两端点线网相比,多端点情况要复杂得多。尤其是在有障碍的情况下,很难在人们可以接受的时间内求得最优解。本专利申请所涉及的方法就是针对多端点线网的一种启发式方法,它能够在较短的时间内求解大规模线网在不同形状障碍下的Steiner树。以下将列举目前已有的考虑障碍的多端点线网的方法,并与本专利申请所涉及的方法进行比较,以指出他们之间的区别。
文献[Chen Desheng,Sarrafzadeh M.A wire-length minimization algorithm forsingle-layer layout[A].InProceedings of IEEE/ACM International Conference ofComputer Aided Design(ICCAD),Santa Clara,USA,1992.390-393.]对单层对布图中的多端线网进行了研究,提出了基于TPT转换和“线段可见性”概念下的最小化方法。其时间复杂度为0(max(mn,mlogm)),其中n和m分别是指定待连线网N和全部线网集L的线段数目。该方法比较简单,它在转换过程中保持了“拓扑结构”不变(topology preserving)。但拓扑结构的固定又限制了TPT转换的自由度,使结果在很大程度上依赖于转换前的初始布线,因而在某些情况下结果不太理想。
文献[Yukiko KUBO,Yasuhiro TAKASHIMA,Shigetoshi NAKATAKE,Yoji KAJITANI.Self-reforming routing for stochastic search in VLSI interconnection layout[A].InProceedings of IEEE/ACM Asia-Pacific Design Automation Conference(ASP-DAC),Yokohama,Japan,2000.87-92.]提出了使用flip和dual-flip技术来优化原有布线。在这篇文献中证明了利用flip和dual-flip可将连接线网的任意一棵树转换为任何其他形状的树,这使得该方法的转换比上述的TPT转换有更大自由度。但由于该方法采用模拟退火技术,使得执行时间非常长。它的时间复杂度大大于本专利申请所涉及的方法。
文献[Zheng S Q,Lim J S,Iyengar S S.Finding obstacle-avoiding shortest pathsusing implicit connection graphs[J].IEEE Transaction on Computer-Aided Design ofIntegrated Circuits and Systems.1996,15(1)103-110.]引入一个强连接图GC,其复杂度为0(e2),其中e为障碍的总边数。它同时采用A*和基于“detour”值不改向进行启发。另外,三项专利[Ranko Scepanovic,Cupertino;Cheng-Liang Ding,SanJose.Towardoptimal steiner tree routing in the presence of rectilinear obstacles,5491641,Feb.13,1996],[Ranko Scepanovic,Cupertino;Cheng-Liang Ding,SanJose.Toward optimalsteiner tree routing in the presence of rectilinear obstacles,5615128,Mar.25,1997],和[Ranko Scepanovic,Cupertino;Cheng-Liang Ding,SanJose.Toward optimalsteiner tree routing in the presence of rectilinear obstacles,5880970,Mar.9,1999]也都是利用一个相似的强连接图“逃逸图graph”,通过迷宫方法或者是对最小生成树(spanning tree)进行Steiner化的方法来求有障碍下多点线网的Steienr树。这一类方法在障碍情况比较简单的情况下会有较好的求解效果,但在障碍形状较复杂、边数较多的情况下,它们所基于的强连接图将会变得非常复杂,求解效率就比较差。因此,这一类方法仅适用于障碍比较简单的情况。而本专利申请所涉及的方法能适用于各种复杂的障碍情况。
文献[Liu Jian,Zhao Ying,Shragowitz E,Karypis G.A polynomial timeapproximation scheme for rectilinear Steiner minimum tree construction in thepresence of obstacles[A].InProceedings of IEEE International Symposium onCircuits and Systems(ISCAS),Scottsdale,USA,2002.781-784.]引入了几何优化方法中的Guillotine-cut技术。该方法在无障碍时复杂度为多项式时间。虽然该方法可以应用到有障碍的情况,但求解就不能在多项式时间内完成,还需进行复杂度简化的研究工作。
文献[Ganley J L,Cohoon J.P.Routing a multi-terminal critical netSteinertree construction in the presence of obstacles[A].InProceedings of IEEEInternational Symposium on Circuits and Systems(ISCAS).London,UK,1994.113-116.]提出的观点是由于3点和4点的情况比较简单,因此在多点情况下可将它们按一定的要求分成3点组(greedy 3-Steinerization,G3S)或4点组(greedy 4-Steinerization,G4S)来实现。对于有障碍下的Steiner树问题,G3S的时间复杂度为0(k2n),而G4S的时间复杂度为0(k3n2)。其中n是可选的Steiner点数目,k是执行迭代的次数,效率较低。batched3-Steinerization(B3S)成批地选择三点组,时间复杂度为0(rkn),其中r为反复的次数,提高了求解效率。但如何选择三点组或四点组是这个方法的核心问题,它决定着该方法求解结果的好坏。在无障碍的情况下,通常采取的方法是将比较靠近的点归为一组,这个方法是比较合理的,得到的结果也比较好。但是在有障碍的情况下,选择点组时就需要综合考虑障碍以及点的分布情况。因此,如何选择合适点组的问题就复杂很多。然而,在该文献中并没有针对这个核心问题给出明确的解决方法。虽然该方法的时间复杂度还不是很高,但是需要再做后续优化工作才能使该方法得到优化的结果。
最新的进展是,文献[Yang Yang,Qi Zhu,Tong Jing,Xianlong Hong,Yin Wang.″Rectilinear Steiner Minimal Tree among Obstacles.InProceedings of IEEE ASICON,Beijing,China,2003,348-351.]提出的时间复杂度为0(mn)的方法。该方法的运行时间、结果都比较理想,是目前公布的效果最理想的方法。但该方法还存在不足处理障碍的形状局限在凸多边形的情形,绕障碍的方法依赖于初始Steiner树的构造结果,不适用于规模较大的线网。本专利申请所涉及的方法除了与该方法的思路不同外,我们能求得更优的线长结果,请具体参见后面的“本发明方法效果的实验数据”中给出的实验数据对比及其说明。
另外,文献[黄林,赵文庆,唐璞山.一种含浮动端点的斯坦纳树的构造方法.计算机辅助设计与图形学学报.Vol.10,No.6,1998.11.]在具体分析和方法描述中,没有针对有障碍情况的说明。
已进行过“新颖性检索”,检索报告见附件1。
发明内容
本发明的目的在于提出一种超大规模集成电路避障碍的直角Steiner树方法。
本发明的总体思路是首先求出所有要连接点的FST(fulsome Steiner tree),并且删除与障碍相交的FST;然后在剩下的FST构成的分图内构造子Steiner树;最后用detour方法将所有子Steiner树连成一棵完整的Steiner树。
这里FST指的是完全斯坦纳树,它的所有端点都是叶子结点。
本发明的思路提出基于FST的端点划分方法,然后在划分出来的每个子集中针对不同情况,分别使用蚁群方法和贪婪FST方法构造子Steiner树,最后用detour方法的思想来连接所有的子Steiner树;具体而言,它依次含有以下步骤(1)初始化;(2)构造FST根据线网的端点构造FST集合F;(3)端点划分删除集合F中所有与障碍相交的FST,得到新的FST集合F’,其中相连的FST把端点划分成n个分离的子集Ti(i=1,…,n);(4)构造子树对于每个子集Ti,根据形成Ti的FST集合构造子Steiner树Si,我们采用下面两种方法构造子树(4.1)对于端点数量小于20的子集Ti,采用基于蚁群的ACO方法构造子树;(4.2)对于端点数量大于20的子集Ti,采用基于FST的贪婪搜索策略构造子树;
(5)利用detour的方法,计算每两个子树之间的最短路径,从而把Si(i=1,…,n)连接成一棵完整的Steiner树。
本发明的特征在于,它依次含有以下几个步骤(1)初始化,计算机从外部读入如下预设数据线网的信息线网编号,线网中需要连接引脚的物理位置,用二维笛卡儿坐标表示,即为端点;障碍信息形成障碍的多边形的点列;(2)根据线网的端点用GeoSteiner3.1的开发包构造完全Steiner树集合,用FST表示,简称F;(3)端点划分删除步骤(2)得到的集合F中所有与障碍相交的FST,得到新的FST集合,用F’表示,其中,相连的FST把端点划分成n个分离的子集Ti,i=1 ,…,n;(4)构造子树对步骤(3)得到的每个子集Ti,根据形成Ti的FST集合构造子Steiner树,用Si表示,这一步要根据端点数量分别采用下面两种方法(4.1)对于端点数量小于20的子集Ti,采用称为ACO的基于蚁群的方法构造子树,其步骤依次如下(4.1.1)设定子集Ti的边上的初始信息素值,用τ表示,τ即为信息素值;(4.1.2)在各Ti中的各端点处放置1只蚂蚁,并予以编号,用antName表示;同时,每一只蚂蚁维护一个禁忌表,记录已经访问过的点;设定迭代次数的最大值;(4.1.3)任选一只蚂蚁m,通过下式计算出选择每个与m相邻的顶点的概率,i表示蚂蚁m所在的顶点,j表示顶点i的相邻顶点,(i,j)表示连接顶点i和顶点j的边,pi,j表示蚂蚁m选择顶点j作为下一个要到达的顶点的概率 其中,集合N是顶点集合,它是由所有通过Ti上的边与当前蚂蚁m所在顶点相连,并且不是它所访问过的顶点组成的;ηjm当前蚂蚁m在顶点i时,与蚂蚁m相连的顶点中的某一顶点j的可见度ηjm=1c(i,j)+γ·ψjm]]>ψjm从顶点j到当前所有其他蚂蚁已经访问过的顶点的最短距离,为已知量,c(i,j)从顶点i到顶点j的长度,
τij边(i,j)上的信息素浓度的更新值τi,j=(1-ρ)·τi,j+ρ·Δτi,jΔτij在每选定一边时,其上所增加的信息素的量 其中,c(St)是当前所保留的最小直角Steiner树的总线长,Et是它的边集合;上述的α、β、γ、ρ、Z皆为常量,预先设定,其范围如下α∈[1,5],β∈[1,5],γ∈[1,4],ρ∈
,Z∈[1,∝],其中,α、β、γ、Z是整数,ρ是实数;上述tabulist是禁忌表,k∉tabulist(m)]]>表示不在m的禁忌表中的点k的可见度;(4.1.4)依照步骤(4.1.3)得到的概率pij,蚂蚁m选择所要通过的边(i,j);(4.1.5)把顶点j添加到蚂蚁m的禁忌表中;(4.1.6)若前蚂蚁m遇到另一只蚂蚁m’,就把蚂蚁m从蚂蚁集中去掉,并把m的禁忌表中的端点添加到另一只蚂蚁m’的禁忌表中;(4.1.7)更新边(i,j)上的信息素的含量;(4.1.8)迭代次数加1,重复步骤(4.1.2)-(4.1.8),一直迭代到设定的迭代次数的最大值为止;(4.2)对于端点数量大于20的子集Ti,采用基于FST的贪婪搜索策略构造子树,依次含有下列步骤(4.2.1)删除与障碍相交的FST,剩下的FST称为候选FST,再计算所有候选FST的渴求度η(t)η(t)=c(t)λ/t(t)ω其中,t表示需要计算渴求度的FST,c(t)表示t的总线长,t(t)是FST的端点数,λ和ω是常量,预先设定,其范围如下λ∈[1,4],ω∈[1,4],其中,λ、ω是整数;(4.2.2)选择候选集合渴求度最小的FST,即f,并将f加入到当前解集合Y中;(4.2.3)删除候选FST中所有与f不兼容的FST,这里,两棵树不兼容是指两棵树包含两个或两个以上的相同端点,或者有一条或一条以上的边重叠。
(4.2.4)删除端点集合中所有被f覆盖的端点;(4.2.5)如果候选FST集合不为空,则重复(4.2.2)-(4.2.4)的步骤,选择新的FST加入到当前解中,直到候选FST集合为空;(4.2.6)如果端点集合中还有剩余元素,则将它们加入到当前解中;(5)利用最小折返值方法,即detour方法,计算每两个子树之间的最短路径,从而把Si,i=1,…,n,连接成一棵完整的Steiner树,计算两子树之间的最短路径的方法是对于属于这两棵子树的所有端点,两两求最短路径,取其中最短的那条路径作为两子树之间的最短路径;计算两个端点,即点s到点t,之间最短路径的方法有以下步骤(5.1.1)根据障碍和端点s、t构造逃逸图,这里,逃逸图是由障碍的水平边和竖直边向两端扩展,直到遇到障碍,这样扩展后的线段相交形成的一种连接图;(5.1.2)初始化候选点集合为点{t},已访问点集合为空,设置当前点为t;(5.1.3)把所有与当前点在逃逸图上相邻且未访问过的点加入到候选点集合中,根据下面的规则计算这些新加点的折返值有向边u→v折返值的定义给定一条有向边u→v和一个最终目标点t,设L为通过点t且与有向边u→v相垂直的直线,则当u,v在L的同侧,且u到L的距离远于v,则u→v的折返值=0;当u,v在L的同侧,且u到L的距离近于v,则u→v的折返值=线段u→v的长度;当线段u→v与L交于w,则u→v的折返值=线段w→v的长度;于是,点的折返值可以这样定义从源点出发到目标点的寻路过程中,某一点的折返值即为从源点到该点的所有路径的折返值之和;(5.1.4)在候选集合中选择折返值最小的点q加入到访问点集合中,设置当前点为q;(5.1.5)如果最终目标点t不在候选点集合中,则重复步骤(5.1.1)-(5.1.4);(5.1.6)如果最终目标点t在候选点集合中,则把t加入到访问点集合中,这样找到的最短路径就是访问点集合中的点列按照被加入的先后顺序所组成的路径。
本发明的方法有如下特点首先,本发明的方法能处理多端点(包括能处理两端点)的线网;能处理复杂障碍(包括凹多边形障碍)的情况。即本发明方法的适用范围更广。同时,本发明方法并不像有些文献那样只给出了一个设想或思路雏形,而是一个能在具体装置(工作站)上运行的为布线过程服务的IC CAD工具,有具体的实施描述。
其次,与已有的考虑障碍的多端点线网Steiner树构造方法相比,本发明的方法在处理问题的规模和线长这两方面有更好的性能。本发明方法能够在30分钟之内计算出500个端点线网绕100个直角障碍的情况,对于7个端点以下的情况,我们的方法都能在0.1秒左右求出结果;同时用本方法求解的线长结果也十分理想。本发明的方法在综合效果上优于已有方法,请具体参见“本发明方法效果的实验数据”中给出的实验数据说明。
本发明方法效果的实验数据进行实验的计算机系统具体描述如下一台Sun公司的V880型工作站;
Unix操作系统;C++编程语言;Vi编辑器、gcc编译器、gdb调试工具等;在测试中,设置参数如下蚁群方法α=1,β=1,γ=1,ρ=0.5,Z=10000,MAX_LOOP=100;贪婪FST方法λ=1,ω=4。
MCNC电路中的线网作为测试例子,针对下述9个线网,本发明方法与最新研究进展的方法——Yang Yang等的“2-step”方法[Yang Yang,Qi Zhu,Tong Jing,Xianlong Hong,YinWang.″Rectilinear Steiner Minimal Tree among Obstacles.InProceedings of IEEEASICON,Beijing,China,2003,348-351.]的测试结果比较列出如下,对每个实例测试10次,把平均情况、最差/最好情况分别记录如下
Ours本发明方法生成的有障碍下的RSMT长度的冗余度[3]。
“2-step”方法求解生成的有障碍下的RSMT长度。
冗余度=(结果Steiner树总线长-最优Steiner树总线长)/最优Steiner树总线长×100%。这里的“最优Steiner树总线长”是由人工计算得到的。
Best、Ave、Worst分别是最好结果、平均结果和最差结果。
从上述测试结果可计算得到本发明方法求解的布线树的线长冗余度的平均值为0.02%,远小于2-step的冗余度(5.31%)。
利用随机生成的测试例子,本发明方法还与Ganley等的“G4S”方法[Ganley J L,CohoonJ.P.Routing a multi-terminal critical netSteiner tree construction in the presenceof obstacles[A].InProceedings of IEEE International Symposium on Circuits andSystems(ISCAS).London,UK,1994.113-116.](G4S是现有的能够高效处理多端点绕障碍的Steiner方法)的测试结果比较列出如下
G4SG4S方法求解结果的Steiner比(Steiner Ratio)[8]。
Wire用我们的方法求解结果的Steiner比(Steiner Ratio)[8]。
CPU-time我们的方法的运行时间。
Steiner比(Steiner Ratio)=(最小生成树总线长-Steiner树总线长)/最小生成树总线长×100%。
可以看出,当端点个数小于20的时候,我们的方法优于G4S,当端点个数大于20的时候,G4S已经不能处理,而我们的方法仍旧可以得到比较稳定的结果,而且运行时间也较短。
图1本发明核心部分流程图。
图2步骤1的流程图。
图3(a)步骤1初始图(含有与障碍相交的FST);(b)步骤1结果实例图(去掉所有与障碍相交的FST)。
图4步骤2结果实例图。
图5步骤3的流程图。
图6步骤3结果实例图。
图7-图15net17的构造过程示意图
图7初始布局。
图8生成的FST集合。
图9分图划分(步骤1)实施结果。
图10步骤2的详细过程(1)初始状态;(2)第一次移动;(3)得到结果。
图11步骤2完成结果。
图12计算t1到t3的最短路径的准备过程(a)初始逃逸图;(b)加入一个源点后的逃逸图;(c)加入一个目标点后的逃逸图;(d)标记所有节点。
图13(a)初始状态;(b)第1次选点;(c)第2次选点;(d)第3次选点;(e)第4次选点;(f)第5次选点;(g)第6次选点。
图14(a)AC的最短路径;(b)AD的最短路径;(c)AE的最短路径;(d)AF的最短路径;(e)BC的最短路径;(f)BD的最短路径;(g)BE的最短路径;(h)BF的最短路径。
图15最终结果树。
具体实施例方式
首先具体分析本专利申请涉及的“考虑障碍的直角Steiner树方法”的核心思想。
在将电路的障碍和线网的信息读入并进行处理后,本方法核心的部分就是构造Steiner树的过程,总流程框图如图1所示。该方法的思路与以往的方法不同,方法分三步来构造最后的结果树第一步,求出所有端点的FST(fulsome Steiner tree),并且删除与障碍相交的FST;第二步在剩下的FST构成的分图内构造子Steiner树;第三步用detour方法将所有子Steiner树连成一棵完整的Steiner树。以下分别介绍方法的三个步骤。
第一步求出所有端点的FST(fulsome Steiner tree),并且删除与障碍相交的FST,相当于前面发明思路中的第(2)和第(3)步,该步流程图如图2所示。
我们采用GeoSteiner方法中构造FST的方法生成FST,它已经在1998年公开发表[D.M.Warme,P.Winter,and M.Zachariasen,“Exact Algorithms for Plane Steiner TreeProblemsA Computational Study”,Technical Report DIKU-TR-98/11,Department ofComputer Science,University of Copenhagen,April 1998]。构造完成以后得到的FST集合如图3-a所示,可以看到有若干线段与障碍边相交。
对于已构造的每棵FST,我们判断它的边是否和障碍边相交,若相交,则认为该FST与障碍相交,删除之;否则保留。然后根据连通性,由剩下的FST形成若干连通分图,经过第一步处理完成以后得到的一个实例划分如图3-b所示。
第二步这一部分的主要任务就是将上一步中处理的结果,即几个分图,各自在内部进行互连,可由一棵完整的Steiner树连成,也可由几棵Steiner树连成,而且要兼顾两个方面的考虑一方面力求每个分图内所用的总线长最短,另一方面尽最大努力保证原分图的连通性。
在这一部分提出了两种方法,分别命名为蚁群方法和贪婪FST方法,两者各有长处,针对不同情况选择应用能取得好的效果。
下面首先介绍如何利用蚁群方法进行分图互联蚁群方法是一种适用于多种NP-hard问题的启发式方法,它兼顾了贪婪方法和随机优化方法的优点,既保证了不过快地陷入到某个局部最优解,又保证了复杂度不会像模拟退火(SA)那么高。
具体到我们的方法,我们把每一个分图都看作一个连接图,在每一个端点上放置一个蚂蚁,由其构成一个蚂蚁的集合。每一轮迭代,都首先任选一个蚂蚁,让其依照一定的方法,通过强连接图上的相邻边,移动到另一个相邻端点。每一次移动,所选蚂蚁都会在走过的边上留下信息素(trail),而路径上的信息素又会随着时间的推移而逐渐挥发。每一个蚂蚁同时维护着一个禁忌表(tabulist),用它记录下已访问过的端点,以避免重复访问而形成回路。当一个蚂蚁遇到另一个蚂蚁,则将前者从蚂蚁集中去掉,并将它禁忌表中的端点添到后者的禁忌表中。这个选蚂蚁、选路径、更新信息素的过程持续到所有的端点都被一棵RSMT所覆盖。记录下当前构造出的RSMT,并与前面所构造的结果进行比较,保留下线长较小者。这算是一次迭代。进行多次迭代,直到总线长不再变小,或是达到迭代次数的最大值(经过试验,我们把这个值设为100)。
蚂蚁是按照统计规律来选择下一步的目标的。这个概率取决于两个方面,一方面是蚂蚁在前面迭代中在路径上所留下的信息素浓度,另一方面是相连顶点所对应的可见度。设当前蚂蚁m在顶点i,则相连顶点中的点j的可见度可用下式来表达ηjm=1c(i,j)+γ·ψjm----(1)]]>其中,γ是一个常量,ψjm是从顶点j到当前所有其他蚂蚁已访问点的最短距离,它表征了以怎样的一个速度与其他点相连,c(i,j)是从顶点i到顶点j的长度。
边(i,j)上的信息素浓度的更新可用下式表征τi,j=(1-ρ)·τi,j+ρ·Δτi,j(2)其中ρ是一个常量,称之为蒸发速率,它表征了路径上的已有信息素挥发速度。而每选定一边,其上所增加的信息素的量为
其中c(St)是当前所保留的RSMT的总线长。Et是它的边集合,Z是一个常量,表征整棵树上总的信息素的量。
至此,当前蚂蚁m选中边(i,j)的概率为 其中集合N,是由所有通过连接图上的边与当前蚂蚁所在顶点相连,并且不是它所访问过的顶点组成。
下面给出蚁群方法初始化每一边上的信息素为p0;设置当前的迭代次数为0;while迭代次数<设定的迭代次数的最大值在端点集中的每一个端点上放置一个蚂蚁,并将他们放入各自的禁忌表中。
while蚂蚁的数目>1任选一蚂蚁m;通过(1)式和(4)式,计算出选择每个与之相连的顶点的概率;依照概率,选出所要通过的边(i,j);将顶点j添加到蚂蚁m的禁忌表中;if当前蚂蚁m遇到另一只蚂蚁m’then将蚂蚁m的禁忌表中的所有元素添加到m’的禁忌表中;从蚂蚁集合中将m去掉;用(2)式和(3)式更新边上的信息素含量。
迭代次数加一;下面介绍贪婪FST方法,是以使总线长最短为目标、在与当前所有RSMT兼容的FST集合中选取局部最优解,构造出RSMT集合。
每一棵FST在初始化的时候,都要计算一下它的渴求度,渴求度定义为η(t)=c(t)λ/t(t)ω(5)其中的c(t)是名为t的FST的总线长,t(t)是t的端点数。λ和ω是常数。
显而易见,如果一棵FST的渴求度比较小,意味着它用较少的线长覆盖了较多的点,使总线长最短的目标在局部达到优化。
为了下面叙述方便,这里给出两棵树兼容/不兼容的定义两棵树不兼容是指两棵树包含两个或两个以上的相同端点,或者有一条或一条以上的边重叠;两棵树兼容是指两棵树有且仅有1个的相同端点,且无重叠边。
在方法中,维护这样一个三元组(D,Q,Y),其中,Y是当前得到的RSMT的集合,D是FST的候选集,Q是没有被Y所覆盖的端点。初始化时,Y置为空,D为方法第一步后所得到的剩余FST集合,Q即为输入实例的端点集。
方法首先选出D中η最小值者,将其添加到当前最小Steiner树t中,这个t是集合Y的一个元素。再在集合D中选出η次小者,填入到t中。依此类推,不过在每次添加新的FST的同时,将其所有不兼容者从候选FST集D中去除,以免冲突,并更新集合Q。故而,如果在集合D中仍有与当前t兼容的FST,则从中选出η最小者,按上述方式添加;否则看集合D是否为空,如果不为空,则将t加入到集合Y中,再从集合D中重新构造RSMT;如果集合D为空,则将剩余的孤点所组成的集合Q,记作退化的RSMT的集合,并添加到集合Y中。
下面给出贪婪FST方法D←Fi;Q←T;Y←NULL;从集合D中选出渴求度最小者f;Y←t←f;D←D-f;将集合D中与Y不兼容的FST去掉;将Q中被f覆盖的端点去掉;while D非空while在D中存在与集合t兼容的FST选出η最小者f;t←t+f;从集合D中去掉与f不兼容的FST;从Q中去掉被f覆盖的端点;从集合D中选出η最小者f;t←f;Y←Y+t;从集合D中去掉与f不兼容的FST;从Q中去掉被f覆盖的端点;将余下的孤点全部放入集合Y中;
蚁群方法的性能优于贪婪FST方法,而贪婪FST方法的时间复杂度低于前者。为了扬长避短,需要针对不同的实例采用不同的方法。通过分析实验结果,我们设计,对端点数多于20的分图,采用贪婪FST方法;否则采用蚁群方法。实验结果表明这是一个提高方法总体性能的有效措施。
利用蚁群方法和贪婪FST方法进行分图间互联,在每个分图内部用Steiner树连接端点,图4表示了根据这种思路由图3-b的结果生成子树的情况。
第三步经过了方法第一、二步,得到了一些分离的子树,这一部分的主要任务就是将它们互连起来,成为一棵完整的Steiner树。方法是将树的互连转化为寻求最小路径问题。即,求出每一对树中的每一对点的最小路径,记录下其中的最小者,作为对应的两棵树的间距,再以贪婪的方法对树进行互连。
我利用文献[Zheng SQ,Lim JS,Iyengar SS.″Finding obstacle-avoiding shortestpaths using implicit connection graphs.″IEEE Transactions on Computer Aided Design,1996,15(1)103-110.]的方法来求最短路径。
首先,给出有向边u→v折返值的定义给定一条有向边u→v和一个目标点t,设L为通过点t且与有向边u→v相垂直的直线,则当u,v在L的同侧,且u到L的距离远于v,则u→v的折返值=0;当u,v在L的同侧,且u到L的距离近于v,则u→v的折返值=线段u→v的长度;当线段u→v与L交于w,则u→v的折返值=线段w→v的长度。
由上,点的折返值可以这样定义从源点出发到当前目标点的寻路过程中,某一点的折返值即为从源点到该点的所有路径的折返值之和。
在初始化阶段,仅基于障碍所构造的逃逸图被生成。这里,逃逸图是由障碍的水平边和竖直边向两端扩展,直到遇到障碍,这样扩展后的线段相交形成的一种连接图。
然后,选出两棵Steiner树,将其上的一对点添加到逃逸图上,依折返值方法求出其最短路径,再从逃逸图上删除两点。照此求出所选的两棵Steiner树的所有端点对的最短路径,并保留最小者。同理,对每两棵Steiner树都进行上述操作,并把结果保留到一个按路径长度升序排列的集合中,每次从中选取一个最小路径,能够将其插入当前图中而不生成环,直到连成一棵完整的Steiner树。其中用到的折返值方法是这样的维护两个集合,已访问集合V和候选集合A。一开始,集合A中仅有元素源点s。每当有元素填入集合V,它的未访问的相邻节点就要被填入到集合A中。而当集合A不为空并且尚未走到目标点时,都要从集合A中取出折返值最小的元素添加到集合V中,同时从集合A中将之删除。方法的流程如图5所示。
文献[Zheng SQ,Lim JS,Iyengar SS.″Finding obstacle-avoiding shortest pathsusing implicit connection graphs.″IEEE Transactions on Computer Aided Design,1996,15(1)103-110.]已经证明,绕障碍下的最小路径是Manhattan距离加上2倍的折返值。本文采用求绕障碍下的最短路径的方法来求源点与目标点间距离,本步方法基于该文献中提出的折返值方法。图6显示了第三步完成以后生成的完整Steiner树。
在实施中,规定公式(1)-(5)中的参数取值如下α=1,β=1,γ=1,ρ=0.5,Z=10000,MAX_LOOP=100,λ=1,ω=4。
下面结合一个MCNC的电路线网的例子,说明本方法的全过程,如下为了实现,或者说是具体实施本项发明,我们给出以下关于发明实施的描述。
实施本发明的计算机系统本发明所设计的为布线服务的软件要在一个具体的计算机系统上得以实施,该计算机系统具体描述如下。
一台Sun公司的V880型工作站;Unix操作系统;C++编程语言;Vi编辑器、gcc编译器、gdb调试工具等。
步骤(1)预备工作。读入线网信息、障碍信息并处理这些信息。下面是描述线网的文件net 17(20,1000)(300,400)(600,1000)(500,1100)(650,1110)(700,1200);——说明线网描述文件的一般形式是net net_id{(pin_x,pin_y)};其中net_id表示线网号,(pin_x,pin_y)表示线网需要连接的引脚的坐标。
针对17号线网的障碍信息描述文件如下obs(100,1300)(400,1300)(400,800)(1000,800)(1000,600)(100,600);——说明障碍描述文件的一般形式是obs{(x,y)};其中(x,y)表示障碍多边形上的顶点,点列的顺序是从左下角开始,沿着逆时针的方向依次排列。
图7为输入线网net17和障碍的示意图,图中给出了待连线网端点的坐标,以及障碍的各端点坐标。
步骤(2)根据线网的端点点构造FST集合F,我们采用GeoSteiner中介绍的方法(见具体实施方式
第一步中的叙述,构造FST的程序可以在GeoSteiner3.1的开发包找到中,可以在http//www.diku.dk/geosteiner/免费下载使用)构造FST。根据net17的端点生成的FST共有5个,我们为他们编号为1、2、3、4、5、6、7、8,如图8所示。
步骤(3)删除所有与障碍相交的FST。这样第1、2、4、8号FST都要被删除,保留3、5、6、7号FST。这样根据连通性,3、5、6、7号FST把4个端点分为两组——A、B为一组(T1),C、D、E、F为一组(T2),如图9所示。T1和T2组内的端点由FST互相连通,而T1和T2之间没有连通。由此,连接T1的FST构成分图H1,连接T2的FST构成分图H2。
步骤(4)构造子树。下面以H1和H2分图内的连接为例说明前面在具体实施方式
中所提到的第二步的连接方法。在此为了说明4.1和4.2所叙述的两种子树构造方法,我们分别采用蚁群方法(步骤4.1)和贪婪FST方法(步骤4.2)为分图H1和H2构造子树。首先介绍采用蚁群方法为H1分图构造子树的具体过程,步骤如下由于属于H1分图的FST是6号FST,我们根据6号FST构造H1分图的连接图C1,规定蚂蚁只能沿着C1的边移动,如图10(1)所示。接下来初始化C1边上的信息素值τ(AU)=τ(UB)=1.0。
其中τ(AU)和τ(UB)分别表示边AU和边UB上的信息素值。
下面开始蚁群方法的第一次迭代首先在H1的2个端点(A、B)处各放置一只蚂蚁,记这两只蚂蚁为ant1(初始位于A点)和ant2(初始位于B点),设置ant1和ant2的禁忌表分别为{A}和{B}。现在通过蚂蚁的移动来构造一棵Steiner树第一次选择位于ant1(每次随机选择一只存活的蚂蚁),根据(1)式计算ant1选择AU边时的可见度,这里m=1,i=A,j=U,c(i,j)=|AU|=280(边AU的长度),γ是一个常量,我们把它设为1,ψjm是从顶点j到其他蚂蚁所有已访问点的最短距离,这时,所谓其他蚂蚁就是ant2,ant2所访问的点就是它的禁忌表中的点,即{B},所以ψjm是从顶点U到B点的最短距离|BU|=600,代入(1)式得到ηjm=ηU1=1280+1×600≈0.00114]]>根据(4)式,计算ant1选择边AU的概率,其中τi,j是C1上(i,j)边上的信息素值,这里就是边AU上的信息素值,即τ(AU)=1.0。α和β是常量,我们设为α=1,β=1。集合N,是由所有通过强连接图上的边与当前蚂蚁所在顶点相连,并且不是它所访问过的顶点组成,所以N={B}。
Pi,j=PAU=τAU·τB1τAU·ηB1=1.0×0.001141.0×0.00114=1]]>由于沿着AU边移动的概率是1,所以ant1沿着AU边移动到U,ant1把U点加入到自己的tabulist中,所以现在ant1的tabulist={A,U}。
目前还存活两只蚂蚁,所以继续选择蚂蚁,本次选择的是ant2(同上,也是随机选择的),与上面同样的过程,我们计算出ant2沿着BU边移动的概率为1,所以ant2沿着BU边移动到U;由于U点已经包含在ant1的tabulist中,所以ant2死亡,并且把ant2的tabulist合并到ant1的tabulist中,即ant1的tabulist={A,B,U}。
这说明已经构造出来一个完整解St,这个解由存活的那只蚂蚁的tabulist中的点表示。计算这个解的权值,也就是这棵Steiner树的总线长c(St)=|AU|+|UB|=280+600=880根据上面的权值和公式(3)计算信息素的增量Δτi,j=Zc(St)=1000880=1.136]]>然后再根据(2)式更新AU和UB两条边上的信息素的值,ρ是一个常量,称之为蒸发速率,它表征了路径上的已有信息素挥发速度,我们设为0.5τ(AU)=(1-ρ)×τ(AU)+ρ×Δτi,j=(1-0.5)×1.0+0.5×1.136=1.068τ(BU)=(1-ρ)×τ(BU)+ρ×Δτi,j=(1-0.5)×1.0+0.5×1.136=1.068下面开始新的一轮迭代,再构造一组解,并与上面已有的最优解作比较,如果优于当前最优解,则以此解来替换当前最优解,否则进行下一次循环,直到循环次数大于100。可以得到如图11所示的子树S1。
下面介绍用贪婪FST方法为分图H2构造子树的方法。
对于分图H2,候选的FST是第3、5、7号FST,见图8中的(3)、(5)、(7),下面,我们用F3、F5和F7标记这3个FST。首先初始化3个集合D←{F3,F5,F7};Q←{C,D,E,F};Y←NULL。然后根据具体实施方式
中的(5)式计算D中每个FST的渴求度,我们取常数λ=1,ω=4;c(t)为FST的总线长,所以c(F3)=|500-650|+|1100-1110|+|1000-1100|=260。
c(F5)=|500-600|+|1100-1000|=200。
c(F7)=|650-700|+|1110-1200|=140。
t(t)为FST覆盖的端点个数,显然t(F3)=3,t(F5)=2,t(F7)=2。
所以渴求度分别为η(F3)=c(F3)λ/t(F3)ω=260/34=3.21。
η(F5)=c(F5)λ/t(F5)ω=200/24=12.5。
η(F7)=c(F7)λ/t(F7)ω=140/24=8.75。
取D中渴求度最小的FST,显然是F3,将F3添加到当前部分解集合Y中;然后从D中去掉F3,则D={F5,F7},下面从D中去掉所有与F3不兼容的FST,容易看出F5和F3有2个相同端点(C、D),根据不兼容的定义,F5和F3不兼容,所以应该把F5从集合D中去掉;同理可判断F7和F3兼容,应该保留在集合D中。所以现在3个集合的元素和当前子树t变为如下D={F7};Q={F};Y={F3}。t=F3。
由于集合D不为NULL,所以从D中选出与t兼容的FST-F7放入集合Y中,由于F7是D中的唯一一个元素,所以不用计算F7的兼容性,直接选出,现在D为空,然后去掉Q中被F7覆盖的端点F,则Q也为空,所以循环结束。而且现在没有孤点,所以集合Y维持现状,即Y={F3,F7}。
现在从集合Y中的FST可以得到如图11所示的一棵子树S2。
步骤(5),连接分图。对于上面求得的2个子树,两两求最短距离,即,对于每一对子树,分别求所有点对之间的最短路径,然后取最短的那个。
下面,以寻找B和C的最短路径为例给出最小折返值方法的具体实施过程。在下面的说明中,为了区分端点和一般顶点,我们记端点B为t1,记端点C为t3。
在求t1和t3最短路径之前先要做如下几项工作首先利用Zheng在文献[Zheng S Q,LimJ S,Iyengar S S.Finding obstacle-avoiding shortest paths using implicit connectiongraphs[J].IEEE Transaction on Computer-Aided Design of Integrated Circuits andSystems.1996,15(1)103-110.]提出的方法为障碍构造逃逸图,如图12(a)所示,先后将源点t1和目标点t3添加到上述构造的逃逸图中,如图12(b)、(c)所示。新添加点的坐标都在图中标出。
在寻路的过程中,设定两个集合,候选点集合C和已访问点集合V。初始状态,V置为空,C中仅有源点t1。然后重复下述操作从集合C中取出一个折返值最小者,添加到集合V中,即保证每次只访问当前已知的折返值最小者,同时将它的未被访问的相邻节点加入到集合C中。
如前所述,首先初始化已访问集合V为空、候选集合C为t1,设置当前点为t1;然后把与t1相邻的3个点v2、v3、v6加入候选集合C,并计算它们的折返值;接下来,选择候选集合C中折返值最小的那个点v6,加入已访问集合V,设置当前点为v6;上述过程如表1中“初始化”和“第一次选点”所示。这样继续,直到把目标点t3加入到集合V中。
根据最小折返值方法计算t1到t3最短路径时,每步的计算结果如表1所示。表1中的“点(值)”中的“值”表示该点的折返值,如v7(200)表示点v7的折返值为200。
表1 计算t1到t3最短路径的最小折返值方法
注括号内为折返值现给出表1中几个典型折返值的计算过程在第一次选点过程中,需要计算v6的折返值,由折返值的定义,从源点t1出发到当前目标点v6的寻路过程中,v6的折返值是从源点t1到v6的所有路径的折返值之和;从t1到v6的路径仅包含t1→v6一条线段,这条线段处于过最终目标点t3的垂线的同侧,而且t1比v6远,所以根据线段折返值定义的第一种情况,该线段的折返值为0,所以v6的折返值为0。
在第五次选点中,要计算v8的折返值,由于已知v9的折返值为200,根据折返值的定义容易推出,v8的折返值等于v9的折返值与线段v9→v8的折返值之和。线段v9→v8在过最终目标点t3的垂线的同侧,而且v8比v9远,这属于折返值定义的第二种情况,所以折返值应该是线段的长度,即为300。所以v8的折返值为300+v9的折返值,等于500。
在第二次选点过程中,对于线段v6→v7,到v6的时候折返值积累为0,v6和v7分别处在过目标点t的垂线的两侧,这是上述折返值定义的第三种情况,所以处在该垂线下面的线段的长度200即为线段v6→v7的折返值。所以v7的折返值为200+v6的折返值,等于200。
用同样的方法可计算(A、C)、(A、D)、(A、E)、(A、F)、(B、C)、(B、D)、(B、E、(B、F)的最短路径分别如图14-a,b,c,d,e,f,g,h所示。下面用SP(ab)表示ab间最短路径的长度,则SP(AC)=2000,SP(AD)=1700,SP(AE)=1760,SP(AF)=1800。
SP(BC)=1700,SP(BD)=1700,SP(BE)=1840,SP(BF)=1800。
选择最短路径BC来连接两棵子树,得到如图15所示的最终连接结果。
权利要求
1.超大规模集成电路避障碍的直角Steiner树方法,其特征在于,它依次含有以下步骤(1)初始化,计算机从外部读入如下预设数据线网的信息线网编号,线网中需要连接引脚的物理位置,用二维笛卡儿坐标表示,即为端点;障碍信息形成障碍的多边形的点列;(2)根据线网的端点用GeoSteiner3.1的开发包构造完全Steiner树集合,用FST表示,简称F;(3)端点划分删除步骤(2)得到的集合F中所有与障碍相交的FST,得到新的FST集合,用F’表示,其中,相连的FST把端点划分成n个分离的子集Ti,i=1,...,n;(4)构造子树对步骤(3)得到的每个子集Ti,根据形成Ti的FST集合构造子Steiner树,用Si表示,这一步要根据端点数量分别采用下面两种方法(4.1)对于端点数量小于20的子集Ti,采用称为ACO的基于蚁群的方法构造子树,其步骤依次如下(4.1.1)设定子集Ti的边上的初始信息素值,用τ表示,τ即为信息素值;(4.1.2)在各Ti中的各端点处放置1只蚂蚁,并予以编号,用antName表示;同时,每一只蚂蚁维护一个禁忌表,记录已经访问过的点;设定迭代次数的最大值;(4.1.3)任选一只蚂蚁m,通过下式计算出选择每个与m相邻的顶点的概率,i表示蚂蚁m所在的顶点,j表示顶点i的相邻顶点,(i,j)表示连接顶点i和顶点j的边,pi,j表示蚂蚁m选择顶点j作为下一个要到达的顶点的概率 其中,集合N是顶点集合,它是由所有通过Ti上的边与当前蚂蚁m所在顶点相连,并且不是它所访问过的顶点组成的;ηjm当前蚂蚁m在顶点i时,与蚂蚁m相连的顶点中的某一顶点j的可见度ηjm=1c(i,j)+γ·ψjm]]>ψjm从顶点j到当前所有其他蚂蚁已经访问过的顶点的最短距离,为已知量,c(i,j)从顶点i到顶点j的长度,τij边(i,j)上的信息素浓度的更新值τi,j=(1-ρ)·τi,j+ρ·Δτi,jΔτij在每选定一边时,其上所增加的信息素的量 其中,c(St)是当前所保留的最小直角Steiner树的总线长,Et是它的边集合;上述的α、β、γ、ρ、Z皆为常量,预先设定,其范围如下α∈[1,5],β∈[1,5],γ∈[1,4],ρ∈
,Z∈[1,∝],其中,α、β、γ、Z是整数,ρ是实数;上述tabulist是禁忌表, 表示不在m的禁忌表中的点k的可见度;(4.1.4)依照步骤(4.1.3)得到的概率pij,蚂蚁m选择所要通过的边(i,j);(4.1.5)把顶点j添加到蚂蚁m的禁忌表中;(4.1.6)若前蚂蚁m遇到另一只蚂蚁m’,就把蚂蚁m从蚂蚁集中去掉,并把m的禁忌表中的端点添加到另一只蚂蚁m’的禁忌表中;(4.1.7)更新边(i,j)上的信息素的含量;(4.1.8)迭代次数加1,重复步骤(4.1.2)-(4.1.8),一直迭代到设定的迭代次数的最大值为止;(4.2)对于端点数量大于20的子集Ti,采用基于FST的贪婪搜索策略构造子树,依次含有下列步骤(4.2.1)删除与障碍相交的FST,剩下的FST称为候选FST,再计算所有候选FST的渴求度η(t)n(t)=c(t)λ/t(t)ω其中,t表示需要计算渴求度的FST,c(t)表示t的总线长,t(t)是FST的端点数,λ和ω是常量,预先设定,其范围如下λ∈[1,4],ω∈[1,4],其中,λ、ω是整数;(4.2.2)选择候选集合渴求度最小的FST,即f,并将f加入到当前解集合Y中;(4.2.3)删除候选FST中所有与f不兼容的FST,这里,两棵树不兼容是指两棵树包含两个或两个以上的相同端点,或者有一条或一条以上的边重叠。(4.2.4)删除端点集合中所有被f覆盖的端点;(4.2.5)如果候选FST集合不为空,则重复(4.2.2)-(4.2.4)的步骤,选择新的FST加入到当前解中,直到候选FST集合为空;(4.2.6)如果端点集合中还有剩余元素,则将它们加入到当前解中;(5)利用最小折返值方法,即detour方法,计算每两个子树之间的最短路径,从而把si,i=1,...,n,连接成一棵完整的steiner树,计算两子树之间的最短路径的方法是对于属于这两棵子树的所有端点,两两求最短路径,取其中最短的那条路径作为两子树之间的最短路径;计算两个端点,即点s到点t,之间最短路径的方法有以下步骤(5.1.1)根据障碍和端点s、t构造逃逸图,这里,逃逸图是由障碍的水平边和竖直边向两端扩展,直到遇到障碍,这样扩展后的线段相交形成的一种连接图;(5.1.2)初始化候选点集合为点{t},已访问点集合为空,设置当前点为t;(5.1.3)把所有与当前点在逃逸图上相邻且未访问过的点加入到候选点集合中,根据下面的规则计算这些新加点的折返值有向边u→v折返值的定义给定一条有向边u→v和一个最终目标点t,设L为通过点t且与有向边u→v相垂直的直线,则当u,v在L的同侧,且u到L的距离远于v,则u→v的折返值=0;当u,v在L的同侧,且u到L的距离近于v,则u→v的折返值=线段u→v的长度;当线段u→v与L交于w,则u→v的折返值=线段w→v的长度;于是,点的折返值可以这样定义从源点出发到目标点的寻路过程中,某一点的折返值即为从源点到该点的所有路径的折返值之和;(5.1.4)在候选集合中选择折返值最小的点q加入到访问点集合中,设置当前点为q;(5.1.5)如果最终目标点t不在候选点集合中,则重复步骤(5.1.1)-(5.1.4);(5.1.6)如果最终目标点t在候选点集合中,则把t加入到访问点集合中,这样找到的最短路径就是访问点集合中的点列按照被加入的先后顺序所组成的路径。
全文摘要
超大规模集成电路避障碍的直角Steiner树方法属于集成电路计算机辅助设计技术领域,尤其超大规模集成电路布线设计领域,其特征在于提出基于完全Steiner树(FST)的端点划分方法,然后在划分出来的每个子集中针对不同情况分别使用蚁群方法和贪婪FST方法构造子Steiner树,最后用detour方法的思想来连接所有的子Steiner树。该算法能处理多端点(包括能处理两端点)的线网;能处理复杂障碍(包括凹多边形障碍)的情况;能够在较短时间里很好地处理大规模问题。它实现了在待连接线网有多个端点情况下的超大规模集成电路布线时避障碍的优化线长与时间效率的直角Steiner树构造方法。
文档编号G06F17/50GK1588381SQ200410069118
公开日2005年3月2日 申请日期2004年7月6日 优先权日2004年7月6日
发明者洪先龙, 经彤, 胡昱, 冯哲, 杨旸 申请人:清华大学