一种用于求解给定边框约束的VLSI版图设计方法与流程

文档序号:12467007阅读:229来源:国知局
一种用于求解给定边框约束的VLSI版图设计方法与流程

本发明涉及VLSI物理设计自动化技术领域,特别是一种用于求解给定边框约束的VLSI版图设计方法。



背景技术:

近年来,随着集成电路制造工艺的迅速发展,集成电路产业已经进入了纳米工艺时代,芯片的集成度进一步提高,一块芯片上所能集成的电路元件越来越多,对VLSI设计方法提出了更高的要求。版图规划是VLSI物理设计过程中非常重要的一个环节,对集成电路的性能指标,如可布通性、时延特性、功耗、电路可靠性等有重大影响。随着版图规划问题的约束不断增多和芯片上单元个数的快速增长,对VLSI版图规划问题的算法设计提出了巨大的挑战。因此,寻求更高效、更实用的集成电路版图规划设计算法具有重要的意义。

在是否考虑将模块放置到给定的区域约束时,版图规划问题分为传统版图规划问题和fixed-outline版图规划问题。传统版图规划问题主要在满足任何模块都不重叠约束下,确定模块的位置,使得布局的面积和模块间的互连线长最小。Fixed-outline版图规划问题是在给定边框约束和任何模块都不重叠约束条件下确定模块的位置,使得最终的布局面积和模块间的互连线长度最小。换而言之,fixed-outline版图规划问题不仅要满足任何模块都不重叠的约束,而且还要满足所有的模块都要放置到给定的边框内。目前已经证明了fixed-outline版图规划比传统版图规划更加复杂。

用来解决VLSI版图规划问题的算法可分为以下两类:基于迭代的版图规划设计方法和基于分析的版图规划设计方法。在这两类方向中,通过实验结果的对比,基于迭代的版图规划设计方法取得的布局效果较好,因而成为当前主流布局工具所采用的方法。由于VLSI布局问题的规模很大,现有的基于构造的版图规划设计工具很难直接求解。在迭代方法的VLSI版图规划设计算法中,主要采用启发式策略,如模拟退火算法、遗传算法和粒子群算法等等。在基于启发式策略的迭代方法中,实验结果证明模拟退火算法在处理版图规划设计问题时,能够得到较好的版图规划结果。因此,模拟退火算法被认为是启发式策略迭代法中比较有效的一种算法。

目前,基于分析方法的版图规划算法主要采用线性规划算法及混合线性规划算法处理VLSI不可二划分版图规划问题。根据学术上和工业界布局器的比较,基于迭代方法的版图规划布局工具取得的实验结果最好。



技术实现要素:

本发明的目的在于提供一种用于求解给定边框约束的VLSI版图设计方法,以克服现有技术中存在的缺陷。

为实现上述目的,本发明的技术方案是:一种一种用于求解给定边框约束的VLSI版图设计方法,按照如下步骤实现:

步骤S1:将版图规划表示为B*-tree;

步骤S2:初始化所述步骤S1获取的B*-tree为完全二叉树,记为初始解I;

步骤S3:设置算法迭代次数iterative=0,设置最大的迭代数目;

步骤S4:判断所述初始解I是否为可行解;

步骤S5:通过一系列B*-tree扰动产生邻居解;

步骤S6:对所述步骤S5中的邻居解采用可行解策略,使得邻居解满足边框约束;

步骤S7:采用混合模拟退火算法在解空间中搜索最优解;

步骤S8:令iterative=iterative+1;

步骤S9:重复所述步骤S5至所述步骤S8,直到迭代次数iterative大于预设的迭代数目。

在本发明一实施例中,在所述步骤S1中将版图规划表示为B*-tree,其中,树形结构中的每个节点都代表一个模块,而且每个节点至多有两个子节点。

在本发明一实施例中,在所述步骤S2中,所述初始化所述步骤S1获取的B*-tree为完全二叉树包括:除了树结构中的最后两行的节点,每个父节点有两个子节点。

在本发明一实施例中,在所述步骤S5中,对于解空间中每个解都由B*-tree表示,且所述一系列B*-tree的扰动方式包括:模块旋转、移动模块到另一个区域以及交换两个模块。

