基于最小自由度优先原则的非线性规划布局方法

文档序号:6422771阅读:116来源:国知局
专利名称:基于最小自由度优先原则的非线性规划布局方法
技术领域
基于最小自由度优先原则的非线性规划布局方法属于集成电路计算机辅助设计领域,尤其涉及BBL(Building Block Layout)领域。
背景技术
物理设计是超大规模集成电路(VLSI)设计过程中主要的一环。与此相关的计算机辅助设计技术称为自动布图。集成电路的制造工艺由目前的深亚微米(DSM)进入到超深亚微米(VDSM),集成电路的设计规模也正由超大规模(VLSI),甚大规模(ULSI)向G大规模(GSI)发展,电路的复杂性急剧增加使得层次式电路设计以及电路模块的重用技术受到学术和产业界的空前重视。知识产权模块的大量涌现也为集成电路布图设计提出了前所未有的挑战;层次式布图设计,模块重用技术,知识产权模块的大量应用,片上系统尤其是数模混合片上系统的设计,以及模拟电路器件级布图问题等,这些问题都可以归结为集成电路宏模块的布图规划和布局问题,即Building Block LayoutBBL模式的布图问题。
布局问题的任务是要确定模块在芯片上的精确位置,其目标是在保证布通的前提之下使得芯片面积尽可能小。布局算法可分为两大类,随机优化方法和确定性方法,随机优化方法通过在定义的解空间中搜索得到结果,速度较慢。确定性方法是给定一些启发策略,通过这些策略去指导布局,常见的有贪婪算法。
长期以来,人们在用具有多边形平面的石块砌河岸,砌墙,铺地板时,总是最先使用受限制最多的资源,例如首先从工作区域的角部做起,首先使用面积大或长的块等等。这就是所谓的“最小自由度优先”原则。围棋中的“金角,银边,草肚皮”说的就是这一原则。基于该原则的确定性布图规划和布局算法在速度方面则是目前最快的布局算法,布局结果与人工布局结果相当,但是线长方面结果稍差。
非线性规划的方法常用来解决一些最优化问题,但是往往需要将问题近似,直接用于布局问题的效果并不好。
本发明研究了非线性规划问题和最小自由度优先原则,将它们的优势结合起来,根据用户给定的面积利用率高效的完成布局问题。

