多端线网插入缓冲器优化时延的标准单元总体布线方法

文档序号:6517230阅读:213来源:国知局
专利名称:多端线网插入缓冲器优化时延的标准单元总体布线方法
技术领域
集成电路计算机辅助设计即IC CAD技术领域,尤其涉及标准单元(SC)总体布线设计领域。
背景技术
在集成电路(IC)设计中,物理设计是IC设计过程中主要的一环,也是其中最耗时的一步。与物理设计相关的计算机辅助设计技术称为布图设计。在布图设计中,总体布线是一个极为重要的环节,它的结果对最后详细布线的成功与否和芯片的性能影响极大。
在集成电路深亚微米(Deep Submicron,DSM)、超深亚微米(Very Deep Submicron,VDSM)工艺阶段,互连线延迟成为影响电路性能的决定因素。要优化芯片的性能,必须要考虑时延等性能优化目标。在电路时延优化中,缓冲器插入技术是一种非常有效的手段。缓冲器(buffer)由一对级连的反向器组成,可以起到截断长连线,屏蔽底层的大负载电容,驱动下一级电路的作用。在布线过程中进行适当的缓冲器插入,可以在拓扑优化的基础上进一步获得时延性能的改善。
在已报导和所能查阅到的国内外相关研究中,我们列举、分析、总结如下两个端点线网的情况针对两端线网的缓冲器插入算法一般采用基于图论的方法。文献[Y.Gao,D.Wong,“A graph based algorithm for optimal buffer insertion under accuratedelay models”,IEEE Proceedings of Design,Automation and Test in Europe,2001.]提出了基于图论的缓冲器插入算法。给定一段连线的长度L,线宽W,驱动电阻RD和负载电容CL,将源点、漏点和可能的缓冲器插入点作为图中的顶点,时延值作为边的权值,可建立一个有向无环图。该算法把求解时延最小的缓冲器插入点问题转化为求解图中最短路径问题。与此相似的还有文献[Hua Xiang,Xiaoping Tang,and D.F.Wong,“An algorithm forintegrated pin assignment and buffer planning”,inProc.ACM/IEEE Design AutomationConf.,2002,pp.584-589.]提出的多项式时间复杂度的引线端分配和缓冲器规划算法。该算法将问题转换为网络流问题,定义代价函数为αW+βR,其中W是总线长,R是缓冲器数目,通过计算最小代价流来进行求解。文献[M.Lai and D.F.Wong,“Maze routing with bufferinsertion and wiresizing”,inProc.ACM/IEEE Design Automation Conf.,2000,pp.374-378.]提出了同时进行缓冲器插入和变线宽的算法。上述两者均基于迷宫算法的思想。与前面算法有所不同,文献[C.C.N.Chu and D.F.Wong,“A quadratic programmingapproach to simultaneous buffer insertion/sizing and wire sizing”,IEEE Trans.Computer-Aided Design,vol.18,pp.787-798,June 1999.]提出了用二次规划方法来同时进行缓冲器插入和变线宽的算法。然而,在实际布图过程中,针对两端线网的算法往往无法直接应用于多端线网,因此,针对两端线网的缓冲器插入算法具有一定的局限性。
多端点线网的情况文献[L.P.P.P.van Ginneken,“Buffer placement in distributedRC-tree networks for minimal elmore delay”,inProc.IEEE Int.Symp.Circuits Syst.,1990,pp.865-868.]提出了一个针对多端线网进行缓冲器插入的经典算法(Van Ginneken算法),该算法基于动态规划思想。对一棵给定各漏点要求到达时间的布线树,算法采用深度优先搜索,对所有可能的缓冲器插入位置建立一个时延/电容的2元组作为候选。算法包含两个阶段在第一个阶段,使用“自底向上”的函数来计算布线树每个节点的候选并将其保存在一个全局数据结构内,在根节点处计算实际时延并进行选择;在第二个阶段,对第一阶段取得最优解的计算过程进行回溯并插入缓冲器。其时间复杂度为0(n2)。在Van Ginneken算法的基础上,提出了大量的改进和扩展算法。文献[J.Lillis,C.K.Cheng and T.-T.Y.Lin,“Optimal wire sizing and buffer insertion for low power and a generalized delaymodel”,IEEE Trans.Solid-State Circuits,31(3),1996,437-447.]将其扩展为可以同时进行缓冲器插入和变线宽。文献[C.J.Alpert and A.Devgan,“Wire segmenting forimproved buffer insertion”,inProc.ACM/IEEE Design Automation Conf.,1997,pp.588-593.]针对Van Ginneken算法在一段连线上只能处理一个缓冲器的限制,提出了可在一段连线上插入多个缓冲器的算法。文献[C.J.Alpert,A.Devgan,and S.T.Quay,“Bufferinsertion for noise and delay optimization”,inACM/IEEE Proc.Design AutomationConf.,June 1998,pp.362-367.]将Van Ginneken算法扩展为可以同时进行时延和噪声的优化的缓冲器插入算法。文献[C.J.Alpert,A.Devgan,and S.T.Quay,“buffer insertionwith accurate gate and interconnect delay computation,”inACM/IEEE Proc.DesignAutomation Conf.,1999,pp.479-484.]通过瞬态传播将精确连线与门延迟计算引入VanGinneken算法。文献[Weiping Shi and Zhou Li,“An 0(nlogn)time algorithm for optimalbuffer insertion,”inACM/IEEE Proc.Design Automation Conf.,2003,pp.580-585.]通过引入“缓冲器主导”概念,并采用快速的冗余检查和子树合并机制,在Van Ginneken算法基础上获得了加速,其时间复杂度为0(nlogn)。文献[Jiang Hu,Charles J.Alpert,Stephen T.Quay,and Gopal Gandham,“Buffer insertion with adaptive blockageavoidance,”IEEE Trans.Computer-Aided Design,vol.22,pp.492-498,Apr.2003.]中加入了可适应的布线树调整方法,将Van Ginneken算法扩展为可处理布线中的障碍。
前面介绍的算法均属于对于给定的布线树进行缓冲器插入的算法。此外,还有另一类方法是同时进行布线树构造和缓冲器插入的,例如文献[H.Zhou,D.F.Wong,I.-M.Liu,andA.Aziz,“Simultaneous routing and buffer insertion with restrictions on bufferlocations”,inProc.ACM/IEEE Design Automation Conf.,1999,pp.96-99.]提出了在缓冲器插入位置限制下同时进行布线树构造和缓冲器插入的算法。与本发明的针对给定布线树进行缓冲器插入的算法属于不同的范畴。
本专利申请所涉及的方法针对多端点线网中插入单个缓冲器的最优位置问题给出公式形式的理论结论,直接适应了集成电路设计中对电性能的突出需求。与已有的缓冲器插入方法相比,本发明方法由于给出了解析公式,可以直接保证在给定多端点线网中插入单个缓冲器时获得最大时延改善。此外,本专利申请所涉及的方法给出了同时考虑多个线网的进行缓冲器插入的时延优化方法。可以在总体布线时,在考虑布线拥挤的前提下,进行基于缓冲器插入的时延优化,可以保证以较小的缓冲器插入个数获得时延与布线拥挤的同时改善。请具体参见后面的“本发明方法效果的实验数据”中给出的实验数据对比及其说明。
已进行过“新颖性检索”,检索报告见附件1。

