首页> 中国专利> 集成电路布图规划与缓冲器规划集成的布局方法

集成电路布图规划与缓冲器规划集成的布局方法

摘要

集成电路布图规划与缓冲器规划集成的布局方法属于集成电路计算机辅助设计领域,其特征在于:它引入了缓冲器插入时的可行区域计算,并通过在布图规划结果中的空白区域的划分,简化了缓冲器规划的复杂度,针对布图规划中的缓冲器规划对模拟退火的求解过程进行设计,把缓冲器的规划集成在布局规划问题的求解中。它把缓冲器规划融入布图规划的优化过程中,实现对时延性能的优化。

著录项

  • 公开/公告号CN1547252A

    专利类型发明专利

  • 公开/公告日2004-11-17

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN200310115545.9

  • 申请日2003-11-28

  • 分类号H01L21/82;G06F17/50;

  • 代理机构

  • 代理人

  • 地址 100084 北京市100084-82信箱

  • 入库时间 2023-12-17 15:39:00

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2011-02-16

    未缴年费专利权终止 IPC(主分类):H01L21/82 授权公告日:20060913 终止日期:20091228 申请日:20031128

    专利权的终止

  • 2006-09-13

    授权

    授权

  • 2005-01-26

    实质审查的生效

    实质审查的生效

  • 2004-11-17

    公开

    公开

说明书

技术领域

集成电路布图规划与缓冲器规划集成布局方法属于集成电路计算机辅助设计领域,尤其涉及BBL(Building Block Layout)领域。

背景技术

在集成电路的布局中,层次式布图设计,模块重用技术,知识产权模块的大量应用,片上系统尤其是数模混合片上系统的设计,以及模拟电路器件级布图问题等,这些问题都可以归结为集成电路宏模块的布图规划和布局问题,即Building Block Layout:BBL模式的布图问题,它已成为当前的研究热点。尤其随着互连线在布图中所占的比重越来越大,传统的布图规划方法忽略了对可布性的考虑,导致了在后续的布线过程中无法满足时延需要。为了满足时延需求,往往需要插入大量的缓冲器,但缓冲器本身是由器件构成,需要占用一定的布图面积,同时还必须满足一定的约束,因此将布图规划与缓冲器规划集成的问题可简单描述为:

设有一个包含B个任意大小的方形模块的集合,模块的形状根据平面中顶点位置从左下到右上角依次记录,并且模块具有一定的方向,根据模块之间的互连信息给出若干网表以及相应的时延约束。B个模块的一个布局就是在模块互不重叠的情况下,将模块放置在平面上,平面上包含这B个模块的最小矩形区域被称为芯片。在给出了布图规划的结果后,需要根据互连信息确定缓冲器插入的位置,数量和大小,使得尽可能的满足时延需求。将布图规划与缓冲器规划相结合就是寻找一个最优布局或近似最优布局,使得芯片面积或是其它优化目标组成的目标函数值达到最优,同时使缓冲器的数量最少,时延性能最好。

近年来,缓冲器规划问题受到广泛的关注,人们已经提出了很多种缓冲器规划的方法。由于缓冲器是器件构成的,所以这些方法多数利用布局中的空白区插入缓冲器,在BBL阶段也已经有很多相关的工作;例如最早提出的可行区域(feasible region)的概念,用来产生缓冲器模块;缓冲器的可行区域是指在满足线网的目标延时的条件下,缓冲器可以放置的可能最大区域。稍后,可行区扩展成为独立可行区,同时布线拥挤度得到优化。网络流的方法在假设每个线网只有一个缓冲器的情况下,可以找到最优解。多商品流的方法将缓冲器分配到预先已存在的缓冲器模块。动态规划方法假设在宏模块内部也允许插入缓冲器,因此这种方法会使插入缓冲器的点分配在布局的各个位置。可布性驱动的布图规划方法可以为拥挤度约束估计缓冲器的用量和缓冲器资源。集成缓冲器/通道插入的布图规划方法用于基于总线的微处理器设计。迄今为止大部分的布图方法和缓冲器规划都相互独立,不能将缓冲器规划考虑在布图规划过程中,以产生更有利于时延性能的布图规划结果。从得到的结果来看,与实际应用还有非常大的差距。

