串扰和噪声
- 第六章 串扰和噪声
- 6.1概述
- 6.2串扰毛刺分析( Crosstalk Glitch Analysis)
- 6.3串扰延迟分析(Crosstalk Delay Analysis)
- 6.4考虑串扰延迟的时序分析(Timing Verification Using Crosstalk Delay)
- 6.5计算复杂度(Computational Complexity)
- 6.6避免噪声的技术
第六章 串扰和噪声
本章介绍了纳米工艺下ASIC的信号完整性。在深亚微米工艺中,串扰在设计的信号完整性方面起到了重要作用。串扰噪声指的是2个或多个信号之间活动的非故意耦合。相关的噪声和串扰分析技术,也就是毛刺分析和串扰分析,让静态时序分析包括了这些影响,这将在本章有具体描述。这些技术可以让ASIC运行得更具鲁棒性。
6.1概述
噪声指的是不希望有的,或者非故意的干扰芯片正确运行的影响。在纳米技术中,噪声可以影响器件的功能和时序。
为什么会有噪声和信号完整性问题?
下面的几个原因解释了为什么噪声在深亚微米工艺中有着重要影响。
1)越来越多的金属层(Increasing number of metal layers)
:例如,0.25um或者0.3μm工艺有4层或者5层金属,而在65nm或者45nm工艺中,金属层数增长到10层或者更多。图4-1描述了多层金属互连线。
2)金属长宽比中垂直方向占主导(Vertically dominant metal aspect ratio)
:这意味着线段既细且高,这和早期工艺尺寸中的又宽又薄的线有很大不同。所以,很大一部分电容来源于侧壁耦合电容,也就是相邻线之间形成的电容。
3)更小的尺寸带来更高的走线密度(Higher routing density due to finer geometry)
:所以,在更近的物理距离内放入了更多的金属走线。
4)大量互相影响的器件和互连线(Larger number of interacting devices and interconnects)
:所以,更多的有源标准单元和信号走线被封装在同样的硅面积里,这也导致更多的交互。
5)更高的频率导致更快的波形(Faster waveforms due to higher frequencies)
:快速的边沿速率(Edge Rates)
导致更多的电流尖峰(Current Spikes)
,也会导致相邻走线和单元更强的耦合影响。
6)更低的供电电压( Lower supply voltage)
:供电电压的减少给噪声留下了更小的余量。
在本章,我们重点学习串扰噪声的影响。串扰噪声指的是2个或多个信号活动间非故意的耦合。串扰噪声是由裸片(Die)上相邻的信号之间的电容性耦合造成的。这会导致信号线上的电平翻转,进而对耦合的信号带来意外的影响。受影响的信号被称为受害者(Victim)
,产生影响的信号被称为侵害者(Aggressor)
。注意,两条耦合的线可以互相影响,通常1条线既可以是受害者,也可以是侵害者。
图6-1所示的例子中,几条走线耦合在一起。图中描述了耦合互连线的分布式RC提取,多个驱动单元以及扇出单元。在这个例子中,线N1和N2有它们之间的耦合`电容Cc1+Cc4,线N2和N3有它们之间的耦合电容Cc2+Cc5。
概括地讲,串扰造成的噪声影响有两种。第1种是毛刺(一些分析工具把毛刺(Glitch)称为噪声(Noise)。类似地,一些工具用串扰(Crosstalk)指代串扰对延迟的影响。)
指的是相邻侵害者电平翻转的耦合效应在稳定的受害者线上的噪声;第2种是时序变化(串扰增量延迟),是由侵害者的电平翻转和受害者的电平翻转耦合造成的。这两种串扰噪声将在接下来两节描述。
6.2串扰毛刺分析( Crosstalk Glitch Analysis)
6.2.1基础( Basics)
一条稳定的信号线,可能会由于侵害者电平翻转通过耦合电容带来的电荷转移,产生了毛刺(正向或者负向)。图6-2展示了由上升侵害线的串扰诱发的正向毛刺。这两条线之间的耦合电容被描述成1个集总(Lumped)
电容Cc而不是分布式(Distributed)
耦合电容,这是为了简化下面的说明且不失掉它的一般性。在提取后网表的典型表示法中,耦合电容可以分布在多个片段中,正如之前6.1节中所述。
在这个例子中,与非门单元UNAND0电平翻转,给它的输出线(标记为侵害线)充电:一些电荷通过耦合电容Cc转移到了受害线,这导致了正向毛刺。转移电荷的数量与侵害线和受害线之间的耦合电容Cc直接相关。转移到受害线的接地电容上的电荷导致了该线上的毛刺。受害线会重回稳定值(本例中是0,或者叫低电平),因为转移的电荷会通过驱动单元INV2的下拉(Pull-dowm)结构消散掉。
产生的毛刺的大小量级取决于多种因素。其中的一些因素是
-
1)侵害线和受害线之间的耦合电容:耦合电容越大,毛刺的量级越大。
-
2)侵害线的转换率:侵害线转换率越快,毛刺的量级越大。通常,更快的转换率是因为驱动侵害线的单元有更高的输出驱动能力。
-
3)受害线的接地电容:受害线有更小的接地电容,毛刺有更大的量级。
-
4)受害线驱动能力:驱动受害线单元的输出驱动能力越小,毛刺就有更大的量级。
总的来说,虽然受害线会重回稳定值,但是毛刺依然可以影响电路的功能,原因如下所示:
-
1)毛刺的量级可能大到足够被扇出单元当作不同的逻辑值(比如,受害者是逻辑0,可能在扇出单元被当成了逻辑1)。这一点对时序单元(触发器,锁存器),或者内存特别关键,在时钟或者异步置位/复位(Set/Reset)上的毛刺可能对整个设计的功能来说是一场灾难。类似地,在锁存器输入端数据信号上的毛刺可能造成错误的数据被锁存,如果当数据被读取时发生毛刺,后果也是灾难性的。
-
2)即使受害线没有驱动时序单元,一个足够大的毛刺也可能通过该受害线的扇出传播出去,到达时序单元的输入,对整个设计造成灾难性的后果。
6.2.2毛刺的类型(Types of Glitches)
1.上升和下降毛刺(Rise and Fall Glitches)
在之前小节中的讨论介绍了在一条处于稳定低电平状态的受害线上的正向(Positive)或者说上升毛刺(Rise Glitch)
。类似的情况是,稳定高电平信号上的负向(Negative)
毛刺。下降的侵害线在稳定高电平信号上引起的下降毛刺(Fall Glitch)
。
2.过冲(Overshoot)和下冲(Undershoot)毛刺
当一个上升侵害者耦合到一个稳定高电压的受害线,会发生什么?仍然会有毛刺把受害线的电平推高到超过它的稳定高电平值。这样的毛刺就叫过冲毛刺。 类似地,一个下降侵害者耦合到一个稳定低电压的受害线,会在受害线上造成下冲毛刺。
所有4种由串扰带来的毛刺如图6-3所示。
如之前小节中描述的,毛刺是由耦合电容,侵害者转换率,以及受害线的驱动能力所决定的。毛刺的估算是基于侵害者电平翻转注入的电流总量,受害线的RC互连线,以及受害线驱动单元的输出阻抗。详细的毛刺计算是基于库模型,计算需要的相关噪声模型属于标准单元库模型,在第3章中有介绍。在3.7节中的输出dc_current模型是关于单元的输出阻抗。
6.2.3毛刺的阈值和传播( Glitch Thresholds and Propagation)
如何确定线上的毛刺是否可以通过扇出单元传播?如之前小节中讨论的,侵害者电平翻转耦合产生的毛刺是否可以通过扇出单元传播,取决于扇出单元和毛刺的属性,比如毛刺高度和毛刺宽度。这一分析可以基于直流(DC)
或者交流(AC)
噪声阈值。直流噪声分析只检查噪声量级,它是保守的;而交流噪声分析检查其他属性,比如毛刺宽度和扇出单元的输出负载。下面将介绍在直流和交流毛刺分析中使用的各种阈值度量。
1.直流阈值(DC Threshold)
直流噪声余量(DC Noise Margin)是针对毛刺量级的检查,是检查单元输入上直流噪声大小的极限,进而保证正确的逻辑功能。比如,只要反相器单元的输入保持在单元VIL的最大值之下,则输出就是高电平(也就是指电平高于VOH的最小值)。类似地,只要反相器单元的输入保持在VIH最小值之上,则输出就是低电平(也就是电平低于VOL最大值)。这些限制是基于直流传输特性(DC Transfer Character)
得到的,并被写入了单元库中。
VOH是输出电压的范围,被认为是逻辑1或者高电平。VIL是输入电压的范围,被认为是逻辑0或者低电平。VIH是输入电压的范围,被认为是逻辑1。VOL是输出电压的范围,被认为是逻辑0。图6-4所示的例子展示了反相器单元的输入-输出直流传输特性。
VILmax和VIHmin也被称为直流余量极限(DC Margin Limit)。基于VIH和VIL的直流余量就是稳态的噪声极限。这些极限可以被当作判定毛刺是否会通过扇出单元传播的过滤器。直流余量极限适用于单元的每个输入引脚。通常,直流余量极限会分为rise-glitch(输入低电平)
和fall_glitch(输入高电平)
。直流余量的模型可以指定为单元库描述的一部分。低于直流余量极限的毛刺(比如,上升毛刺低于扇出引脚的VILmax)不会通过扇出传播,无论毛刺的宽度有多宽。所以,保守的毛刺分析检查峰值电压电平(所有毛刺)要满足扇出单元的VIL和VIH电平。尽管存在毛刺,只要所有线都满足扇出单元的VIL和VIH电平,就可以确定毛刺不会对设计的功能产生影响(因为毛刺不会引起输出的改变)。
图6-5所示为一个直流余量极限的例子。对于设计中所有的线,直流噪声余量也可以固定为相同的极限。可以设置最大的可容忍噪声(或者毛刺)量级,噪声超过这个量级就能通过单元传播到输出引脚。通常这种检查保证毛刺电平小于VILmax且大于VIHmin。电平高度通常表示为供电电压的百分比。所以,如果直流噪声余量设为30%,这表明任何高度大于电压摆幅30%的毛刺都被认为是潜在的可能通过单元传播的毛刺,都可能潜在地影响设计的功能。
不是所有量级大于直流噪声余量的毛刺都能改变单元的输出。毛刺的宽度也是决定毛是否可以传播到输出的重要因素。单元输入上的窄毛刺通常不会对单元输出带来任何影响。但是,直流噪声余量只考虑最差情况的常量值,并不考虑信号噪声的宽度。如图6-6所示图中表明的噪声抑制水平(Noise Rejection Level)
是对单元噪声容忍度非常保守的估计。
2.交流阈值(AC Threshold) -Alternating current
正如之前小节中描述的,噪声分析的直流余量极限是很保守的,因为它是在最坏情况下分析设计。直流余量极限保证了即使毛刺的宽度非常宽,它也不会影响设计的正确运行。
在大多数情况下,设计不会通过保守的直流噪声分析极限。所以,无法避免地需要在验证毛刺影响时考虑到毛刺宽度和单元的输出负载。通常情况下,如果毛刺很窄,或者如果扇出单元有很大的输出电容,毛刺就不会影响正常的功能运行。毛刺宽度和输出电容的影响都可以用扇出单元的惯性(Inertia)
来解释。通常情况下,单级单元会阻止任何比通过该单元的延迟窄得多的输入毛刺。这是因为窄毛刺会在扇出单元做出反应之前就消失了。所以,一个非常窄的毛刺不会对单元造成任何影响。因为输出负载会增大通过单元的延迟,增大输出负载可以减少毛刺在输入上的影响,但是它也有副作用,增大了单元的延迟。
交流噪声抑制如图6-7所示(对于给定的输出电容)。深色阴影部分代表 “好的” 或者 “可接受的” 毛刺,因为这些毛刺要么是太窄,要么是太短,或者两者都是,所以对单元的功能行为没有影响。浅色阴影部分代表 “坏的” 或者 “不可接受” 的毛刺,因为这些毛刺要么是太宽,要么是太高,所以在单元输入的这种毛刺影响单元的输出。在毛刺非常宽的板限情况下,毛刺的阈值对应着直流噪声余量,如图6-7所示。
对于给定的单元,增加输出负载就会增加噪声余量,因为这会增加惯性延迟和可以穿过单元的毛刺的宽度。这一现象通过下面的例子来说明。图6-8a展示了一个没有负载的反相器单元,它在输入端有1个正向毛刺。输入毛刺比单元的直流余量高,所以造成了反相器输出的毛刺。图6-8b展示了同样的反相器单元,但在输出有一定负载。同样的输入端毛刺造成了输出端小得多的毛刺。如果反相器单元的输出负载大很多,如图6-8c所示,则反相器输出端不会有任何毛刺。所以,增加输出端的负载会使单元更容易抵御从输入到输出的噪声传播。
如上所述,低于交流阈值(在图6-7中的交流噪声抑制区域)的毛刺可以被忽略,或者认为扇出单元可以抵御这样的毛刺。交流阈值(或者叫噪声免疫)区域依赖于输出负载和毛刺宽度。正如第3章描述的,噪声免疫模型包括上面描述的交流噪声抑制效应。在3.7节中描述的propagated_noise模型包括了交流噪声阀阈值的影响,还对通过单元的传播进行了建模。
如果毛刺超过了交流阈值会发生什么?假设毛刺量级超过了交流阀值,那在输入端的这个毛刺就会在单元的输出端产生另一个毛刺。输出毛刺的高度和宽度是输入毛刺宽度和度,以及输出负载的函数。这些信息在单元库中表征过了,库中包括了计算输出毛刺量级和宽度的详细表格或者函数,该函数是关于输入引脚毛刺量级、毛刺宽度和输出引脚负载的。毛刺的传播是由propagated_noise模型控制的,该模型在库文件中有描述。propagated_noise(低和高)模型在第3章有详细描述。
基于上面的描述,毛刺是在扇出单元的输出端计算的,接着会在扇出线上有同样的检查(以及毛刺传播到扇出),以此类推。
当我们在上面的讨论中使用通用术语毛刺(Glitch)
,应该注意到该术语分别对应着之前章节中描述的上升毛刺(Rise Glitch)
(由早期模型propagated_noise_high或者noise_immunity_high建模),下降毛刺(Fall Glitch)
(由早期模型propagated_noise_low或者noise_immunity_low建模),过冲毛刺(Overshoot Glitch)
(由noise_immunity_above_high建模),以及下冲毛刺(Undershoot Glitch)
(由noise_immunity_below_low建模)。
综上所述,单元不同的输入有着不同的毛刺阈值限制,该阈值是毛刺宽度和输出电容的函数。这些限制对输入高电平(低转换时间毛刺)和输入低电平(高转换时间毛刺)来说是不同的。噪声分析不仅检查峰值,也检查毛刺宽度,而且分析毛刺是否可以被忽略,或者是否会传播到扇出。
6.2.4多侵害者的噪声累积(Noise Accumulation with Multiple Aggressors)
图6-9描述了由单一侵害者电平转换带来的耦合效应,造成了受害线上的串扰毛刺。通常来说,一条受害线可能会电容耦合到多条线。当多条线同时电平翻转,由于有多个侵害者,受害线上的串扰耦合噪声效应是共同作用的结果。
大多数多侵害者耦合效应分析会把各个侵害者的毛刺效应相加,计算在受害者上的累积效应。这种方法可能太保守了,但是它确实指明了受害线上的最差毛刺。一个替代的方法是RMS(Root Mean Squared,均方根)
方法。当使用RMS方法时,是通过计算每个侵害者造成毛刺的均方根来计算受害者上的毛刺量级的。
6.2.5侵害者的时序相关性(Aggressor Timing Correlation)
要计算由多个侵害者引起的串扰噪声,分析必须包括侵害线的时序相关性,并且判断多个侵害者是否可以同时电平翻转。STA从侵害线的时序窗口获得此信息。在时序分析中,可以得到线的最快(Earliest)
和最慢(Latest)
翻转时间。这些时间表示了在1个时钟周期(Clock Cycle)
内该线可以电平翻转的时间窗口(Timing Window)
。这些翻转窗口(上升和下降)提供判断侵害线是否可以同时翻转的必要信息。
基于多个侵害者是否可以同时翻转,每个侵害者造成的毛刺在受害线上被组合在一起。第1步,毛刺分析分别为每个潜在的侵害者计算4种类型的毛刺(上升、下降、下冲、过冲)。接着,把各个不同的侵害者造成的毛刺组合在一起。多个侵害者可以为每种不同类型的毛刺分别组合。例如,假设一条受害线V和侵害线A1、A2、A3以及A4耦合。在分析过程中,可能是A1,A2和A4贡献了上升和过冲毛刺,而只有A2和A3贡献了下冲和下降毛刺。
考虑另一个例子,当侵害线翻转时,4条侵害线都造成了上升毛刺。图6-10展示了每条侵害线的时间窗口和造成毛刺的量级。基于时间窗口,毛刺分析确定了造成最大毛刺的侵害者电平翻转的最坏可能组合。在这个例子中,翻转窗口区域被分为4个区域,每个区域都代表可能的侵害者翻转。每个侵害者贡献的毛刺也在图6-10中有描述。区域1有A1和A2的翻转,会造成毛刺量级为(0.11+0.10)=0.21。区域2有A1,A2和A3的翻转,会造成毛刺量级为(0.11+0.10+0.09)=0.30。区域3有A1和A3的翻转,会造成毛刺量级为(0.11+0.09)=0.20。区域4有A3和A4的翻转,会造成毛刺量级为(0.09+0.23)=0.32。
所以,区域4有最差的可能出现的毛刺量级0.32。注意如果分析没有使用时间窗口,就会计算出复合的毛刺量级为(0.11+0.10+0.09+0.23)=0.53,这就过于悲观了。
6.2.6侵害者的功能相关性(Aggressor Functional Correlation)
对于多侵害者的情况,在分析中通过考虑线可能翻转的翻转窗口来使用时间窗口,可以减少悲观程度。另外,还有一个因素需要考虑,就是不同信号间的功能相关性(Functional Correlation)。例如,扫描(Scan)控制信号只在扫描模式(Scan Mode))下翻转,在设计的功能模式(Functional Mode)或者任务模式(Mission Mode)下保持稳定。所以,扫描控制信号在功能模式下不可能造成毛刺。扫描控制信号只可能在扫描模式下成为侵害者。在一些情况下,测试时钟和功能时钟是互斥的,测试时钟只会在功能时钟关闭的测试状态下才处有效状态。在这些设计中,被测试时钟控制的逻辑和被功能时钟控制的逻辑只会形成不相干的两组侵害者。在这种情况下,被测试时钟控制的侵害者,不可能和被功能时钟控制的侵害者组合在一起,作为最差情况噪声进行计算。另一个功能相关性的例子是两个侵害者是互补的(逻辑相反)。对于这种情况,信号和它的互补信号不可能向同一方向翻转,也就不能进行串扰噪声计算。、
图6-11中的例子,线N1和其他线N2、N3以及N4耦合。在功能相关性上,需要考虑线的功能。假设线N4是电平恒定(比如,一条模式设定线)的,所以就不可能是线N1的侵害者,即使它们之间有耦合。假设线N2是调试总线(Debug Bus)
的一部分,但是在功能模式下它是稳态。所以,线N2就不可能是线N1的侵害者。假设线N3具有功能数据,只有线N3可能成为线N1的潜在侵害者。
6.3串扰延迟分析(Crosstalk Delay Analysis)
6.3.1基础(Basics)
在纳米设计中,一条典型线的电容提取是受多个相邻导体影响的。其中一些是接地电容,另一些是信号线的部分走线带来的电容。接地电容和信号间电容见图6-1。在基础延迟计算时(不考虑串扰),所有这些电容都被认为是总的线电容的一部分。当相邻线电平稳定时(或者不翻转),信号间电容被认为是接地电容。当相邻信号线电平翻转时,充电电流通过耦合电容影响线的时序。一条线的等效电容可以变大或者变小,这要取决于侵害线的电平翻转方向。这在下面的例子中有进一步解释。
图6-12表明线N1有对相邻线(标记为侵害者)的耦合电容Cc和对地电容Cg。这个例子假设线N1在输出端有上升电平转换,并根据侵害线是否在同一时间翻转来考虑不同的场景。
驱动单元需要的电容电荷在不同的场景下会有所不同,具体如下所示。
- 1)
侵害线稳定(Aggressor net steady)
。在这种场景下,线N1的驱动单元为电容Cg和Cc充电到电压Vdd提供电荷。所以通过该线的驱动单元提供的总电荷就是(Cg+Cc) *Vdd。不考虑侵害线带来的串扰,基础延迟计算在这个场景下得到延迟。表6-1表明该场景下,在线N1翻转前后Cg和Cc的电荷量。
- 2)
侵害者向同一方向翻转( Aggressor switching in same direction)
。在这种场景下,驱动单元受到了侵害者向同一方向翻转的帮助。如果侵害者是在同时转换且转换率相同(完全一致的转换时间),驱动单元提供的总电荷就只有(CgVdd)。如果侵害线的转换率比N1的快,那实际需要驱动单元提供的电荷会比(CgVdd)更小,因为侵害线也可以给Cg提供充电电流。当侵害者向同一方向翻转时,需要驱动单元提供的电荷就比对应的表6-1中描述的稳定侵害者场景要小。所以,侵害者向同一方向翻转,会造成线N1翻转的延迟变小。延迟减小的部分被标记为负串扰延迟(Negative Crosstalk Delay)
,详见表6-2。这一场景通常在最小路径分析时考虑。
- 3)
侵害者向相反方向翻转(Aggressor switching in opposite direction)
。在这种场景下,耦合电容从电压-Vdd充电到Vdd。所以,在电平转换前后,耦合电容电荷变化为(2CcVdd)。额外需要的电荷是由线N1的驱动单元和侵害线共同提供的。这种场景导致线N1翻转延迟变大;延迟增加的部分被标记为正串扰延迟(Positive Crosstalk Delay)
,详见表6-3。这一场景通常在最大路径分析时考虑。
上面的例子说明了在不同情况下电容Cc是如何充电的,以及电平翻转线(标记为N1)延迟是如何受影响的。上面的例子仅考虑了线N1的上升转换,但是下降转换的分析是类似的。
6.3.2正向串扰和负向串扰(Positive and Negative Crosstalk)
基础延迟计算(没有任何串扰)假设驱动单元可以为总电容的轨到轨(Rail-to-Rail)(轨(Rail)表示电压的极限边界。轨到轨是固定表达,表示达到电压正负极限边界。不过实际上并不能,是理想状态。)
电平转换提供所有必须的电荷,其中总电容Ctotal(=Cground+Cc)。正如之前小节中描述的,当耦合线(侵害者)和受害线的翻转方向相反时,耦合电容Cc所需的电荷是增多的。向相反方向翻转的侵害者增加了受害线从驱动单元需要的电荷量,增加了驱动单元延迟以及受害线的互连延迟。
类似的,当耦合线(侵害者)和受害线的翻转方向相同时,电容Cc在受害者和侵害者电平转换前后电荷是不变的。这减少了从受害线的驱动单元所需的电荷。也减少了驱动单元延迟以及受害线的互连延迟。
综上所述,受害者和侵害者的同时翻转影响受害者转换时间。根据侵害者转换方向的不同,串扰延迟影响可以是正向的(减慢受害者转换时间),或者负向的(加快受害者转换时间)。
图6-13所示的例子是正向串扰延迟影响。当受害线下降转换时,侵害线同时上升。侵害线向相反方向翻转增大了受害线的延迟。正向串扰既影响驱动单元也影响互连线,二者的延迟都增加了。
图6-14所示的例子是负向串扰延迟。侵害线和受害线同时电平上升。侵害线和受害线向同一方向翻转,减少了受害线的延迟。如之前所说,负向串扰影响既影响驱动单元也影响互连线,二者的延迟都减少了。
注意,对上升和下降延迟来说,最差正向串扰延迟和最差负向串扰延迟是分别计算的。对于带有串扰的最大上升时间,最小上升时间,最大下降时间,最小下降时间来说,最差的侵害者组合通常来讲是不一样的。这将在下面的小节进行分析。
6.3.3多侵害者的累积(Accumulation with Multiple Aggressors)
多侵害者的串扰延迟分析需要累计每个侵害者串扰带来的影响。这和6.2节中对串扰毛刺的分析有些相似。当多条线同时翻转,受害线上的串扰延迟影响是多条侵害者影响的混合。
大部分多侵害者耦合影响分析把每个侵害者的增量相加,计算受害者受到的累积影响。这可能过于保守了,但是这确实指明了受害者上的最差串扰延迟。
和多侵害者串扰毛刺分析类似,可以用RMS法来求和各个侵害者的影响,相比较直接求和每个侵害者的影响,RMS少了一些悲观。
6.3.4侵害者和受害者的时序相关性(Aggressor Victim Timing Correlation)
串扰延迟分析的时序相关性(Timing Correlation)处理和6.2节中描述的串扰毛刺分析的时序相关性,在概念上讲是很相似的。只有在侵害者和受害者是同一时间翻转,串扰才可以影响受害者的时序。这是由侵害者和受害者的时间窗口决定的。正如6.2节中描述的,时间窗口(Timing Window)
表示在1个时钟周期内1条线可以在其中翻转的最早和最晚翻转时间。如果侵害者和受害者的时间窗口有重叠,就需要计算串扰对延迟的影响。对于多侵害者的情况,多条侵害者的时间窗口也要做类似的分析。要计算不同时间区域(Timing bin)
的可能影响,并且在延迟分析时要考虑具有最差串扰延迟影响的时间区域。
思考下面的例子,3个不同的侵害线可以影响受害线的时序。侵害线(A1,A2,A3)和受害线(V)电容性耦合,并且它们的时间窗口也和受害线重叠。图6-15显示了时间窗口和由各个侵害者造成的可能的串扰延迟影响。基于时间窗口,串扰延迟分析确定了造成大串扰延迟影响的最差可能侵害者翻转组合。在这个例子中,时间窗口的重叠区域可以分为3个区域,每个区域说明了可能的侵害者翻转。区域1有A1和A2电平翻转,可以导致串扰延迟影响为(0.12+0.14)=0.26。区域2有A1电平翻转,可以导致串扰延迟影响为0.14。区域3有A3电平翻转,可以导致串扰延迟影响为0.23。所以,区域1有最差可能串扰延迟影响0.26。
正如之前指明的,串扰延迟分析分别计算4种不同的串扰延迟。这4种串扰延迟是正上升延迟(Positive Rise Delay)
(上升沿推迟到达),负上升延迟(Negative Rise Delay)
(上升沿提前到达),正下降延迟(Positive Fall Delay)
和负下降延迟(Negative Fall Delay)
。通常来讲,对这4种情况,一条线可以有不同的侵害者组合。比如说,一条线可以和侵害者A1、A2、A3以及A4耦合。在串扰延迟分析中,可能是A1、A2、A4造成正上升和负下降延迟贡献,而A2和A3造成负上升和正下降延迟贡献。
6.3.5侵害者和受害者的功能相关性(Aggressor Victim Functional Correlation)
除了时间窗口以外,串扰时序计算也要考虑不同信号之间的功能相关性(Functional Correlation)
。举例来说,扫描控制信号只可能在扫描模式下翻转,在设计的功能模式或者任务模式下保持稳定。所以,在功能模式下,扫描控制信号不可能是侵害者。扫描控制信号只可能在扫描模式下成为侵害者,而且在这种模式下,扫描控制信号不可能和其他功能信号组合在一起进行最差情况噪声计算。
另一个功能相关性的例子是,某些场景下两个侵害者是互补的。在这种情况下,信号和它的互补信号在串扰噪声计算时绝不可能向同一方向翻转。如果有这种功能相关性的信息,就可以通过选取真正可以同时翻转的信号作为侵害者,进而保证串扰分析结果不要太悲观。
6.4考虑串扰延迟的时序分析(Timing Verification Using Crosstalk Delay)
需要为每个单元和互连线计算下面的4种串扰延迟影响:
-
1)正上升延迟(Positive Rise Delay):上升沿推迟到达;
-
2)负上升延迟(Negative Rise Delay):上升沿提前到达;
-
3)正下降延迟(Positive Fall Delay):下降沿推迟到达;
-
4)负下降延迟(Negative Fall Delay):下降沿提前到达。
然后,在时序分析时验证最大和最小路径(建立时间和保持时间检查)时,要分析串扰延迟的影响。对于发射触发器和捕获触发器,时钟路径的处理是不同的。对于建立时间和保持时间检查,数据路径和时钟路径分析的具体细节,将在下一小节描述。
6.4.1建立时间分析( Setup Analysis)
带有串扰分析的STA通过验证数据路径和时钟路径的最差情况串扰延迟来保证设计的时序。思考图6-16中的逻辑,串扰可能发生在沿着数据路径和时钟路径的各条线上。对于建立时间检查的最坏情况是,发射时钟路径和数据路径都有正向串扰,而捕获时钟路径有负向串扰。在发射时钟路径和数据路径上的正向串扰会延迟数据到达捕获触发器的到达时间。另外,在捕获时钟路径上的负向串扰会导致时钟提早到达捕获触发器。
基于以上描述,建立时间(或者最大路径)分析假设:
-
1)发射时钟路径看到正向串扰延迟,所以数据发射会延迟;
-
2)数据路径看到正向串扰延迟,所以数据需要更长时间才能到达终点;
-
3)捕获时钟路径看到负向串扰延迟,所以捕获触发器会提前捕获数据。
因为建立时间检查的发射和捕获时钟沿是不同的(通常间隔1个时钟周期),共同时钟路径(Common Clock Path)
(见图6-16)可能对发射和捕获时钟沿有不同的串扰影响。
6.4.2保持时间分析( Hold Analysis)
STA中最差情况保持时间(或者最小路径)分析和之前小节中描述的最差情况建立间分析是类似的。基于图6-16中所示的逻辑,对于保持时间检查的最坏情况是,发射时路径和数据路径有负向串扰,而捕获时钟路径有正向串扰。在发射时钟路径和数据路径上的
负向串扰会导致数据提早到达捕获触发器。另外,在捕获时钟路径上的正向串扰会导致时钟推迟到达捕获触发器。
时钟路径共同部分上的串扰,对于保持时间和建立时间分析有个很重要的不同。对于保持时间分析,发射时钟沿和保持时钟沿通常是同一时钟沿。通过共同时钟部分的时钟沿,为于发射时钟路径和捕获时钟路径不可能有不同的串扰影响。所以,最差情况保持时间分析删除了共同时钟路径的串扰影响。
带有串扰的STA中最差情况保持时间(或者最小路径)分析假设:
-
1)发射时钟(不包括共同路径)看到负向申扰延迟,这导致数据被提早发射;
-
2)数据路径看到负向串扰延迟,这导致数据提早到达终点;
-
3)捕获时钟(不包括共同路径)看到正向串扰延迟,这导致捕获触发器推迟捕数据。
如上所述,在保持时间分析时,时钟树共同部分上的串扰影响是不考虑的。对于发射时钟的负向串扰影响和对于捕获时钟的正向串扰影响,只在计算时钟树的非共同部分时考虑。在STA的保持时间分析报告中,共同时钟路径对于发射时钟路径和捕获时钟路径可能表现出不同的串扰影响。但是,来自共同时钟路径的串扰影响会作为单独的行项目被去除,并被标记为共同路径悲观去除(Common Path Pessimism Removal,CPPR)
。在10.1节中有STA报告中的共同路径悲观去除的实例。
正如上面小节所描述的,建立时间分析关系到时钟的两个不同的沿,这两个沿可能潜在的受不同影响。所以,在建立时间分析时,发射时钟路径和捕获时钟路径都要考虑共同路轻串扰影响。
时钟信号是非常关键的,因为任何时钟树上的串扰都直接转化为时钟抖动(Clock Jitter)进而影响设计的性能。所以,需要用特殊的方法来减少时钟信号上的串扰。一种常见的避免噪声的办法就是对时钟树进行屏蔽(Shield)
,这在6.6节中有详细讨论。
6.5计算复杂度(Computational Complexity)
一个大型纳米级设计,通常都非常复杂,以至于不能在合理的周转时间内去分析每一个耦合电容。一条典型的线的寄生参数提取包括多条相邻线的耦合电容。一个大型设计通常需要对寄生参数提取,串扰延迟以及毛刺分析进行合适的设置。这些选取的设置确保在CPU需求可实现的前提下,提供精度可接受的分析。本节介绍了一些大型纳米级设计为实现上述目的使用到的技术。
1.层次化设计与分析(Hierarchical Design and Analysis)
在4.5节中介绍了验证大型设计的层次化设计方法。类似的方法也可以用来减少提取和分析的复杂度。
对于一个大型设计,通常情况下通过一次运行就完成寄生参数提取是不现实的。每一个层次化块的寄生参数可以分别提取。这反过来要求设计在实现时采用层次化的设计方法学。这也意味着层次化块内部的信号线和块外部的信号线之间不能有耦合电容。可以通过不在块上走线和增加块的屏蔽层来实现这一要求。另外,信号线不该在块的边界附近走线,而且任何在块边界附近的走线都应该屏蔽。这些方法避免了线和其他块之间的耦合。
2.耦合电容的过滤(Filtering of Coupling Capacitances)
即使对于一个中型大小的块,寄生参数通常也包括大量非常小的耦合电容。这些很小的耦合电容可以在提取的过程中过滤掉,也可以在分析时过滤掉。
过滤时可以基于以下标准:
-
1)小电容值:非常小的耦合电容,例如,低于1fF,可以在串扰或者噪声分析中忽略。在提取时,小的耦合电容可以被当作接地电容。
-
2)耦合比
(Coupling Ratio)
:耦合电容对受害者的影响是基于耦合电容对受害线整体电容的相对值的。侵害线的耦合比太小,比如,低于0.001,就可以在串扰延迟或者毛刺分析中排除掉。 -
3)合并小侵害者:多个具有很小影响的小侵害者可以映射为一个大的虚拟侵害者。该方法可能过于悲观,但可以简化分析。可以通过更换不同分组的侵害者来缓和可能的悲观程度。可以通过统计学方法来确定具体的侵害者分组。
6.6避免噪声的技术
此前各节描述了串扰效应的影响和分析方法。本节中,我们将描述一些在物理实现阶段用来避免噪声的技术。
-
1)
屏蔽(Shielding)
:这一方法要求屏蔽线位于关键信号的两边。屏蔽线连接到电源或者地。关键信号的屏蔽保证了关键信号没有有效的侵害者,因为在同层金属的最近的相邻线就是屏蔽走线,且处于固定的电压。虽然可能有一些其他金属层的耦合电容,但绝大部分的耦合电容是来自于同层金属的电容性耦合。因为相邻的金属层(上一层和下一层)通常和本层的走线是正交的,所以跨层的电容性耦合是很小的。所以,在同金属层放置屏蔽走线就可以确保关键线有最小的耦合电容。万一连接地轨或者电源轨的屏蔽线由于走线拥塞(Routing Congestion)
不能实现,具有低翻转频率的信号线,比如在功能模式下固定的扫描控制信号线,可以走线为关键信号的最近的相邻线。这些屏蔽方法保证了没有由于相邻线电容性耦合造成的串扰。 -
2)
线段间距(Wire Spacing)
:这减少了相邻线间的耦合。 -
3)
快速转换率
:线上的快速转换率意味着该线不易受串扰影响,也就是天生对串扰影响免疫。
4)`保持良好稳定的供电``:这对串扰不重要,但对于减少电源供电变化带来的抖动非常重要。电源供电上的噪声可能给时钟信号带来显著的噪声。应该给电源供电增加合适的去耦合电容来减小噪声。
5)保护环(Guard Ring)
:衬底上的保护环(或者双层保护环)会帮助关键模拟电路屏蔽掉数字噪声。
6)深N阱(Deep N-well)
。这和上面一条类似,模拟部分的深N阱有助于屏蔽数字部分耦合带来的噪声。
7)隔离一个块(Isolating a Block)
:在层次化设计流程中,可以给块边界加上禁止走线环(Routing Halo)
;甚至可以给块的每个IO加上隔离缓冲器(Isolation Buffer)
。