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

文档序号:12467007阅读:来源:国知局

技术特征:

1.一种用于求解给定边框约束的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大于预设的迭代数目。

2.根据权利要求1所述的一种用于求解给定边框约束的VLSI版图设计方法,其特征在于,在所述步骤S1中将版图规划表示为B*-tree,其中,树形结构中的每个节点都代表一个模块,而且每个节点至多有两个子节点。

3.根据权利要求1所述的一种用于求解给定边框约束的VLSI版图设计方法,其特征在于,在所述步骤S2中,所述初始化所述步骤S1获取的B*-tree为完全二叉树包括:除了树结构中的最后两行的节点,每个父节点有两个子节点。

4.根据权利要求1所述的一种用于求解给定边框约束的VLSI版图设计方法,其特征在于,在所述步骤S5中,对于解空间中每个解都由B*-tree表示,且所述一系列B*-tree的扰动方式包括:模块旋转、移动模块到另一个区域以及交换两个模块。

5.根据权利要求1所述的一种用于求解给定边框约束的VLSI版图设计方法,其特征在于,在所述步骤S6中,通过可行解策略算法使所述所述步骤S5中获取的邻居解为可行解,且所述可行解策略算法采用如下步骤实现:

步骤S61:令j==0;

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

步骤S63:令j++;

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

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

6.根据权利要求1所述的一种用于求解给定边框约束的VLSI版图设计方法,其特征在于,在所述步骤S7中,还包括如下步骤:

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

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

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

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

7.根据权利要求6所述的一种用于求解给定边框约束的VLSI版图设计方法,其特征在于,所述新的罚函数包括两部分:面积函数A和过度长度函数L';所述面积函数A通过计算包含候选版图规划F结果的最小矩形的面积来获得,计算公式为:

<mrow> <mi>A</mi> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mn>0</mn> <mo>,</mo> <mi>H</mi> <mo>&le;</mo> <msub> <mi>H</mi> <mn>0</mn> </msub> <mo>;</mo> <mi>W</mi> <mo>&le;</mo> <msub> <mi>W</mi> <mn>0</mn> </msub> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>(</mo> <mi>W</mi> <mo>-</mo> <msub> <mi>W</mi> <mn>0</mn> </msub> <mo>)</mo> <mo>&times;</mo> <msub> <mi>H</mi> <mn>0</mn> </msub> <mo>,</mo> <mi>H</mi> <mo>&le;</mo> <msub> <mi>H</mi> <mn>0</mn> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>(</mo> <mi>H</mi> <mo>-</mo> <msub> <mi>H</mi> <mn>0</mn> </msub> <mo>)</mo> <mo>&times;</mo> <msub> <mi>W</mi> <mn>0</mn> </msub> <mo>,</mo> <mi>W</mi> <mo>&le;</mo> <msub> <mi>W</mi> <mn>0</mn> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>W</mi> <mo>&times;</mo> <mi>H</mi> <mo>-</mo> <msub> <mi>W</mi> <mn>0</mn> </msub> <mo>&times;</mo> <msub> <mi>H</mi> <mn>0</mn> </msub> <mo>,</mo> <mi>o</mi> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>r</mi> <mi>w</mi> <mi>i</mi> <mi>s</mi> <mi>e</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow>

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

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

<mrow> <msub> <mi>L</mi> <mi>i</mi> </msub> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mn>0</mn> <mo>,</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>+</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> <mo>&le;</mo> <msub> <mi>W</mi> <mn>0</mn> </msub> <mo>,</mo> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>+</mo> <msub> <mi>h</mi> <mi>i</mi> </msub> <mo>&le;</mo> <msub> <mi>H</mi> <mn>0</mn> </msub> </mtd> </mtr> <mtr> <mtd> <mrow> <mfrac> <mrow> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>+</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>W</mi> <mn>0</mn> </msub> </mrow> <msub> <mi>w</mi> <mi>i</mi> </msub> </mfrac> <mo>,</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>+</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> <mo>&GreaterEqual;</mo> <msub> <mi>W</mi> <mn>0</mn> </msub> <mo>,</mo> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>+</mo> <msub> <mi>h</mi> <mi>i</mi> </msub> <mo>&le;</mo> <msub> <mi>H</mi> <mn>0</mn> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mfrac> <mrow> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>+</mo> <msub> <mi>h</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>H</mi> <mn>0</mn> </msub> </mrow> <msub> <mi>h</mi> <mi>i</mi> </msub> </mfrac> <mo>,</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>+</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> <mo>&le;</mo> <msub> <mi>W</mi> <mn>0</mn> </msub> <mo>,</mo> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>+</mo> <msub> <mi>h</mi> <mi>i</mi> </msub> <mo>&GreaterEqual;</mo> <msub> <mi>H</mi> <mn>0</mn> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mfrac> <mrow> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>+</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>W</mi> <mn>0</mn> </msub> </mrow> <msub> <mi>w</mi> <mi>i</mi> </msub> </mfrac> <mo>+</mo> <mfrac> <mrow> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>+</mo> <msub> <mi>h</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>H</mi> <mn>0</mn> </msub> </mrow> <msub> <mi>h</mi> <mi>i</mi> </msub> </mfrac> <mo>,</mo> <mi>o</mi> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>r</mi> <mi>w</mi> <mi>i</mi> <mi>s</mi> <mi>e</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow>

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

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

<mrow> <msup> <mi>L</mi> <mo>&prime;</mo> </msup> <mo>=</mo> <munder> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>&Element;</mo> <mi>S</mi> </mrow> </munder> <msub> <mi>L</mi> <mi>i</mi> </msub> </mrow>

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

8.据权利要求6所述的一种用于求解给定边框约束的VLSI版图设计方法,其特征在于,所述新的温度改变公式包括三部分:高温随机搜索阶段、局部搜索阶段以及温度上升阶段。

9.根据权利要求6所述的一种用于求解给定边框约束的VLSI版图设计方法,其特征在于,所述新的温度改变公式通过如下步骤获取:

步骤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是实际温度。

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