接上篇
Signal Integrity: Crosstalk Delay 和 Crosstalk Noise-2
8,Crosstalk Noise Overview
Crosstalk Noise一般又称为Static noise,说它static是因为它的分析不依赖于测试向量或电路仿真来确定电路的行为,它跟静态时序分析对应。决定因素一般包括:aggressor nets 和victim nets之间的耦合电容;aggressor nets的driver及timing window;victim net的driver以及load等。
9,Noise-Related Logic Failures
如下图所示,由aggressor nets transitions 导致处于 steady-state 的victim net 产生四种不同类型的noise bump:above low、below high、above high、below low。
这四种noise bump可以分成两组:Between-the-rails 和 Beyond-rails
一般情况下,PTSI 只会考虑Between-the-rails noise bump (即above low、below high),如果超过了规定的阈值,就可能导致一些错误的跳变(这种错误不一定引起真实的功能错误,因为产生的noise bump可能随着电路的传递会逐渐减弱、消失,但也有可能被加强。如果这种错误跳变被一级一级往后传,并且noise bump依然超过阈值,并且被时钟捕获到,则会引起功能错误)
Beyond-rails noise bump(即above high、below low)也对电路结构有一定的影响,如果这种noise bump直接进到input 没有缓冲单元的flop/latch中,可能会正向偏置击穿gate,进而导致功能错误,但目前的lib 库中的flop/latch都会包含一些缓冲单元,所以这种情况发生的概率比较小。
例子:下图中表示noise 发生在哪些场景下:
10,Reporting Noise at Source or Endpoint
当report noise 的时候有两种mode 供选择,report at source 和report at endpoint。上面说过,一个noise bump 超过了阈值不一定会导致最终的功能failure,这跟传输的路径有关系,如下图181所示,U1的input nets 受到干扰产生noise bump并超过了要求的阈值,但经过U1的传输,noise bump衰减,低于阈值,那么这种noise bump就不会导致最终的功能failure。
report at source 会把路径上所有出现violations 的点(noise bump超出阈值)都报出来,报告更加详细,如下图会报出五条信息;report at endpoint 只会报出noise 终止的endpoint,报出来的报告会更加简洁,只显示会引起功能出错的点(一般是flop/latch等)如下图所示。
pt_shell> set_noise_parameters -analysis_mode report_at_endpoint
pt_shell> set_noise_parameters -analysis_mode report_at_sourc
11,Noise Immunity
每一种cell 的input capacitance都能够容忍一定强度的noise,不同种类的cell或者同一cell 的不同的input pin,它的input capacitance可能是不同的,这导致不同cell input pin的抗干扰能力有差异,这种用来衡量某cell 的input pin抗干扰能力的参数称为cells input pin的Noise Immunity 。Noise Immunity一般通过lib 定义,或者通过一些命令指定:
• PrimeTime SI command-specified noise immunity curves (set_noise_immunity_curve command).
• PrimeTime SI command-specified bump height noise margins (the set_noise_margin command)
• Library-specified per-arc noise immunity polynomials or tables
• Library-specified per-pin noise immunity curves
• Library-specified DC noise margins (VOL, VOH, VIL, VIH)
同一个cell input 对不同形状的noise bump 抗干扰能力也是有差异的,如下图所示,其中不同宽度和高度的noise bump从 inverter input进入和从output 出去。经过cell传输之后发现,那些宽度更大并且高度很高的noise bump 更容易在output 产生failure,而那些宽度很窄高度很高的noise bump更容易被input cap过滤掉。
对于多输入的cell,会有多个Noise Immunity,lib中一般会考虑最差的情况。
12,Noise immunity curves 与 Noise margins
Noise immunity curves考虑到cell inputs 发生的noise bump的高度和宽度,不同宽度和高度的bump 会根据双曲线的范围来决定是noise failure 还是noise immunity。而Noise margins只考虑了noise bump 的高度,即无论noise bump 的宽度多大,只要高度不超过noise margin,都会被认定为noise immunity,如下图所示:
Noise immunity curves是一条双曲线,其计算公式如下:
在LC 的语法里,c1, c2, 和 c3 分别代表height_coefficient,area_coefficient,和width_coefficient。如果lib中没指定这些参数的话,可以用set_noise_immunity_curve -height,-area和 -width来指定。
13,Noise Slack
上面图中多次出现了Positive Slack和Negative Slack,这里的slack 跟sta中的那个是不一样的。在sta中,slack代表的是 required time和 arrival time的差值,如果是负的slack,就代表有timing violations。
在 static noise analysis中,noise slack 有三种形式表示,area,height,area_percent,默认的是高度,指的是实际的noise bump 高度与 noise constraint (即上面讲的Noise immunity curves 与 Noise margins)高度的差值,如果差值为正,就不会导致output failure,如果为负就会导致output failure。如下图所示,以Noise immunity curves为例:
no slack 和 infinity slack:
14,Propagated Noise Characteristics
一个cell input 的noise bump 可能传输到output 产生一个新的noise bump,这种现象叫做Noise Propagated。一般先进工艺中都会考虑到Propagated Noise (set_noise_parameters -enable_propagation),这需要lib 中有定义,如果lib中没定义,report_noise 时会在对应的栏下出现“-”。
在lib 中定义一般分两种形式:polynomials and lookup tables
Polynomials形式:lib 中指定height, width, 和 output bump time-peak-ratio,它们的值主要决定于四个参数:input bump height, input bump width, input bump time-peak ratio,output load。
Lookup tables形式:lib 中指定 output bump height 和 width,它们的值主要决定于三个参数:input bump height, input bump width, 和 output load。