第5章 单层绕障X结构 Steiner最小树算法 5.1引言 单层绕障Steiner最小树(Obstacle Avoiding Steiner Minimum Tree,OASMT)的构建方法主要包含4类: 先构造再替换法、不确定性算法、基于生成图的方法、精确算法。先构造再替换法是指先构造连接布线端点的Steiner最小树而不考虑障碍物,之后再将穿过障碍物的边替换为经过障碍物边界的布线边; 不确定性算法采用元启发式策略; 基于生成图的方法一般能够将引脚端点以及部分障碍物端点包含在生成图中从而降低求解空间的复杂度; 精确算法能为绕障布线得到准确的方案。 为求解线长优化能力更强也更具难度的非曼哈顿结构单层绕障布线问题,5.2节~5.4节分别介绍了4种有效的单层绕障X结构Steiner最小树构造算法。 单层绕障X结构Steiner最小树(Obstacle Avoiding Xarchitecture Steiner Minimum Tree,OAXSMT)问题的数学模型可以简化如下: 设P={P1,P2,P3,…,Pn}是线网中的一组引脚,其中每个Pi被赋予其坐标(xi,yi)。设B={B1,B2,B3,…,Bm}是芯片上的一组障碍物,其中每个Bi与两个坐标(xi1,yi1)和(xi2,yi2)相关联。(xi1,yi1)和(xi2,yi2)分别是矩形障碍物的左下角和右上角的坐标。关键的问题是构建一个Steiner树,将所有给定的引脚用0°、45°、90°和135°的线连接起来,绕开所有给定的障碍物并且使成本最小化。应该注意,树可以包括一些pseudoSteiner点。 关于布线结构的λ几何学理论的具体定义已由1.2.1节的定义1.2给出。 定义5.1障碍物在单层绕障X结构Steiner最小树问题中,障碍物可以是任意尺寸的矩形。任意两个障碍物不能互相重叠,但可以点与点接触或是边与边接触。 定义5.2引脚引脚端点可以是在布线区域内的任意端点,不能处于任意障碍内,但可以分布在障碍的边上或是障碍角点处。 定义5.3边界框两个端点pi和pj的边界框是由pi和pj形成的矩形。一组障碍的边界框是完全包含所有障碍物的最小矩形。图5.1显示了两个实例。 图5.1边界框 定义5.4矩形连接模型(RecConnected Model)在布线模型中,如果一个引脚可以通过拐弯不超过一次连接到另一个引脚,并且布线选择仅限于选择2或选择3,将其称为矩形连接模型。如图5.2(a)所示,引脚p可以通过布线区域中的一次选择3与引脚q连接。 定义5.5八角连接模型(OctConnected Model)在布线模型中,如果一个引脚可以通过拐弯不超过一次连接到另一个引脚,并且布线选择仅限于选择0或选择1,将其称为八角连接模型。如图5.2(b)所示,引脚p可以通过布线区域中的一次选择1与引脚q连接。 定义5.6完全连接模型(Fully Connected Model)如果由两个引脚形成的布线模型既是矩形连接模型,也是八角连接模型,将其称为完全连接模型。 定义5.7断开连接模型(Disconnected Model)障碍物的存在可能会阻止某些点被选为pseudoSteiner点。如果一个引脚可以通过拐弯至少两次或更多次来连接到另一个引脚,如图5.2(c)所示,则它形成断开连接模型。 图5.23种连接模型 5.2基于离散粒子群优化的X结构绕障Steiner最小树算法 绕障X结构Steiner最小树问题(Obstacle Avoiding Octagonal Steiner Minimum Tree, OAOSMT)是构造一棵将布线区域上所有给定点及Steiner点连接起来的树,同时以最小代价绕过所有障碍。为了解决这个问题,第一步是构造X结构Steiner最小树。文献[2]提出了一种时间复杂度为O(|V|+|E|)的算法来构造一个与给定的直角结构Steiner树同构的X结构Steiner最小树。其中,|V|和|E|是给定树的顶点和边。在绕障方面,2008年文献[3]提出了一种通过修正构造的方法来解决绕障直角Steiner树(Obstacle Avoiding Rectilinear Steiner Minimum Tree, OARSMT)构造问题,它构建了一个障碍加权生成树在逃逸图上构造OARSMT。文献[4]提出了一种基于迷宫布线的启发式方法来解决OARSMT问题,该方法基于迷宫布线的搜索过程,在解决方案质量和内存空间使用方面都能很好地处理多端线网。2009年,文献[5]的算法改进并扩展了GeoSteiner方法,允许在布线区域内出现直线障碍。该算法可以在合理的时间内生成最优解。与以往的方法不同,文献[6]提出了一种新的算法,首先确定所有引脚的连接顺序,然后用贪心启发式算法迭代连接相邻的两个引脚。文献[7]应用计算几何技术开发了一种高效的算法,该算法可以获得质量优良的解,与之前已知的结果相比,速度有显著提高。然而,上述方法都是基于曼哈顿Steiner树,在布线长度上不能得到很好的优化。 作为一种基于群体的进化方法。由Eberhart和Kennedy在1995年提出的粒子群优化算法(Particle Swarm Optimization, PSO)被证明是一种全局优化算法。PSO具有收敛快、全局搜索、稳定、高效等诸多优点。大量的实践证明,与其他方法相比,粒子群算法能够在全局优化问题上获得代价更低的最优解。 然而,PSO的初始原型用于求解连续优化问题,但自PSO算法提出以来,已有许多工作尝试使用PSO来求解离散问题。例如,文献[9]提出了一种求解TSP的离散粒子群优化(Discrete Particle Swarm Optimization, DPSO)算法。文献[10]提出了一种基于DPSO的X结构Steiner最小树(Octagonal Steiner Minimal Tree, OSMT)算法来优化线长。 本节提出了一种有效的OAOSMT构造算法。它包括以下5个步骤。 (1) 初始化。在该步骤中,有效地生成粒子群,其中每个粒子是连接所有给定引脚的OSMT。 (2) 预处理。在该步骤中,生成包含任何两个引脚的所有连接信息的表,为后续步骤提供快速的信息查询。 (3) 飞行。在此步骤中,通过引入两个新的基于并查集的遗传算子来更新每个粒子。 (4) 调整。在该步骤中,如果需要,调整群体的最终全局最优粒子gf以确保所有边绕开所有障碍。 (5) 精炼。在该步骤中,应用精炼的方法,进一步提高了最终全局最优粒子gf的质量。此外,采用后续处理方法来确保可用于当前的制造技术。 5.2.1算法细节 1. 初始化 为每个引脚和障碍提供唯一的序列号。然后,使用一组最小生成树边来表示候选布线树,并向每个边添加一个额外变量,表示pseudoSteiner点的布线选择,以便随后将其转换为X结构Steiner树。每个pseudoSteiner点的布线选择包括4种类型,如定义2.7~2.10(见2.5.2节)所示。如果网中有n个引脚,则最小生成树将包括n-1个边,n-1个pseudoSteiner点,以及一个额外变量,即粒子的适应度值(见式(5.1))。因此,一个粒子的长度为3(n-1)+1。例如,如图5.3所示,粒子可以表示为以下数字串: 1 3 2 2 3 0 3 4 1 3 5 3 27.3,其中23.7代表粒子的适应度值。前3个数字1 3 2表示一条边,即根据选择2来连接引脚1和引脚3。 图5.3X结构Steiner树 因为步骤1基于最小生成树(Minimum Spanning Tree, MST)算法,所以可以通过使用一些基于图形的方法(例如,Prim算法或Kruskal算法)或更高效的基于Delaunay三角剖分的算法来轻松获得X结构MST。应当注意,每条边的初始布线方向是从4个给定布线选择中随机选择的,因此可以穿过障碍物。 2. 预处理 根据PSO算法的基本模型,在初始化粒子群后,每个粒子将通过更新其速度和位置来移动,并且整个群体将相互合作以搜索期望的目标。但是,在介绍该粒子更新方法之前,首先描述预处理策略,主要是由于以下3个问题。 第一,在粒子飞行步骤中,当评估刚刚在运动之后生成的粒子时,除了计算每条边的长度之外,还应检查每条边是否避开所有障碍物。然后赋予每个粒子一个适当的适应度值,算法可以选择正确的全局最优粒子gi和个体最优粒子pi。 第二,在操作调整方法之前,必须确定最终全局最优粒子gf的每条边是否绕开所有障碍物。应该决定是否有必要进行调整。如有必要,应该调整哪些边,以及哪些障碍物已经被穿过?应计算所有这些信息。 第三,在精炼过程中,不断改变某些边的路径方向,以尽可能地增加公共边的长度。但是,怎样才能确保调整后的边能够避开所有障碍物?此信息也需要计算。 由于现代芯片的密度急剧增加,问题的规模变得越来越大。如果算法每次计算前面提到的信息,无疑会对整个算法的性能产生负面影响。因此,提出了一种预处理策略,该策略可以通过生成预先计算的查找表来为步骤3~步骤5提供快速信息查询。 预处理策略的想法简单易行。令P={P1,P2,P3,…,Pn}为网络中的一组引脚,并且B={B1,B2,B3,…,Bm}芯片上的一组障碍物。对于每对引脚,例如pi和pj,计算边pipj(c)穿过的障碍物的数量,并记录这些障碍物为集合{Bk},其中c表示pi和pj之间的布线选择。所有可能的边将构成最终的查找表。图5.4显示了预处理原理。线网中有5个引脚(1~5),芯片上有6个障碍物(b1~b6)。以引脚1为例,图5.4(a)显示了引脚1与基于选择2和选择3的其他引脚的连接图,而图5.4(b)包括选择0和选择1。可以看出,一些线段穿过障碍物而其他线则没有。基于图5.4,可以容易地生成引脚1的记录。如表5.1所示的引脚的连接信息,很容易查询关于引脚1的所有连接信息。例如,当引脚1基于选择1连接到引脚4时,边穿过障碍物b3和障碍物b4。但是,当引脚1根据选择2连接到引脚3时,就避开了所有障碍物。 图5.4预处理原理 表5.1引脚1的连接信息 引脚 布线选择 0123 2b2—-b2 3b4b4—- 4b3b3,b4b3b3,b4 5b3—b3- 表5.2显示了具有2.9GHz CPU和2GB内存的PC中的查找表生成时间。Pin#和Obs#分别代表引脚和障碍物的数量。因为只需要为每组布线数据生成一次查找表,所以在实现实验时只使用传统的数据结构,例如数组。在生成边记录时扫描每个障碍物bk,如果没有bk的角点位于两个针脚的矩形边界框中,那么直接检查下一个障碍物bk+1。此外,45°和135°段的存在无疑会增加问题的复杂性。当输入的比例很大时,可能需要几秒钟,但这是可以接受的。 表5.2查找表生成时间 引脚数/障碍物数CPU时间引脚数/障碍物数CPU时间 10/3210/4310/5025/79 0.000s0.000s0.000s0.000s 33/7110/1030/1050/10 0.000s0.000s0.000s0.000s 70/10100/10100/500200/500 0.000s0.000s0.140s0.578s 200/800200/1000500/1001000/100 0.889s1.139s0.795s3.073s 3. 飞行 1) 粒子的适应度函数 在PSO算法的基本模型中,适应度函数是最重要的组件之一。pi和gi的正确性直接影响适应度函数的准确性。因为优化的目标是线长,所以很明显使用OSMT的总长度作为一个粒子的适应度值是一个很好的选择; 它可以直接反映一个部分的卓越程度。事实上,在定义的OSMT模型中,有3种边,可以定义如下。给定一个布线树Ts和两个引脚p和q,有以下内容。 定义5.8Oseg(p,q)表示p和q之间的边,其不穿过布线平面中的任何障碍物。 定义5.9Dseg(p,q)表示穿过一个或多个障碍物的p和q之间的边,并且可以仅通过改变p和q之间的布线选择来绕开它们。 定义5.10Cseg(p,q)表示穿过一个或多个障碍物的p和q之间的边,但是必须从这些障碍物中选择一些角点以绕开障碍物。 实际上,Cseg(p,q)是断开连接模型,Oseg(p,q)和Dseg(p,q)可能是3个模型中的任何一个。如图5.5(a)所示,A和B之间的边属于Oseg(A,B),A和D之间的边属于Dseg(A,D),因为它只能通过改变布线选择来绕开障碍物[即从选择3改为选择1(见图5.5(b)]。A和C之间的边属于Cseg(A,C),因为必须选择障碍物的角点C1作为中间节点(见图5.5(b))。应该注意,AC1和CC1之间可以有其他布线选择。 定义5.11ADseg(p,q)表示在改变p和q之间的布线选择之后从Dseg(p,q)获得的p和q之间的边,并且避免了所有障碍物。 定义5.12ACseg(p,q)表示在添加障碍物的一个或多个角点之后从Cseg(p,q)获得的p和q之间的一组边,并且避免了所有障碍物。 在图5.5(b)中,A和D之间的边属于ADseg(A,D)。另外,A和C之间的两条边(AC和CC1)属于ACseg(A,C)。假设L(r)等于r的总长度。在前面的定义的基础上,适应度函数如下。 Fitness(P)=(∑Oseg(p,q)L(Oseg(p,q))+∑Dseg(p,q)L(Dseg(p,q))+ ∑Cseg(p,q)L(Cseg(p,q)))(5.1) 在式(5.1)中,可以通过查找表容易地识别Oseg(p,q)、Dseg(p,q)、ADseg(p,q)和Cseg(p,q)。对于ACseg(p,q),其计算类似于调整过程,但只是计算L(ACseg(p,q))的结果而不是实现实际的加法和删除操作。 图5.53种边对应绕障方法 2) 粒子的更新方法 算法5.1显示了粒子更新的伪代码。本节算法具体的更新公式与4.2.2节介绍的更新方式类似,此处不再赘述。 引理5.1假设Cp是粒子p的当前位置,Ap是更新后的位置。Fp是p正在寻找的目标,dis(t)表示位置t和Fp之间的距离。可能存在dis(Ap)>dis(Cp)。 证明: 很明显,因为更新方法以随机模式操作,所以可能导致p的一些好因素被一些意外因素(线长不减小,反而增加,因为PSO是随机算法)所取代。如图5.6的粒子更新示意图所示,当更新p的速度(见图5.6(a))时,如果选择边2 3 2并由边3 6 3替换,则将获得图5.6(b)。显然,dis(b)> dis(a)。 图5.6粒子更新示意图 算法5.1粒子的更新方法 输入: 惯性权重w,加速因子c1和c2,粒子p,全局(个体) 最优粒子gi(pi) 输出: 新的粒子p for each particle p in Swarm do Generates r1=Random(0,1); if (r1Hor(p,g),s是pq使用选择0时的Steiner点。当g在p和s之间(包括边界)时,最优结构将是pq0 pg3。图5.11是g在q和s的连接示意图。在这种情况下,p和g之间的布线选择取决于实际长度的增加。也就是说,当ge+es<gd或es>ed>0时,pg3将被选择,否则,pg0将被完成。此外,图5.12为一个4度模型,它可以被分成两个2度模型。图5.12右侧的9个结构是最佳结构的候选。 图5.11连接示意图 图5.124度模型 在前面分析的基础上,本节提出了一种基于公共边策略的面向引脚的精炼方法,该方法能够将所有这些非最优结构转换为最优结构,同时绕开所有障碍。具体步骤如下。 (1) 扫描粒子gf的每个边以计数每个端点p的度,同时记录所有连接到p的端点。 (2) 对于每个端点p,如果p的度为d,则枚举p的所有4d的布线选择组合,并选择获得最小适应度值的组合,同时避开所有障碍物。 图5.13示例冲突 在细化过程中,有两点需要注意。首先,关于终端的组合是否避开所有障碍物的问题可以通过查表直接确定,因为在调整过程中添加了障碍物角点的必要连接信息。其次,对于每个绕障组合,为了为整个粒子选择最优组合,可能需要计算整个粒子的适应度值,而不仅仅是组合本身的长度。图5.13显示了一个示例冲突。在计算引脚p的最优组合时,将得到pq0 pg3。然而,当sq>sr+rt时,pq3 fq3才是最佳结果,因此需要从全局角度来决定pq的布线选择。 实际上,图5.14是粒子改进的飞行过程,利用这种改进方法,粒子群不必在飞行步骤期间搜索期望的目标,因此提高了算法的效率。 图5.14粒子改进的飞行过程 算法5.2显示了该改进方法的伪代码。 算法5.2改进方法 输入: 经过调整后的全局最优粒子g′f,引脚总数n 输出: 新的粒子p Initialize list() to empty; //初始化每个引脚所连接的引脚列表为空 Initialize degree() to zero; //初始化每个引脚的度为0 for each edge l(u,v) of g′f do //粒子g′f中的每条边,u和v是一条边的两个引脚 add u to list(v); degree(v)+1; add v to list(u); degree(u)+1; end for f=Fitness(g′f); g= g′f; for each pin p do //对于粒子g′f中的每个引脚p for each routing combination t of p do //枚举所有编码组合 if check(t)=true then //如果当前的编码组合绕开障碍物或满足松弛条件 replace(g, t); //使用当前编码组合替换原始编码组合 fmid=Fitness(g′f); //更新粒子适应度值 if fmidΔy。由于每个边有4个布线选择,总共有16个子结构。但当p2在s1和p3之间时,其中s1是边p1p2的pseudoSteiner点,则图5.18(a)是p3的唯一最佳结构。当p2在p1和s1之间(见图5.18(b))时,如果p2e+es1ed,则图5.18(c)成为最佳结构; 否则,图5.18(d)是最佳的。障碍物存在的平面也遵循类似的原理。但是最佳结构可能成为16个子结构中的任意一个。例如,如图5.18(e)所示,p2只能通过选择3连接到p3。因此,图5.18(e)成为最佳结构之一。 图5.18精炼实例 基于上述分析,提出了一种精炼技术(见算法5.7)。通过扫描OAOST的边一次,首先计算每个引脚pi的度,并将连接到pi的引脚记录为列表。然后计算每个引脚pi的最佳结构(osi)。假设pi的度为d。列举了pi的所有4d个布线选择组合,并选择了具有最小线长的且绕障的那一个作为osi。此外,计算每个osi的公共边(sei)的长度。接着根据sei的值按降序对所有引脚进行排序。最后,根据已排序的引脚列表将每个引脚的osi 应用于原始的OAOST,直到确定了所有OAOST边的布线选择。 算法5.7精炼 输入: OAOST,EOT,EST 输出: OAOSMT for each edge pipjk of OAOST do degree(pi)=degree(pi)+1;//计算每个引脚pi的度 degree(pj)=degree(pj)+1;//计算每个引脚pj的度 add pj to list(pj);//将连接到pj的引脚记录为列表 add pi to list(pi);//将连接到pi的引脚记录为列表 end for //计算每个引脚pi的最佳结构osi Initialize each length(osi)=+∞; for each terminal pi of OAOST do for each substructure st of pi do//对于pi的所有布线选择组合 if obstacleavoiding(st)=True and length(st)Δy的情况也可同样证明。 引理5.5c是边pipj的中间节点,则rec(pi,pj)=rec(pi,c)+rec(c,pj),当且仅当cbox(pi,pj)。 引理5.6c是边pipj的中间节点,然后oct(pipj)=oct(pi,c)+oct(c,pj),当且仅当cpara(pipj),其中para(pipj)是由pi和pj形成的具有45°或135°方向的平行四边形。 根据pi,c和c,pj形成的分段之间的平行关系,可以很容易地实现引理5.5和引理5.6中的等式。因此,这里省略了证明过程。 定理5.4对于每条边pipj,如果{Bij0}≠且{Bij1}≠,但{Bij2}≠或{Bij2}≠,则在框({Bij0})或框({Bij1}的边界上选择一些pseudoSteiner点作为中间节点可以使线长减少(2-2)×min(Δx,Δy))。 证明: 图5.22是定理5.4实例,{Bij0}={Bij1}={b1,b2},但{Bij2}=。但是,如图5.22(b)所示,如果选择pseudoSteiner点c作为中间节点,将得到oct(pj,c)≤rec(pj,c)和oct(c,pj)≤rec(c,pj),当且仅当pi、c和pj共线时,等式才成立。根据引理5.5,如果cbox(pipj),则rec(pj,c)+rec(c,pj)=rec(pi,pj)。因此,有oct(pi,c)+ oct(c,pj)≤rec(pipj)。最好情况下,根据定理5.3得到(2-2)×min(Δx,Δy)×(oct(pi,c)+oct(c,pj))=rec(pipj)。 注意,在最坏的情况下,pic和cpj都可以通过仅使用选择2或选择3来避免所有障碍,然后线长减小为零。 图5.22定理5.4实例 2) OAOST生成 显然,根据OST生成方法,OST的某些边可能会穿过障碍物。实际上,可以通过直接查找EOT来识别这些边。但它可能需要更多的技术支持以绕开障碍物。因此,提出了一种pseudoSteiner点选择方法,它可以有效地帮助所有边绕开障碍物。 参照图5.23(a)所示的每个点p,将平面划分为8个区域; 每个区域不包括图5.23(b)所示的两条边界线。显然,图5.23(a)中的每条边界线(d1~d8)是布线平面中点p的合法布线路径。 在选择pseudoSteiner点之前,首先扫描OST的所有边,对于每条边pipjk(k是OST中的布线选择); 如果xi>xj,则改变点pi和pj的位置,即将pipjk变换为pipjk*,其中相应的k*值如图5.23(c)所示。这样,对于每条边,可以确保起点位于终点的左侧,从而简化了边的可能场景。在变换之后,当检查边pipjk时,只需要考虑点pi的X形分区的右半轴和点xj的X形分区的左半轴。 接下来,检查转换后的OST的每条边pipjk; 如果它穿过了障碍物,则直接删除pipjk,并计算{Bijk}的直线边界框bx。然后沿着5个方向将pi投影到它的右半轴。图5.23是合法路径划分这5个方向,包括图5.23(a)中的d1~d5。假设pidx和bx之间的第一个交点是tx(x=1,2,3,4,5); 应该注意,tx可能不存在,因为pidx没有与bx相交。此外,计算直线pidx和pipj之间的角度ax,然后选择具有最小ax的tx作为pseudoSteiner点,因为s可能不能直接连接到pi,所以需要选择更多的pseudoSteiner点,以便pi和pj可以连接。为了实现这个目标,检查bx的每个拐角点cy(y=1,2,3,4),并选择一个使得rec(s,cy)+rec(cy,pj)最小且具有较大的rec(s,cy)的拐点作为另一个pseudoSteiner点c。最后,计算边pis、sc和cpj的连接信息,并将这些信息添加到EOT和EST中。此时,可以通过直接查找表来生成边pisk1、sck2和cpjk3。 考虑到集合{Bijk}的障碍物可能在布线平面中广泛分散,在这种情况下,pi和pj之间新生成的布线路径可能很长,因为它沿着{Bijk}的边界框绕行。因此,为了确保高布线质量,在以下两种情况下采用其他pseudoSteiner点选择策略。 (1) 两个选定的pseudoSteiner点之间的布线路径穿过障碍物。 (2) 如果将pi和pj之间新生成的路径的长度除以rec(pi,pj)并且得到的值大于β(在实验中β设置为2)。然后,根据pi与障碍物之间的距离按递增顺序对{Bijk}的所有障碍物进行排序,并根据上述投影方法按顺序选择每个障碍物上的pseudoSteiner点。以这种方式,生成可以从{Bijk}的大边界框逃逸的绕障路径。 OAOST生成技术的详细步骤如下。 (1) 对于OST的每个边pipjk,如果xi>xj,则将pipjk变换为pipjk*。 (2) 初始化t=1。 (3) 对于变换后的OST的第t个直线边pipjk,如果它穿过障碍物,则转到步骤(4)。否则,继续检查第(t+1)个边沿,直到t+1≥n。 (4) 删除边pipjk。计算bx=box({Bijk})。沿d1~d5投影pi并计算每个pidx(x=1,2,3,4,5)和bx之间的第一个交点tx。 (5) 计算每个pidx和直线pipj之间的角度ax。然后选择具有最小ax的tx作为 pseudoSteiner点s。 图5.23合法路径划分 (6) 从bx中选择一个角点c,使rec(s,cy)+rec(cy,pj)最小,其中cy是bx的第y个角点,y=1,2,3,4。 (7) 计算边pis、sc和cpj的连接信息,生成边pis、sc和cpj。 (8) 如果(len(pi,s)+len(s,c)+len(c,pj))/rec(pi,pj)>β或边穿过障碍物,则对{Bijk}排序,并按顺序在每个障碍物上选择pseudoSteiner点,并生成从pi到pj的新路径。 引理5.7对于OST的边pipjk,如果{Bijk}≠,则投影(pi)∩box({Bijk})≠或投影(pj)∩box({Bijk})≠,其中投影(pi)和投影(pj)分别是pi和pj沿其5个方向在其半轴上的投影。 3) 证明 使用归谬法来证明这个引理。图5.24是引理5.7实例,图5.24(a)和图5.24(b)分别显示了根据定义的pi和pj的半轴。如果投影(pi)∩box({Bijk})=,则box({Bijk})必须完全位于pi右半轴的一个区域。类似地,如果投影(pj)∩box({Bijk})=,则box({Bijk})必须完全位于pj的左半轴的一个区域中。因此,如果投影(pi)∩box({Bijk})=和投影(pj)∩box({Bijk})=都是真的,那么在不失一般性的情况下,假设边界框({Bijk})Ri(Ri∈{R1,R2,R3,R4} of pi)和box({Bijk})Ri(Ri∈{R5,R6,R7,R8}of pj),Ri和Rj的两个边界线必须形成一个合法的X结构布线路径,这意味着pi和pj可以直接连接而不会遇到任何障碍,这是矛盾的。例如,如图5.24(c)所示,pi的框({Bijk})R和pj的框({Bijk})R7,pi和pj可以通过路径pis1pj或pis2pj连接。 图5.24引理5.7实例 上面已经指出tx可能不存在,因为pidx在步骤(4)中不与bx相交。因此,可能存在所有5个交叉点tx都不存在的情况。在这种情况下,根据引理5.7,将沿着图5.24(a)中的5个方向(d1,d5~d8)将pj投影到其左半轴。此外,由于没有考虑其他障碍物,pi和pj之间新生成的路径仍可能遇到障碍。因此,这种OAOST生成技术可以多次操作,直到所有的边都避开所有障碍物。幸运的是,当新生成的路径穿过障碍物时,这些障碍物的直角边界框的至少两个边界通常被限制在一定范围内。例如,如图5.24(d)所示,pi和pj通过选择3连接,并且它穿过box1,s和c被选为两个pseudoSteiner点。由于已经确保s和c之间的路径可以避开所有障碍,因此只有路径pis和cpj仍然穿过障碍物。假设box2是路径pis穿过的障碍物的边界框。box2的底部必须位于pis2上方,box2的右侧受box1右侧的限制。box3也受pis2和box1的限制。显然,这种情况可以在恒定的时间内解决。其他3个选择遵循类似的原则。类似地,当在每个障碍物上选择pseudoSteiner点时,新生成的路径的边界框也在至少两个方向上受到限制。它也可以在恒定的时间内解决。应该注意,该OAOST生成过程也会生成冗余的pseudoSteiner点。 以图5.25作为一个简单的例子来进一步解释这个过程。图5.25是OAOST构建实例,图5.25(a)是原始布线图,其中p1p2穿过障碍物b1、b2和b3(即{B120}={b1,b2,b3})。删除边p1p2后,首先计算框({B120}); 结果bx在图5.25(b)中用实线矩形框显示。然后沿着它的5个方向投射p1。很明显,p1d1和p1d5不与bx相交,因此,p1沿其5个方向投射得到与bx的交叉点集T1={t2,t3,t4}。接下来,计算直线p1p2和p1的每条投影线之间的角度,得到a2=∠d2p1p2、a3=∠d3p1p2、a4=∠d4p1p2。因为a4len(p1c2),因此,s2被删除,并且p1连接到图5.19(f)中所示的c2。为了消除这些冗余点,在OAOST中扫描每个选定的pseudoSteiner点s并检查它的两条边pisk1和spjk2,如果pipj可以直接连接并且len(pis)+len(spj)≥len(pipj),删除pseudoSteiner点s和相关边pisk1和spjk2,然后将pi连接到pj。注意,原始边pisk1和spjk2的连接信息可以通过查找表来获得,因此,这个过程也非常快。 2) pseudoSteiner点连接优化 尽管OAOST生成技术可以使OST边避免所有障碍物,但pseudoSteiner点之间的布线路径可能不够好。例如,图5.25(d)中s和c2之间的布线路径可以进一步优化,因为在障碍物的直角边界框中存在一些未使用的布线资源。当然,如果OST边仅穿过一个障碍物,或者在每个障碍物上选择了pseudoSteiner点,则所选择的pseudoSteiner点之间的布线路径没有优化空间。另一方面,如果两个选定的pseudoSteiner点共线,则最佳布线路径是直线,并且也不能优化。因此,对于任何一对pseudoSteiner点,如果可以进一步优化,它至少应满足两点: (1) 原始OST边穿过多个障碍物,并且在边界上选择pseudoSteiner点; (2) 两个选定的pseudoSteiner点不共线。 对于这种pseudoSteiner点,使用一种称为滑动的操作来尝试减少线长。由于两个选定的pseudoSteiner点位于直角边界框的两侧,因此必须在此边界框的两侧存在合法的布线路径。另外,边界框的两侧必须与至少一个障碍物线接触。图5.26是对pseudoSteiner点连接优化,如图5.26(a)所示,pi和pj之间的边穿过障碍物b1、b2和b3。根据OAOST生成技术,选择点s和角c2作为两个pseudoSteiner点。在这种情况下,s和c2只能通过选择3连接。此外,b1、b2和b3分别与t1t2、t4t5和c2t3之间的直角框线接触。然而,如果沿着s和c2之间的布线路径滑动两个pseudoSteiner点并且在线接触的障碍角t5处停止每个点,则t5是距离原始pseudoSteiner点最远的一个。然后,这两个角可以通过选择0或选择1连接,因为可以使用未使用的布线资源。例如,将s滑动到t2和c2到t5,然后t2和t5可以形成一个边t2t50。因此,与先前的结果相比,线长减小。图5.26(b)显示了图5.25(d)中的结果优化后的布线图。当然,当两个所选择的t5之间存在其他障碍物,或者这两个tis彼此重叠时,也没有优化线长的空间。 图5.26pseudoSteiner点连接优化 3) 布线选择优化 除了前两点,还没有考虑一个重要问题,即公共边。换句话说,可以进一步优化所获得的布线树。对于OAOST的任何一个引脚pi,其互连至少有一个最佳结构。 通过只讨论2度引脚,其他度的引脚遵循相似的原理。由于每条边有4个布线选择,对于一个2度引脚,总共有16个子结构。图5.27(a)显示了无障碍平面中的2度端点p3,其中p1和p2连接到p3。在不失一般性的情况下,假设两个引脚之间存在Δx>Δy。图5.27是布线选择优化的实例,当p2在s1和p3之间时,其中s1是边p1p31的pseudoSteiner点,图5.27(a)是p3的唯一最佳结构。当p2在p1和s1之间(见图5.27(b))时,如果p2e+es1ed,则图5.27(c)成为最佳结构。否则,图5.27(d)是最优的。障碍物存在的平面也遵循类似的原理。但是由于障碍物的存在,最优结构可能成为16个子结构中的任意一个。例如,如图5.27(e)所示,p2只能通过选择3连接到p3。因此,图5.27(e)是存在障碍物时的最佳结构。当然,p1也可以通过图5.27(e)中的选择0连接到p3。总之,无论引脚有几度,其互连至少有一个最佳结构。 图5.27布线选择优化实例 基于这一事实,提出了一种面向引脚的布线选择优化方法。首先,计算每个引脚pi的度以及与其连接的引脚列表。之后算法计算每个引脚pi的最佳结构(osi),即pi所有布线选择组合中具有线长最佳同时满足绕障的子结构。此外,计算每个osi的公共边(sei)的长度最后,根据sei的值按降序对所有引脚进行排序,并用各引脚的osi代替其原来的布线选择组合,以构建OAOST。详细步骤如下。 (1) 扫描OAOST的边以计算每个引脚pi的度,并同时记录连接到pi的引脚作为列表。 (2) 对于每个引脚pi,如果pi的度数是d,则枚举pi的所有4d的布线选择组合。然后选择具有最小线长的且避开所有障碍物的那一个组合作为osi,同时计算每个osi的sei。 (3) 根据sei按递减顺序对OAOST的所有引脚进行排序。 (4) 对于每个引脚pi按顺序,将osi的布线选择组合应用于OAOST,直到所有OAOST边都已确定。 有两点需要注意,第一,在步骤(2)中,可以通过直接查找EOT来确定布线选择组合是否避免所有障碍物。第二,在步骤(4)中,当前osi不能改动之前已调整过的子结构。此外,可以通过直接查找EST来计算局部线长和总线长。 5.4.2复杂性分析 定理5.5该算法的时间复杂度为O((m+n)logxmlogym+nmlogm),其中n和m分别是布线平面的顶点数和障碍物数,xm和ym分别是布线平面的最大x坐标和y坐标。 证明: 在步骤1中,可以在O(nlogn)时间中生成DT。然后可以使用Kruskal算法在O(n)时间生成OFEMST,因为DT中只有O(n)个边。 在步骤2中,TDST可以以m×(logxmlogym)时间构造。其中包括两个for循环,由于有n条边,所以O(n)支配第一个循环。对于第二个循环,其时间复杂度为常数4,即布线选择的数量。并且第二个循环内的每个查询都可以在O(logxmlogym)时间内执行。因此,步骤2的时间复杂度为O((m+n)*(logxmlogym))。 在步骤3中,OST生成需要O(n)时间,因为存在n个边并且表查找仅需要O(1)时间。对于OAOST生成过程,外部for循环由n控制。对于每个OST边,如果它穿过障碍物,在最坏情况下找到边界框需要O(m)时间。如果在每个障碍物上选择pseudoSteiner点,则对障碍物排序主导该过程,在O(mlogm)时间内完成执行。此外,当生成新路径的连接信息时,每个查询需要O(logxmlogym)时间。因此,步骤3的时间复杂度是O(n×(mlogm+logxmlogym))。 在步骤4中,由于存在n条边并且需要计算新边的连接信息,冗余pseudoSteiner消除和pseudoSteiner连接优化都需要O(n(logxmlogym))时间。在布线选择优化过程中,扫描OAOST的每条边需要O(n)时间。当计算每个引脚pi的osi时,两个for循环分别由n和4d支配。另外,所有引脚都可以使用快速排序算法在O(nlogn)时间内进行排序。而将每个引脚的最优结构应用于OAOST也需要O(n)时间,因此,布线选择优化由O(nlogn)支配。步骤4的时间复杂度是O(n(logxmlogym+logn))。 总之,在最坏情况下,该算法的时间复杂度是O((m+n)logxmlogym+nmlogm)。 5.4.3实验结果 所有算法都已用C语言实现和执行。此外,MATLAB被用于模拟最终的布线图。实验在具有2.9GHz CPU和2GB存储器的PC上进行。共有17个基准电路。ind1~ind5是Synopsys的工业测试用例。rc01~rc12是绕障问题的基准。另外,一些随机生成的电路用于进一步测试所提出的算法的可扩展性。在所有这些测试案例中,引脚和障碍物的数量分别为10~1000和10~10 000。 1. 精炼策略的有效性 精炼过程对于算法的最终布线质量非常重要。它通过尽可能多地增加公共边的线长来构建最终的OAOSMT,同时充分利用布线资源生成更多的对角线段。为了研究优化线长的精炼过程的有效性,通过比较使用该方法之前和之后的线长来说明精炼的效果。表5.12显示了精炼前后的线长比较结果。从表5.12可以看出,在使用精炼后可以实现2.74%~9.76%的线长减小。此外,平均线长减少也可达到6.16%。 表5.12精炼前后的线长比较结果 测试用例引脚数障碍物数精炼前精炼后优化率/% ind110325845682.74 ind210431006695485.15 ind310596015744.49 ind42579117910699.33 ind53371140213344.85 rc01101027716250849.50 rc02301043758394889.76 rc03501056048541773.34 rc04701064011596436.82 rc051001079844727388.90 rc0610050083842775927.45 rc072005001135281054807.09 rc082008001229171131107.98 rc0920010001200481106427.84 rc105001001613461555793.57 rc1110001002221322164012.58 rc121000100007268377025443.34 均值6.16 2. 与最好的OAOSMT算法对比 到目前为止,文献[28]的算法是解决OAOSMT问题的最佳方案。其提出了一个基于PSO的框架,可以在合理的时间内产生出色的OAOSMT。为了验证OAOSI构造的快速四步启发式算法(a Fast FourStep Heuristic for ObstacleAvoiding Octilinear Steiner Tree Construction,FHOAOS)的有效性,将本节算法与文献[28]提出的算法在上述基准电路中进行了比较,表5.13显示了两个算法的线长和运行时间的比较结果。从实验数据可以观察到,当输入电路的规模很大时(即具有许多障碍的较大规模网),FHOAOS产生了更好的结果。例如,对于测试用例rc06~rc12,FHOAOS的线长小于文献[28]的线长。此外,从表5.13可以看出,与文献[28]相比,可以减少-4.18%~3.10%的线长。平均而言,FHOAOS的表现与文献[28]中所述表现相当。FHOAOS的线长仅比文献[28]提及的线长长0.36%。分析这个结果主要有两个原因。第一,当输入电路的规模很小时(即只有少量障碍物的小规模网络),文献[28]可以通过适度增加PSO算法的迭代次数来搜索出色的结果,同时保持合理的运行时间。此外,文献[28]引入了两个遗传算法的算子,可以进一步提高PSO算法的搜索能力。第二,当输入电路的规模变大时,如果在文献[28]中适度增加迭代次数,效果有限。如果在文献[28]中大大增加迭代次数,虽然它可能会得到很好的结果,但运行时间将变得不可接受; 因此,需要在线长和运行时间之间进行折中。 表5.13的第7列和第8列中提供了两种算法的运行时间。尽管文献[28]的算法得到的线长结果看起来相当不错,但其运行时间并不令人满意。这主要是由于该算法的性质,它是一种基于粒子群的算法,需要更多的迭代次数来搜索解空间。此外,文献[28]的算法中候选边数量是O(n2)。因此,它需要更多的时间来计算这种边信息。表5.13的最后一行在FHOAOS上标准化。可以看出,FHOAOS算法速度很快。例如,rc12包括1000个引脚顶点和10 000个障碍物,FHOAOS能在仅仅0.41s内产生很好的效果,而文献[28]的算法需要13.12s。平均而言,FHOAOS比文献[28]的方法快66.39倍。因此在工业生产中更实用。 表5.13与文献[28]的线长和运行时间的比较结果 测试用例引脚数障碍物数线长 FHOAOS[28] 优化率/% CPU时间/s FHOAOS[28] ind11032568562-1.070.000.02 ind2104395489431-1.240.000.02 ind310505745740.000.000.02 ind4257910691033-3.480.000.02 ind5337113341288-3.570.000.05 rc0110102508424717-1.340.000.02 rc02301039488407513.100.000.02 rc0350105417752033-4.120.000.10 rc0470105964357250-4.180.000.17 rc051001072738727380.000.000.26 rc0610050077592786431.340.020.57 rc072005001054801055420.060.021.91 rc082008001131101162042.660.032.93 rc0920010001106421113850.070.033.20 rc105001001555791575201.230.025.42 rc1110001002164012190371.200.039.33 rc121000100007025447244253.020.4113.12 均值(优 化率(%)) /合计(时间)-0.360.5637.18 比率(时间)-1.0066.39 3. 与λGeometry算法对比 下面对FHOAOS与文献[18]提出的λ几何算法进行比较。根据定义,当λ设置为2时,文献[18]的算法可以生成OARSMT; 当λ设定为4时,文献[18]的算法可以生成OAOSMT。表5.14显示了线长和运行时间的比较结果。可以看出,FHOAOS优于文献[18]所提出的算法。对于λ=2的所有测试用例,平均线长减少可达到27.83%。另外,对于λ=4的情况,当问题的规模很小时,文献[18]具有与该算法相似的表现(rc01~rc05)。然而,当问题的规模很大(rc06~rc12)时,特别是当障碍物的数量大于引脚数时,本书算法具有显著的优势,线长减少-3.37%~55.09%。平均改善率也可达到19.53%。换句话说,文献[18]算法生成的最终布线树相对较差,主要原因是文献[18]的算法可能会引入更多的冗余点,以及文献[18]的布线树不能尽可能地共享相同的布线路径。此外,最后3列显示了两种算法的运行时间。可以看出,FHOAOS比文献[18]的算法平均快5.79倍和6.34倍(当λ=2,λ=4时)。很明显,文献[18]的算法比文献[28]的算法在运行时间方面好。但是,对于最终布线树的质量,文献[28]的算法比文献[18]的算法好。因此,FHOAOS弥补了文献[18]和文献[28]两个算法的缺点。 表5.14与文献[18]的线长和运行时间的比较结果 测试 用例引脚数障碍 物数FHOAOS [18]优化率/%CPU 时间/s λ=2λ=4λ=2λ=4FHOAOSλ=2λ=4 rc01101025084304102727917.518.050.000.000.00 rc02301039488456404122213.484.210.000.000.00 rc0350105417758570524327.50-3.330.000.000.01 rc0470105964363340576995.84-3.370.000.000.01 rc051001072738831507309012.520.480.000.000.01 rc061005007759214972513545448.1842.720.020.060.07 rc0720050010548018147016276241.8735.190.020.060.08 rc0820080011311020274118205644.2137.870.030.100.12 rc09200100011064221485019322848.5042.740.030.130.15 rc1050010015557919801017649721.4311.850.020.030.03 rc11100010021640125057022275813.642.850.030.043.03 rc121000100007025441723990156417059.2555.090.412.823.03 均值 27.8319.530.563.243.55 比例 1.005.796.34 4. 与最新的3个OARSMT算法对比 为了进一步验证这一事实,即与直角结构相比,X结构对于线长优化有巨大的优势,在这一部分将本文算法与近年来提出的3种最新的OARSMT算法进行了比较。表5.15显示比较结果。表5.15的第4列显示了本节算法的线长。文献[32]是最新的关于OARSMT文献,它提出了借助GPU的并行方法,并以有效的方式取得了巨大的成果。与此并行算法相比,线长优化提高了-0.51%~8.25%,平均减少了3.96%,只有一个测试用例(ind2)比它差。此外,本节算法比文献[31]的算法优4.23%,比文献[12]的算法优6.77%。虽然45°和135°布线方向的引入增加了问题的复杂度,但本节算法也比OARSMT算法更快。在表5.15中提供不同算法的运行时。可以看出,与OARSMT算法相比,比文献[32]的算法快44.18倍,比文献[12]的算法快12.77倍。文献[31]提出的算法实现了3种算法中最快的运行时间,因为它是基于预计算的查找表的算法。与之相比,本节算法的平均速度依然提高了2.52倍。 此外,为了进行各方面一一对应的比较,尝试通过对FHOAOS进行以下更改来生成OARSMT。首先,从整个算法中删除选择0和选择1。因此,算法的步骤3将生成的OFEMST转换为直角Steiner树(RST)。然后从布线平面中选取一些pseudoSteiner点,生成OARST。应该注意,在步骤3中,布线平面参照每个点p被划分为4个直角区域(即,图5.24的d1、d3、d5和d7是可用方向)。其次,pseudoSteiner点连接优化过程基于X结构,因此变得不可用,在布线选择优化过程中每个点只应考虑直角组合。此外,由于只有直线路径,冗余pseudoSteiner点消除也不能减少线长,这是因为它被设计成尽可能用合法的X结构边来代替冗余直角边。可以看出,在选择0和选择1被删除之后,精炼过程几乎没有效果。这主要是因为X结构和直角结构的优化技术不是通用的。例如,文献[30]算法中的边替换法和“U形图案细化”法被广泛用于优化直角结构,但不适用于X结构。 表5.15为与3个文献的算法关于线长和运行时间的比较结果,可以看出,FHOAOS的性能平均比文献[32]的算法差2.66%,比文献[31]的算法差2.38%,比文献[12]的算法优0.36%。此外,对于VLSI布线的另一个重要指标,即运行时间,FHOAOS仍然具有巨大的优势。FHOAOS比文献[31]、[32]、[12]的算法分别快2.52倍、44.18倍和12.77倍。 表5.15与3个文献的算法关于线长和运行时间的比较结果 测试 用例引脚数障碍 物数线长 FHOAOS[32] 优化率/% CPU时间/s FHOAOS[32] ind11032568(618)6096.73(-1.48)0.00(0.00)0.05 ind210439548(9800)9500-0.51(-3.16)0.00(0.00)0.06 ind31050574(613)6004.33(-2.17)0.00(0.00)0.05 ind425791069(1146)10922.11(-4.95)0.00(0.00)0.09 ind533711334(1412)13450.82(-4.98)0.00(0.00)0.08 rc01101025084(27630)259803.45(-6.35)0.00(0.00)0.05 rc02301039488(43290)417405.40(-3.71)0.00(0.00)0.06 rc03501054177(56940)555002.38(-2.59)0.00(0.00)0.07 rc04701059643(61990)601200.79(-3.11)0.00(0.00)0.06 rc051001072738(75685)753903.52(-0.39)0.00(0.00)0.09 rc0610050077592(84662)813404.61(-4.08)0.02(0.02)0.38 rc07200500105480(113598)1109524.93(-2.38)0.02(0.02)0.31 rc08200800113110(119177)1156632.21(-3.04)0.03(0.02)0.46 rc092001000110642(117074)1142753.18(-2.45)0.03(0.02)0.61 rc10500100155579(167219)1678307.30(0.37)0.02(0.01)0.20 rc111000100216401(234107)2358668.25(0.75)0.03(0.02)0.34 rc12100010000702544(775263)7620897.81(-1.73)0.41(0.36)21.78 均值(优化率/%)/合计(时间)3.96(-2.66)0.56(0.47)24.74 比率(时间)—1.00(1.00)44.18(52.64)续表 测试 用例引脚数障碍 物数 线长优化率/%CPU时间/s [31][12][31][12][31][12] ind110326046395.96(-2.32)11.11(3.29)0.000.01 ind21043950010000-0.51(-3.16)4.52(2.00)0.000.01 ind310506006234.33(-2.17)7.87(1.61)0.000.01 ind42579112911265.31(-1.51)5.12(-1.78)0.000.02 ind53371136413792.20(-3.52)3.26(-2.39)0.000.02 rc01101025980275403.45(-6.35)8.92(-0.33)0.000.01 rc02301042110419306.23(-2.80)5.82(-3.24)0.000.01 rc03501056030541803.31(-1.62)0.00(-5.09)0.000.01 rc04701059720590500.13(-3.80)-1.00(-4.98)0.000.02 rc051001075000756303.02(-0.91)3.82(-0.07)0.000.02 rc0610050081229863814.48(-4.23)10.17(1.99)0.030.13 rc072005001107641170934.77(-2.56)9.92(2.98)0.030.15 rc082008001160471223062.53(-2.70)7.52(2.56)0.050.27 rc0920010001155931193084.28(-1.28)7.26(1.87)0.060.36 rc105001001682801679787.55(0.63)7.38(0.45)0.020.08 rc1110001002344162323817.69(0.13)6.87(-0.74)0.030.14 rc121000100007569988426897.19(-2.41)16.63(8.00)1.195.88 均值(优化率(%))/合计(时间)4.23(-2.38)6.77(0.36)1.417.15 比率(时间) -—2.52(3.00)12.77 (15.21) 5. 与最优的OARSMT算法对比 文献[33]中提出的算法是一种精确的算法,它可以通过在障碍物中连接完整的Steiner树来构建最优的OARSMT。表5.16展示了与文献[33]的算法得到的线长和运行时间的比较结果。表5.16第4列显示,FHOAOS平均优于文献[33]的方法2.35%。这些结果进一步证明,对于降低VLSI设计中的布线成本,X架构具有很大的优势。此外,第6列显示FHOAOS比文献[33]的方法快267387.53倍,这主要是因为文献[33]的方法具有指数最坏情况时间复杂度。 表5.16与文献[33]的算法的线长和运行时间的比较结果 测试用例线长 FHOAOS文献[33] 优化率/% CPU时间/s FHOAOS文献[33] ind15686045.960.000.11 ind295489500-0.520.000.25 ind35746004.330.000.19 ind4106910861.570.000.87 ind5133413410.520.001.09 rc0125084259803.450.000.16 续表 测试用例线长 FHOAOS文献[33] 优化率/% CPU时间/s FHOAOS文献[33] rc0239488413504.500.000.52 rc035417754160-0.030.000.68 rc045964359070-0.970.000.95 rc0572738740701.800.001.31 rc0677592797142.660.02335 rc071054801087403.000.02541 rc08113110112564-0.490.0324170 rc091106421110050.330.0314174 rc101555791641505.220.02176 rc112164012308376.250.03706 均值(优化率(%) )/合计(时间)2.350.1540108.13 比率(时间)—1.00267387.53 6. OSMT生成的比较 OSMT可视为OAOSMT的特例,实际上,FHOAOS可以生成OSMT而无须任何修改。在删除障碍后,本节算法对现有的基准测试进行了实验。如表5.17所示,将结果与文献[28]的算法进行比较,其中FHOAOS*表示使用精炼方法之前的线长。表5.17是与文献[28]的算法的关于线长和运行时间的比较结果可以看出,精炼方法平均减少了1.79%的线长。此外,本节的线长结果也优于文献[28]的算法。与文献[28]的算法相比,本节算法可以实现-2.19%~1.87%的线长减小,平均线长减少为0.27%。在运行时间方面,本节算法比文献[28]的算法快201.38倍。 表5.17与文献[28]的算法的关于线长和运行时间的比较结果 测试 用例引脚数障碍 物数FHOAOS 线长优化率/%CPU时间/s FH OAOS*文献[28]FH OAOS*文献[28]FH OAOS文献[28] ind110325635785592.60-0.720.000.01 ind210438814883888140.270.000.000.01 ind310505475595472.150.000.000.01 ind425799559759632.050.830.000.01 ind533711152116311470.95-0.440.000.02 rc0110102409824311241230.88-0.100.000.01 rc0230103573436450362031.961.300.000.01 续表 测试 用例引脚数障碍 物数FHOAOS 线长优化率/%CPU时间/s FH OAOS*文献[28]FH OAOS*文献[28]FH OAOS文献[28] rc0350104855349816488192.540.540.000.07 rc0470105173752992506272.37-2.190.000.13 rc05100106781469358691052.231.870.000.20 rc061005007224773479729961.681.030.000.22 rc0720050098341100137975411.79-0.820.001.02 rc082008001012391030021014791.710.240.001.23 rc09200100098724100193997741.471.050.001.37 rc105001001500801527131514431.720.900.022.29 rc1110001002148412194842140732.12-0.360.034.35 rc121000100006981647121547079931.961.390.035.15 均值(优化率(%))/合计(时间)1.790.270.0816.11 比率(时间)—-1.00201.38 7. 随机生成电路及仿真结果实验 此外,为了研究本节算法的可扩展性,还测试了一些随机生成的具有额外障碍的情况。在这些情况下,障碍物的数量远远超过引脚的数量。这些情况更类似于实际布线应用程序,例如详细布线或工程更改指令布线。如表5.18的仿真实验结果所示,本节算法可以为所有测试用例高效地生成OSMT和OAOSMT。 表5.18仿真实验结果 测试用例引脚数障碍物数 线长CPU时间/s OSMTOAOSMTOSMTOAOSMT random110500171023200.000.01 random25050041948460130.000.01 random3100500708482350.000.02 random410010007190122330.000.03 random5200200040257500370.000.13 5.4.4小结 随着VLSI制造技术的快速发展,在一条直线布线平面上可以允许45°和135°的对角线段。本节基于X结构设计了一种高效的绕障算法,即OAOSMT和OSMT构造的快速四步启发式算法。与几种最先进的算法相比,实验结果表明,本节算法在线长和运行时均取得了很好的效果,在VLSI布线过程中非常实用和有效。 5.5本章总结 本章主要介绍了4种有效的单层绕障X结构Steiner最小树构造算法。首先,由于离散粒子群在全局优化问题上的独特优势能够使布线结果有着较好的优化,本章基于离散粒子群优化算法构造X结构Steiner最小树; 其次,介绍了快速绕障来构造X结构Steiner最小树以及提出了一种高效、有效的OAOSMT构建算法; 最后,介绍了四步构建算法: OFEMST的构建、查找表的生成、绕障策略、精炼。本章通过实验展示了所提出算法的有效性,对未来的研究提供了新的思路以及方向。 参 考 文 献 [1]Coulston C S. Constructing exact octagonal Steiner minimal trees[C]//Proceedings of the 13th ACM Great Lakes symposium on VLSI.2003: 16. [2]Chiang C,Chiang C S.Octilinear Steiner tree construction[C]//The 2002 45th Midwest Symposium on Circuits and Systems,2002.MWSCAS2002.IEEE,2002,1: I603. [3]Chang Y T,Tsai Y W,Chi J C,et al.ObstacleAvoiding rectilinear steiner minimal tree construction[C]//2008 IEEE International Symposium on VLSI Design,Automation and Test(VLSIDAT).IEEE,2008: 3538. [4]Li L,Young E F Y.Obstacleavoiding rectilinear Steiner tree construction[C]//2008 IEEE/ACM International Conference on ComputerAided Design.IEEE,2008: 523528. [5]Li L,Qian Z,Young E F Y.Generation of optimal obstacleavoiding rectilinear Steiner minimum tree[C]//2009 IEEE/ACM International Conference on ComputerAided DesignDigest of Technical Papers.IEEE,2009: 2125. [6]Chuang J R,Lin J M.Efficient multilayer obstacleavoiding preferred direction rectilinear Steiner tree construction[C]//16th Asia and South Pacific Design Automation Conference(ASPDAC 2011).IEEE,2011: 527532. [7]Liu C H,Chen I C,Lee D T.An efficient algorithm for multilayer obstacleavoiding rectilinear Steiner tree construction[C]//Proceedings of the 49th Annual Design Automation Conference.2012: 613622. [8]Eberhart R,Kennedy J.A new optimizer using particle swarm theory[C]//MHS′95.Proceedings of the Sixth International Symposium on Micro Machine and Human Science.Ieee,1995: 3943. [9]Clerc M. Discrete particle swarm optimization,illustrated by the traveling salesman problem[M]//New optimization techniques in engineering.Springer,Berlin,Heidelberg,2004: 219239. [10]Liu G,Chen G,Guo W.DPSO based octagonal steiner tree algorithm for VLSI routing[C]//2012 IEEE Fifth International Conference on Advanced Computational Intelligence(ICACI).IEEE,2012: 383387. [11]Lin C W,Chen S Y,Li C F,et al.Obstacleavoiding rectilinear Steiner tree construction based on spanning graphs[J].IEEE Transactions on ComputerAided Design of Integrated Circuits and Systems,2008,27(4): 643653. [12]Long J,Zhou H,Memik S O.EBOARST: An efficient edgebased obstacleavoiding rectilinear Steiner tree construction algorithm[J].IEEE Transactions on ComputerAided Design of Integrated Circuits and Systems,2008,27(12): 21692182. [13]Liu C H,Yuan S Y,Kuo S Y,et al.An O(n log n) pathbased obstacleavoiding algorithm for rectilinear Steiner tree construction[C]//Proceedings of the 46th Annual Design Automation Conference.2009: 314319. [14]Liu C H,Yuan S Y,Kuo S Y,et al.Obstacleavoiding rectilinear Steiner tree construction based on Steiner point selection[C]//2009 IEEE/ACM International Conference on ComputerAided DesignDigest of Technical Papers.IEEE,2009: 2632. [15]Shi Y,Eberhart R C. Parameter selection in particle swarm optimization[J].In: Porto V.W.,Saravanan N.,Waagen D.,Eiben A.E.(eds) Evolutionary Programming VII.Lecture Notes in Computer Science 1998,447: 591600. [16]Shi Y,Eberhart R C. Empirical study of particle swarm optimization[C]//Proceedings of the 1999 Congress on Evolutionary ComputationCEC99(Cat.No.99TH8406).IEEE,1999,3: 19451950. [17]Ratnaweera A,Halgamuge S K,Watson H C.Selforganizing hierarchical particle swarm optimizer with timevarying acceleration coefficients[J].IEEE Transactions on evolutionary computation,2004,8(3): 240255. [18]Jing T T,Feng Z,Hu Y,et al.λOAT: λGeometry ObstacleAvoiding Tree Construction With O(nlogn) Complexity[J].ComputerAided Design of Integrated Circuits and Systems,IEEE Transactions on,2007,26(11): 20732079. [19]Liu C H,Yuan S Y,Kuo S Y,et al.Highperformance obstacleavoiding rectilinear steiner tree construction[J].ACM Transactions on Design Automation of Electronic Systems(TODAES),2009,14(3): 45. [20]Liu C H,Kuo S Y,Lee D T,et al.Obstacleavoiding rectilinear Steiner tree construction: A Steinerpointbased algorithm[J].IEEE Transactions on ComputerAided Design of Integrated Circuits and Systems,2012,31(7): 10501060. [21]Hanan M.On Steiner’s problem with rectilinear distance[J].SIAM Journal on Applied Mathematics,1966,14(2): 255265. [22]Teig S L. The X architecture: Not your fathers diagonal wiring[C]//Proceedings of the 2002 international workshop on Systemlevel interconnect prediction.2002: 3337. [23]Huang H H,Chang S P,Lin Y C,et al.Timingdriven nonrectangular obstaclesavoiding routing algorithm for the Xarchitecture[C]//WSEAS International Conference.Proceedings.Mathematics and Computers in Science and Engineering.World Scientific and Engineering Academy and Society,2009(8). [24]Yan J T.Timingdriven octilinear Steiner tree construction based on Steinerpoint reassignment and path reconstruction[J].ACM Transactions on Design Automation of Electronic Systems(TODAES),2008,13(2): 118. [25]Fortune S. A sweepline algorithm for Voronoi diagrams[J].Algorithmica,1987,2(1): 153174. [26]Preparata,F.P.M.I.Shamos.Computational Geometry: an Introduction[M].Springer Verlag,1985. [27]Kruskal J B. On the shortest spanning subtree of a graph and the traveling salesman problem[J].Proceedings of the American Mathematical Society,1956,7(1): 4850. [28]Huang X,Liu G,Guo W,et al.Obstacleavoiding algorithm in Xarchitecture based on discrete particle swarm optimization for VLSI design[J].ACM Transactions on Design Automation of Electronic Systems(TODAES),2015,20(2): 24. [29]Berg M D. Computational Geometry: Algorithms and Applications[M].Springer Publishing Company,Incorporated,2000. [30]Borah M,Owens R M,Irwin M J.An edgebased heuristic for Steiner routing[J].IEEE Transactions on ComputerAided Design of Integrated Circuits,and Systems,1994,13(12): 15631568. [31]Ajwani G,Chu C,Mak W K.FOARS: FLUTE based obstacleavoiding rectilinear Steiner tree construction[J].IEEE Transactions on ComputerAided Design of Integrated Circuits and Systems,2011,30(2): 194204. [32]Chow W K,Li L,Young E F Y,et al.Obstacleavoiding rectilinear Steiner tree construction in sequential and parallel approach[J].Integration the VLSI Journal,2014,47: 105114. [33]Huang T,Young E F Y. ObSteiner: an exact algorithm for the construction of rectilinear Steiner minimum trees in the presence of complex rectilinear obstacles[J].IEEE Trans ComputAided Des Integr Circuits Syst,2013,32: 882893.