发明内容
本发明的目的是在于提出基于最小自由度优先原则的非线性规划布局方法,它结合了最小自由度优先原则和非线性规划方法的优点,使布局问题更加有效。最小自由度优先原则是基于人们实际工作生活中的经验,它的主要思想就是先处理占用资源大的模块,然后处理占用资源小的模块,在具体放置的时候采用“金角银边草肚皮”的策略,先考虑将模块放置在角上,然后考虑边上,最后才是中间。这样,放置的顺序为从四个角逐渐向中间。非线性规划的方法是一种数学分析方法,它可以计算出近似模型具有最小线长的放置方案。
设有n个模块的布局问题长方形模块集合B={B1,B2,B3,...,Bn}中的每一个模块平行的放置在直角坐标系中,每个模块i的长与宽(hi,ωi)都已经给出,其中hi和wi分别是Bi的长与宽。目标是找到一种布图方案,使得在放置下所有模块的前提之下,所用的面积与线长最小。
本发明的特征在于它依次含有以下步骤(1).计算机初始化读入所有的模块的长宽和它们之间连线的信息;输入用户给定的面积利用率和长宽比;设定下列参数布局空白区域的自由度角部的自由度定义为Pcf,Pcf=1/2,边上的自由度定义为Psf,Psf=3/4,中间的自由度定义为Phf,Phf=1;模块的自由度定义为RifRif={r1*(1-Bi/Aa)+r2*(1-max(wi,hi)/min(W,H))};其中r1+r2=1,wi、hi分别是模块i的宽和高,Bi是模块i的面积,Aa是放置空间的面积,W、H分别是它的宽和高;互连自由度定义为Cif,即模块i的互连自由度, tij是模块i与相邻模块j连线数,ωij为模块i与相邻模块j连线长度,用半周长法估计;初始解自由度Sif,Sif=|xicur-xiori|2+|yicur-yiori|2]]>xicur,yicur分别为模块当前所在网格的坐标,xiori,yiofi分别为模块初始解中所在网格的坐标;(2).使用近似模型求具有最小线长的初始布局结果并记录每个圆的最终坐标,它依次含有以下步骤(2.1).把所有的矩形模块近似成与之面积相等的圆,所有的连线都从圆心发出,各圆之间不重叠;(2.2).使用二次线长法近似每条连线的长度并使总线长目标函数W(x,y)最小
W(x,y)=Σi=1nΣj=1nωij·12[((xi-xj)2+(yi-yj)2]]]>约束条件g(x,y)=(ri+rj)2-[(xi-xj)2+(yi-yj)2]≤0其中n为模块数,(xi,yi)为第i个模块圆心的坐标,ωij为模块i,j间的连线数ri、rj分别为模块i,j的半径(2.3).使用罚函数的方法把问题转化成无约束目标函数P(x,y,ck)P(x,y,ck)=W(x,y)+ckΣi=1nΣj=1nMax(0,g(x,y))]]>其中c0=1,ck+1=10ck,k是迭代次数计数器,从0→∞(2.4).固定其中一个模块,通过软件包matlab中的函数fmincon使用逐步二次规划法求出具有全局最优线长的初始解,即收敛子序列{(x,y)k}的极限;(2.5).把初始解的布局区域划分成m*m个网格,m=4~12,记录每个圆心所在的网格;(3).根据用户给定的面积利用率和长宽比,计算出布局区域的长宽,结合初始解,使用最小自由度优先原则进行布局,它依次含有如下步骤(3.1).设UBS为未放置的模块集合,PBS为放置好的模块集合,PL为当前的放置状况;(3.2).把所有的模块按它们的模块自由度Rif排序,找到Rif最小的模块,先尝试放置该模块,从4个角开始,共有8种放置方案,对于每一种放置方案,在放置好第一个模块后,对于剩余模块采用已知的贪婪算法放置;(3.3).计算步骤(3.2)所述8种方案按下式计算各自的总自由度Fk,共8个值Fk=αP+βRkf+γCkF+λSkf]]>P为布局空白区域自由度(3.4).选取其中Fk最小的放置方案作为上述第一个放置的模块的放置方案;(3.5).把上述已放置好的第一个模块从UBS中去除,放入PBS中;(3.6).重复步骤(3.2)~(3.6)直到UBS空为止;(4).使用已知的模拟退火的方法调整布局,优化总线长。
(5).以图形和文件两种形式输出最终布局结果。
本发明所述的基于最小自由度优先原则的非线性规划布局算法有以下几个优点[1]使用最小自由度优先原则对于给定的布局区域完成布局,同时吸收非线性规划的数学分析方法得到的初始解的特征,同时优化面积和线长;[2]算法具有较快的速度、较高的面积利用率;[3]具有工业应用价值,可以用于集成电路设计过程中模块级布图规划/布局中的布局问题。
实验结果如下表一MCNC标准实验电路参数说明

表二实验结果

本发明使用的硬件是一台配置了P4 1.8G的CPU和256M内存的PC机;使用RedhatLinux7.2操作系统。