发明内容
本发明的目的在于提出一种在多端点线网中插入缓冲器进行时延优化的标准单元总体布线方法。本发明的总体思路是针对多端线网中插入单个缓冲器获得最大时延改善的最优位置进行推导,得到求解最优位置的公式。利用现有技术在每条线网不受任何约束的条件下构造连线长最短的Steiner树,然后利用现有技术优化布线拥挤,消除拥挤边,再根据本发明提出的插入缓冲器的方法来优化时延,同时保证布线拥挤最小程度的劣化。再用用户给出的时延约束指标参数数组与其一一对应的从输入PI到输出PO的优化时延相比,如若不满足,则继续迭代程序优化时延,一直到得出一组满足优化目标的所有线网在GRG中的布线树为止。
本发明的特征在于,它是在计算机平台上依次按以下步骤实现的步骤1初始化设置GRC即总体布线单元的行数Nnr,列数Nnc,GRG即总体布线图中所有顶点即GRC中心点的坐标Vnr,nc(x,y),其中,nr,nc分别代表行和列,x,y是芯片平面的坐标;GRG中每条边ek的容量Ck,电路中线网的总数Nsum,每条线网的网表NetlistIndex,每条线网的源点s,漏点t,电路的所有电学性能参数,用户给定的时延约束指标参数;步骤2生成GRG读入在多层布线芯片上划分GRC所必需的Nnr,Nnc,读入在多层布线芯片上生成GRG所必需的各顶点的坐标值,按先行后列的顺序,为所有顶点依次编号;再按先行后列的顺序,给连接每两个相邻顶点的边用ek编号;步骤3读入电路详细连接关系即网表读入电路中线网的总数目Nsum,按照网表读入的顺序,给所有线网编号,得到每条线网包含源点、漏点信息在内的网表;步骤4读入电路的所有电学性能参数和用户给出的时延约束指标,把它们赋到相应的变量和数组中;步骤5采用基于公知的分层Dreyfus-Wagner算法的Tree.cpp程序构造初始时延优化的布线树,即在每条线网不受任何约束条件下构造连线长最短的Steiner树;步骤6
根据步骤5执行后得到的初始解,采用已知的Update_Resources.cpp程序统计总的可用布线资源,标记拥挤区域统计每条GRG边的被使用量dk,比较各条边的容量Ck及使用量dk,若Ck<dk,表示出现布线拥挤,得出拥挤区域,把它在结构EdgeIndex中标记为1,所有经过标记为1的GRG边的线网构成拥挤线网;步骤7采用已知的“基于搜索空间遍历技术的布线拥挤优化算法”的SSTT.cpp程序优化布线拥挤,消除拥挤边,优化过程中各线网为消除拥挤而构造的布线树中,各自选取时延最优的布线树作为该线网的时延最优布线树;步骤8根据步骤7的结果,采用基于公知的“SAKURAI时延计算公式”的Coll_Timing_Info.cpp程序计算并统计每条电信号传输路径从输入PI到输出PO的时延值;步骤9优化电路时延,它依次含有以下步骤9.1利用公知的“基于关键网络技术优化时延的标准单元总体布线方法”所提出的关键网络概念为电路构造关键网络;9.2利用“图与网络规划理论”中公知的“最大流与最小割关系定理”求解关键网络中对时延优化作用最明显,而对拥挤劣化最小的一组线网;9.3把这些线网的布线树替换为各自的时延最优布线树;9.4依次按照下述步骤对这些时延最优布线树进行缓冲器插入,以进行时延优化9.41计算缓冲器在源点到关键漏点的路径上插入时的最优位置,它依次含有以下步骤9.411从步骤9.2中得到的一组线网中找出多端点线网,得到其源点s,关键漏点t,以及源点到关键漏点的连线长度,用l=Σxy∈path(s,t)lxy]]>表示,其中xy表示s到t的连线经过的任意GRG网格边,lxy表示该边的长度, 表示对所有这样边的长度进行求和,即为s到t的总连线长度;9.412根据关键漏点的位置,把多端点线网的时延最优布线树转化为用带有分支的从源点到关键漏点的路径表示的布线树;9.413计算每个分支的电容分支电容=分支长度×单位线电容+分支的负载电容;9.414对相邻两个分支之间的区域,按下式计算缓冲器与源点的最佳插入距离,用x表示x=r(lc+Cll-cb)-(Rs-rb)c2rc,]]>其中,r为单位线电阻,c为单位线电容,cb为缓冲器输入电容,
rb为缓冲器输出电阻,l为源点到关键漏点的路径长度,Rs为源点驱动电阻,Cll为源点到关键漏点路径上,位于插入点之后的各分支总电容与关键漏点t负载电容之和Cll=Σx<xiCi+Ct,]]> 为插入点之后的各分支总电容,Ct为关键漏点t的负载电容,x为插入点到源点的路径长度;若x不落在该区域内,则选择区域两端点中靠近x的端点作为本区域最优插入位置;9.415计算上述9.414所述各个区域最优插入位置的时延改善量,选择取得最大时延改善值的位置作为源点到关键漏点路径上的最优插入点所述时延改善量用D-D’表示,D为该点插入缓冲器前的时延,D’为该点插入缓冲器后的时延D-D′=-βrcx2+[βr(lc+Cll-cb)-β(Rs-rb)c]x+[β(Rs-rb)(lc+Cll)-(βRscb+db)]其中,D为未插入缓冲器时该点的时延,D’为已插入缓冲器后该点的时延,db为缓冲器的本征延时,x为插入点到源点的路径长度,β=2.21,为设定值;9.42计算缓冲器在分支点插入的最优位置按下式计算各分支点的时延改善量 其中,u为任意分支点,Cu为该分支的总电容, 为源点到该分支点的路径总长度,其中xy表示源点到该分支点的连线经过的任意GRG网格边,lxy表示该边的长度, 表示对所有这样边的长度进行求和,即为源点到该分支点的总连线长度;取得时延改善量最大值的位置即为缓冲器最佳插入位置;9.43把源点到关键漏点路径上的最优插入点的时延改善量与最优分支插入点的时延改善量进行比较,选择取得最大值的位置作为最终插入点;步骤10判断布线时延是否满足设定的约束指标若时延优化结果>时延约束指标,则继续执行步骤6-9,重新为电路构造关键网络;否则,程序终止。
本发明方法效果的实验数据进行实验的计算机系统具体描述如下一台Sun公司的V880型工作站;Unix操作系统;
标准C编程语言;Vi编辑器、gcc编译器、gdb调试工具等;以国际基准测试电路MCNC中的5个实例作为测试例子,我们将本发明方法与已有的基于拓扑优化的总体布线算法CNB的测试结果进行了比较。CNB已公开发表于2002年的国际学术会议“Tong Jing,Xian-Long Hong,Hai-Yun Bao et al“A Novel and EfficientTiming-Driven Global Router for Standard Cell Layout Design Based on Critical NetworkConcept”inProc.IEEE ISCAS,2002,Scottsdale,Arizona,USA,I 165-I 168.”。
表1给出了两个算法的时延性能比较,其中,“CNB”表示上述的已有算法,“Buffer”表示本发明提出的插入缓冲器进行时延优化的总体布线算法。表中比较了要求的电路总时延相对于布线结果的电路总时延的增量。实验数据中“-”表示要求的电路总时延小于布线结果的电路总时延,即电路优化没有满足时延约束(电路总时延超过了给定的时延约束)。表1同时给出了插入缓冲器的数目。
表1 电路时延性能比较
“CNB”已有算法[2]“Buffer”本发明提出的插入缓冲器进行时延优化的总体布线算法[3]%占单元数百分比插入缓冲器数目/电路单元数*100%从表1可以看出,在一定的时延约束下,如果仅凭借基于拓扑的时延优化手段,电路时延很可能大于要求的总时延而无法得到进一步优化。而插入缓冲器进行时延优化的总体布线算法能够以很少量的缓冲器数目为代价,有效地对电路总时延进行控制和改善。算法要求的缓冲器数目相对于电路单元数而言非常有限,因而可以在完全可接受的缓冲器数目代价下换取时延的明显改善。
我们在表2中给出两种算法运行时间的比较。从表中可以看出,插入缓冲器进行时延优化的总体布线算法相对于传统算法,可以在更短的运行时间内获得突出改善的时延优化结果。
表2 运行时间比较