发明内容

本发明的目的在于提出一种较迄今为止该领域的其它算法更为稳定、高效,且能够在布图规划过程中实现对缓冲器的合理规划,并将缓冲器规划与布图结果的优化相结合,处理集成电路宏模块布图规划中缓冲器规划作为解决宏模块布图问题的工业工具。在Elmore时延模型下,长连线的时延与线长的平方成比例增长,而利用缓冲器插入技术,可以控制连线的时延与线长呈线性增长关系。为满足时延约束,需要插入的缓冲器数目随工艺尺寸的减小而持续增长。由于缓冲器需要占用硅资源,所以在设计过程中,缓冲器应该尽早规划,尤其在布局阶段,以尽可能改善电路的时延性能。

本发明的特征在于:它引入了缓冲器插入时的可行区域计算,并通过在布图规划结果中的空白区域的划分,简化了缓冲器规划的复杂度,针对布图规划中的缓冲器规划对模拟退火的优化求解过程进行设计,将缓冲器的规划集成在布图规划问题的求解过程中。它依次含有以下步骤:

1)对计算机进行初始化,设置并输入以下参数:

(1).模拟退火过程中参数设置,包括内循环次数、初始温度以及结束温度,退火因子a;

(2).设置最终布局芯片的目标宽长R及其权重ω;

(3).设置总线长的权重λ和缓冲器插入的权重r;

(4).设置目标函数中缓冲器的大小和缓冲器插入网格的大小;

(5).设置缓冲器相关的各项性能参数,包括负载电容,驱动输出电阻,缓冲器输出电阻,缓冲器输入电容,缓冲器固有时延,单位长度线电容,单位长度线电阻;

2)计算机从模块描述文件读入模块及线网信息:

(1).读入模块四角坐标,并根据模块四角坐标计算模块的宽、高;

(2).读入模块上引线端坐标,并将其转化为相对模块左下角的坐标;

(3).按读入顺序给模块编号,并计算总模块数、各模块净面积之和;

(4).读入线网信息,包括引线端的互连情况,线网中的时延约束。

在电路网表中的线网一般是多端线网,即一个线网有多个引线端,为了便于时延计算并合理简化缓冲器插入的模型,我们将多端线网拆分成两端线网:即多端线网E有m个引线端p1(x1,y1),…,pm(xm,ym),则我们将其拆分成m-1个两端线网(p1,p2),(p1,p3),(p1,p4)……(p1,pm)。这样对应于原有线网我们得到了相应的两端线网网表信息,并可以根据两端线网信息进行缓冲器的规划。

3)根据模块信息,随机构造初始布局的拓扑结构即模块间的位置关系,在本方法中我们采用角模块序列表示方法作为模块布局的表示,根据读入模块的次序,随机构造模块间的逻辑拓扑关系,构成一个布局,并作为初始布局Q0

4)进入模拟退火优化过程,以角模块序列表示作为基本布局表示方法,计算布局问题最优或近似最优解

从初始温度开始,计算当前温度下的最优或近似最优解,当前温度记为Tnow:

[1].根据下述公式计算各线网线长估计值,及总线长估计值,单个线网的线长根据线网中的引线端位置用半周长模型进行估计:

设某线网E有m个引线端p1(x1,y1),...,pm(xm,ym);则:该线网的线长WireLength(E)用下述公式估计,

>>WireLength>>(>E>)>>=>>(>>max>>i>∈>{>1>,>.>.>.>,>m>}> >>(>>x>i>>)>>->>min>>i>∈>{>1>,>.>.>.>,>m>}> >>(>>x>i>>)>>)>>+>>(>>max>>i>∈>{>1>,>.>.>.>,>m>}> >>(>>y>i>>)>>->>min>>i>∈>{>1>,>.>.>.>,>m>}> >>(>>y>i>>)>>)>>>s>

其中,i为引线端编号,

总线长估计值为:

>>TotalWireLength>=over>>Σ>>k>=>l>>L>>WireLength>>(>E>)>>,>>s>L为线网的个数