图1.本发明所述规划方法的程序结构流程图。
图2.使用非线性规划方法得到实例playout的初始解。
图3.第一个模块布局时的8个候选位置。
图4.计算模块的初始解自由度。
图5.放置第二个模块时的候选位置。
图6.实例playout的最终布局结果。
具体实施例方式
(1).读入所有的模块以及它们之间连线信息,进行初始化工作,存储模块长宽和它们之间连线的信息(2).使用近似模型求具有最小线长的初始布局结果并记录每个圆的最终坐标将所有的矩形模块近似成与之面积相等的圆,认为所有的连线都从圆心发出,圆之间不能重叠,使用二次线长法近似每条连线的长度,目标是使总连线长度最小。形式化描述如下W(x,y)=Σi=1nΣj=1nωij·12[((xi-xj)2+(yi-yj)2]]]>约束条件g(x,y)=(ri+rj)2-[(xi-xj)2+(yi-yj)2]≤0其中
W为总线长目标函数n为模块数(xi,yi)为第i个模块圆心的坐标Wij为模块i,j间的连线数ri为模块i的半径使用罚函数的方法(Penalty Function Method)将问题转化成无约束目标函数P(x,y,ck)=W(x,y)+ckΣi=1nΣj=1nMax(0,g(x,y))]]>其中c0=1,ck+1=10ck为了使P(x,y,ck)得到全局最有解,需要固定一些模块,设其中有1个模块是固定的。这时对于每一个ck,P(x,y,ck)的一阶导数的系数矩阵是对角优势阵(diagonally dominant matrix),也是正定矩阵(positively definite matrix),即P(x,y,ck)在每一个ck处都存在最有解,于是就可以得到收敛子序列{(x,y)k},序列的极限就是问题的最有解。具体的解法比较多,如牛顿法(Newton Method),拟牛顿法(Quasi-Newton Method),共轭梯度法(FR),逐步二次规划法(SQP),本方法中使用逐步二次规划法(SQP)。
将初始解的布局区域划分成m*m网格,记录每个圆心所在的网格。
(3).结合初始解,使用最小自由度优先原则进行布局最小自由度优先(LFF)原则是基于人们日常生活和生产的经验,认为在布局的时候应该先处理最难放置,也就是占用资源最多的模块,后放置占用资源少的模块。算法进一步发展了这种思想,将自由度量化。下面是各个自由度的定义及量化公式布局空白区域自由度放置的空白区域的自由度。放在角上,只能向两个方向移动;放在边上,则有三个方向可以移动;只有放在中间,才可以上下左右的移动。因此,定义角部的自由度最低,为Pcf=2/4=1/2;边上其次,为Psf=3/4;中间则为Phf=4/4=1模块自由度由模块的大小和形状所决定,假定Bi是模块i的面积,wi是它的宽,hi是它的高,Aa是放置空间的面积,W是它的宽,H是它的高。则该模块的自由度可以定义为Rif={r1*(1-Bi/Aa)+r2*(1-max(wi,hi)/min(W,H))};其中r1+r2=1。
互连自由度用来反映模块之间的连线关系。假设模块Bi是将要放置的模块,互连自由度就是其在将要放置的位置上与相邻模块的连线和,那么这模块之间的自由度就可以定义为 其中ωij为模块i与相邻模块j连线长度,用半周长法估计,tij是模块i与相邻模块j连线数初始解自由度用来表示模块当前放置与初始解的相对位置差Sif=|xicur-xiori|2+|yicur-yiori|2其中,xicur,yicur是模块当前所在网格的坐标,xiori,yiori是模块初始解中所在网格的坐标下面是详细的流程UBS未放置的模块集合PBS已放置好的模块集合PL当前的放置状况(3.1).将UBS中所有的模块依次尝试放入布局区域中的每一个角,并检测与当前的放置是否有冲突,如果没有冲突(也就是没有与现有放置发生重叠,也没有超出布局区域的边界),就计入合法放置方案中(3.2).伪放置下当前模块,标记为虚拟节点,对于剩下的模块,用贪婪算法放置它们,直至无法放下新的模块为止。
(3.3).计算当前的自由度Fk=αP+βRkf+γCkf+λSkf]]>其中α,β,γ,λ为各自由度的权重系数(3.4).更新PL,把拥有最小自由度的放置方案加入PBS之中,从UBS之中移去该模块。
(3.5).重复(3.1)~(3.4)直到UBS空为止。
(4).使用模拟退火的方法调整最终布局将已经布好的模块在水平和垂直方向进行不停的翻转,改善布局的线长。
(5).图形和文件两种形式输出结果。
布局问题就是根据用户给定区域长宽比和面积利用率完成模块的放置问题,并满足其他的约束,例如布局连线长度等,本布局方法的流程框图如图1,下面我们以MCNC标准实例playout的放置过程结合图1来说明本发明所述的方法。它依次有如下步骤具体实施步骤如下(1)读输入文件,记录模块的长宽和模块间的连线信息。程序首先是读入实例playout的电路描述文件playout.yal,提取其中模块的大小以及之间的连线关系信息并存储到相应的数据结构中(2)根据步骤(2)的模型使用非线性规划的方法得到具有最优线长的初始解,将每一个模块近似成与其面积大小相等的圆,将模块间的多端线网拆成2端线网,用二次线长法估计每条连线的长度,两点间连线长度二次线长法估计公式如下W=(xi-xj)2+(yi-yj)2---(8)]]>其中(xi,yi)(xj,yj)为线网的两个端点的坐标求解具有最小全局线长的初始解问题就转化成一个非线性规划问题,目标是所有线网长度总和,见公式(1),约束是任意两个圆都不重叠,见公式(2)。将其转化成无约束非线性规划问题,见公式(3),使用逐步二次规划法求解出具有最优全局线长的初始解,这一步骤可以使用数学工具matlab实现,其中的函数fmincon可以使用逐步二次规划法求解出具有全局最优线长的初始解。初始解的坐标不能直接最终布局的方案中的模块坐标相关联,所以必须用一种相对的坐标连建立它们之间的联系,将布局区域划分成m*m个网格,将每个模块圆心所在的网格坐标记录下来,从实验数据得到m的建议取值范围是4~12。针对playout这个例子将初始解划分成4*4的区域,记录每个模块的圆心所在的区域,如图2所示,其中左上角29号模块的初始解坐标为(1,1)(3)根据用户给定的面积利用率和长宽比,计算出布局区域的长宽,例如用户希望得到95.7%的面积利用率并且布局区域的长宽比为1.5∶1,实例playout中所有模块的面积为88.177016mm2,则布局区域的面积应为88.177016/0.957=92.151366,所有布局的长应为11.757mm,宽应为7.838mm。
接着将模块按照它们的模块自由度排序,根据公式(4)可以算出模块29的模块自由度最小,先尝试放置它,由于角的空间自由度最小,模块29从4个角开始尝试,考虑到模块可以横向和纵向放置,它有8种放置方案,见图3,对于每一种放置方案,在放置好第一个模块后,对于剩余的模块都采用贪婪算法放置。
使用公式(5),(6)计算当前放置方案的互连自由度和初始解自由度。对于第一个要放置的模块,其中为没有模块,所有互连自由度为0,对于后面的模块,要使用半周长法(框住所用最小矩形周长的一半)计算当前模块周围的模块。其中针对图4初始解自由度的计算过程如下模块29初始所在网格为(1,1),当前所在网格为(2,4),根据公式(6),其初始解自由度为|(2-1)|2+|(4-1)|2=10。
最后用公式(7)计算总自由度Fi,这样对于模块29就有8个Fi值,实例playout一共有62个模块,一共有62*8个候选方案和Fi值,选取其中Fi最小的放置方案。
模块29放置完毕后,会占据角1,同时生出角5和角6两个新角。新角和未被占据的角都是剩下模块的候选位置,假设模块55是接下来要放置的模块,则它有十个候选方案,见图5,将已经放好的模块从放置模块列表中删除,按照(3.1)~(3.4)的顺序循环放置完毕所有模块。
(4)将已经放置完毕的模块使用模拟退火的方法进行水平和垂直的翻转,如果发现某个模块水平或垂直翻转后,总线长下降,则将该模块翻转。不停的重复这样的过程,直到布局的总线长不再下降为止。这样可以进一步优化布局的总线长。
(5)图形文件两种形式输出最终布局结果。
权利要求
1.基于最小自由度优先原则的非线性规划布局方法,其特征在于,它依次含有以下步骤(1).计算机初始化读入所有的模块的长宽和它们之间连线的信息;输入用户给定的面积利用率和长宽比;设定下列参数布局空白区域的自由度角部的自由度定义为Pcf,Pcf=1/2边上的自由度定义为Psf,Psf=3/4中间的自由度定义为Phf,Phf=1模块的自由度定义为RifRif={r1*(1-Bi/Aa)+r2*(1-max(wi,hi)/min(W,H))};其中r1+r2=1,wi、hi分别是模块i的宽和高,Bi是模块i的面积,Aa是放置空间的面积,W、H分别是它的宽和高;互连自由度定义为Cif,即模块i的互连自由度, tij是模块i与相邻模块j连线数,ωij为模块i与相邻模块j连线长度,用半周长法估计;初始解自由度Sif,Sif=|xicur-xiori|2+|yicur-yiori|2]]>xicur,yicur分别为模块当前所在网格的坐标,xiori,yiori分别为模块初始解中所在网格的坐标;(2).使用近似模型求具有最小线长的初始布局结果并记录每个圆的最终坐标,它依次含有以下步骤(2.1).把所有的矩形模块近似成与之面积相等的圆,所有的连线都从圆心发出,各圆之间不重叠;(2.2).使用二次线长法近似每条连线的长度并使总线长目标函数W(x,y)最小W(x,y)=Σi=1nΣj=1nωij·12[((xi-xj)2+(yi-yj)2)]]]>约束条件g(x,y)=(ri+rj)2-[(xi-xj)2+(yi-yj)2]≤0其中n为模块数,(xi,yi)为第i个模块圆心的坐标,ωi,j为模块i,j间的连线数ri、rj分别为模块i,j的半径(2.3).使用罚函数的方法把问题转化成无约束目标函数P(x,y,ck)P(x,y,ck)=W(x,y)+ckΣi=1nΣj=1nMax(0,g(x,y))]]>其中c0=1,ck+1=10ck,k是迭代次数计数器,从0→∞(2.4).固定其中一个模块,通过软件包matlab中的函数fmincon使用逐步二次规划法求出具有全局最优线长的初始解,即收敛子序列{(x,y)k}的极限;(2.5).把初始解的布局区域划分成m*m个网格,m=4~12,记录每个圆心所在的网格;(3).根据用户给定的面积利用率和长宽比,计算出布局区域的长宽,结合初始解,使用最小自由度优先原则进行布局,它依次含有如下步骤(3.1).设UBS为未放置的模块集合,PBS为放置好的模块集合,PL为当前的放置状况;(3.2).把所有的模块按它们的模块自由度Rif排序,找到Rif最小的模块,先尝试放置该模块,从4个角开始,共有8种放置方案,对于每一种放置方案,在放置好第一个模块后,对于剩余模块采用已知的贪婪算法放置;(3.3).计算步骤(3.2)所述8种方案按下式计算各自的总自由度Fk,共8个值Fk=αP+βRkf+γCkf+λSkfP为布局空白区域自由度(3.4).选取其中Fk最小的放置方案作为上述第一个放置的模块的放置方案;(3.5).把上述已放置好的第一个模块从UBS中去除,放入PBS中;(3.6).重复步骤(3.2)~(3.6)直到UBS空为止;(4).使用已知的模拟退火的方法调整布局,优化总线长。(5).以图形和文件两种形式输出最终布局结果。
全文摘要
基于最小自由度优先原则的非线性规划布局方法属于集成电路计算机辅助设计领域,具体特征在于它结合了最小自由度优先原则和非线性规划方法的优点,同时优化面积和线长。它首先使用非线性规划方法,优化总线长,得到具有最有总线长的初始解;然后根据用户给定的长宽比和面积利用率,利用最小自由度优先原则,优化布局。它具有较快的速度、较高的面积利用率,同时使总线长得到优化。
文档编号G06F17/50GK1588380SQ200410068848
公开日2005年3月2日 申请日期2004年7月9日 优先权日2004年7月9日
发明者董社勤, 杨中, 洪先龙 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1