拥挤优化也是总体布线的优化目标之一。表3给出了两种算法布线结果的拥挤边数,可以看出缓冲器插入算法的拥挤边数与传统算法基本相当。两算法的线长性能比较在表4中给出,两算法对互连线长具有近似的优化能力。
表3 拥挤边数比较

表4 线长性能比较
%相对CNB线长增量(本发明方法的线长-CNB方法的线长)/CNB方法的线长*100%从上述测试结果对比可以看出本发明方法可以在短时间内以较小的缓冲器插入数目取得很好的时延优化结果,而同时拥挤优化质量也较好。
实验证明它达到了预期目的。


图1两端线网中插入一个缓冲器的示意图。
图2多端线网中插入一个缓冲器的示意图。
图3将多端线网转化为带有分支的路径的示意图。
图4总体布线的示意图。
图5本发明的流程框图。
图6在多层布线的芯片平面上生成的GRG。
图7一个实施例中的关键网络局部图,图中时延数据单位为纳秒(ns)。
图8对图7所示的局部关键网络求得的最小割示意图,图中虚线表示关键网络的割线,三角表示线网中插入的缓冲器,图中时延数据单位为纳秒(ns)。
图9线网net1的当前布线树的示意图。
图10线网net1的时延最优布线树的示意图。
图11将线网net1的时延最优布线树转化为带有分支的路径的示意图,图中长度数据单位为微米(um)。
图12对线网net1的时延最优布线树进行缓冲器插入的示意图。
图13对图7所示的局部关键网络进行缓冲器插入时延优化后的结果图,图中时延数据单位为纳秒(ns)。
具体实施例方式
首先,针对多端线网中插入单个缓冲器获得最大时延改善的最优位置进行推导,得到求解最优位置的公式。该推导过程包含两个步骤,第一步,推导两端点线网插入缓冲器的最优位置。第二步,推导多端点线网插入缓冲器的最优位置。
该推导过程基于公知的“SAKURAI时延计算公式”,下面先给出“SAKURAI时延计算公式”简要介绍。
SAKURAI时延计算公式将互连线看作是具有分布电阻和电容的传输线,该计算公式与实际情况基本相同。时延计算公式为TDZ=βRs(ce+Cz)+αrece+βreCz其中TDZ是参考点的时延值。re是总的连线电阻(它等于单位线电阻r乘以连线的长度),ce是总的连线电容(它等于单位线电容c乘以连线的长度),Rs是驱动晶体管的等效电阻,Cz是负载电容,α=1.02,β=2.21,α和β的取值表示计算的是输出电压Vo从0增加到0.9高电平VDD时的时延值。
而对于一个树型的多端点线网,各节点的时延可根据上一级节点的时延来确定。具体公式如下TDZ(s)=βRsCsTDZ(w)=TDZ(v)+αrcLvw2+βrLvwCw]]>其中节点v为节点w的前驱节点,Lvw为节点v到节点w的连线长度,Cw为节点w之后的总电容,Cs为该线网总的负载电容,c是连线的单位线电容,r是连线的单位线电阻。
第一步 推导两端点线网插入缓冲器的最优位置。
在两端线网中插入一个缓冲器如图1所示。假设线网的源点为s,漏点为t。源点驱动电阻为Rs,漏点负载电容为Ct,单位线电容为c,单位线电阻为r。缓冲器的本征延时为db,输出电阻为rb,输入电容为cb。源点到漏点的路径长度为l。插入缓冲器后将该路径分为前后两段,长度分别为l1和l2。插入缓冲器前t点的时延为D,插入缓冲器后时延为D’,则根据SAKURAI时延计算公式有如下表达式。
D=βRs(l1c+l2c+Ct)+αrc(l1+l2)2+βr(l1+l2)CtD′=βRs(l1c+cb)+αrcl12+βrl1cb+db+βrb(l2c+Ct)+αrcl22+βrl2Ct若获得时延的改善,有如下不等式D-D′=βcl2(Rs-rb)+βCt(Rs-rb)+βrl1(Ct-cb)+2αrcl1l2-βRscb-db>0(1)令x=l1,l=l1+l2,代入(1),可得D-D′=-2αrcx2+[βr(Ct-cb)-βc(Rs-rb)+2αrcl]x+[βcl(Rs-rb)-βCt(Rs-rb)-βRScb-db]>0对x求导得到d(D-D′)dx=-4αrcx+[βr(Ct-cb)-βc(Rs-rb)+2αrcl]=0]]>x=βr(Ct-cb)-βc(Rs-rb)+2αrcl4αrc---(2)]]>
在两端线网插入一个缓冲器的最优位置由(2)式给出。
当源点、漏点满足Ct=cb和Rs=rb时,代入(2)式可得到最优插入位置为x=l2·]]>将x代入(1)式可得l>2(βRscb+db)αrc]]>给出了连线长度的约束。
因此,在两端线网插入一个缓冲器的最优位置为x=βr(Ct-cb)-βc(Rs-rb)+2αrcl4αrc·]]>当源点、漏点满足Ct=cb和Rs=rb时,最优插入位置为x=12·]]>连线长度的约束为l>2(βRscb+db)αrc.]]>第二步 推导多端点线网插入缓冲器的最优位置。
下面推导多端线网插入一个缓冲器的最优位置。在多端线网中插入一个缓冲器如图2所示。假设线网的源点为s,需要进行时延优化的关键漏点为t,设缓冲器插入点为T。源点驱动电阻为Rs,漏点t负载电容为Ct,单位线电容为c,单位线电阻为r。缓冲器的本征延时为db,输出电阻为rb,输入电容为cb。源点到关键漏点的路径长度为l。插入缓冲器的位置为距离源点x处。插入缓冲器前t点的时延为D,插入缓冲器后时延为D’。插入缓冲器后,T点后的总负载电容为CT。
为了计算关键漏点t的时延,我们将多端线网的RC树结构转化为带有分支的路径表示,如图3所示。将插入缓冲器后的树节点分为以下三类插入点(T点)之前,位于s到t路径上的点,如图3的u点;插入点(T点)之前,不位于s到t路径上的点,如图3的v点;插入点(T点)之后的点,如图3的t点。根据SAKURAI时延计算公式,下面分别分析三种节点在插入缓冲器后的时延变化量。
(1)插入点(T点)之前,位于s到t路径上的点,以u点为例。
插入缓冲器后,一方面屏蔽了缓冲器之后的电容,另一方面又在电路中增加了缓冲器本身的输入电容,因此对时延的影响表现在上述两个方面。由SAKURAI时延公式可得,从原来的时延表达式中减少的项为Δ+=βRsCT+Σxy∈path(s,u)βrlxyCT]]>其中, 为源点到u点的路径总长度,其中xy表示源点到u点的连线经过的任意GRG网格边,lxy表示该边的长度, 表示对所有这样边的长度进行求和,即为源点到u点的总连线长度。
新增的项为Δ-=βRscb+Σxy∈path(s,u)βrlxycb]]>(2)插入点(T点)之前,不位于s到t路径上的点,以v点为例。
则首先找到v点所在分支与s到t路径的交叉点,设为u’(图3中u=u’)。
插入缓冲器后,从原来的时延表达式中减少的项为
Δ+=βRsCT+Σxy∈path(s,u′)βrlxyCT---(3)]]>新增的项为Δ-=βRscb+Σxy∈path(s,u′)βrlxycb---(4)]]>(3)插入点(T点)之后的点,以关键漏点t为例。
插入缓冲器后,从原来的时延表达式中减少的项为Δ+=βRsCT+Σxy∈path(s,T)βrlxyCT---(5)]]>新增的项为Δ-=βRscb+βrbCT+db+Σxy∈path(s,T)βrlxycb---(6)]]>我们首先证明最佳插入点必定在从s到t的路径上,或者应位于该路径的某一个特定分支点处。可分析如下假设最佳插入位置在s到t路径的分支上,则可假设图3中的v点为关键漏点,图中的T点插在s到v路径的分支上。v获得的时延改善由公式(3)、(4)给出。注意到u’(图3中u=u’)固定,只有公式(3)中的CT可变。为了最大化v的时延改善,必须最大化CT,因此须将T的位置向u点移动,即到达分支点处。根据公式(3)、(4),最大的时延改善由βRs(Cu-cb)+Σxy∈path(s,u)βrlxy(Cu-cb)]]>给出,其中Cu是该分支的总电容。则可由各分支的时延改善来确定在分支点插入的最优位置。
当最佳插入点位于从s到关键漏点t的路径上时,下面我们确定插入点的位置。
将s到t路径上的分支的总电容依次表示为C1,C2,……,Cn,并令Cll=Σx<xiCi+Ct]]>其中, 为插入点之后的各分支总电容,Ct为关键漏点t的负载电容,Cll为源点到关键漏点路径上,位于插入点之后的各分支总电容与关键漏点t负载电容之和,则CT=(l-x)c+Cll如插入缓冲器后,关键漏点t获得时延的改善,根据公式(5)、(6)有如下不等式D-D′=[β(Rs-rb)+Σxy∈path(s,T)βrlxy][(l-x)c+cll]-(βRscb+db+Σxy∈path(s,T)βrlxycb)>0---(7)]]>将x=Σxy∈path(s,T)lxy]]>带入公式(7),可得D-D′=-βrcx2+[βr(lc+Cll-cb)-β(Rs-rb)c]x+[β(Rs-rb)(lc+Cll)-(βRscb+db)]上式对x求导得到
d(D-D′)dx=-2βrcx+[βr(lc+Cll-cb)-β(Rs-rb)c]=0]]>x=r(lc+Cll-cb)-(Rs-rb)c2rc---(8)]]>此时,在多端线网插入一个缓冲器的最优位置由公式(8)给出。
因此,在多端线网上插入一个缓冲器的最优位置为从源点s到关键漏点t的路径上,距离源点x=r(lc+Cll-cb)-(Rs-rb)c2rc]]>处,其中Cll=Σx<xiCi+Ct;]]>或者位于源点s到关键漏点t路径的满足βRs(Cu-cb)+Σxy∈path(s,u)βrlxy(Cu-cb)]]>取得最大的分支点u处。
具体实施方法是(1)根据关键漏点t的位置,将多端线网的RC树结构转化为带有分支的路径表示。
(2)计算每个分支的电容。
(3)对每个Ci与Ci+1之间的区域,按照式(8)计算缓冲器与源点的最优插入距离x。如果x不落在该区域内,则选择区域两端点中靠近x的端点作为本区域最优插入位置。
(4)计算每个区域最优插入位置的时延改善量,选择取得最大值的位置作为s到t路径上的最优插入点,并与最优分支插入点的时延改善进行比较,选择取得最大值的位置作为最终的插入点。
在前面推导的基础上,下面给出插入缓冲器进行时延优化的标准单元总体布线方法的具体实施方式

