发明名称 基于最小自由度优先原则的非线性规划布局方法
摘要 基于最小自由度优先原则的非线性规划布局方法属于集成电路计算机辅助设计领域,具体特征在于:它结合了最小自由度优先原则和非线性规划方法的优点,同时优化面积和线长。它首先使用非线性规划方法,优化总线长,得到具有最有总线长的初始解;然后根据用户给定的长宽比和面积利用率,利用最小自由度优先原则,优化布局。它具有较快的速度、较高的面积利用率,同时使总线长得到优化。
申请公布号 CN1588380A 申请公布日期 2005.03.02
申请号 CN200410068848.4 申请日期 2004.07.09
申请人 清华大学 发明人 董社勤;杨中;洪先龙
分类号 G06F17/50 主分类号 G06F17/50
代理机构 代理人
主权项 1.基于最小自由度优先原则的非线性规划布局方法,其特征在于,它依次含有以下步骤:(1).计算机初始化读入所有的模块的长宽和它们之间连线的信息;输入用户给定的面积利用率和长宽比;设定下列参数:布局空白区域的自由度:角部的自由度定义为P<sub>c</sub><sup>f</sup>,P<sub>c</sub><sup>f</sup>=1/2边上的自由度定义为P<sub>s</sub><sup>f</sup>,P<sub>s</sub><sup>f</sup>=3/4中间的自由度定义为P<sub>h</sub><sup>f</sup>,P<sub>h</sub><sup>f</sup>=1模块的自由度定义为R<sub>i</sub><sup>f</sup>:R<sub>i</sub><sup>f</sup>={r<sub>1</sub>*(1-B<sub>i</sub>/A<sub>a</sub>)+r<sub>2</sub>*(1-max(w<sub>i</sub>,h<sub>i</sub>)/min(W,H))};其中:r<sub>1</sub>+r<sub>2</sub>=1,      w<sub>i</sub>、h<sub>i</sub>分别是模块i的宽和高,B<sub>i</sub>是模块i的面积,      A<sub>a</sub>是放置空间的面积,W、H分别是它的宽和高;互连自由度定义为C<sub>i</sub><sup>f</sup>,即模块i的互连自由度,<img file="A2004100688480002C4.GIF" wi="339" he="97" />t<sub>ij</sub>是模块i与相邻模块j连线数,ω<sub>ij</sub>为模块i与相邻模块j连线长度,用半周长法估计;初始解自由度S<sub>i</sub><sup>f</sup>,<maths num="001"><![CDATA[ <math><mrow><msubsup><mi>S</mi><mi>i</mi><mi>f</mi></msubsup><mo>=</mo><msup><mrow><mo>|</mo><msub><mi>x</mi><mi>icur</mi></msub><mo>-</mo><msub><mi>x</mi><mi>iori</mi></msub><mo>|</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>|</mo><msub><mi>y</mi><mi>icur</mi></msub><mo>-</mo><msub><mi>y</mi><mi>iori</mi></msub><mo>|</mo></mrow><mn>2</mn></msup></mrow></math>]]></maths>x<sub>icur</sub>,y<sub>icur</sub>分别为模块当前所在网格的坐标,x<sub>iori</sub>,y<sub>iori</sub>分别为模块初始解中所在网格的坐标;(2).使用近似模型求具有最小线长的初始布局结果并记录每个圆的最终坐标,它依次含有以下步骤:(2.1).把所有的矩形模块近似成与之面积相等的圆,所有的连线都从圆心发出,各圆之间不重叠;(2.2).使用二次线长法近似每条连线的长度并使总线长目标函数W(x,y)最小:<maths num="002"><![CDATA[ <math><mrow><mi>W</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msub><mi>&omega;</mi><mi>ij</mi></msub><mo>&CenterDot;</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>[</mo><mrow><mo>(</mo><msup><mrow><mo>(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>-</mo><msub><mi>x</mi><mi>j</mi></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>y</mi><mi>i</mi></msub><mo>-</mo><msub><mi>y</mi><mi>j</mi></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>)</mo></mrow><mo>]</mo></mrow></math>]]></maths>约束条件:g(x,y)=(r<sub>i</sub>+r<sub>j</sub>)<sup>2</sup>-[(x<sub>i</sub>-x<sub>j</sub>)<sup>2</sup>+(y<sub>i</sub>-y<sub>j</sub>)<sup>2</sup>]≤0其中:n为模块数,(x<sub>i</sub>,y<sub>i</sub>)为第i个模块圆心的坐标,      ω<sub>i,j</sub>为模块i,j间的连线数      r<sub>i</sub>、r<sub>j</sub>分别为模块i,j的半径(2.3).使用罚函数的方法把问题转化成无约束目标函数P(x,y,c<sub>k</sub>)<maths num="003"><![CDATA[ <math><mrow><mi>P</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><msub><mi>c</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>=</mo><mi>W</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>+</mo><msub><mi>c</mi><mi>k</mi></msub><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mi>Max</mi><mrow><mo>(</mo><mn>0</mn><mo>,</mo><mi>g</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>)</mo></mrow></mrow></math>]]></maths>其中c<sub>0</sub>=1,c<sub>k+1</sub>=10c<sub>k</sub>,k是迭代次数计数器,从0→∞(2.4).固定其中一个模块,通过软件包matlab中的函数fmincon使用逐步二次规划法求出具有全局最优线长的初始解,即收敛子序列{(x,y)<sup>k</sup>}的极限;(2.5).把初始解的布局区域划分成m*m个网格,m=4~12,记录每个圆心所在的网格;(3).根据用户给定的面积利用率和长宽比,计算出布局区域的长宽,结合初始解,使用最小自由度优先原则进行布局,它依次含有如下步骤:(3.1).设:UBS为未放置的模块集合,          PBS为放置好的模块集合,          PL为当前的放置状况;(3.2).把所有的模块按它们的模块自由度R<sub>i</sub><sup>f</sup>排序,找到R<sub>i</sub><sup>f</sup>最小的模块,先尝试放置该模块,从4个角开始,共有8种放置方案,对于每一种放置方案,在放置好第一个模块后,对于剩余模块采用已知的贪婪算法放置;(3.3).计算步骤(3.2)所述8种方案按下式计算各自的总自由度F<sub>k</sub>,共8个值:F<sub>k</sub>=αP+βR<sub>kf</sub>+γC<sub>k</sub><sup>f</sup>+λS<sub>k</sub><sup>f</sup>P为布局空白区域自由度(3.4).选取其中F<sub>k</sub>最小的放置方案作为上述第一个放置的模块的放置方案;(3.5).把上述已放置好的第一个模块从UBS中去除,放入PBS中;(3.6).重复步骤(3.2)~(3.6)直到UBS空为止;(4).使用已知的模拟退火的方法调整布局,优化总线长。(5).以图形和文件两种形式输出最终布局结果。
地址 100084北京市100084-82信箱