在本发明一实施例中,在所述步骤S6中,通过可行解策略算法使所述所述步骤S5中获取的邻居解为可行解,且所述可行解策略算法采用如下步骤实现:

步骤S61:令j==0;

步骤S62:while(初始解S是不可行的or j≤给定的数值);

步骤S63:令j++;

步骤S64:通过一系列B*-tree的扰动产生新的解S1

其中,j表示可行解策略在实行过程中的迭代次数。

在本发明一实施例中,在所述步骤S7中,还包括如下步骤:

步骤S71:通过B*-tree扰动产生新的解I',并将对应的B*-tree记为J;

步骤S72:基于新的罚函数计算新解I'的费用值,并计算新的解和上一步解的费用差;

步骤S73:判断是否接受J;

步骤S74:通过一新的温度改变公式搜索最优解。

在本发明一实施例中,所述新的罚函数包括两部分:面积函数A和过度长度

函数L';所述A面积函数通过计算包含候选版图规划F结果的最小矩形的面

积来获得,计算公式为:

其中,W0,H0分别表示给定边框的宽和高;候选版图规划F的宽和高分别记

为W和H;

所述过度长度函数L'通过计算每个模块超出给定边框的长度来获得;若第i个模块超出给定边框的长度记为Li,则其计算公式为:

其中,(xi,yi)表示第i个模块的左下角坐标;第i个模块的宽和高分别记为wi和hi

则过度长度函数的计算公式为:

其中,S表示超出给定边框的所有模块的集合。

在本发明一实施例中,所述新的温度改变公式包括三部分:高温随机搜索阶段、局部搜索阶段以及温度上升阶段。

在本发明一实施例中,所述新的温度改变公式通过如下步骤获取:

步骤S741:Tn=avg/(log(P));

步骤S742:if(n==给定的数值);

步骤S743:Tn=Tn×avgcost/(λ×n);

步骤S744:Tn=Tn×Pm

步骤S745:Tactual=estimateavg/Tn

步骤S746:if(n>给定的数值);

步骤S747:Tn=Tn×avgcost/n;

步骤S748:Tactual=estimateavg/Tn

其中,Tn=avg/(log(P))用来计算初始温度,n是模拟退火算法中的迭代数目,Tn是第n步的温度;m是用来控制在当前温度下进行局部搜索的次数,且为一常数;P是接受较差的解的初始概率;平均上山费用,也即费用值增大的方向,记为avg;当前温度下的平均费用差记为avgcost;λ是用户定义的参数,用于令温度能够快速降低,estimateavg是用来控制温度的常数,Tactual是实际温度。

相较于现有技术,本发明具有以下有益效果:

(1)在计算模块是否超出给定边框约束阶段,本发明采用惩罚函数方法。该惩罚函数是由包含候选布局结果的最小矩形超出边框的面积违背函数和各个模块超出给定边框约束的长度函数组成。此函数方法可有效地限制模块在B*-tree扰动过程中朝向边框移动。

(2)在B*-tree产生新的解阶段,本发明采用可行解策略。此策略使得经过一系列B*-tree扰动产生的解都是满足给定边框约束的可行解。

(3)在解搜索阶段,本发明采用混合模拟退火算法。在该混合算法中,温度改变分为三阶段:快速降温阶段,局部搜索阶段和温度上升阶段。此温度改变公式首先快速的降低温度,使得冗杂的解空间不被搜索。在局部搜索阶段,由于温度逼近与0,因此很少接受较差的解。温度上升阶段,较多的差的解被接受,这样防止了搜索的最优解或次优解是局部解。经与测试例子进行实验比较,比较结果表明本发明的版图规划方法是有效的。实验结果表明该方法可以提供高效实用的版图规划结果,可满足目前VLSI的版图规划设计的需求。

附图说明

图1为本发明一实施例中一种用于求解给定边框约束的VLSI版图设计方法的流程图。

图2为本发明一实施例中一种用于使得由B*-tree产生的邻居解满足边框约束的可行解策略的流程图。