[2].计算得到的布局中的空白区域,并划分成矩形模块,把得到的空白区矩形模块划分成固定大小的用以放下一个或几个缓冲器的小矩形。

[3].根据各个两端线网,判断线网的长度是否大于关键长度lcrit,若两端线网的长度小于关键长度,则当前线网插入缓冲器数为零,关键长度的计算公式如下:

>>>l>crit>>=>>>>R>b>>->>R>d>>>r>>+>>>>C>b>>->>C>l>>>c>>+>2>>>>>R>b>>>C>b>>+>>T>b>>>rc> >->->->>(>1>)>>>s>

其中:Rb:缓冲器输出电阻(Ω),

Rd:驱动输出电阻(Ω),

Cb:缓冲器输入电容(fF),

C1:负载电容(fF),

r:单位长度线电容(Ω/μm),

c:单位长度线电容(fF/μm),

Tb:缓冲器固有延时(ps);

[4].计算每一个两端线网N因为不满足时延约束需要插入的缓冲器数及各缓冲器的独立可行区域:

(4.1).计算线网满足时延约束需要的缓冲器数Kmin

其中:

K1=RbCb+Tb                                   (3)

>>>K>2>>=>>(>>rC>b>>+>>cR>b>>)>>l>+>>T>b>>+>>R>d>>>C>b>>+>>R>b>>>C>l>>->>T>con>>>s>

>>->>r>>2>c>>>>>(>>C>b>>->>C>l>>)>>2>>->>c>>2>r>>>>>(>>R>b>>->>R>d>>)>>2>>->->->>(>4>)>>>s>

>>>K>3>>=>>1>2>>>rcl>2>>+>>(>>rC>l>>+>>cR>d>>)>>l>+>>R>d>>>C>l>>->>T>con>>->->->>(>5>)>>>s>

其中:l为线网长度,

Rb:缓冲器输出电阻(Ω),

Rd:驱动输出电阻(Ω),

Cb:缓冲器输入电容(fF),

    C1:负载电容(fF),

    r:单位长度线电容(Ω/μm),

    c:单位长度线电容(fF/μm),

    Tb:缓冲器固有延时(ps),

    TNcon为线网N的时延约束;

(4.2).计算线网N中每个缓冲器的独立可行区域:

长度为l的线网N的第j个缓冲器的独立可行区域为:

>>>IFR>j>>=>>(sup>>x>opt>jsup>>->>W>ifr>>/>2>,sup>>x>opt>jsup>>+>>W>ifr>>/>2>)>>I>>(>0>,>l>)>>->->->>(>6>)>>>s>

Wifr为第j个缓冲器的独立可行区域的宽度,

>>>W>ifr>>=>2>·>>>sup>>T>con>Nsup>>-sup>>T>opt>Nsup>>>(>>k>min>>,>l>)>>>>rc>>(>2>>k>min>>->1>)>>> >->->->>(>7>)>>>s>

其中,kmin为缓冲器数,

TconN为线网N的时延约束,

ToptN为线网N中插入kmin个缓冲器的最优时延,

>sup>>T>opt>Nsup>>>(>>k>min>>,>l>)>>=>>T>N>>>(sup>>x>opt>1sup>>,sup>>x>opt>2sup>>,>.>.>.>.>.>.>,sup>>x>opt>>k>min>sup>>,>l>)>>>s>

>>=>>>rl>>(>>k>min>>>C>b>>+>>C>l>>)>>+>cl>>(>>R>d>>+>>k>min>>>R>b>>)>>+>>(>>k>min>>>C>b>>+>>C>l>>)>>>(>>k>min>>>R>b>>+>>R>d>>)>>>>>k>min>>+>1>>>->->->>(>8>)>>>s>

>>+>>k>min>>>T>b>>+>>>>rcl>2>>->>k>min>>r>>>(>>C>b>>->>C>l>>)>>2>>/>c>->>k>min>>c>>>(>>R>b>>->>R>d>>)>>2>>/>r>>>2>>(>>k>min>>+>1>)>>>>>s>