对于目前IC设计中的多层布线技术,可布线区域不再是单元间的一条条的布线通道,而是一个完整的芯片平面。可采用网格方式,把整个芯片平面按行和列划分为若干个称为总体布线单元GRC的区域,然后生成GRC的对偶图,即如图4所示的总体布线图GRG。GRG由Nnr×Nnc个节点和连接这些节点的边构成。与GRCnr,nc对应的节点vnr,nc的坐标为GRCnr,nc的中心点。连接两节点vnr1,nc1和vnr2,nc2的边称为ek;lk表示两节点vnr1,nc1和vnr2,nc2之间的距离,称为ek的长度;Ck表示两节点vnr1,nc1和vnr2,nc2对应的两个GRC相邻的边能够通过的线网的连线数,称为ek的容量。于是,线网中要连通的引脚点Pin就映射成为其所在的GRG中对应的一系列节点。这样,GRG中的一个线网就可以用节点的集合表示,而对一个线网的布线问题则对应于求解GRG中节点集{vnr,nc}的Steiner树问题。
本布线方法的流程框图如图5所示。
现在采用国际基准测试电路实例MCNC C5作为本发明的一个实施例,结合图5的程序流程用本发明的总体布线方法进行布线。它依次有如下步骤(1)初始化设行数Nnr=16,列数Nnc=18,如图6所示。此时,GRG图中共有288个顶点,每个顶点都有一个对应的位置坐标(x,y),例如在图6中,v1,1顶点的位置坐标是(44,122),v1,2顶点的位置坐标是(202,122),即可用vnr,nc(x,y)表示,nr表示GRG上第几行,nc表示GRG上第几列,坐标(x,y)是相对芯片平面的坐标原点而言的;共有542条边,每条边都有一个用户给定的容量,从16~17,例如连接v1,1与v1,2的边的容量为16,连接v1,2与v1,3的边的容量为16。
设线网的总数Nsum为1764条,设置用户给出的时延约束指标,如其中一个时延值为7.200000ns。
(2)生成GRG读入Nnr=16,Nnc=18;按照先行后列的顺序,给288个顶点全部编号,分别为1~288号;再按照先行后列的顺序,从1号顶点开始,把542条GRG边全部编号,分别为1~542号。
(3)读入电路详细连接关系即网表读入电路中线网总数Nsum=1764。按照网表读入的顺序,给1764条线网全部编号,分别为net 1~net 1764。于是得到每条线网包含源点、漏点信息在内的网表,其具体形式描述如下22号线网的网表表示是(net 22(vertexList 182,2;164,2;128,1)),1764号线网的网表表示是(net 1764(vertexList 3,2;5,1))。
以net 1764为例,它表示的是第3号顶点是漏点,第5号顶点是源点。它们的通式可表示为(net号(VertexList顶点号,源点/漏点;……)),其中数字1表示源点,数字2表示漏点。
(4)读入电路的所有电学性能参数与约束指标,赋到相应的变量和数组之中读入用户给出的时延约束指标参数赋到数组中,其中一个时延约束指标(从PI到PO)=7.000000ns。
(5)构造初始时延优化的布线树采用Tree.cpp程序完成。其中采用现有技术“分层Dreyfus-Wagner算法”。它已公开发表于1998年的国内核心期刊“鲍海云,洪先龙,蔡懿慈等.‘基于Dreyfus-Wagner算法的Steiner树分层构造算法’.《微电子学与计算机》,1998,增刊41~44”。用该算法求出的初始布线树其形式如下#Init_Steiner_Tree 22((connect 128 146)(connect 146 164)(connect 164 182))……………………#Init_Steiner_Tree 1764(
(connect 3 4)(connect 4 5))其通用表达式为#Init_Steiner_Tree XXX((connect 顶点号 顶点号)…………(connect 顶点号 顶点号))(6)统计总的可用布线资源,标记拥挤区域采用Update_Resources.cpp程序完成。统计每条GRG边的被使用量(即有多少线网通过了该边)dk,再把它与允许容量Ck比较,若Ck<dk,则表明出现布线拥挤,把它在结构EdgeIndex中标记为1;把所有经过标记为1的GRG边的线网确定为拥挤线网。
本实施例中,共标记出221条布线拥挤的GRG边,598个拥挤线网。
(7)优化布线拥挤,消除拥挤边采用SSTT.cpp程序完成。其中采用了“基于搜索空间遍历技术(SSTT)的布线拥挤优化算法”,它已公开发表于2001年的国际学术会议“Tong Jing,Xian-Long Hong,Hai-Yun Bao,et al.‘An Efficient Congestion Optimization Algorithm for Global Routing Based onSearch Space Traversing Technology’.In Proceedings of IEEE ASICON,2001,114~117”。
在本实施例中,进行布线拥挤的优化后,消除了全部拥挤边。
(8)统计电路时延信息采用Coll_Timing_Info.cpp程序完成。根据步骤(7)执行后的布线结果进行时延计算,得到每条电信号传输路径从输入PI到输出PO的时延值。所采用的模型为公知的“SAKURAI时延计算公式”。
最后,把用户时延约束指标与上述计算出的每条电信号传输路径的延迟值进行比较,分析得到此时时延不满足用户要求的关键路径。
(9)优化电路时延用BO_Timing.cpp程序完成。首先,利用关键网络概念[已申请的国家发明专利洪先龙,经彤,鲍海云,蔡懿慈,许静宇.发明名称基于关键网络技术优化时延的标准单元总体布线方法.申请日期2002/01/15.申请号为02100354.8.已于2002/07/24被公开,于2004/05/19被授权],为电路构造关键网络。
下面对关键网络概念进行简单的介绍在集成电路中,电信号的传递有2种形式(1)信号在单元内部传递信号由单元的一个或多个输入pin,经过单元内部的逻辑变换,传递到单元的输出pin;(2)信号在单元之间传递以单元的输出pin为源点,经过线网对应的布线树传递到其他一些单元的输入pin。如果将电路单元的端口看成是顶点,将信号在单元内部和单元之间的传递看成是连接顶点的边,以信号传递的时延作为边的权值,再增加虚拟的电路总输入s和总输出t,则逻辑电路可以自然地转化为一个网络结构。其中为了方便表示,加入两个虚拟的顶点源点s表示虚拟的电路总输入,汇点t表示虚拟的电路总输出。
对网络中的某一个顶点i,其总是对应一对数值最早到达时间tE(i)和最迟到达时间tL(i),分别表示信号从源点传递到该顶点的实际时间,以及信号为了满足时延约束而必须到达该顶点的最迟时间。于是,可以设想汇点t的最早到达时间对应的是整个电路的总时延,它决定了整个电路的速度,记为TE。同时,电路设计者要对整个电路的速度加以控制,提出总时延要求,称为要求的总时延,记为TL。若某顶点i的最早到达时间大于其最迟到达时间,即满足tE(i)>tL(i),称该顶点为关键pin;若两顶点i、k之间存在边,delay(i,k)表示它们之间的时延,且tE(i)+delay(i,k)>tL(k),则称边(i,k)为关键边。关键网络理论证明了若TE>TL,时延传递网络中存在着由且仅由关键pin和关键边构成的子网络N,N=(V,E,d,s,t)。其中V为关键pin的集合,E为关键边的集合,d为有向边对应的时延值。该子网络N称为关键网络,它反映了当前对电路总时延影响最大的子网络的时延情况。
本实施例中,建立了一个包含全部396个关键pin、198条关键边的关键网络,其局部如图7所示。在图7中,共有30个关键pin、15条关键边。其中,从PI到路径中每个门的输出pin的最早到达时间已在该门(图7中的方框)中标出,即图7中方框所标出的延迟值都是以PI为起始点到门的输出pin的延迟值,单位为纳秒(ns)。在图7中,从PI到PO的延迟为7.359ns。与要求满足的时延约束指标7.000000ns相比,超出了0.359ns。
为了从关键网络中选择一组边对应的线网进行时延优化,我们利用了“图与网络规划理论”中的“最大流与最小割关系定理”(属于现有技术,王永县编著,《运筹学——规划论及网络》中的第五章,清华大学出版社,1993)。挑选每个线网在拥挤优化中得到的时延最好的布线树,作为该线网的时延最优布线树。假设将网络中的某边所对应线网的布线树替换为时延最优布线树后,该边的时延改进量为Δd(Δd为正数表示时延改善),拥挤度代价的改进量为Δc(Δc为正数表示拥挤度改善),则按照如下方法设定时延改进权值如果当前布线树就是时延最优布线树,设定权值为1,表示单纯更换布线树后时延参数不能得到优化,但可以通过插入缓冲器得到改善;如果时延最优布线树Δd>0且Δc>0,则权值为0,表示更换布线树有利于对时延和拥挤度的同时优化;如果Δd>0而Δc<0,则权值为Δc2/Δd,表示以一定的拥挤度劣化为代价换取对时延的优化。通过求解关键网络中的最小割的方法,可以得到关键网络中对时延优化作用最明显,而对拥挤劣化最小的一组线网,如图8虚线所示。其中,有1个多端点线网,由net1标识,其源点为s1,有3个漏点,分别为t1、t2、t3;有3个两端点线网,分别由net2、net3、net4标识。两端点线网net2、net3、net4的布线树的形状为直线连接;多端点线网net1的布线树的形状如图9所示(注在总体布线工艺阶段,不同漏点,如t1与t3可用形如图中的布线树连接,反映的是大致走线趋势)。
将这些线网的布线树替换为各自的时延最优布线树。其中,两端点线网net2、net3、net4的时延最优布线树的形状仍为直线连接;多端点线网net1的时延最优布线树的形状如图10所示。
然后,进行缓冲器插入,其插入位置由前面推导的最优位置公式计算可得。在本实施例中涉及的电学参数取值如下表表5 本实施例中涉及的电学参数取值