图3为本发明一实施例中用于温度更新的公式的流程图。

图4为本发明一实施例中在宽高比为1时优化测试例子n300面积和线长的结果图。

具体实施方式

下面结合附图,对本发明的技术方案进行具体说明。

本发明提供一种用于求解给定边框约束的VLSI版图设计方法,目的在于将采用混合模拟退火算法处理VLSI不可二划分的给定边框约束的版图规划问题。该算法采用基于面积违背函数和长度违背函数相结合的惩罚函数,再利用可行解策略使得产生的新解都是满足边框约束的可行解,最后再采用混合模拟退火算法来搜索问题的解空间,从而得到一种性能优越的基于迭代方法的给定边框约束的版图规划结果。

进一步的,本发明针对不可二分超大规模集成电路给定边框约束的版图规划问题,提出了基于混合的模拟退火的VLSI版图规划算法。首先,考虑到初始解对布局结果的影响,采用随机化的策略,即将一个随机初始布局作为混合模拟退火算法的初始解。考虑到所要解决的是给定边框约束的版图规划问题,因此提出了将边框约束作为目标函数的违背惩罚函数。该函数在考虑围住候选布图结果的最小矩形超出给定边框的面积函数基础之上,引入了考虑各个模块超出给定边框的长度函数。在加入了混合模拟退火算法的基础上,又引入了可行解策略。这个策略使得经过一系列B*-tree扰动产生的解都是可行解,从而使得本算法能够得到较优的解。在加入可行解策略的基础之上,进一步引入了混合模拟退火算法来搜索最优解,在该算法中,新的温度更新公式被采用。新的温度更新公式大大节省解空间搜索阶段的时间,将更多的时间用于在温度上升阶段寻找较优的解,增大了找到最优解的概率。

进一步的,如图1所示,具体包括如下步骤:

步骤S1:把版图规划表示为B*-tree;

步骤S2:初始化B*-tree为完全二叉树,记为初始解I;

步骤S3:设置算法迭代次数iterative=0,设置最大的迭代数目;

步骤S4:判断I是否为可行解;

步骤S5:通过一系列B*-tree扰动产生邻居解;

步骤S6:对(5)中的邻居解采用可行解策略,使得邻居解满足边框约束;

步骤S7:用混合模拟退火算法在解空间中搜索最优解;

步骤S8:iterative=iterative+1;

步骤S9:重复步骤S5~步骤S8,直到iterative大于给定的迭代数目;

进一步的,在步骤S1中,把版图规划表示为B*-tree,其中,树形结构中的每个节点都代表一个模块,而且每个节点最多有两个子节点。

进一步的,在模拟退火算法操作中,解的多样性对超大规模集成电路给定边框约束的版图规划结果有很大的影响,为了保持解的多样性,通过对完全二叉树进行单个节点移动、旋转和两个节点交换操作,可得到一个B*-tree,即初始解。在本实施例中,在步骤S2中,初始化B*-tree的方法是:除了树结构中的最后两行的节点,每个父节点有两个子节点。

进一步的,在步骤S5中,对于解空间中每个解都由B*-tree表示,而且新的邻居解是通过B*-tree的一系列扰动产生,其中,B*-tree的扰动方式包括:模块旋转、移动模块到另一个区域以及交换两个模块。

进一步的,由于新的邻居解是经过B*-tree扰动产生的,而且扰动方式是随机选取的,这样可能导致产生的新解不满足固定边框约束,因此在本实施例中,对产生的邻居解采用可行解策略,该策略使得B*-tree产生的新解为可行解。如图2所示,具体的实现方式如下:

开始

1.j==0;

2.while(初始解S是不可行的or j≤给定的数值);

3.j++;

4.由B*-tree的扰动产生新的解S1

5.end while

结束。

其中,j表示可行解策略在实行过程中的迭代次数。

进一步的,在步骤S7中,采用混合模拟退火算法,该混合算法采用新的温度降低公式操作,导致冗杂的解空间不被搜索,加快了算法搜索速度,而且在温度上升阶段,使得较多差的解被接受,这样可以防止搜索的最优解或次最优解是局部最优解,最终使得搜索到最优解的可能性增大。从而该操作可以用来进行大规模给定边框约束的版图规划优化问题的全局搜索。具体的实现方式包括以下操作:

步骤S71:通过B*-tree扰动产生新的解I',对应的B*-tree记为J;

步骤S72:基于新的罚函数计算新解的费用值,并计算新解和上一步解的费用差;

步骤S73:判断是否接受新的解J;

步骤S74:通过一新得温度改变公式搜索最优解。

进一步的,本实施例中采用的混合模拟退火算法,是为了在解空间中搜索较好的解。给一个初始的B*-tree,在每个温度下,搜索方法通过将模块旋转90度,把一个模块移动到其他区域,或是交换两个模块来搜索最优解。如果这三个操作中的任何一种使得布局带有更优的费用值或是满足一定的可接受率,这种布局结构就会被接受。局部搜索算法的伪代码如下所示。

开始

1.初始解S;

2.设置m=0;uphill=0;reject=0;并记录当前最优的个体bestsolution=S;

3.N=t×modulesize;emptylistL;

4.whilereject_rate>conv_rateandT_actual<T_term;

5.whileuphill<30×Nandm<60×Ndo;

6.随机选择B*-tree的一种扰动操作,得到新的解S',基于新的罚函数计算

它的费用并将其放到L中;

7.m=m+1;D=S'的费用-S的费用;

8.if D≤0;then S=S';bestsolution=S';

9.else随机产生一个0-1之间的数R;

10.if R<exp(-D/T);then S=S';uphill=uphill+1;

11.elsereject=reject+1;

12.end while;

13.updateT;

14.reject_rate=reject/m;

15.end while;

16.return bestsolution.

其中,modulesize是模块的数量,t和N是用来控制B*-tree扰动操作执行次数的参数,m是截止当前局部搜索已经执行三种操作的次数,reject是不被接受的解的个数。

进一步的,上述局部搜索伪代码第6步中的新的罚函数由两部分构成。面积函数A提供全局搜索方向;过度长度函数L'提供局部搜索方向。面积函数A通过计算包含候选版图规划F结果的最小矩形的面积来获得,它的计算公式为:

其中,W0,H0分别表示给定边框的宽和高;候选版图规划F的宽和高分别记为W和H。

过度长度函数L'通过计算每个模块超出给定边框的长度来获得。这里,若第i个模块超出给定边框的长度记为Li,则它的计算公式定义为:

其中,(xi,yi)表示第i个模块的左下角坐标;第i个模块的宽和高分别记为wi和hi

故过度长度函数的计算公式为:

其中,S表示超出给定边框的所有模块的集合。

进一步的,本实施例中采用的混合模拟退火算法,它的伪代码第13步中的温度更新公式由三部分构成。高温随机搜索阶段,在这部分,较差的解的接受概率很高,因此类似随机搜索。局部搜索阶段,由于温度很低,因此只有很少一部分较差的解被接受,因此这个阶段与贪心算法类似。温度上升阶段,在这部分,温度上升,接受较差的解概率增大,因此它防止了搜索的最优解是局部最优解。如图3所示,温度更新公式具体包括如下步骤:

开始

1.Tn=avg/(log(P));

2.if(n==给定的数值);

3.Tn=Tn×avgcost/(λ×n);

4.Tn=Tn×Pm

5.Tactual=estimateavg/Tn

6.end if

7.if(n>给定的数值);

8.Tn=Tn×avgcost/n;

9.Tactual=estimateavg/Tn

10.end if

结束。

其中,Tn=avg/(log(P))用来计算初始温度,n是模拟退火算法中的迭代数目,Tn是第n步的温度;m是用来控制在当前温度下进行局部搜索的次数,且为一常数,在本实施例中,m取值为步骤S742和步骤S746中的给定的数值;P是接受较差的解的初始概率,平均上山(费用值增大的方向)费用记为avg,当前温度下的平均费用差记为avgcost;λ是用户定义的参数,它使得温度能够快速降低;estimateavg是用来控制温度的常数,Tactual是实际温度。

以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1