xoptj为缓冲器相对线网源端的Manhattan距离(只包含水平和垂直线段),也即第j个缓冲器的位置;

>sup>>x>opt>jsup>>=>>(>j>->1>)>>>y>l>>+>>x>l>>,>j>∈>{>1,2>,>.>.>.>,>>k>min>>}>->->->>(>9>)>>>s>

其中:

[5].计算满足目标时延的两端线网数目Nold

(5.1).计算每一个缓冲器的侯选位置集合:

(5.1.1).计算缓冲器所在线网的源端和漏端所确定的矩形区域和空白区的交DFol

(5.1.2).计算DFol和缓冲器的独立可行区域的交,当DFol内某位置的左下角位于缓冲器的独立可行区域内,则该位置是相应缓冲器的侯选位置;

(5.1.3).在上述缓冲器的侯选位置中选择成为缓冲器侯选位置最少同时尚未放置缓冲器的位置作为缓冲器的位置;

(5.2).检查每一个两端线网,统计所需缓冲器未能全部插入的线网数,记为Nnotsat

[6].用下列公式评价Q,得到目标函数值Cost;

      CostQ=Area+λ×TotalWireLength+ω×Rs2+r×Nnotsat;  (11)

其中:

>>Area>=>>>max>{>>x>i>>}>>>i>∈>{>1>.>.>.>n>}> >×>>>max>{>>y>i>>}>>>i>∈>{>1>.>.>.>n>}> >>s>

TotalWireLength(总线长)为各线网估算长度之和;

λ为总线长的权重,ω为宽长比的权重,r为缓冲器插入的权重;

设R为期望的芯片宽长比,ratio为芯片实际宽长比,则:

Rs=|R-max(ratio,1/ratio)|;

5)输出当前布局Qnow

6)用下述公式计算下一个退火状态的温度Tnow=Tnow*a:其中a为退火因子,一般取值为0.95。如果当前温度大于结束温度Tnow>Tend,则进入下一个退火状态的求解过程;如果当前温度小于结束温度Tnow<Tend,则输出的当前布局即为最终布局、

步骤3)和步骤4)所述的角模块序列以及在模拟退火过程中所利用的角模块序列表示是基于模块之间逻辑拓扑的布图表示方法,是由洪先龙教授在2000年提出的一种有效的表示方法,详细的角模块序列表示的布局方法不属于本专利申请内容,下面只是针对本发明所需要利用的角模块表示的定义做简单介绍。角模块表示主要是用(S,L,T)三元组串记录模块从左下角至右上角的布图顺序以及模块之间的拓扑关系。其中S串记录各个模块的名称,L串记录模块摆放时的方位,包括两种方位,垂直方位表示该模块从上方向下覆盖其他已布模块,水平方位表示该模块从右方向左覆盖其他已布模块。具体覆盖的模块数目在T串中相应表示。为了方便在模拟退火中的表示,T串采用了二进制序列,以连续的“1”以及一个“0”的子串长度表示共有多少个模块被当前模块覆盖。随着模块依次的摆放,各模块的坐标都已得出,并能计算出芯片的大小和长宽比。

步骤4)所述的模拟退火过程用于求取布局的最优结果,它的流程如下:

当当前循环次数小于内循环次数时,重复如下步骤:

用下列方法之一从当前布局Qnow产生新的布局,把新的拓扑结构记为Qnew:

要改变布局的拓扑结构,用下列方法:

(1).交换角模块序列中S串任何两个模块的次序;

(2).将角模块序列中L中任意一个模块的方向改变;

(3).改变角模块序列T串中任意一位。

要改变模块方向以有利于优化线长时,用下列方法:

(4).随机选择一个模块进行旋转,旋转角度通过随机函数选取为90°,或180°,或270°;

(5).随机选择一个模块进行翻转,翻转轴通过随机函数选取为水平轴,或垂直轴或模块对角线;

根据产生的新解Qnew计算布局结果,并且进行下面的操作:

若exp(-(CostQnew-CostQ)/Tnow)>r;(r是0到1之间的随机数)

则接受新解,将当前解设置为新解,即Q=Qnew;

否则不接受新解,当前布局保持为Q。

