这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 深亚微米设计中的静态时序分析方法

共1条 1/1 1 跳转至

深亚微米设计中的静态时序分析方法

菜鸟
2003-03-15 02:33:12     打赏
随着集成电路制造工艺技术的不断发展,在制造之前要预测IC的时序收敛性能就面临越来越多的困扰,本文介绍静态时序分析(STA)方法在解决时序分析问题上需要考虑的种种问题。 Ravishankar Arunachalam 卡耐基-梅隆大学博士 Lawrence Pileggi 教授 卡耐基-梅隆大学电气和计算机工程 对于今天的深亚微米设计来说,最棘手的问题莫过于时序收敛了。因此,准确的时序校验变得比以前更为重要。随着设计规模和复杂度的增大,使用繁杂的电路仿真进行制造前的时序校验已不切实际。取而代之的是基于静态时序分析(STA)的时序终止(timing sign-off)法,STA估测最坏情况下的电路特性,而与电路的输入模式无关。STA通过包含物理电路节点和加权边缘(weighted edge)的时序图描述电路,加权边缘通过信号延迟描述这些节点间的信号传输情况。然后,STA计算出网络的理论延迟以确定电路中最长或“临界”路径。 节点间的逻辑关系通常可忽略,由此造成的延迟称为网络的拓扑延迟。一般来说,忽略逻辑信息无伤大局,因为在设计充分的电路中,拓扑延迟给出的上限比较接近实际的最大延迟。但是这个上限的精确度依赖于计算信号延迟所用的模型精确度。 尽量接近实际 在STA中,晶体管级的建模可仿真最接近硅片上器件的性能,其结果也是最精确的。但这种仿真非常耗时,因而常将器件的行为抽象为更高级的逻辑门或单元,在ASIC设计中尤其如此。逻辑门通过以下方法进行预先描述:针对不同负载情况和输入组合来精确仿真逻辑门行为,然后将延迟作为负载电容和输入跳变时间等参数的函数来储存。 器件尺寸不断减小,互连延迟现象又普遍存在,于是90年代初我们不得不重新考虑这一传统方案。随着深亚微米技术的出现,逻辑门不再只驱动纯容性负载,长导线也带有分布式RC互连特征。 [img]http://www.eetchina.com/ARTICLES/2001APR/TA92-1.JPG[/img] 由于无法预先描述所有可能的RC负载组合,门延迟不得不通过负载的“有效电容”近似值来分析。除了门延迟被描述为一个有效容性负载的函数外,长RC互连延迟也必须在时序图中单独表示。为了计算由数百个电容和电阻组成的互连电路延迟,模型级缩减技术(model-order reduction technique)采用时间常数近似法,以简单的解析形式描绘相关的传输特征。虽然由长RC互联效应引起的这些变化对延迟建模和计算有重大影响,但用于STA的技术和运算仍然适用。 棘手的耦合问题 不幸的是,不断缩小的IC特征尺寸使RC互连延迟呈现增加的趋势。单个芯片的处理能力越强,就越需在较小的空间内集成并互连更多的逻辑门。这将加大布局和布线的复杂度,使得线路更加拥挤。为了容纳下所有这些连线,金属互连的宽度必须不断减少,同时金属层数却不断增加。由于金属阻抗与其宽度成反比,人们开始采用改变金属连线横截面长宽比的方法来控制阻抗(从而将RC互连延迟限定在合理范围内)。 由于线宽减小了,导线由短粗变为细长以控制阻抗。长宽比的改变又加剧了相邻连线间电气特性的相互影响,这要用邻线间的耦合电容进行建模。另外,由于IC金属互连层数不断增加,较高金属层到基底层的距离也在不断减小,从而减小了对地的电容量。 乍看起来,这种方法似乎无懈可击,但稍加分析就会发现,它会引起很多严重问题。在STA中,某一特定路径的延迟是这样计算的:从输入开始,经过该路径上所有门直至初级输出,将所有延迟累加起来。但当互连路径与相邻连线间存在强耦合时,计算门延迟的方法还能如此简单吗?电容通过晶体管或金属阻抗充电和放电是导致集成电路延迟的主要因素,当非线性源(这是逻辑门的电气表述)为通过电阻网络接地的电容充电时,精确计算延迟就比较困难。然而,由于电容耦合现象普遍存在,电容另一端连接的是互连线,线上信号变化也无法预测。 [img]http://www.eetchina.com/ARTICLES/2001APR/TA92-2.JPG[/img] 如果认为只要计算一个门的固定延迟,并将多个门延迟累加就可得出路径延迟,这一想法显然过于幼稚。这也正是在STA中难以解决耦合电容不断增加问题的症结所在。现在,执行STA的延迟建模问题和算法已密不可分。 分析邻线 让我们考虑逻辑门驱动互连线的情况。一根互连线一般与几根邻线耦合,由于我们关注的是邻线对门/线延迟的影响,我们称这根互连线为“受害线”。需要解决的问题是:这些受害线的存在对静态时序分析的方法有何影响?我们知道这一影响是由大量相关效应决定的,因此可以将这些问题分解,然后逐个分析。 首先,可以观察受害线与邻线的间距,并判断它是否会引起受害线特性的变化,这就必须量化间距的影响。可使用提取工具在合理误差范围内计算出受害线与邻线间的耦合电容。对于每一根邻线,耦合电容在整个电容中所占的比重决定了是否有必要考虑邻线的影响。接下来,要确定这些控制电容另一端的邻线作用。如果是空闲线,就根本没有问题。可以认为这些耦合电容与接地电容没有区别。然而这并不十分精确,因为与空闲线耦合并不完全等同于纯粹接地耦合。但由于邻线总电容远远大于单个耦合电容,可以将它近似看作接地节点。 但是,受害线的邻线不会总处于空闲状态,实际上可能会频繁地跳变。应该确定被分析线在跳变时,其邻线是否也在跳变。 但这并不是解决问题的最后一步。有可能某些邻线在跳变,但却与受害线完全无关。 当受害线在邻线跳变之前完成了所有跳变,或受害线在此之后才进行跳变时,就会出现这种情景。无论哪种情况,为便于计算受害线延迟都可以认为这些邻线是空闲的。 那么邻线跳变何时会影响受害线的延迟呢?当邻线通过耦合电容从或向正在跳变的受害线输入或输出电流时。如果邻线的跳变方向与受害线相反,它们就会吸纳电流,并因而增加受害线的延迟。或者,若邻线与受害线以相同方向跳变,受害线延迟就会减小。由于通过电容的电流依赖于电压的变化率,所以邻线的跳变速度十分重要。跳变得越快,对受害线的影响就越严重。 从上面的讨论可以看出,为了决定受害线的延迟,至少应解决下列问题:受害线跳变时邻线是否也在跳变?如果是,速率多少? “鸡生蛋”问题 但是,在讨论中我们忽略了一个重要问题。由于无法仿真电路的所有可能模式,STA是在不考虑电路输入模式的情况下进行的。这意味着我们不可能精确判断出哪条线路正在跳变及何时跳变。我们能知道的仅是某一信号可能发生跳变的时间段。这一时间段是由某一信号到达的最早和最迟时间表示的。在STA中,通常这一信息在受害线输入端是已知的,我们也希望能确定邻线的时间段。为了得到确切的信息,比如“邻线可能在1.2ns和1.5ns期间跳变”,我们必须精确计算出与邻线相连的门延迟。但是这些门有可能耦合到其它相邻门,所以需要分析它们的邻近门,以确定其到达时间,而这一分析过程是否会停止在某处仍是未知数。 [img]http://www.eetchina.com/ARTICLES/2001APR/TA92-3.JPG[/img] 遗憾的是,受害线的邻线到达时间极有可能与受害线本身的延迟有关。即使在没有物理连接环的情况下,耦合也会在电路中引起“反馈环”。这就产生了“鸡生蛋、蛋生鸡”的问题,导致在STA中无法传播受害信号。因此无法保证能找到最长路径,也不可能在制造前完成时序分析。 还有些问题值得一提。由于容性耦合引起的问题越来越严重,设计者已经花了几年时间解决这一问题。在此期间一直用STA进行时序分析,而由此制造出的芯片也可以工作并能满足时序要求。那么问题在哪儿? 过去,常用方法是将耦合电容作为接地电容,用“米勒系数”衡量。这一衡量值可以有效地表示受害线应充电或放电的容值。假设受害线在从0至Vdd的跳变过程中为一特定电容充电,且邻线以相同速率发生了反向跳变,我们就很容易确定受害线充入的电量是接地情况下的两倍。米勒系数之所以得到普遍应用,是因为它可以让我们在不修改或很少修改的情况下继续执行STA。电容增加导致了受害线延迟的增加,这似乎就是受害线所受的影响了。但是,很容易看出如果邻线的跳变速率与受害线不一样,这一方法将会导致极大错误。 更为重要的是,研究表明这一“2x”法也不是受害线延迟的上限。除跳变速率外,其它重要因素,如受害线驱动(门)阻抗和互连阻抗等,都被忽略了。 一种解决方案 在得出一个方案之前,我们应明确所要追求的目标。我们已反复强调STA进行的是与输入模式无关的分析,所以每一信号的到达时间段都覆盖所有可能的模式。比如,我们可以说某一特定信号可在“最早1.2ns”和“最迟1.5ns”跳变。只有当耦合存在时,确定信号到达时间的类似范围才是合理的。 特别地,我们应确定电路中的每一信号在所有可能输入到达时间和耦合作用情况下的最早和最迟到达时间。信号跳变时间范围在STA中也称为“到达时间窗口”。到达时间窗口由最早和最迟到达时间以及跳变速率(或信号边沿跳变时间)组成,如图所示。如果已知一根邻线的到达时间窗口,就可以确定它是否与受害线的到达时间重叠。我们可以精确划定这些存在“鸡生蛋”问题的窗口。 从最坏情况着手不失为一项可行的方案。最坏情况是指:如果不知道邻线的时序窗口,就假定其窗口与受害线窗口有重叠。由于我们不知道该邻线何时跳变,可能在STA过程的后期才知道,我们就假设这一邻线会对受害线造成最大的影响。若我们有办法计算这一最大影响,这对STA意谓着什么呢?在传播信号跳变时间(或到达时间窗口)时,我们对跳变时间进行了悲观的假设。再回到关于信号跳变时间的含义,“受害线可在1.2ns和1.5ns之间发生跳变”现在意味着无论哪个邻线何时跳变,这些数字都将是受害线实际跳变时间的界限。 “实际”跳变时间范围可能介于1.3ns和1.4ns之间。 我们应注意到悲观的假设仅对于最迟到达时间才有真正意义。前面曾提到,如果跳变方向相同,邻线可能会减小受害线的延迟。如果要推导出最早到达时间,“悲观”假设应考虑耦合引起的延迟减小,进而找到最早的跳变时间。到达时间上限对电路的保持和竞争情况会产生影响,在多数情况下,这里的STA界限与最坏情况的路径延迟同等重要。 关键时刻 用这种方法计算出的到达时间可能会过于悲观。假定影响受害线延迟的邻线在现实中可能会暂时与受害线隔离。一种建议方案是多次运行STA以反复减小悲观因素。在第二次运行中,如果发现邻线与受害线不重叠,受害线的延迟就会减小,受害线输出的到达时间窗口也将缩小。这就是耦合时序分析(TACO)的中心思想,TACO是静态时序分析工具中用于确定耦合效应的一种算法。 我们前面提到该方案可用于确定到达时间的界限。为了确定最早和最迟到达时间,我们必需先确定在有邻线跳变情况下受害线的延迟界限。为了确定邻线跳变所带来的最大影响,我们必须根据受害线“排列”邻线。这样,即使我们知道邻线的时序窗口,还是要确定邻线何时跳变才会对受害线产生最大影响。不必涉及具体的算法,就可以较容易地计算出在RC耦合线路中最坏和最好情况下的跳变延迟。 在STA中,由于从最坏的假设着手(最宽的时序窗口),我们可以确保时序窗口在以后的STA运行中只会缩小。窗口缩小意味着延迟和到达时间的差距更近。这一方法的优势在于如果认为运行STA太浪费时间,可以随时停止,并可得出时序窗口的界限。在实际应用中,我们发现运行STA的次数无须超过两次,因为第一次迭代所产生的悲观估算会在第二次运行中得到充分校正。 尽管串扰电容的普遍存在引发了新的设计问题,但对传统STA稍作修改,就可进行制造前的时序分析。 作者:Ravishankar Arunachalam现在卡耐基-梅隆大学攻读博士学位。他的研究方向包括时序分析、信号完整性问题、延迟建模及互连分析等。 Lawrence Pileggi是卡耐基-梅隆大学的电气和计算机工程教授。他曾任教于德州奥斯汀大学,并担任Monterey设计系统公司的CTO。在从教之前,他曾在Westinghouse研发中心工作,并获得两项专利,被授予该公司的工程成就奖。



关键词: 深亚微米     设计     中的     静态     时序     分析     方法     问题    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]