法律状态公告日
法律状态信息
法律状态
2017-11-17
授权
授权
2014-03-26
实质审查的生效 IPC(主分类):G06F17/50 申请日:20130912
实质审查的生效
2014-02-26
公开
公开
技术领域
本发明涉及一种基于L1范数模型的超大规模集成电路(VLSI)标准单元全局布局方法,属于VLSI物理设计自动化技术领域。
背景技术
在当前的VLSI布局中,集成电路规模的不断增大及工艺上的要求越来越高,对VLSI 布局优化目标及优化方法提出了更高的要求,布局结果的好坏直接影响着整个芯片的性能。随着芯片上单元个数的快速增长,尤其是百万门级芯片的普遍应用,对VLSI 布局设计自动化提出了巨大的挑战。因此,寻求更高效、更实用的集成电路布局算法具有重要的意义。
用来解决VLSI布局问题的算法可分为以下三类:基于划分的布局方法、基于划分技术的方法和基于分析的布局方法。在这三类方向中,基于分析的布局方法取得的布局效果较好,因而成为当前主流布局工具所采用的方法。由于VLSI 布局问题的规模很大,现有的基于解析的布局工具很难直接求解。在分析方法的VLSI布局算法中,主要分三个步骤处理:全局布局(global placement)、合法化布局(legalization)和详细布局(detailed placement)。全局布局中,在允许有少数单元互相重叠的情况下,找到每个单元的最佳位置,使得总线长最短。由于全局布局大体上决定了布局的质量,全局布局被认为是分析法中最重要的一步。
目前,基于分析方法的全局布局算法可以分为两类:(1)直接法,该方法被应用于Kraftwerk2, FastPlace3,RQL,SimPL等布局工具中;(2)非线性方法,该方法被应用于APLace2,NTUplace3,mPL6等布局工具中。根据学术上和工业界布局器的比较, 基于非线性规划方法的布局工具取得的实验结果最好。
但是,现有的基于分析方法的全局布局方法存在下列两个问题:(1)在全局布局过程中,均对半周长线长之和的总线长采用了某种近似模型(如二次模型,LSE模型,Bound2bound模型等),因此近似后计算出来的总线长与半周长线长之和的总线长存在较大的误差,不是对布局实际线长很好的反映,从而不能保证布局的质量;(2)密度约束函数是非光滑的,已有的应用密度控制技术的布局算法均将Db(x,y)做光滑化处理。因此,为了得到更好的布局结果,直接构造目标是半周长线长,密度约束非光滑的数学模型,并设计相应的高效算法是值得考虑的。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于L1范数模型的VLSI标准单元全局布局方法,该方法布局合理,高效实用,布局效果好。
为实现上述目的,本发明的技术方案是:一种基于L1范数模型的VLSI标准单元全局布局方法,该方法先把电路表示为超图,将采用半周长线长计算且密度约束为非光滑的VLSI标准单元全局布局问题建模为L1范数最小化问题,然后在聚类阶段采用适用于L1范数模型的修正的最优选择聚类算法对单元进行聚类,接着在析散阶段用非线性规划全局布局方法对聚类进行析散。
本发明基于L1范数模型的VLSI标准单元全局布局方法,具体包括如下步骤:
(1) 把电路表示为超图;
(2) 初始化级数:level=0;
(3) 初始化优先队列,使每个聚类包含2-3个标准单元;
(4) 设置用来控制布局区域中bin个数的值:current;
(5) level=level+1;
(6) 用修正的最优选择聚类算法产生新的聚类,并生成该级的优先队列;
(7) 重复步骤(5)~(6),直到current大于优先队列中聚类数目的平方根;
(8) 用无约束二次规划方法初始化当前级优先队列中聚类的位置;
(9) 修改current的值;
(10) 用非线性规划全局布局方法求解优先队列中聚类或单元的位置;
(11) 析散该级的优先队列;
(12) level=level-1;
(13) 重复步骤(9)~(12),直到level小于0。
进一步的,所述步骤(1)的实现方式如下:把电路表示为超图模型H={V,E},其中,V={v1,v2,…,vn}表示电路单元的集合,E={e1,e2,…,en}表示线网集合;对于VLSI标准单元布局问题,布局区域是矩形薄板,左下角坐标为(0,0),右上角为(W,H),对于单元vi(i=1,2,…,n),记wi为其宽度,h为其高度, ai为其面积,(xi,yi)为其中心坐标,则采用半周长线长计算的总线长为:
(1)
当一条线网e只连接两个单元时,线网e在X方向的半周长线长为:
(2)
当一条线网e连接三个单元时,线网e在X方向的半周长线长为:
(3)
当一条线网e连接pe(pe>3)个单元时,线网e在X方向的半周长线长为:
(4)
其中;根据公式(4),在一条线网e中,内部单元指的是单元所处的X方向上位置既不是最左,又不是最右,而是处在中间;
同理,求得线网e在Y方向的半周长线长;
在布局区域中,将整个布局区域分为大小相同且互不重叠的若干个小矩形区域,每个小矩形区域记为一个bin;记wb、hb分别为这些bin区域当中 bin b 的宽度和高度,则所有覆盖在 bin b 中的单元总面积Db(x,y)为:
(5)
其中、分别表示bin b和单元i在X方向和Y方向的重叠长度;的计算公式为:
(6)
其中dx表示单元i和bin b在X方向的距离,为非光滑函数;
的计算公式为:
(7)
其中dy表示单元i和bin b在Y方向的距离;在建模中,记tdensity为密度约束目标,则模型约束为:
(8)
运用罚函数的方法可得优化问题:
(9)。
进一步的,所述步骤(3)中,对于每个单元j∈H(V,E),将与其连通度最高的单元k聚到一起,并将三元组triple(j,k,s)插入优先队列中,其中,s是聚类score值,计算公式如下:
(10)
其中aj是聚类j的面积,f(aj)与面积aj成反比,用于控制聚类的面积大小,使得各个聚类的面积相差不会太大;Ej和Ek分别表示聚类j、k的出度;Djk表示聚类j、k之间的连通度。
进一步的,所述步骤(6)的实现步骤如下:
(61) 对于每个优先队列中的聚类,选择队列顶端的triple(j,k,s);
(62) 如果j标记为invalid,那么选择最大的score值s(j,k’),将triple(j,k’,s’)插入到优先队列中,并标记j为valid;
(63) 如果j标记为valid,把j、k作为新的聚类j’,更新与j、k有连接的网表,选择具有最大score值s’(j’,k’)的聚类k’,将三元组triple(j’,k’,s’)插入到优先队列中,并标记j’的邻域为invalid;
(64) 重复步骤(61)~(63),直到优先队列中每个聚类都访问到。
进一步的,所述步骤(9)中,通过不断的增大current,从而不断的增加bin的个数,最后使得每个bin的大小与标准单元的大小差不多,以此确定每个标准单元的具体位置;current=min(current*2, sqrt(|V|)),|V|表示单元集合V的元素的个数。
进一步的,所述步骤(10)的实现步骤如下:
(101) 初始化罚因子及外部迭代次数:;
(102) 初始化次梯度方向、共轭方向、内部迭代次数、当前最优解:g0=0,d0=0,k=0,f0best=0;
(103) k=k+1;
(104) 计算次梯度方向:;
(105) 计算Polak-Ribiere参数:;
(106) 计算共轭方向:;
(107) 计算步长:;
(108) 更新解:;
(109) 更新目前最优值:;
(1010) 除非解的质量连续nmax次都没有改进,否则重复步骤(103)~(109);
(1011) m=m+1;
(1012) 计算;
(1013) 如果,则,否则;
(1014) 重复步骤(102)~(1013),直到overflow_ratio没有进一步减少。
进一步的,所述步骤(11)中,将该级优先队列中的聚类析散,析散后的子聚类继承了本层的聚类的最优位置,用于下一级共轭次梯度算法的初始解。
本发明将采用半周长线长计算且密度约束为非光滑的VLSI标准单元全局布局问题建模为一个L1范数最小化问题,进而用修正的最优选择聚类算法和共轭次梯度算法得到高效实用的布局结果。其基本思想是结合适合L1范数线长模型的聚类算法和需要内存较少、可以解决大规模问题的次梯度算法,运用多级的布局思想,从而得到一种性能优越的基于分析方法的全局布局方法。
相较于现有技术,本发明的有益效果是:(1)直接将采用半周长线长计算且密度约束为非光滑的VLSI标准单元全局布局问题建模为L1范数模型并进行优化。(2)采用适合L1范数线长模型的修正的最优选择聚类算法,这样可以减少网表的大小及尽量避免直接处理含有超边的情形,从而减小线长的计算时间和增加计算精确度。(3)采用罚函数的思想,直接用共轭次梯度方法求解模型。在此方法中,罚因子可以来平衡线长和密度约束。同时,在求解过程中,采用了自适应步长方法来平衡算法的运行时间和解的质量。(4)使用内存需求较小的次梯度方法,可以解决非常大规模集成电路布局问题。经与IBM标准单元基准和Peko suite2基准的比较实验,结果表明本发明的全局布局方法,尤其对于非常大的规模实例而言,是有效的。
附图说明
图1是本发明基于L1范数模型的VLSI标准单元全局布局方法的流程图。
图2是本发明一具体实施例的示意图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细说明。
本发明基于L1范数模型的VLSI标准单元全局布局方法,先把电路表示为超图,将采用半周长线长计算且密度约束为非光滑的VLSI标准单元全局布局问题建模为L1范数最小化问题,然后在聚类阶段采用适用于L1范数模型的修正的最优选择聚类算法对单元进行聚类,接着在析散阶段用非线性规划全局布局方法对聚类进行析散。
图1是本发明基于L1范数模型的VLSI标准单元全局布局方法的流程图。如图1所示,本发明基于L1范数模型的VLSI标准单元全局布局方法,具体包括如下步骤:
(1) 把电路表示为超图;
(2) 初始化级数:level=0;
(3) 初始化优先队列,使每个聚类包含2-3个标准单元;
(4) 设置用来控制布局区域中bin个数的值:current;
(5) level=level+1;
(6) 用修正的最优选择聚类算法产生新的聚类,并生成该级的优先队列;
(7) 重复步骤(5)~(6),直到current大于优先队列中聚类数目的平方根;
(8) 用无约束二次规划方法初始化当前级优先队列中聚类的位置;
(9) 修改current的值;
(10) 用非线性规划全局布局方法求解优先队列中聚类或单元的位置;
(11) 析散该级的优先队列;
(12) level=level-1;
(13) 重复步骤(9)~(12),直到level小于0。
其中,该方法的数学模型,即所述步骤(1)的实现方式如下:把电路表示为超图模型H={V,E},其中,V={v1,v2,…,vn}表示电路单元的集合,E={e1,e2,…,en}表示线网集合;对于VLSI标准单元布局问题,布局区域是矩形薄板,左下角坐标为(0,0),右上角为(W,H),对于单元vi(i=1,2,…,n),记wi为其宽度,h为其高度, ai为其面积,(xi,yi)为其中心坐标,则采用半周长线长计算的总线长为:
(1)
当一条线网e只连接两个单元时,线网e在X方向的半周长线长为:
(2)
当一条线网e连接三个单元时,线网e在X方向的半周长线长为:
(3)
当一条线网e连接pe(pe>3)个单元时,线网e在X方向的半周长线长为:
(4)
其中;根据公式(4),在一条线网e中,内部单元指的是单元所处的X方向上位置既不是最左,又不是最右,而是处在中间;
同理,求得线网e在Y方向的半周长线长;
在布局区域中,将整个布局区域分为大小相同且互不重叠的若干个小矩形区域,每个小矩形区域记为一个 bin;记wb、hb分别为该些bin区域当中 bin b 的宽度和高度,则所有覆盖在 bin b 中的单元总面积Db(x,y)为:
(5)
其中、分别表示bin b和单元i在X方向和Y方向的重叠长度;的计算公式为:
(6)
其中dx表示单元i和bin b在X方向的距离,为非光滑函数;
的计算公式为:
(7)
其中dy表示单元i和bin b在Y方向的距离;在建模中,记tdensity为密度约束目标,则模型约束为:
(8)
运用罚函数的方法可得优化问题:
(9)。
如图1中105、106、107部分所示,所述步骤(3)的实现方式如下:检查每个单元j∈H(V,E),将与其连通度最高的单元k聚到一起,并将三元组triple(j,k,s)插入优先队列中,其中,s是聚类score值,计算公式如下:
(10)
其中aj是聚类j的面积,f(aj)与面积aj成反比,用于控制聚类的面积大小,使得各个聚类的面积相差不会太大;Ej和Ek分别表示聚类j、k的出度;Djk表示聚类j、k之间的连通度。
所述步骤(4),即图1中109部分,由于该发明使用次梯度方法,其内存要求较牛顿算法或内点算法来得小,可以用来解决极大规模优化问题。因此,在程序设计中,可以将current设置得比较大,这样可以减少聚类的级数,提高布局的质量。
所述步骤(6),即图1中110部分的实现步骤如下:
(61) 对于每个优先队列中的聚类,选择队列顶端的triple(j,k,s);
(62) 如果j标记为invalid,那么选择最大的score值s(j,k’),将triple(j,k’,s’)插入到优先队列中,并标记j为valid;
(63) 如果j标记为valid,把j、k作为新的聚类j’,更新与j、k有连接的网表,选择具有最大score值s’(j’,k’)的聚类k’,将三元组triple(j’,k’,s’)插入到优先队列中,并标记j’的邻域为invalid;
(64) 重复步骤(61)~(63),直到优先队列中每个聚类都访问到。
所述步骤(8),即图1中113部分,用无约束二次规划方法初始化当前级优先队列中聚类的位置,无约束二次规划方法模型为:
(11)
其中,wij为连接单元i、j的权重。
所述步骤(9),即图1中114部分中,current=min(current*2, sqrt(|V|)),|V|表示单元集合V的元素的个数。。
所述步骤(10),即图1中115部分的实现步骤如下:
(101) 初始化罚因子及外部迭代次数:;
(102) 初始化次梯度方向、共轭方向,内部迭代次数、当前最优解:g0=0,d0=0,k=0,f0best=0;
(103) k=k+1;
(104) 计算次梯度方向:;
(105) 计算Polak-Ribiere参数:;
(106) 计算共轭方向:;
(107) 计算步长:;
(108) 更新解:;
(109) 更新目前最优值:;
(1010) 除非解的质量连续nmax次都没有改进,否则重复步骤(103)~(109);
(1011) m=m+1;
(1012) 计算;
(1013) 如果,则,否则;
(1014) 重复步骤(102)~(1013),直到overflow_ratio没有进一步减少。
所述步骤(11),即图1中116部分中,将该级优先队列中的聚类析散,析散后的子聚类继承了本层的聚类的最优位置,用于下一级共轭次梯度算法的初始解。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。
机译: 在全局Arnoldi算法中开发模拟VLSI宏模型的方法
机译: 基于扩散函数和模拟退火算法的VLSI电路布局方法,以最小化面积
机译: 全局最优表面分割的基于模型的深度学习