完成一次循环,当前循环次数累加1次;

试验说明:本发明增加了缓冲器插入率,同时也增加了满足时延约束的线网数,改善了电路时延特性。

附图说明

图1.布局和空白区和Pad分布的实例。

图2.模拟退火流程图。

图3.缓冲器独立可行区域及候选位置计算图。

图4.缓冲器独立可行区域计算示意图。

图5.MCNC测试用例ami33集成缓冲器规划后布图结果。

具体实施方式

本发明可以应用于不同的基于矩形划分的布图规划/布局表示(也就是说该类布图表示将芯片划分为数目大于等于模块数目的矩形区域,同时每一个矩形区域至多有一个模块)下实现。本部分采用角模块表示的布局结果,作为本发明的一个实例,并采用Elmore时延模型作为时延计算的模型。结合图2的流程图用本发明的方法进行集成了缓冲器插入规划的布图规划。表一为一些变量的定义和数值。

表一

    r    单位长度线电阻(Q/μm)    0.0755    c    单位长度线电容(fF/μm)    0.118    Tb    缓冲器固有时延(ps)    36.4    Cb    缓冲器输入电容(fF)    23.4    Rb    缓冲器输出电阻(Q)    180    Rd    驱动输出电阻(Q)    180    C1    负载电容(fF)    23.4

用国际基准测试电路实例MCNC中ami33做实例结合图2用本发明的方法进行模块布局它依次有如下步骤:

1.初始化

(1).设置模拟退火初始温度Tstart=3000,模拟退火结束温度Tend=500,内循环次数Repeat=1000;

(2).设置最终布局的目标宽长比(R=1.0)及其权重ω;

(3).设置目标函数中总线长的权重λ。

(4).设置缓冲器的大小以及缓冲器插入网格的大小(设置缓冲器插入网格的大小与缓冲器大小一致)

2.读入模块信息以及线网信息

测试用例ami33中包含33个方形模块,线网一共有123条;

对每个多端线网(有三个或三个以上引脚)按如下方式进行拆分:由于测试电路中不包含线网的源端和漏端信息,故任意指定义个引脚作为源端,其他引脚作为漏端;将一个包含n个引脚的线网拆分成n-1个两端线网,在ami33测试用例中一共拆分出363条两端线网。

3.对测试用例中的33个模块根据读入顺序进行标号,并构成模块序列表示其布图顺序即角模块表示中的S序列,并产生0,1串表示L串和T串,由此构造出初始解如下:

       S={block1,block2,block3,block4,...,block33)

       L={1,0,1,0,...,1,0}

       T={0 10 110 100 10 110 1110 110 100......}

L串记录模块摆放时的方位,包括两种方位,0表示垂直方位,表示该模块从上方向下覆盖其他已布模块,1表示垂直方位,水平方位表示该模块从右方向左覆盖其他已布模块。具体覆盖的模块数目在T串中相应表示,T串采用了二进制序列,以连续的“1”以及一个“0”的子串长度表示共有多少个模块被当前模块覆盖。

4.以下步骤按照图2中的模拟退火流程进行,具体结果见图4及表3。在模拟退火过程中将布图规划和缓冲器的规划相结合,以角模块序列表示来表示布局,计算布局中的所有空白区,将它们分割成块,并和模块相关联;方法如下:(详细的表示到布局的转换算法不属于本专利申请的内容,故这里不细述)

在角模块序列布图表示向布局的转换过程中,计算每个模块的坐标时:

比较相邻的各模块,如果两模块之间存在空区域,将该空区域和被覆盖的模块相关联;如图一中所示模块M1从上方覆盖模块M2和模块M3,由于模块M1和模块M3之间存在空区域,我们将此空区域划分成空区域模块D1,并将其与模块M3相关联,同样模块M4从右方覆盖模块M3和M1,由于模块M4和M1之间存在空区域,我们将此空区域划分成空区域模块D2。

模块处理完毕,如果位于芯片的上边界或右边界的模块与边界之间存在空白区,则将空白区和相应的位于边界的模块相关联;如上边界覆盖模块M1和模块M4,由于上边界和模块M4之间存在空白区,我们将其划分成空区域模块D3。