以两端点线网net3为例,其包含一个源点和一个漏点,因此该漏点即为关键漏点。源点到关键漏点的连线长为l=9360um(微米)。由于net3源点、漏点满足源点驱动电阻Rs等于缓冲器输出电阻rb;漏点负载电容Ct等于缓冲器输入电容cb,根据前述对两端点线网插入缓冲器的最优位置的推导,最优插入位置为源点到关键漏点的连线的1/2处,即l1=l2=l/2。则缓冲器的插入位置为距离源点4680um处。
设插入缓冲器前t点的时延为D,插入缓冲器后时延为D’,将表5中的电学参数代入前面根据SAKURAI时延计算公式推导的结果,有D=βRs(l1c+l2c+Ct)+αrc(l1+l2)2+βr(l1+l2)Ct=0.4917+0.7909+0.0124=1.2950ns(纳秒)而根据(1)式,D-D′=βcl2(Rs-rb)+βCt(Rs-rb)+βrl1(Ct-cb)+2αrcl1l2-βRscb-db=0.3954-0.0035-0.0364=0.3555ns因此D’=D-0.3555=0.9395nsnet3插入缓冲器前的关键漏点时延为1.2950ns(纳秒),插入缓冲器后的关键漏点时延为0.9395ns,时延改善量为0.3555ns。
对于多端点线网net1,其源点为s1,关键漏点为t1,源点到关键漏点的连线长为l=7584um,依次按照下述步骤来计算插入缓冲器的最优位置一)计算缓冲器在源点到关键漏点的路径上插入时的最优位置,包含以下4个步骤1)根据关键漏点t1的位置,将多端线网net1的时延最优布线树转化为带有分支的源点到t1的路径表示。如图11所示,该路径有两个分支,路径和分支的位置及长度在图中标出。
2)计算每个分支的电容。
分支电容=分支上的连线电容+分支的负载电容=分支长度×单位线电容+分支的负载电容将表5中的电学参数和分支的长度代入上式,可得分支1 电容 C1=234um×0.118fF/μm=0.0276pf(皮法)分支2 电容 C2=234um×0.118fF/μm=0.0276pf(皮法)3)对每个Ci与Ci+1之间的区域,按照式(8)计算缓冲器与源点的最优插入距离x。如果x不落在该区域内,则选择区域两端点中靠近x的端点作为本区域最优插入位置。
图11所示的路径有两个分支,将路径分为3段,下面分别计算每个区域对应的缓冲器插入位置3-1)s1与分支1之间的区域根据前述对多端点线网插入缓冲器的最优位置的推导,Cll=Σx<xiCi+Ct=C1+C2+Ct=0.0276pf+0.0276pf+0.008pf=0.0632pf]]>将表5中电学参数代入(8)式,可得本区域中最优插入距离为x=r(lc+Cll-cb)-(Rs-rb)c2rc=7.13×10-51.77×10-8=4028um]]>由于该区域范围为0到316um,x不落在该区域内,则选择区域两端点中靠近x的端点,即分支1与路径的交点u1作为本区域最优插入位置,即x=316um3-2)分支1与分支2之间的区域根据前述对多端点线网插入缓冲器的最优位置的推导,Cll=Σx<xiCi+Ct=C2+Ct=0.0276pf+0.008pf=0.0356pf]]>将表5中电学参数代入(8)式,可得本区域中最优插入距离为x=r(lc+Cll-cb)-(Rs-rb)c2rc=6.92×10-51.77×10-8=3910um]]>由于该区域范围为316到790um,x不落在该区域内,则选择区域两端点中靠近x的端点,即分支2与路径的交点u2作为本区域最优插入位置,即x=790um。
3-3)分支2与t1之间的区域根据前述对多端点线网插入缓冲器的最优位置的推导,Cll=Σx<xiCi+Ct=Ct=0.008pf]]>将表5中电学参数代入(8)式,可得本区域中最优插入距离为x=r(lc+Cll-cb)-(Rs-rb)c2rc=6.71×10-51.77×10-8=3791um]]>由于该区域范围为790到7584um,x落在该区域内,x为本区域最优插入位置,即x=3791um。
4)计算每个区域最优插入位置的时延改善量,选择取得最大值的位置作为s1到t1路径上的最优插入点。
将上述三个区域求得的插入点位置x分别代入(7)式,求得时延改善量D-D’4-1)对于s1与分支1之间的区域,Cll=0.0632pf,x=316um,时延改善量为D-D′=-βrcx2+[βr(lc+Cll-cb)-β(Rs-rb)c]x+[β(Rs-rb)(lc+Cll)-(βRscb+db)]=-0.00195+0.04976-0.03994=0.00787ns4-2)对于分支1与分支2之间的区域,Cll=0.0356pf,x=790um,时延改善量为D-D′=-βrcx2+[βr(lc+Cll-cb)-β(Rs-rb)c]x+[β(Rs-rb)(lc+Cll)-(βRscb+db)]=-0.01221+0.12080-0.03994=0.06865ns4-3)对于分支2与t1之间的区域,Cll=0.008pf,x=3791um,时延改善量为D-D′=-βrcx2+[βr(lc+Cll-cb)-β(Rs-rb)c]x+[β(Rs-rb)(lc+Cll)-(βRscb+db)]=-0.28109+0.56233-0.03994=0.24130ns取得时延改善量最大值的位置为分支2与t1之间的区域。即当插入点位于s1到t1路径上时,最优插入位置为距离源点x=3791um处,时延改善量为0.24130ns。
二)计算缓冲器在分支点插入的最优位置。
根据前面的推导,缓冲器在分支点插入时,最大的时延改善由βRs(Cu-cb)+Σxy∈path(s,u)βrlxy(Cu-cb)]]>给出,其中Cu是该分支的总电容。将表5中的电学参数和两个分支的电容分别代入上式对于分支1,Σxy∈path(s,u)lxy=316um]]> =0.00866+0.00103=0.00969ns
对于分支2,Σxy∈path(s,u)lxy=790um]]> =0.00866+0.00257=0.01123ns取得时延改善量最大值的位置为分支2。即当插入点位于分支点时,最优插入位置为分支2上,时延改善量为0.01123ns。
三)将s1到t1路径上的最优插入点的时延改善量与最优分支插入点的时延改善进行比较,选择取得最大值的位置作为最终的插入点。
通过对(一)和(二)计算结果的比较,可得最优插入位置为s1到t1路径上,插入位置为距离源点x=3791um处,插入位置如图12所示。时延改善量为0.24130ns,从而达到了时延优化的目的。按照上述过程,依次对关键网络割线上的线网进行缓冲器插入的时延优化,其优化后的时延值在图13标出。这时,从PI到PO的延迟为6.585ns,小于时延约束指标7.000000ns。于是,实现了电路的时延优化。
实施系统为了实现,或者说是具体实施本项发明,我们给出以下关于发明实施的描述。
实施本发明的计算机系统本发明所设计的总体布线软件要在一个具体的计算机系统上得以实施,该计算机系统具体描述如下。
一台Sun公司的V880型工作站;Unix操作系统;标准C编程语言;Vi编辑器、gcc编译器、gdb调试工具等。
权利要求
1.多端线网插入缓冲器优化时延的标准单元总体布线方法,其特征在于它是在计算机平台上依次按以下步骤实现的步骤1初始化设置GRC即总体布线单元的行数Nnr,列数Nnc,GRG即总体布线图中所有顶点即GRC中心点的坐标vnr,nc(x,y),其中,nr,nc分别代表行和列,x,y是芯片平面的坐标;GRG中每条边ek的容量Ck,电路中线网的总数Nsum,每条线网的网表NetlistIndex,每条线网的源点s,漏点t,电路的所有电学性能参数,用户给定的时延约束指标参数;步骤2生成GRG读入在多层布线芯片上划分GRC所必需的Nnr,Nnc,读入在多层布线芯片上生成GRG所必需的各顶点的坐标值,按先行后列的顺序,为所有顶点依次编号;再按先行后列的顺序,给连接每两个相邻顶点的边用ek编号;步骤3读入电路详细连接关系即网表读入电路中线网的总数目Nsum,按照网表读入的顺序,给所有线网编号,得到每条线网包含源点、漏点信息在内的网表;步骤4读入电路的所有电学性能参数和用户给出的时延约束指标,把它们赋到相应的变量和数组中;步骤5采用基于公知的分层Dreyfus-Wagner算法的Tree.cpp程序构造初始时延优化的布线树,即在每条线网不受任何约束条件下构造连线长最短的Steiner树;步骤6根据步骤5执行后得到的初始解,采用已知的Update_Resources.cpp程序统计总的可用布线资源,标记拥挤区域统计每条GRG边的被使用量dk,比较各条边的容量Ck及使用量dk,若Ck<dk,表示出现布线拥挤,得出拥挤区域,把它在结构EdgeIndex中标记为1,所有经过标记为1的GRG边的线网构成拥挤线网;步骤7采用已知的“基于搜索空间遍历技术的布线拥挤优化算法”的SSTT.cpp程序优化布线拥挤,消除拥挤边,优化过程中各线网为消除拥挤而构造的布线树中,各自选取时延最优的布线树作为该线网的时延最优布线树;步骤8根据步骤7的结果,采用基于公知的“SAKURAI时延计算公式”的Coll_Timing_Info.cpp程序计算并统计每条电信号传输路径从输入PI到输出PO的时延值;步骤9优化电路时延,它依次含有以下步骤9.1利用公知的“基于关键网络技术优化时延的标准单元总体布线方法”所提出的关键网络概念为电路构造关键网络;9.2利用“图与网络规划理论”中公知的“最大流与最小割关系定理”求解关键网络中对时延优化作用最明显,而对拥挤劣化最小的一组线网;9.3把这些线网的布线树替换为各自的时延最优布线树;9.4依次按照下述步骤对这些时延最优布线树进行缓冲器插入,以进行时延优化9.41计算缓冲器在源点到关键漏点的路径上插入时的最优位置,它依次含有以下步骤9.411从步骤9.2中得到的一组线网中找出多端点线网,得到其源点s,关键漏点t,以及源点到关键漏点的连线长度,用l=Σxy∈path(s,t)lxy]]>表示,其中xy表示s到t的连线经过的任意GRG网格边,lxy表示该边的长度, 表示对所有这样边的长度进行求和,即为s到t的总连线长度;9.412根据关键漏点的位置,把多端点线网的时延最优布线树转化为用带有分支的从源点到关键漏点的路径表示的布线树;9.413计算每个分支的电容分支电容=分支长度×单位线电容+分支的负载电容;9.414对相邻两个分支之间的区域,按下式计算缓冲器与源点的最佳插入距离,用x表示x=r(lc+Cll-cb)-(Rs-rb)c2rc,]]>其中,r为单位线电阻,c为单位线电容,cb为缓冲器输入电容,rb为缓冲器输出电阻,l为源点到关键漏点的路径长度,Rs为源点驱动电阻,Cll为源点到关键漏点路径上,位于插入点之后的各分支总电容与关键漏点t负载电容之和Cll=Σx<xiCi+Ct,Σx<xiCi]]>为插入点之后的各分支总电容,Ct为关键漏点t的负载电容,x为插入点到源点的路径长度;若x不落在该区域内,则选择区域两端点中靠近x的端点作为本区域最优插入位置;9.415计算上述9.414所述各个区域最优插入位置的时延改善量,选择取得最大时延改善值的位置作为源点到关键漏点路径上的最优插入点所述时延改善量用D-D’表示,D为该点插入缓冲器前的时延,D’为该点插入缓冲器后的时延D-D′=-βrcx2+[βr(lc+Cll-cb)-β(Rs-rb)c]x+[β(Rs-rb)(lc+Cll)-(βRscb+db)]其中,D为未插入缓冲器时该点的时延,D’为已插入缓冲器后该点的时延,db为缓冲器的本征延时,x为插入点到源点的路径长度,β=2.21,为设定值;9.42计算缓冲器在分支点插入的最优位置按下式计算各分支点的时延改善量 其中,u为任意分支点,Cu为该分支的总电容, 为源点到该分支点的路径总长度,其中xy表示源点到该分支点的连线经过的任意GRG网格边,lxy表示该边的长度, 表示对所有这样边的长度进行求和,即为源点到该分支点的总连线长度;取得时延改善量最大值的位置即为缓冲器最佳插入位置;9.43把源点到关键漏点路径上的最优插入点的时延改善量与最优分支插入点的时延改善量进行比较,选择取得最大值的位置作为最终插入点;步骤10判断布线时延是否满足设定的约束指标若时延优化结果>时延约束指标,则继续执行步骤6-9,重新为电路构造关键网络;否则,程序终止。
全文摘要
多端线网插入缓冲器优化时延的标准单元总体布线方法属于IC CAD技术领域,其特征在于在统计时延前先优化布线拥挤;在优化电路时延时先用公知的基于关键网络技术优化时延的标准单元总体布线方法为电路构造关键网络,再用最小割方法找出对时延优化明显而拥挤劣化又小的一组线网,对其中的多端线网用时延最优布线树替换后,在源点到关键漏点的路径上,先把时延最优布线树转化为带有分支的布线树,再根据SAKURAI时延计算公式,从路径最优插入点和最优分支插入点的时延改善中选择其最大时延改善值的点作为缓冲器插入点;然后再判断该点是否符合初始约束指标。它相对传统方法,可在更短时间内得到突出的时延优化结果。
文档编号G06F17/50GK1687934SQ20051001171
公开日2005年10月26日 申请日期2005年5月13日 优先权日2005年5月13日
发明者洪先龙, 经彤, 许静宇 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1