X结构下考虑障碍内布线的Steiner树构建方法
阅读说明:本技术 X结构下考虑障碍内布线的Steiner树构建方法 (Steiner tree construction method considering barrier internal wiring under X structure ) 是由 刘耿耿 汤浩 徐赛娟 陈俊杰 于 2020-06-18 设计创作,主要内容包括:本发明涉及一种X结构下考虑障碍内布线的Steiner树构建方法,包括以下步骤:步骤S1:初始化粒子群,其中每个粒子表示一个连接所有给定引脚的X结构Steiner树;步骤S2:对粒子群进行预处理,生成包含所有粒子的任意两个引脚之间的所有连接信息的查找表;步骤S3:粒子群飞行,并通过变异策略,交叉策略以及粒子适应值函数迭代,得到优秀粒子;步骤S4:对得到的优秀粒子继续调整,引入障碍物角点为Pseudo-Steiner点的调整策略,确保所有边在障碍内的连通分量长度都不超过门限值L,得到调整后的优秀粒子;步骤S5:对调整后的优秀粒子进行进一步的精炼,得到最优粒子,即最优的X结构Steiner树。本发明能够充分利用障碍内资源进行布线,显著缩短了总布线长度。(The invention relates to a Steiner tree construction method considering barrier inner wiring under an X structure, which comprises the following steps: step S1, initializing particle swarms, wherein each particle represents an X-structure Steiner tree connected with all given pins; step S2, preprocessing the particle swarm to generate a lookup table containing all connection information between any two pins of all particles; s4, continuously adjusting the obtained excellent particles, introducing an adjusting strategy with an obstacle corner point as a Pseudo-Steiner point, ensuring that the lengths of connected components of all sides in the obstacle do not exceed a threshold value L, and obtaining the adjusted excellent particles; and step S5, further refining the adjusted excellent particles to obtain the optimal particles, namely the optimal X-structure Steiner tree. The invention can fully utilize resources in the obstacles to carry out wiring, and obviously shortens the total wiring length.)
技术领域
本发明涉及超大规模集成电路设计领域,具体涉及一种X结构下考虑障碍内布线的Steiner树构建方法。
背景技术
超大规模集成电路(Very Large Scale Integration,VLSI)中的布线问题一直是研究人员十分关注的问题,是超大规模集成电路物理设计过程中最重要的步骤之一。另一方面,随着集成电路(IC)技术的进步,现代超大规模集成电路设计已经向芯片上系统的模式转变,芯片的密度大大增加,越来越多的障碍出现在物理设计过程中,例如IP块、宏单元等。在布线时,考虑障碍物尤其重要。这就使得障碍规避Steiner最小树(Obstacle-avoiding Steiner Minimal Tree,OASMT)成为人们研究的热点,其中又分以直角结构障碍规避Steiner最小树(Obstacle-avoiding Rectilinear Steiner Minimal Tree,OARSMT)与X结构障碍规避Steiner最小树(Obstacle-avoiding Octilinear Steiner MinimalTree,OAOSMT)最为热门。在实践中,通常可布线区域包含多个布线层,障碍往往只占据了设备层(Device Layer)和某几个较低的金属层(Metal Layers),并没有完全阻断绕线,即在障碍内部可以布线。这使得考虑障碍内布线的研究开始出现,即限制长度的Steiner最小树(Length-restricted Steiner Minimum Tree,LRSMT),其障碍内限制长度为门限值L。然而,X结构方面的LRSMT研究暂为稀少,本发明在考虑障碍内布线的情况下提出一种基于X结构的考虑障碍内布线的Steiner树算法。
目前该领域的大多数工作都集中在曼哈顿结构(直角结构)上,并且提出了很多用启发式思想构造直角Steiner最小树(Rectilinear Steiner Minimal Tree,RSMT)的方法。而随着基于曼哈顿体系结构的精确算法的提出,研究人员就大多只是优化运行速度。最重要的问题之一的布线,这些启发式方法较难做出新的贡献。
发明内容
有鉴于此,本发明的目的在于提供一种X结构下考虑障碍内布线的Steiner树构建方法,能够充分利用障碍内资源进行布线,显著缩短了总布线长度。
为实现上述目的,本发明采用如下技术方案:
一种X结构下考虑障碍内布线的Steiner树构建方法,包括以下步骤:
步骤S1:初始化粒子群,其中每个粒子表示一个连接所有给定引脚的X结构Steiner树;
步骤S2:对粒子群进行预处理,生成包含所有粒子的任意两个引脚之间的所有连接信息的查找表;
步骤S3:粒子群飞行,并通过变异策略,交叉策略以及粒子适应值函数迭代,得到优秀粒子;
步骤S4:对得到的优秀粒子继续调整,引入障碍物角点为Pseudo-Steiner点的调整策略,确保所有边在障碍内的连通分量长度都不超过门限值L,得到调整后的优秀粒子;
步骤S5:对调整后的优秀粒子进行进一步的精炼,得到最优粒子,即最优的X结构Steiner树。
进一步的,所述步骤S1采用按比例随机生成或prim算法生成初始X结构Steiner树,即初始粒子,并进一步得到初始化粒子群。
进一步的,所述步骤S2具体为:
步骤S21:设P={P1,P2,P3…Pn}为一组引脚,O={O1,O2,O3…Om}为一组障碍物;
步骤S22:对于每对引脚,计算边pipj在障碍内的连通分量长度超过门限值L的障碍物的数量;
步骤S23:将所有这些障碍物和障碍内连通分量记录为一组{Ok},其中c表示pi和pj之间的选择,所有这些可能边的记录构成最终查找表。
进一步的,所述步骤S3采用了基于遗传操作和并集的离散位置更新方法,粒子的更新公式表示为:
其中,w为惯性重量,c1和c2为加速度常数。F1表示自发变异操作,而F2和F3表示交叉操作;r1,r2,r3是区间[0,1)上的随机数
(1)粒子的自发变异表述为:
其中,w表示变异概率;
(2)粒子的个体认知经验表述为:
其中c1表示粒子与其个体最优解的交叉概率;
(3)粒子的全局感知经验表述为:
其中c2表示粒子与全局最优解的交叉概率。
进一步的,所述变异策略具体为:粒子自身产生随机变异,采取换边的策略,即移除一边或两边使其成为森林,再利用并查集的方法随机加边合成一棵新树。
进一步的,所述变异策略具体为:粒子通过与个体最优或群体最优进行比较,删除这两棵树的不同边,余下的通过并查集的方式进行任意加边直到变成完整的一颗树为止完成操作。
进一步的,所述步骤S4具体为:
步骤S41:对全局最优粒子gi的每条边pq加入待检查列表进行检查,通过查找表来检查pq是否避开所有的障碍或障碍内连通分量小于L;如果是,重复此步骤检查下一条边,直到最后一条边;否则,转到步骤S42;
步骤S42:通过查表的方式,列出pq遇到的所有障碍物,并根据p与障碍物的距离,找到距离p最近的障碍。当前起点p,当前障碍物O=Ok1;
步骤S43:从Ok1中选取pq之间且最接近直线pq的角点c;
步骤S44:删除gi的pq边信息,计算pc,cq的连接信息并将此信息添加到查找表中;
步骤S45:根据选择0和选择1优先于选择2和选择3的准则连接pc,qc并将它们加入gi的边信息中;然后将边pc,cq加入待检查列表。
进一步的,所述步骤S5具体为:
步骤S51:扫描全局最优粒子gi的每条边,统计每个端点p的度,同时记录所有连接到p的端点;
步骤S52:对于每个端点p,如果p的度数为d,则枚举所有的p的4d种布线选择组合,选择共享长度最多,适应度值最小的组合。
本发明与现有技术相比具有以下有益效果:
本发明能够充分利用障碍内资源进行布线,显著缩短了总布线长度。
附图说明
图1是本发明一实施例中Pseudo-Steiner的4种选择情况;
图2是本发明一实施例中的一个粒子的编码示例;
图3是本发明一实施例中两个引脚的连线方式;
图4是本发明一实施例中查找表的一项内容;
图5是本发明一实施例中的粒子的变异;
图6是本发明一实施例中的粒子的交叉;
图7是本发明一实施例中一个需要调整的示例;
图8是本发明一实施例中解决LRSMT问题对直角结构LRSMT[16]对比的各部分线长优化;
图9是本发明一实施例中引脚200个,障碍物500个,L=LBB*0%的效果图;图10是本发明一实施例中引脚200个,障碍物500个,L=LBB*1%的效果图;
图11是本发明一实施例中引脚200个,障碍物500个,L=LBB*5%的效果图;
图12是本发明一实施例中引脚200个,障碍物500个,L=LBB*10%的效果图;
图13是本发明一实施例中引脚200个,障碍物500个,L=无穷的效果图。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
在本实施例中,为了让一般技术人员更好的理解本发明的技术方案,设定如下:
定义1(障碍):在LRSMT问题中,障碍物为任意大小的矩形,并且除了边界部分之外,任何两个障碍物都不能重叠。
定义2(布线结构):在二维λ-几何结构中,只允许具有角度iπ/λ的方向,其中i为任意数,λ是整数且λ>2。
(1).直角结构:当λ值为2时,布线方向为iπ/2,包括0°和90°两个方向。
(2).X结构:当λ的值为4时,布线方向为iπ/4,包括0°,45°,90°和135°。
定义3(Pseudo-Steiner点):除引脚外的端点都称为Pseudo-Steiner点。
定义4(半周长):对于长为L1宽L2的矩形障碍物O,矩形障碍物O的半周长(Half-Perimeter Wire Length,HPWL)为L1+L2。
定义5(0选择):如图1中(2)所示,(X1,Y1)和(X2,Y2)为边L的两个端点,即端点P和端点Q,其中X1<X2。边L对应的Pseudo-Steiner的选择如图1(2)所示,从端点P先引直边再引斜边至端点Q,则称作0选择。图1(2)中的S点即为0选择Pseudo-Steiner点。
定义6(1选择):如图1中(3)所示,(X1,Y1)和(X2,Y2)为边L的两个端点,即端点P和端点Q,其中X1<X2。边L对应的Pseudo-Steiner的选择如图1中(3)所示,从端点P先引斜边再引直边至端点Q,则称作1选择。图1中(3)中S点即为1选择Pseudo-Steiner点。
定义7(2选择):如图1中(4)所示,(X1,Y1)和(X2,Y2)为边L的两个端点,即端点P和端点Q,其中X1<X2。边L对应的Pseudo-Steiner的选择如图1中(4)所示,从端点P先引竖直边再引水平边至端点Q,则称作2选择。图1中(4)的S点即为2选择Pseudo-Steiner点。
定义8(3选择):如图1中(5)所示,(X1,Y1)和(X2,Y2)为边L的两个端点,即端点P和端点Q,其中X1<X2。边L对应的Pseudo-Steiner的选择如图1中(5)所示,从端点P先引水平边再引竖直边至端点Q,则称作3选择。图1中(5)的S点即为3选择Pseudo-Steiner点。
在本实施例中,提供了一种X结构下考虑障碍内布线的Steiner树构建方法,包括以下步骤:
步骤S1:初始化粒子群,其中每个粒子表示一个连接所有给定引脚的X结构Steiner树;
在本实施例中,采用PSO算法,PSO初始化为一群随机粒子(随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个“极值”来更新自己。一个是粒子本身所找到的最优解,这个解叫做个体极值Pbest。另一个极值是整个种群目前找到的最优解,这个极值是全局极值Gbest。
粒子根据下面的公式进行更新速度及位置:
式中,为粒子的速度向量,为当前粒子的位置,pij为粒子本身找到的最优解,gi为整个种群找到的最优解,w为惯性权重,c1和c2为加速因子,r1和r2为两个在[0,1]范围内变化的随机数。
本实施例中为每个引脚和障碍物提供一个唯一的序列号。利用一组生成树的边来表示候选连接树,并在每一条边上增加一个变量来指示Pseudo-Steiner点的连接选择,从而将其转化为一个X结构Steiner树。如定义5至定义8所示,每个Pseudo-Steiner的布线选择包括四种类型。如果线路中有n个引脚,生成树将包括n-1条边、n-1个Pseudo-Steiner点和一个额外变量,即粒子的适应值。所以一个粒子的长度是3*(n-1)+1。如图2所示,粒子可以表示为以下数字串:1 2 1 2 3 3 2 4 0 28.3,其中28.3表示粒子的适应度值。第一个数字串1 2 1表示一个边,该边是引于引脚1和引脚2,连接的是1选择。
由于初始只有引脚的信息,优选的,本实施例采用按比例随机生成或prim算法生成初始X结构Steiner树,即初始粒子。这样的粒子的编码包含了解空间的所有可行解,与空间的潜在解一一对应了。
步骤S2:对粒子群进行预处理,生成包含所有粒子的任意两个引脚之间的所有连接信息的查找表;
在本实施例中,设P={P1,P2,P3…Pn}为一组引脚,O={O1,O2,O3…Om}为一组障碍物。对于每对引脚,例如pi和pj,我们计算边pipj在障碍内的连通分量长度超过门限值L的障碍物的数量,并将所有这些障碍物和障碍内连通分量记录为一组{Ok},其中c表示pi和pj之间的选择。所有这些可能边的记录构成最终查找表。
如图3是一个两引脚示例图,图4记录了两个引脚在查找表中的内容:其中,记录了引脚19与引脚25的连线方式穿过的信息,如采取0选择,连线之间障碍物个数为1,这一个为障碍物编号5,障碍内连通分量31.1。采取3选择,连线之间障碍物个数为2,这两个分别为:障碍物编号5,障碍内连通分量30;障碍物编号6,障碍内连通分量40。当采用2选择时则会避开障碍,之间的障碍物个数为0。
步骤S3:粒子群飞行,并通过变异策略,交叉策略以及粒子适应值函数迭代,得到优秀粒子;
在本实施例中,采用了一种基于遗传操作和并集的离散位置更新方法。粒子的更新公式表示为:
其中,w为惯性重量,c1和c2为加速度常数。F1表示自发变异操作,而F2和F3表示交叉操作;r1,r2,r3是区间[0,1)上的随机数。
(1)粒子的自发变异可以表述为:
其中,w表示变异概率。
(2)粒子的个体认知经验可以表述为:
其中c1表示粒子与其个体最优解的交叉概率。
(3)粒子的全局感知经验可以表述为:
其中c2表示粒子与全局最优解的交叉概率。
在本实施例中,参考图5,变异策略如下:
粒子自身产生随机变异,我们采取换边的策略,即移除一边或两边使其成为森林,再利用并查集的方法随机加边合成一棵新树。原理如图5所示,为了简单起见,我们使用直线而不是X结构。自发变异操作的具体步骤如下:
(1)从生成树中随机移除一条边。
(2)扫描剩余的边,使用并查集将所有点分成两个点集。
(3)随机选择两个点p1和p2。
(4)检查点p1和点p2是否在同一集合中,如果在同一集合中,则返回(3)。
(5)将点p1与点p2连接以形成新边。
在本实施例中,参考图6,交叉策略如下:
这棵树(粒子)通过与个体最优或群体最优进行,删除这两棵树的不同边,余下的通过并查集的方式进行任意加边(边是两棵树中不同边中的)直到变成完整的一颗树为止完成操作。每个引脚都有唯一的序列号。在进行交叉操作时,我们根据两棵生成树中引脚的序号从小到大对所有的边进行排序。然后我们从两个排序后的树中选择相同的边作为一个集合,其余的不同的边作为另一个集合。第一个集合中的所有边作为新的生成树的边。然后,我们从第二组,随机选择一个边,并将它添加到新的生成树中,直到一个完整的生成树,并且我们利用并查集来防止生成环。原理如图6所示,为了简单起见,我们使用直线作为示意。自发变异操作的具体步骤如下:
(1)根据第一个引脚的序列号对每个父节点的所有边进行排序,如果相同,则根据第二个引脚的序列号排序。
(2)扫描两个已排序的边集。选择与新生成树的边相同的边。同时,将所有其他边复制到另一个集合S中。
(3)从S中随机选择一条边并将其加入到新的生成树中,直到形成完整的树。同时使用并查集合来防止形成环。,
步骤S4:对得到的优秀粒子继续调整,引入障碍物角点为Pseudo-Steiner点的调整策略,确保所有边在障碍内的连通分量长度都不超过门限值L,得到调整后的优秀粒子;
在本实施例中,粒子飞行结束后,选择种群的最终全局最优粒子gi作为最终的X结构Steiner树。粒子gi可能非常优秀,它可以直接实现LRSMT也可能是穿过一些障碍。对于有些情况,如图7,仅通过改变布线方式是无法避免通过障碍的而这些障碍内的线长分量又始终大于门限值L,因此,我们通过引入新的Pseudo-Steiner点策略即调整策略来解决这些情况。调整策略具体步骤如下:
(1)对gi的每条边pq加入待检查列表进行检查,通过查找表来检查pq是否避开所有的障碍或障碍内连通分量小于L。如果是,重复此步骤检查下一条边,直到最后一条边。否则,转到步骤(2)。
(2)通过查表的方式,列出pq遇到的所有障碍物,并根据p与障碍物的距离,找到距离p最近的障碍。当前起点p,当前障碍物O=Ok1。
(3)从Ok1中选取pq之间且最接近直线pq的角点c。删除gi的pq边信息,计算pc,cq的连接信息并将此信息添加到查找表中。同时,根据选择0和选择1优先于选择2和选择3的准则连接pc,qc并将它们加入gi的边信息中。然后将边pc,cq加入待检查列表。
这种调整策略引入了障碍物的角点为新的Pseudo-Steiner点,成功的避开了障碍物,并且这种使得共享边的概率较高且工艺较简单,且适用于布线模型。
步骤S5:对调整后的优秀粒子进行进一步的精炼,得到最优粒子,即最优的X结构Steiner树。
在本实施例中,调整过之后的线路虽然已经是LRSMT,但是调整过程中布线选择并未考虑到共享长度,因此得到的结果仍然可能或多或少地包含非最优结构,为此我们补上了精炼策略。该方法可以将所有非最优结构转化为最优结构,同时避免了障碍内布线过大。具体步骤如下:
(1)扫描粒子gi的每条边,统计每个端点p的度,同时记录所有连接到p的端点。
(2)对于每个端点p,如果p的度数为d,则枚举所有的p的4d种布线选择组合,选择共享长度最多,适应度值最小的组合。
在精炼过程中,有两点需要注意。首先,一个端点的组合是否满足要求,可以通过查表直接确定,因为我们在调整过程中添加了必要的角点连接信息。其次,对于每个避障组合,为了选择这个粒子的最优组合,我们可能需要计算gi的适应度值,而不仅仅是组合本身的长度。本实施例方法有效提高了精炼效率。
本实施例中,为了验证本方法的有效性,实验在一台2.6GHz处理器、4G内存的PC上进行。测试了传统OASMT文献中常用的16个标准测试电路进行对比。使用改进百分比(percentage improvement,PI)来对比本发明方法和其他方法求解质量以及本发明参数的一些对照:
解决LRSMT问题时,门限值L设置为测试电路的矩形布线区域边界较长边长(表示为LBB)的不同比例长度[1]。
我们将本发明在L=LBB*0%的情况下即为OAOSMT问题时与近些年平面上X结构布线的研究进行了总布线长度的对比。按引脚数依次增加,共十一个测试用例,其中PORA没有提供rc11的结果。改进的百分比由上述公式进行计算。由实验数据表1、2、3得出,与本发明相比,本发明方法的总布线长度相对Oct改进为0.58%~42.66%,平均改进17.12%、相对Huang改进-1.11%~4.93%,平均改进1.15%、相对PSO改进-0.18%~1.61%,平均改进0.89%、相对FH-OAOS改进-1.11%~4.38%,平均改进0.81%、相对PORA改进3.33%~8.17%,平均改进5.97%、相对Lee改进-10.05%~13.78%,平均改进3.28%。
表1:本发明L=LBB*0%时与近些年布线的OAOSMT的对比
表2:本发明L=LBB*0%时较近些年布线的OAOSMT的改进比
表3:本发明L=LBB*0%时较近些年布线的OAOSMT的改进比
表4列出了本发明解决LRSMT问题得到的线长与直角结构解决LRSMT问题得到的线长,第4列到第8列是本发明X结构布线模型解决LRSMT问题的门限值L在测试电路的矩形布线区域边界较长边长(表示为LBB)的不同比例长度下得到的各组解,第9列到第13列是直角布线结构模型解决LRSMT问题的门限值L在测试电路的矩形布线区域边界较长边长(表示为LBB)的不同比例长度下得到的各组解,但是其其中,第五组数据的L=LBB*0%和L=LBB*1%没有得到结果。由表可以看出本发明对各项数据组都得到了较优解。表5列出了各项数据组的改进比,在L=LBB*0%时各组数据改进1.58%~15.22%,平均改进7.22%,在L=LBB*1%时各组数据优化线长3.45%~15.22%,平均优化线长7.69%,在L=LBB*5%时,各组数据优化线长3.41%~12.56%,平均优化线长7.43%,在L=LBB*10%时,各组数据优化线长3.41%~12.68%,平均优化线长7.73%,在L=无穷时,各组数据优化线长3.41%~12.58%,平均优化线长7.69%。总体上优化了线长7.22%~7.73%。图8较直观的体现了X结构对于直角结构的优化。图9~图13是输入引脚100个,障碍物500个时L=LBB*0%,L=LBB*1%,L=LBB*5%,L=LBB*10%,L=无穷时各自结果用matlab绘制出来的布线图,可以看出障碍内的线长允许逐渐增多而总线长在逐渐优化,本发明方法更为有效的解决了LRSMT问题。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
- 上一篇:一种医用注射器针头装配设备
- 下一篇:超大规模集成电路下基于通孔感知的并行层分配方法