对所有的空白区进行细致划分,即把空白区细划分成固定大小的可以放下一个缓冲器的小矩形;

对每个两端线网完成如下操作

根据如下已有公式计算关键长度lcrit,如果两端线网长度大于lcrit,继续如下步骤,否则当前线网插入缓冲器数为零;

>>>l>crit>>=>>>>R>b>>->>R>d>>>r>>+>>>>C>b>>->>C>l>>>c>>+>2>>>>>R>b>>>C>b>>+>>T>b>>>rc> >->->->>(>1>)>>>s>

其中,Rb,Cb,Tb,Rd,Cl,r和c意义如表一所示;计算得到lcrit=4270。

用如下已有方法计算在插入缓冲器的条件下,最小化时延需要的缓冲器数:

给定一条长度为l的两端线网,该线网的Elmore时延可以定义如下:

>>T>>(>>R>d>>,>>C>l>>,>l>)>>=>>(>>rc>2>>)>>>l>2>>+>>(>>R>d>>c>+>>rC>l>>)>>l>+>>R>d>>>C>l>>->->->>(>2>)>>>s>

其中各参量意义如表一所示;

对于长度为l,插入了n个缓冲器的线网,要达到最小化线网时延的目的,n个缓冲器的最优位置为:

说明:本文缓冲器的位置及下述可行区的计算涉及到线网内的位置问题,均指相对线网源端的Manhattan距离(只包含水平和垂直线段),例如线网长度就是指源端到漏端的Manhattan距离。

第j个缓冲器的位置为xjopt

>sup>>x>opt>jsup>>=>>(>j>->1>)>>>y>l>>+>>x>l>>,>j>∈>{>1,2>,>.>.>.>n>}>->->->>(>3>)>>>s>

其中:

一条长度为l的单源端单漏端的线网(两端线网),插入n个缓冲器的时延可以用下列公式计算。    

>>>T>N>>>(>>x>1>>,>>x>2>>,>.>.>.>,>>x>n>>,>l>)>>=>T>>(>>R>d>>,>>C>b>>,>>x>1>>)>>+>T>>(>>R>b>>,>>C>l>>,>l>->>x>n>>)>>>s>

>>+over>>Σ>>q>=>1>>>n>->1>>>T>>(>>R>b>>,>>C>b>>,>>x>>q>+>1>>>->>x>q>>)>>+>>nT>b>>,>->->->>(>5>)>>>s>

其中函数T的定义同(2),各参量意义如表一所示,xj为第j个缓冲器的位置。

长度为l插入n个缓冲器的线网N的最优时延可依据公式(2)、(3)、(4)和(5)计算,记为:

>sup>>T>opt>Nsup>>>(>n>,>l>)>>=>>T>N>>>(sup>>x>opt>1sup>>,sup>>x>opt>2sup>>,>.>.>.>.>.>.>,sup>>x>opt>nsup>>,>l>)>>>s>

>>=>>>rl>>(>>nC>b>>+>>C>l>>)>>+>cl>>(>>R>d>>+>>nR>b>>)>>+>>(>>nC>b>>+>>C>l>>)>>>(>>nR>b>>+>>R>d>>)>>>>n>+>1>>>->->->>(>6>)>>>s>

>>+>>nT>b>>+>>>>rcl>2>>->nr>>>(>>C>b>>->>C>l>>)>>2>>/>c>->nc>>>(>>R>b>>->>R>d>>)>>2>>/>r>>>2>>(>n>+>1>)>>>>>s>

综上所述,线网N要达到最优时延需要的缓冲器数目,可按如下方式计算:

在两端线网的源和漏之间从1开始按每次递增1个缓冲器的方式插入缓冲器,如果插入第k+1个缓冲器导致线网延时增加,那么该线网达到最优延时需要k个缓冲器;即缓冲器数k满足下式:

>sup>>T>opt>Nsup>>>(>k>,>l>)>><sup>>T>opt>Nsup>>>(>k>+>1>,>l>)>>,>>s>由该式可解出k的表达式:

