基于深亚微米工艺长互连线延迟优化的设计方法研究
2015-05-29李仁发徐实赵振宇王耀刘畅胡逸騉
李仁发 徐实 赵振宇 王耀 刘畅 胡逸騉
摘 要:随着SoC方法学的使用,集成电路越来越复杂,设计规模越来越大,连线延时已经成为影响时序收敛的关健因素之一.本文提出了一种基于物理设计的长线互连优化方法,即优化关键单元的布局,并选取、增、减repeater来优化时序.本方法根据单元间的位置测定单元间距,指导设计中需要插入的repeater位置及数量.长互连延迟的优化效果与所使用的单元、插入单元的间距、选用的线宽等影响因素有密切关系.28 nm工艺下,在间距200 μm~250 μm时插入8倍驱动(×8)规格的反相器(缓冲器)时效果最好.其次,将互连线上的缓冲器换成反相器, 互连延迟能降低10%.第三,使用更宽的走线能使长互连线延时再降低20~30 ps.
关键词:物理设计;预布局;长线优化;EDA;优化时序
中图分类号:TP302.4 文献标识码:A
随着集成电路工艺的进步,高性能处理器的设计规模已超过10亿晶体管,更多的物理资源,更高的器件密度导致后端物理设计变得越来越复杂,时序收敛成为高性能处理器实现的关键节点[1].在深亚微米工艺中,互连线延时与单元延时在整个电路延时中严重影响着时序的收敛,如何优化长线时序是当前的研究热点.
当前,互连线延迟优化方法的研究工作主要面向自动化工具建模.文献[2]提出了一种在EDA工具中使用基于预布局的时序优化方法,但是这种方法纯粹依赖EDA工具进行时序优化很难达到预期的效果,经常需要对关键路径进行手动修改.文献[3]从3D IC设计角度,以全新的眼光看待长线延迟带来的不便,从三维层面的角度对走线优化问题提出了看法,具有很强的启发性.
本文提出了一种基于长线互连延迟的优化方法.该优化方法针对飞腾微处理器中,长线互连所占比重很高,并且集中在1 800~2 200 μm,商业工具无法将时序优化收敛的情况下,通过对关键路径上的标准单元进行提前布局,即在布图规划阶段,硬核模块摆放完成之后,将关键路径上的标准单元类似于硬核模块进行手动布局,并在预布局阶段对存在的长路径进行时序优化.
在实际芯片模块物理实现的过程中,我们发现EDA工具反复迭代并且难以优化的路径绝大部分都是在长线互连的情况下产生的[4].这是因为一旦路径中出现了较长的互连线会直接导致改路径上的Slew变长,进而导致当前路径的延迟显著增大.
为了避免这种现象,我们对设计当中出现的长线互联路径对其使用的单元,驱动路径的长度均进行了专门优化,使得EDA工具在运行时间上大大缩减.同时由于整个模块中时序较差的路径绝大部分也属于长线互联,进过专门优化后,也使得整个设计模块的违例大大减少,数据端的数据也能到得更快.
本文结构组织如下:首先,引入互联线的分析模型和长线延时的计算方法,研究插入优化缓冲器尺寸、位置和数量对延时的影响.然后,对一段长线延时理论上的最佳优化方法进行深入分析.对不同情况下的长线延时给出最优化方案.最后,使用所提出的算法对长互联线进行优化,并与优化前的延时进行比较,结果证明所提出的方法可有效减小互联线的延时.
1 长线优化方案
1.1 基本的长线延迟模型
导线的寄生(电容、电阻)参数是沿它的长度方向分布的,而不是集中在一点,需要建立分析模型来分析其延迟[5].本文的目标设计中,长线发生的场景一般在顶层全局互连上,这部分互连的特点是距离长,但互连数量不多,考虑到全局布局的空间资源,一般不容易出现紧密相邻的长互连线,串扰问题可通过增加线间距和换层来解决,因此可以不考虑串扰以及其它噪声对时序的影响.对于一段较长的导线,可以把它表示成一个n段RC的结构,总电阻和电容分别表示成:
Rwire=nRw, Cwire=nCw.
Rwire为长线的等效电阻,Cw为长线的等效电容.
线延迟分析模型复杂,而且计算速度慢,因此人们开发了多种简化RC模型,艾蒙延时计算模型是其中之一.艾蒙延时计算模型中,节点i处的延时可以由下式给出:
T=∑Nk=1CkRik.(1)
因此,对于一个分成三节的长线来说,计算艾蒙延时为:
T=R1C1+(R1+R2)C2+(R1+R2+R3)C3.(2)
对于一条总长L的导线,如果把它平均分成n份,每段长为l,l=L/n,设Rl为路径单位长度的电阻,Cl为导线单位长度的电容,则导线总的艾蒙延时为
Tl=(lRl)·(lCl)+2(lRl)·(lCl)+3(lRl)·
(lCl)+…+n(lRl)·(lCl)=
L2·RlCl/2=RwireCwire/2.(3)
于是,长线延迟最优问题转换成求Rwire和Cwire的最优解问题.
1.2 缓冲器插入算法
由式(3)可知,长线延时和导线的总长度L成平方关系.通常在长线中选择合适的位置插入中继单元,把长线分成若干段,这样长线的总延时与总长L的关系线性化,从而达到减少总延时的目的.
一个比1X大M倍驱动能力的缓冲器的等效电阻R,输入电容Cin和输出电容Cout分别为:(比1X大M倍不准确,意味着M+1倍)
Reff=Reqn/M;
Cout=CeffWn(1+β)=CJ(1+β);
Cin=CgWn(1+β)=CG(1+β);
其中,M为使用缓冲器的倍数,Ceff为单位宽度的有效电容,β为PMOS与NMOS器件的尺寸比,Wn是1X缓冲器NMOS器件的尺寸.由此可知,每一段的埃蒙延迟为:
τ=ReqnM[Cin+CinL2N]+
[ReqnM+RinLN][CinL2N+Cout].
因此,优化后的长线总埃蒙延迟为:
τall=N×τ=N(CG+CJ)Reqn(1+β)+
[CG(1+β)RinM+CinReqnM]L+[CinRin2N]L2.(4)
要使
CG(1+β)RinM+CinReqnM≥
2CG(1+β)RinM×CinReqnM
成立,则:
CG(1+β)RinM=CinReqnM(5)
即,当M=CinReqnCG(1+β)Rin,
N=L2CinRin2(CG+CJ)Reqn(1+β)时可以得到优化该长线的最佳值.
可见,随着插入单元间距的增大,延时趋势先降后增.这是因为当所分的段数过多,缓冲器器件本身的延时将超过它所优化掉的长线延时.使用以上方法可以得到理论上最优的S和k值,从而实现最小长线延时.
例如,28 mCMOS工艺中,M5层金属走线特性如下:
Rin=3.27 Ω/μm,Cin=0.1 fF/μm,L=2 000 μm,Reqn=12.5 kΩ, CG=2 fF/μm,Ceff=1 fF/μm,W=0.2 μm,β=2.
通过计算可以得到,×16倍驱动器驱动2 000 μm长线的延迟为0.780 ns.使用式(4)计算后推荐值使用驱动能力为×8的buffer,2 000 μm距离平均插入5个buffer延迟,则延迟降低为0.440 ns,下降36%.
2 长线优化方法
一般地,在基于标准单元的芯片设计中,在布局阶段对长线进行干预,能对时序收敛产生特别明显的效果[6].布图规划阶段,先要解决芯片内部结构在物理上的排布,主要确定芯片大小,完成芯片输入输出(I/O)单元、模块以及大量硬核(IP核、模块)的规划等.在规划的过程中,需要根据模块间的相关关系、数据流向以及模块规模,来确定这些硬模块之间的相对位置(面积、形状、端口),规划的好坏直接影响芯片的整体性能.合理的布局,能极大缩短模块间距离,减少长路径的数量.
2.1 长线优化实现流程
图1是物理设计阶段长线优化的具体实现流程[7].
1)将完成布局规划之后的设计导入EDA(Electronics Design Automation,电子设计自动化)工具.
2)让EDA工具进行标准单元的布局,然后做时序分析,分析关键路径.
3)依据逻辑单元间的互连关系,将需要进行预布局的逻辑单元固定在特定的位置处,保证其位置不会因EDA工具优化而改变.
4)完成逻辑单元位置固定,通过工具将布图规划的结果保存下来,在下一次重新导入设计的时候,就可以直接将带有预布局的布图规划导入设计,即完成标准单元的布局.
需要注意到的是图中优化设计(Optimization Design)的过程,即设计工具与手工加入干预设计的过程,需要反复迭代.
本方法根据已得到的延迟信息在Place阶段完成之后的对具有较长互连的数据路径进行更换单元类型、调整单元间距等方式分别优化.将路径上需要互联的单元提前进行布局并输入命令保证已布局的单元不会因EDA工具优化而产生位置的变化,这样就可以在确保大路径方向不变的情况下对特定路径进行优化.具体流程如图2所示.
图2 长线延迟优化方法的引入
Fig.2 Interconnect delay optimization flow
具体的实现步骤如下:
1)设计文件输入以及布局首先要有一个已经确定的布局来避免迭代,将输入信息读入EDA工具.
2)长线路径优化计算,由时序分析中违例路径找出违例的长互连路径,从第一条路径开始计算,根据当前路径的两级非成对反相器、非缓冲器的距离,通过公式预估出当前路径上平均插入单元的个数与间距,确定坐标位置,并将其信息输出成tcl脚本形式,以便在下一步中应用.在这之后即可继续进行下一条路径的优化预估.
3)在指导意见的前提下,对长互连路径上的单元进行优化摆放,使得初始寄存器位置固定.
4)设置约束,对于已优化路径上的单元进行约束,防止EDA工具错误优化,将已布局的长线路径重新优化.
5)照正常步骤运行流程,直到布线阶段抽取寄生参数,进行时序分析得到优化过的关键路径的时序,确认优化成功与否.
6)根据最终得到的结果对优化不成功的长线路径进行小范围的重新优化.
从图中可以看出,首先在一个已经确定的布局结果的基础上由静态时序分析得到违例路径报告,从中选取出由长线互联导致违例的路径进行逐一分析优化.由于在基于EDA工具的设计流程中肯定会进行某种程度的优化来保证时序的正常,这些静态时序分析报告中的违例路径一般就是工具反复多次优化所不能解决的路径;在此基础之上重新运行一遍流程,在当次流程中Place阶段对上一遍流程中优化过的路径上的单元按照已优化的结果进行摆放并继续运行EDA流程.
通过以上这种流程上的调整,使得在工具运行过程中无法得到优化的路径通过人为的、经验化的手段达到了减少违例路径的目的,通过这一方式也减少了工具的迭代,节约了设计资源.如果经过优化的路径或设计仍然不能满足设计者的要求,那么就需要在第二轮设计中对从place阶段开始的每个阶段进行详细分析,找出工具在运行过程中导致时序变差的误操作并人工对其进行修改,这些修改可以是对EDA工具流程的优化也可能是对当前设计不合理处的改动.
在运行的过程中还需要注意的是,对于已修改的路径可能会对其他布线好的路径造成更大的延迟和违例,需要仔细检查.这是因为在优化当前路径的前提下,可能正好占用了其他路径上的布局布线资源,使得本来已经布局布线无错误的路径因为单元位置的改动导致走线的复杂化[8].
选取在place阶段对特定路径进行调整的原因在于该阶段仅对单元进行了摆放没有真实走线,尽量早期就对设计进行干预,可以尽量减少优化长线互连路径所消耗的时间.
由于芯片设计的特殊性,后端物理流程一般居于整个芯片设计的最后,工程量大,时间紧,对于完成设计时间的要求尤为突出.长线优化方法不仅降低了长线互连的延迟,还大大减少了工具反复优化长线路径的迭代时间.
本文在常规物理设计流程的基础上对长线优化方法进行改进,在物理设计早期对长线进行优化干预,使得设计者在物理流程的运行过程中不再是被动的等待结果、运行机器流程,而得以提前对关键路径进行人为的干预大大减少运行时间、优化时间.
如图3,实际运行中设计113万单元的模块(其中主要单元为SRAM),在相同脚本设置的前提下,对其中的200条关键路径均进行手工路径优化之后运行同样步骤所需时间由原来的29 h缩减至23 h.大大减少了设计中的运行时间和迭代.这在漫长的后端物理设计优化迭代的过程中,是难能可贵的.
使用长线互连优化方法优化前后的时间对比如图4~5所示.可以看到整个设计流程的运行时间由原来的29 h减少到了23 h,得到了较好的效果.
经过长线互连优化的模块不仅能够大大降低运行时间,而且由于在一个设计模块中的长线路径一般都是时序违例较大或者延迟较高的路径,经过特定优化手段后其时序也能得到大幅优化.大幅降低了整个模块的违例路径数量,而且降低了模块设计的难度.
2.2 验证实验原理
根据插入缓冲器的技术参数,利用公式进行计算,可以指导插入单元驱动能力和单元数的选择.下面以飞腾高性能微处理设计中,使用本优化的缓冲器插入方法优化长互连线时序为例,说明实验的基本原理,验证插入缓冲器方法的正确性与实用性.
图6(a)是EDA自动优化后的结果,图6(b)是利用本优化方法后的结果.对比图6(a)和6(b)可以看出,互连线延时由原来的809 ps降低到600 ps,延迟优化25.8%.
3 长线优化实验
本实验从插入不同缓冲器、更改走线层次和合理控制单元距离3个方面进行优化.优化时,还需要综合考虑噪声、功耗等多种情况.影响优化的考量主要有以下几个方面:1)走线宽度;2)所用单元自身的延迟;3)所用单元间的距离;4)所用单元的类型.
(a)EDA优化后的时序路径
(b)插入缓冲器优化后的时序路径
图6 缓冲器优化前后的延迟情况
Fig.6 Timinganalyse about optimize
本设计的工艺中,不同走线层次的走线宽度不同,分别为0.05 μm,0.10 μm和0.20 μm 3种规格,单位距离的线延迟差异很大,计算和分析结果的时候需要特别考虑.为了使实验具有说服力,我们选取比较具有代表性的4倍驱动(×4),6倍驱动(×6),9倍驱动(×9),11倍驱动(×11),13倍驱动(×13),16倍驱动(×16) 6种规格的中继单元,即buffer和inverter,分别在2 000 μm长度下均匀间隔插入2~12个中继单元.这个实验可以得出:1)不同规格的单元在什么情况(插入间距)下能达到最佳;2)横向比较获得,长线下的最佳中继单元.实验参数如表1所示.
值得注意的是,单元的驱动能力越强,工作电流越大,尤其是反转时的短路电流,容易出现IRdrop和EM问题.因此,在经验中不把大驱动单元作为研究对象,但这种单元往往会在时序收敛的最后阶段采用.
3.1 长线延迟影响因素分析
插入中继单元的互连线是非常有效互连线时序优化方法[9].插入缓冲器优化技术能否达到最优的优化效果主要取决于所选用单元驱动的大小、数目和单元间的间距以及走线的宽度是否合适.
下面的实验是针对不同间距插入不同缓冲器,进而得到插入缓冲器驱动的大小、单元间距、走线的宽度和数目的具体参数.
从图7中可得出:在同一条长线上插入不同驱动缓冲器,BUF16在表1所列的缓冲器中对互连线延时优化效果最好;随着插入BUFER单元间距的减小,所有实验组延时呈现先减小后缓慢增加的趋势,并且大约在400~333 μm这段距离内取得整体延时的最小值.值得注意的是,使用0.2 μm线宽的情况时,应选取规格大于×9的buffer,延迟可缩短30~35 ps,而采用其余驱动能力的中继单元并试图通过改变走线宽度来达到大幅减少延迟的目的是不现实的.从图7可看出,单元间距在200~400 μm之间时,所有的INV单元驱动0.2 μm线宽的长线延迟比其它两种规格的线宽更低;当间距增大到285~181 μm时,一部分较小的INV单元驱动0.1 μm甚至0.05 μm线宽的长线延迟可能比0.2 μm线宽更低.因此,结论如下:在单元间间距较远的情况(200~400 μm)下,无论使用何种类型的INV单元均推荐使用0.2 μm宽的走线,但近距离(285~18 μm)连接单元时,则需要使用0.1或0.05 μm线.使用驱动能力大于×9的单元时,使用0.2 μm线是最优的.增大线宽对减小线延迟有正收益,但设计师在使用这一技术时需要注意负面开销(如打孔换层),要综合这些负面开销,来决定是否采用变更走线层次.并且图7还表明,随着插入不同多级缓冲器时,长互连线的总延时总是先减小后增大,这是因为插入缓冲器时会增加缓冲器的器件延时,当增加的器件延时大于优化互连线延时所得到的收益时就会使整体延时反而变大,所以插入缓冲器优化技术也不是插得数目越多越好,要插入适合的数目才会有优化效果.
在此基础上我们又进行了详细的实验对比,从中可以得出:INV、BUFER单元间距离为2 000 μm到666 μm时,使用0.2 μm线宽的连线能获得较好的延时收益,其它距离则与所选取的线宽关系不大,在不同线上插入多个缓冲器时,当互连线延时降低25 ps左右后,再插入缓冲器,会使得长线延时反而增大:尽管互连线自身延时出现呈下降趋势,但插入的器件延时呈上升趋势,总延时随器件数量增多先减小后增大.根据以上实验结果,我们将25 ps作为判断长线的标准,作为可以进行插入缓冲器的一个最小互连线延时值.
从这些图中还可以看出,相同规格下使用INV单元的路径的总延迟总是小于使用相同类型BUFFER路径的总延迟.
3.2 实验结果总结
根据第2节和第3节中的插人缓冲器的估算以及具体路径中应用的效果,在优先考虑性能的前提下,得到了与公式相近的结果,表明公式可以在一定程度上对于长线互连延迟优化的工作起到指导作用.对于长互连线延时的优化,如果采用缓冲BUFER优化延时,每隔285 μm~400 μm间插人一个大小为×16的BUFER时可以使得长互连线延时达到最小;如果采用反相器优化延时,每隔200 μm~250 μm间插人一个大小为×16的反相器可使得总的互连线延时达到最优.
4 结 论
本文分析了深亚微米工艺下大规模物理设计中互连线延时的影响因素及其优化方法,实验研究了不同因素对互连线延时的影响.首先,可以根据单元之间位置测定单元间距并按照设计中的需要指导插入缓冲器的数量.其次,将互连线上的偶数数量的缓冲器换成相同数量的反相器,能大大降低互连线间的延迟,且增加布线空间.第三,使用高层金属能使长互连线延时降低20~30 ps左右,但会增加布线资源的需求.这些方法能对互连线的延时及布线起到一定优化,可以使我们的设计更快收敛.本文只是对互连线延时优化作了初步研究,针对未来更高工艺水平的设计要求,仍需对互连线的延时优化作更深层次的研究.
随着集成电路规模的不断增大,时钟频率也在不断地攀升,如何使得时序收敛成为芯片设计者最关心的问题.本文从标准单元的布局着手,对一些特殊的标准单元,特别是关键路径上的标准单元进行预布局,并对存在的长路径采用插入中间缓冲器来优化延时.本文从模型推导出插入单元的方法,并通过实验验证了这个方法,长互连线延时优化被应用于飞腾微处理器设计中,已经取得了明显的效果.目前本方法还需要大量手工干预和人工分析,而且也没有考虑打孔等其他因素,仅适合在设计有少量长路径违反的前提下使用,或者是在设计过程中EDA进行多次优化迭代后对其无法优化的少数路径再进行优化,自动化是下一步研究内容.
参考文献
[1] ELMORE W C. The transient response of damped linear networks[J]. Journal of Applied Physics, 1948, 19: 55-63.
[2] 苏琦, 黄金明. 快速 buffer 添加算法[J]. 中国集成电路, 2008, 1(10): 32-36.
SU Qi, HUANG Jinming. Quick add buffer algorithm [J]. Chinese Integrated Circuit, 2008, 1(10): 32-36. (In Chinese)
[3] RUEHLI A E. Circuit analysis, simulation and design[M]. NorthHolland, the Netherlands: Elsevier Science, 1987: 116-119.
[4] SAXENA P, MENEZES N, COCCHINI P, et al. Repeater scaling and its impact on CAD[J]. IEEE Transactions on Computeraided Design, 2004, 23(4): 451-463.
[5] OSLER P J. Placement driven synthesis case studies on two sets of two chips: hierarchical and flat[C]//International Symposium on Physical Design. San Diego, California, 2004: 190-197.
[6] LIN Yenhung, CHANG Shuhsin, LI Yihlang. Criticaltrunkbased obstacleavoiding rectilinear Steiner tree routings and buffer insertion for delay and slack optimization[J]. Transactions on ComputerAided Design of Integrated Circuits and Systems, 2011, 30(9): 1335-1348.
[7] 朱樟明, 钱利波, 杨银堂, 等. 一种基于目标延迟约束缓冲器插入的互连优化模型[J]. 半导体学报, 2008, 29(9): 1847-1850.
ZHU Zhangming, QIAN Libo, YANG Yintang, et al. An interconnection constrained optimization model based on buffer insertion target delay [J]. Chinese Journal of Semiconductors, 2008, 29(9): 1847-1850. (In Chinese)
[8] DHAR S, FRANKLIN M A. Franklin optimum buffer circuits for driving long uniform lines[J]. IEEE J SolidState Circuits, 1991, 26(1): 32-40.
[9] 白宁, 林争辉. 深亚微米集成电路中的连线分割和缓冲器插入[J]. 上海交通大学学报, 2002, 36(3): 323-327.
BAI Ning, LING Zhenghui. Line segmentation and buffer in deep sub micron integrated circuit insertion [J]. Journal of Shanghai Jiaotong University, 2002,36(3):323-327. (In Chinese)