对每一个线网完成如下计算:

根据如下已有公式及1.c中给出时延约束Tcon计算满足线网约束需要的缓冲器数目;

其中:

K1=RbCb+Tb(9)

>>>K>2>>=>>(>>rC>b>>+>>cR>b>>)>>l>+>>T>b>>+>>R>d>>>C>b>>+>>R>b>>>C>l>>->>T>con>>->->->>(>10>)>>>s>

>>->>r>>2>c>>>>>(>>C>b>>->>C>l>>)>>2>>->>c>>2>r>>>>>(>>R>b>>->>R>d>>)>>2>>>s>

>>>K>3>>=>>1>2>>>rcl>2>>+>>(>>rC>l>>+>>cR>d>>)>>l>+>>R>d>>>C>l>>->>T>con>>->->->>(>11>)>>>s>

其中,各参量的意义如表一所示。

对每个两端线网,根据公式计算满足时延约束需要插入的缓冲器个数kmin,并计算每一个缓冲器的独立可行区域(缓冲器b的独立可行区域是指在满足b所属线网的时延约束条件下,假设该缓冲器所属线网的其他缓冲器都被放置在他们各自的独立可行区域内,可以插入缓冲器b的最大区域,图3给出示例,线网源端和漏端分别为虚线框的左下角和右上角,缓冲器的独立可行区为两条135度斜线和矩形虚线框的交集);

根据如下已有方法计算各个缓冲器的独立可行区域;

长度为l的线网N的第j个缓冲器的独立可行区域为:

>>>IFR>i>>=>>(sup>>x>opt>jsup>>->>W>ifr>>/>2>,sup>>x>opt>jsup>>+>>W>ifr>>/>2>)>>I>>(>0>,>l>)>>->->->>(>12>)>>>s>

其中,xoptj意义同公式(3),Wifr代表独立可行区域的宽度;即插入kmin个缓冲器的最优位置;使得如下公式成立:

>>∀>>(>>x>1>>,>>x>2>>,>.>.>.>,>>x>i>>,>.>.>.>,>>x>>k>min>>>)>>∈>>IFR>1>>×>>IFR>2>>×>.>.>.>×>>IFR>>n>,>>>->->->>(>13>)>>>s>

>>>T>N>>>(>>x>1>>,>>x>2>>,>.>.>.>.>.>.>,>>x>>k>min>>>,>l>)>>≤sup>>T>con>Nsup>>>s>

其中xi为缓冲器相对源端的位置,TconN为与线网N相关的时延约束;Wifr可以按如下公式计算。

>>>W>ifr>>=>2>·>>>sup>>T>con>Nsup>>-sup>>T>opt>Nsup>>>(>>k>min>>,>l>)>>>>rc>>(>>>2>k>>min>>->1>)>>> >->->->>(>14>)>>>s>

其中TconN和ToptN(kmin,l)为线网N的时延约束和插入kmin个缓冲器的最优时延,r,c的意义如表一所示。ToptN(kmin,l)可由Kmin替换公式(6)中的n来计算。

综上所述,特定线网的缓冲器的独立可行区域可由(3)、(4)、(12)、(14)计算出来。计算每一个缓冲器的候选插入位置集合;

计算缓冲器所在线网的源端和漏端所确定的矩形区域和空白区的交(即计算两个矩形的交);结果记为DFol;(如图3,矩形粗线框为DFol);

计算DFol与缓冲器的独立可行区域的交。如果DFol内某缓冲器插入位置的左下角位于缓冲器的独立可行区域内,那么我们认为该缓冲器插入位置是相应缓冲器的候选位置。(图3所示斜线所覆盖部分)

在图3中我们可以看到两端线网源端为s(350,1575),漏端为t(4725,5915);

与线网相关的计算:

线网长度为(4725-350)+(5915-1575)=8715;

计算关键长度lcrit=4270;

根据公式(6)计算相应最优时延Topt=517;时延约束为Tcon=398.7;根据具体实施步骤公式(8)计算的Kmin=2;根据公式(14)计算计算Wifr(第i个缓冲器的独立可行区域的宽度):

Wifr=1239

根据公式(4)计算得到

x1=2905

y1=2905

根据公式(3)和(12)计算得到距离源点(350,1575)的距离线段为:

IFR1=(2285,3524)

IFR2=(5190,6429)

根据如图4所示,b1,b2所在的两条斜线所包围的区域分别为两个缓冲器的独立可行区域;

按如下方法计算在初始空白区分布下满足目标时延的两端线网数目,我们将b2对应的缓冲器可行区域放大如图3所示;

对每一个缓冲器按如下启发式方法确定缓冲器的位置:

在该缓冲器的候选插入位置中选择成为缓冲器候选位置次数最少同时尚未放置缓冲器的插入位置作为该缓冲器的位置;

检查每一个两端线网,统计所需缓冲器全部插入的线网数N,并计算出缓冲器由于模块位置限制而未能成功插入的线网数Nnotsat

根据4.(6)的代价函数公式计算当前布局对应的代价,并与原代价函数进行比较,产生相应的新解,并进一步在模拟退火过程中进行迭代,直到模拟退火过程结束。

具体到退火过程中初始解为:

(1)S={block1,block2,block3,block4,...,block33}

L={1,0,1,0,...,1,0}

T={0 10 110 100 10 110 1110 110 10 0......}

根据式(4)计算线长得:TotalWirelength=5352486,

布局面积:Area=111499550

宽高比:  Rs=0.504

线网满足数为 Nnotsat=82;

CostQ=Area+λ×TotalWireLength+ω×Rs2+r×Nnotsat=165108024

保存Costmin=CostQ

(2)进行布局优化

根据随机值选择方案1)来生成新解:

block14和block32相交换

S={block1,block2,block3,...block13,block32,block15...,block31,block14,block33}

L={1,0,1,0,...,1,0}

T={0 10 110 10 0 10 110 1110 110 10 0......}

根据式(4)计算线长得:T+otalWirelength=5431429,

           布局面积:  Area=111499550

           宽高比:Rs=0.504

           线网满足数为Nnotsat=95;

CostQ=Area+λ×TotalWireLength+ω×Rs2+r×Nnotsat=165364896

不满足CostQ<Costmin,因此不记录该解。

(3)随机数r的取值为0.53,由于exp(-(CostQnew-CostQ)/Tnow)>r的接受新解的条件不满足,因此回到原解,将block14和block32重新交换回来。

(4)循环布局优化过程(2),(3)1000次。

(5)因为不满足T<500(结束温度),产生新的退火温度T=7600,转向(3.2.3),循环进行步骤(3.2.3)-(3.2.9),直到满足T<500。最后输出对应于Costmin的最优解。

根据所示参数值,我们给出实验结果(如无特殊说明,长度和坐标的单位均为微米(μm),时间单位为皮秒(ps)):图4是MCNC测试用例中ami33的布图结果,其中在空白区域插入了154个缓冲器以满足时延的约束。

附实验结果

表二

电路模块数目2-端线网数面积 (mm2)线长 (mm)插入数目/需要数目met违反约束运行时间  (秒)Xerox1045585.411327214/3033705159Ami333336331.15461.2154/21429439206Ami4949545146.62920244/568341151329Apte017248.14459.544/1071134927Hp1122638.86392.240/1061634329

其中:MCNC测试电路共有5个电路,包括Xerox,Ami33,Ami49,Apte,Hp五个电路,其中的模块数目和线网数目如表二所示。“met”为满足时延约束的线网数;“插入数目”为成功插入空白区缓冲器的总数目;“需要数目”为所需的缓冲器总数目;“违反约束”为违反时延约束的线网数(即线网的最优时延大于时延约束)。

本发明使用的硬件是一台Sun公司的v880工作站;使用Unix操作系统。本发明所述的缓冲器规划算法有以下几个优点:

(1).将缓冲器规划算法与布图规划的优化过程相结合;

(2).利用布图结果中的空白区分布来进行缓冲器的插入,实现对时延性能的优化,有利于后继设计的顺利完成;

(3).具有工业应用价值,可以用于集成电路设计过程中:模块级布图规划/布局中的互连规划问题。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号