第四章 互联寄生


本章对处理和表示设计时序验证中的互联寄生的多种方法作概括。在数字设计中,将标准单元或块(block)的引脚连接在一起的线(wire)称为网络(net)。网络通常只有一个驱动,但它可以驱动多个扇出单元或块。物理实现(physical implementation)后,网络可以在芯片的多个金属层上移动,各种金属层可以具有不同的电阻和电容值(在该层上的寄生参数是等效的)。对于等效的电气表示,通常将网络划分为多个段(segment),每个段均由等效的寄生参数表示。我们也将称为互连走线(interconnect trace),也就是说,它是特定金属层上网络的一部分。



4.1 互连RLC(RLC for Interconnect)

互连电阻(R, Resistance) 来自于设计实现中的各种金属层(metal layers)和过孔(vias)。下图是一穿越各种金属层和过孔的网络示例。因此,互联电阻可认为是单元输出引脚与扇出(fanout)单元的输入引脚之间的电阻。

互连电容(C, Capacitance) 也来自金属走线,包括接地电容(grounded capacitance)以及相邻信号路径(neighboring signal route)之间的电容。

互连电感(L,Inductance) 是由于电流环路而产生的,通常,电感效应在芯片内可以忽略不计,仅在封装和板级分析中考虑。在芯片级设计中,电流环路又窄又短,这意味着电流返回路径是通过电源或地信号而紧密相连的。在大多数情况下,时序分析不考虑片上电感,片上电感分析的任何进一步描述都超出了本书的范围。接下来仅分析互连电阻和互连电容的表示方法。

理想情况下,互连走线一部分的电阻和电容(RC)用分布式(distributed)RC树表示,如下图所示。 在此图中, R C RC RC树的总电阻和总电容 R t R_t Rt C t C_t Ct分别等于 R p ∗ L R_p * L RpL C p ∗ L C_p * L CpL,其中 R p ′ R_{p'} Rp C p C_p Cp分别是单位长度走线的互连电阻和电容值, L L L是走线长度。 R p ′ R_{p'} Rp C p C_p Cp值通常是从各种配置下提取的寄生参数中获得的,并由 A S I C ASIC ASIC代工厂提供。

R t = R p ∗ L C t = C p ∗ L R_t = R_p * L \\ C_t = C_p * L Rt=RpLCt=CpL

R C RC RC互连可以通过各种简化模型来表示,这些将在下面的小节中进行介绍。


T模型(T-model)

在T模型表示中,总电容 C t C_t Ct建模为电阻树中间的连接。总电阻 R t R_t Rt被分为两部分(每部分均为 R t / 2 R_t/2 Rt/2),如下图所示。


π \pi π模型(Pi-model)

π \pi π模型如下图所示,总电容 C t C_t Ct被分为两部分(每部分 C t / 2 C_t/2 Ct/2)并且与总电阻的两端相连。

更加精确的表示方法是通过将 R t R_t Rt C t C_t Ct分为多段而获得的。对于 N N N段,每个中间部分的 R R R C C C R t / N R_t/N Rt/N C t / N C_t/N Ct/N。末端部分的建模可采用T-模型或是 π \pi π模型。下图是分别采用上述两种模型而进行 N N N段分割的例子。

有了对RC互连建模的广泛概述,接下来描述如何在布局前阶段(通过估计)或布局后阶段(通过详细提取)利用寄生互连。下一节描述了布局前(预布局)过程中寄生互连的建模。



4.2 线负载模型(Wireload Models)

在进行布局规划(floorplanning)或布局(layout)之前,可以使用线负载模型(wireload models)来估计由互连线带来的电容、电阻以及面积开销。线负载模型可用于根据扇出数量来估计网络的长度。线负载模型取决于块(block)的面积,具有不同面积的设计可以选择不同的线负载模型。线负载模型还可以将网络的估计长度映射(map)为电阻、电容以及由于布线而产生的相应面积开销。

块内的平均走线长度与块的面积密切相关:随着块面积的增加,平均走线长度也会增加。如下图,对于不同的面积(芯片或块大小),通常将使用不同的线负载模型来确定寄生效应。因此,下图中面积小的块的电容比较小。

这里有一个线负载模型的示例:

wire_load (“wlm_conservative”) {
	resistance : 5.0;
	capacitance : 1.1;
	area : 0.05;
	slope : 0.5;
	fanout_length (1, 2.6); //(#,$)#fanout num, $ wire length
	fanout_length (2, 2.9);
	fanout_length (3, 3.2);
	fanout_length (4, 3.6);
	fanout_length (5, 4.1);
}

resistance指的是单位长度互连线的电阻值,capacitance指的是单位长度互连线的电容值,area指的是单位互连线的面积开销。slope用于扇出-长度(fanout_length)表中未指定的数据点的外推斜率。

L e n g t h = 4.1 + ( 8 − 5 ) ∗ 0.5 = 5.6   u n i t s C a p a c i t a n c e = L e n g t h ∗ c a p _ c o e f f ( 1.1 ) = 6.16   u n i t s R e s i s t a n c e = L e n g t h ∗ r e s _ c o e f f ( 5.0 ) = 28.0   u n i t s A r e a   o v e r h e a d   d u e   t o   i n t e r c o n n e c t = L e n g t h ∗ a r e a _ c o e f f ( 0.05 ) = 0.28   a r e a   u n i t s Length = 4.1+(8-5)*0.5=5.6\:units \\ Capacitance = Length*cap\_coeff(1.1)=6.16\:units \\ Resistance = Length*res\_coeff(5.0)=28.0\:units \\ Area\:overhead\:due\:to\:interconnect=Length*area\_coeff(0.05)=0.28 \:area\: units Length=4.1+(85)0.5=5.6unitsCapacitance=Lengthcap_coeff(1.1)=6.16unitsResistance=Lengthres_coeff(5.0)=28.0unitsAreaoverheadduetointerconnect=Lengtharea_coeff(0.05)=0.28areaunits

单位长度,电容,电阻和面积的单位在库中指定。


4.2.1 互连树(Interconnect Trees)

一旦电阻和电容估计过后,预布局 R w i r e R_{wire} Rwire C w i r e ′ C_{wire'} Cwire便确定下来了,接下来的问题便是互连线的结构。互连RC结构相对于驱动单元该如何分布呢? 这一点很重要,因为从驱动引脚(driver pin)到负载引脚(load pin)的互连延迟取决于互连的结构。通常,互连延迟取决于沿路径的互连电阻和电容大小。因此,延迟值可能会有所不同,具体取决于给这个网络(net)假定的拓扑结构。

对于预布局估计,互连RC树可以表示为以下三种不同表示方法的一种,如下图所示。注意总的互连线长度(因此电阻和电容估计)在以下三种方法中是一样的。

  • Best-case tree:在最佳情况树中,假定负载引脚在物理上与驱动引脚相邻。因此,到负载引脚的路径中都没有互连电阻,来自其它扇出引脚的所有互连线电容和引脚电容仍然作为驱动引脚上的负载。
  • Balanced RC tree:在该场景下,假定每个负载引脚在互连线的分割部分上。每个通往负载引脚的路径上的电阻电容视作为总线电阻和电容的等比例部分。
  • Worst-case tree:在该场景下,假定所有的负载引脚都远离线,在互连线的另一端。因此每个负载引脚都具有全部的总线电阻和总线电容。

4.2.2 指定线负载模型(Specifying Wireload Models)

线负载模型可由set_wire_load_model命令来指定:

set_wire_load_model "wlm_cons" -library "lib_stdcell"
# Says to use the wireload model wlm_cons present in the
# cell library lib_stdcell.

当一个网络跨越了设计层次(hierarchical)的边界时,可以基于线负载模式(wireload mode)将不同的线负载模型应用于每个层次中网络的不同部分。这些线负载模式是:

  • i .          t o p i.\,\,\,\,\,\,\,\, top i.top
  • i i .       e n c l o s e d ii.\,\,\,\,\, enclosed ii.enclosed
  • i i i .     s e g m e n t e d iii.\,\,\, segmented iii.segmented

线负载模式可以使用set_wire_load_mode命令来指定:

set_wire_load_mode enclosed

t o p top top线负载模式下,层次结构中的所有网络都将继承顶层( t o p top top)的线负载模型,即忽略下级层级中指定的任何线负载模型。因此,顶层的线负载模型具有优先权。对于下图所示的例子,块 B 1 B1 B1中指定的wlm_cons线负载模型优先于块 B 2 B2 B2 B 3 B3 B3 B 4 B4 B4中指定的所有其它线负载模型。

e n c l o s e d enclosed enclosed线负载模式下,将完全包含网络的那个块中使用的线负载模型用于整个网络。对于下图中所示的例子,网络 N E T Q NETQ NETQ被完全包含在块 B 2 B2 B2中,因此将块 B 2 B2 B2的线负载模型wlm_light用于该网络。同理,完全包含在块 B 3 B3 B3中的网络使用wlm_aggr线负载模型,而完全包含在块 B 5 B5 B5中的网络使用wlm_typ线负载模型。

s e g m e n t e d segmented segmented线负载模式下,网络的每段(segment)都从包含该段的块中获取其线负载模型,网络的每个部分都在该层次内使用适当的线负载模型。下图说明了一个网络 N E T Q NETQ NETQ,它的三段分别在三个块中。 B 3 B3 B3块中此网络的扇出互连使用wlm_aggr线负载模型, B 4 B4 B4块中使用wlm_typ线负载模型, B 2 B2 B2块中使用wlm_light线负载模型。

通常根据模块的芯片面积来选择线负载模型。但可以根据用户的判断修改或更改它们。例如,可以为面积在 0 0 0 400 400 400之间的块选择线负载模型wlm_aggr,为面积在 400 400 400 1000 1000 1000之间的块选择线负载模型wlm_typ,为面积大于 1000 1000 1000的块选择线负载模型wlm_cons。 线负载模型通常在单元库中定义,但是用户也可以自定义线负载模型。可以在单元库中将默认的线负载模型指定为:

​default_wire_load : "wlm_light" ;

在单元库中定义了一个线负载模型选择组,该组根据面积选择线负载模型,以下是一个示例:

wire_load_selection (WireAreaSelGrp){
	wire_load_from_area(0, 50000, "wlm_light");
	wire_load_from_area(50000, 100000, "wlm_cons");
	wire_load_from_area(100000, 200000, "wlm_typ");
	wire_load_from_area(200000, 500000, "wlm_aggr");
}

单元库可以包含许多这样的选择组。通过使用set_wire_load_selection_group命令可以选择特定的一个组供STA使用。

set_wire_load_selection_group WireAreaSelGrp

本节介绍了在物理实现之前(即在预布局阶段)估算寄生参数的建模过程。下一节将介绍从布局中提取得到的寄生参数的表示方法。



4.3 提取寄生参数的表示方法(Representation of Extracted Parasitics)

从布局中提取的寄生参数可以用以下三种格式描述:

  • 详尽的寄生参数格式:Detailed Standard Parasitic Format (DSPF);
  • 精简的寄生参数格式:Reduced Standard Parasitic Format (RSPF);
  • 标准的寄生参数格式:Standard Parasitic Extraction Format (SPEF);

一些工具还提供了专用的寄生参数二进制表示格式,例如SBPF;这有助于减小文件存储空间,并加快了工具读取寄生参数的速度。下面分别对以上三种格式进行简要说明。


4.3.1 详尽的寄生参数格式(Detailed Standard Parasitics Format)

在DSPF表示中,具体的寄生参数使用SPICE格式(一种可被电路仿真器读出的格式)进行表示。SPICE中的Comment语句用于表明单元类型、单元引脚及其电容。电阻和电容值采用标准SPICE语法,并且单元实例也包含在此表示格式中。这种格式的优势在于,DSPF文件可以用作SPICE仿真器本身的输入。但是,缺点是DSPF语法过于详细和冗长,导致模块的总文件大小非常大。因此,这种格式在实际中仅用于相对较小的一组网络。

以下是DSPF文件的示例,描述了从主输入 I N IN IN到缓冲器 B U F BUF BUF的输入引脚 A A A以及从 B U F BUF BUF的输出引脚 O U T OUT OUT到主输出引脚 O U T OUT OUT的一个网络互连。

.SUBCKT TEST_EXAMPLE OUT IN
* Net Section
*|GROUND_NET VSS
*|NET IN 4.9E-02PF
*|P (IN I 0.0 0.0 4.1)
*|I (BUF1:A BUF A I 0.0 0.7 4.3)
C1 IN VSS 2.3E-02PF
C2 BUF1:A VSS 2.6E-02PF
R1 IN BUF1:A 4.8E00
*|NET OUT 4.47E-02PF
*|S (OUT:1 8.3 0.7)
*|P (OUT O 0.0 8.3 0.0)
*|I (BUF1:OUT BUF1 OUT O 0.0 4.9 0.7)
C3 BUF1:OUT VSS 3.5E-02PF
C4 OUT:1 VSS 4.9E-03PF
C5 OUT VSS 4.8E-03PF
R2 BUF1:OUT OUT:1 12.1E00
R3 OUT:1 OUT 8.3E00
*Instance Section
X1 BUF1:A BUF1:OUT BUF
.ENDS

DSPF中的非标准SPICE语句是以*|开头,并具有以下格式:

*|I(InstancePinName InstanceName PinName PinType PinCap X Y)
*|P(PinName PinType PinCap X Y)
*|NET NetName NetCap
*|S(SubNodeName X Y)
*|GROUND_NET NetName

4.3.2 精简的寄生参数格式(Reduced Standard Parasitic Format)

使用RSPF格式时,寄生参数以精简的形式表示。精简格式包括电压源和受控电流源。RSPF格式也是SPICE文件,也可以将其读取到类似SPICE的仿真器中。RSPF格式要求简化详细的寄生参数并将其映射为精简格式,因此这是RSPF格式的一个缺点,因为寄生提取过程的重点通常是提取的精度,而不是压缩成RSPF之类的精简格式。RSPF格式的另一个限制是不能以这种格式表示双向信号流。

以下是RSPF文件的示例,原始设计和等效表示如下图所示。

* Date : 7 September 2002
* Time : 02:00:00
* Resistance Units : 1 ohms
* Capacitance Units : 1 pico farads
*| RSPF 1.0
*| DELIMITER "_"
.SUBCKT TEST1 OUT IN
*| GROUND_NET VSS
*|NET CP 0.075PF
*|DRIVER CKBUF_Z CKBUF Z
*|S (CKBUF_Z_OUTP 0.0 0.0)
R1 CKBUF_Z CKBUF_Z_OUTP 8.85
C1 CKBUF_Z_OUTP VSS 0.05PF
C2 CKBUF_Z VSS 0.025PF
*|LOAD SDFF1_CP SDFF1 CP
*|S (SDFF1_CP_INP 0.0 0.0)
E1 SDFF1_CP_INP VSS CKBUF_Z VSS 1.0
R2 SDFF1_CP_INP SDFF1_CP 52.0
C3 SDFF1_CP VSS 0.1PF
*|LOAD SDFF2_CP SDFF2 CP
*|S (SDFF2_CP_INP 0.0 0.0)
E2 SDFF2_CP_INP VSS CKBUF_Z VSS 1.0
R3 SDFF2_CP_INP SDFF2_CP 43.5
C4 SDFF2_CP VSS 0.1PF
*Instance Section
X1 SDFF1_Q SDFF1_QN SDFF1_D SDFF1_CP SDFF1_CD VDD VSS SDFF
X2 SDFF2_Q SDFF2_QN SDFF2_D SDFF2_CP SDFF2_CD VDD VSS SDFF
X3 CKBUF_Z CKBUF_A VDD VSS CKBUF
.ENDS
.END

这个文件具有以下特点:

  • 在每个扇出单元的输入引脚上都使用0.1pF的电容( C 3 C3 C3 C 4 C4 C4)和电阻( R 2 R2 R2 R 3 R3 R3)对引脚到引脚(pin-to-pin)的互连延迟进行建模,电阻值的选取原则是使 R C RC RC延迟对应于引脚到引脚的互连延迟。驱动单元输出引脚上的 π \pi π型负载模拟了通过该单元的延迟。
  • 输入端的RC元件由理想电压源( E 1 E1 E1 E 2 E2 E2)驱动,该电压源等于驱动单元输出端的电压。

4.3.3 标准的寄生参数格式(Standard Parasitic Extraction Format)

SPEF是一种紧凑格式,可以表示详细的寄生参数。下面是一个具有两个扇出的网络的示例:

*D_NET NET_27 0.77181
*CONN
*I *8:Q O *L 0 *D CELL1
*I *10:I I *L 12.3
*CAP
1 *9:0 0.00372945
2 *9:1 0.0206066
3 *9:2 0.035503
4 *9:3 0.0186259
5 *9:4 0.0117878
6 *9:5 0.0189788
7 *9:6 0.0194256
8 *9:7 0.0122347
9 *9:8 0.00972101
10 *9:9 0.298681
11 *9:10 0.305738
12 *9:11 0.0167775
*RES
1 *9:0 *9:1 0.0327394
2 *9:1 *9:2 0.116926
3 *9:2 *9:3 0.119265
4 *9:4 *9:5 0.0122066
5 *9:5 *9:6 0.0122066
6 *9:6 *9:7 0.0122066
7 *9:8 *9:9 0.142205
8 *9:9 *9:10 3.85904
9 *9:10 *9:11 0.142205
10 *9:12 *9:2 1.33151
11 *9:13 *9:6 1.33151
12 *9:1 *9:9 1.33151
13 *9:5 *9:10 1.33151
14 *9:12 *8:Q 0
15 *9:13 *10:I 0
*END

寄生电阻和电容的单位在SPEF文件的开头中指定,附录C中提供了SPEF文件的更详细说明。由于SPEF的紧凑性和表示的完整性,它是设计中寄生参数表示方法的首选格式。



4.4 耦合电容表示方法(Representing Coupling Capacitances)

上一节说明了将一个网络的电容表示为接地(grounded)电容的情况。由于纳米技术中的大多数电容是侧壁(sidewall)电容,因此这些电容的恰当表示形式应该是信号到信号(signal-to-signal)的耦合电容(Coupling Capacitance)。

DSPF中耦合电容的表示是对原始DSPF标准的附加(add-on),因此不是唯一的。耦合电容会在两组耦合网络之间被复制,这意味着由于两组网络中有重复的耦合电容,因此DSPF无法直接被读入SPICE。一些输出DSPF的工具通过在两个耦合网络中各包含一半的耦合电容解决了这一问题。

RSPF是精简的格式,因此不适合表示耦合电容。

SPEF标准以统一和明确的方式处理耦合电容,因此是考虑串扰(crosstalk)时序时优先选择的提取格式。此外,就文件大小而言,SPEF是紧凑的表示格式,适合用于表示带耦合或不带耦合的寄生参数。

如附录C中所描述,管理文件大小的机制之一是在文件的开头列出名称目录(name directory)。现在,许多提取工具在SPEF文件的开头指定了网络名目录(将网络名表示为索引),从而避免了重复网络名的冗长性,这样可以大大减小文件大小。附录C中列举了一个SPEF的名称目录示例。



4.5 分层方法(Hierarchical Methodology)

大型复杂的设计通常在物理设计过程中需要使用分层方法(hierarchical methodology)来进行寄生参数提取和时序验证。在这种情况下,模块的寄生参数会在模块级别提取,然后可以在更高的层次上使用。

可以将从一个模块的布局中提取得到的寄生参数用于尚未完成布局的另一个模块的时序验证。在这种情况下,通常将已布局完的模块的寄生参数与预布局模块的基于线负载模型的估计寄生参数结合使用。

在使用分层方法的流程中,顶层(top)模块的布局最先完成,但其中的模块仍为黑匣子(预布局),基于线负载模型估计所得的寄生参数可以结合从布局完成的顶层中提取得到的寄生参数用于较低层次的模块。 一旦各模块的布局也完成了,就可以将从顶部和模块的布局中提取得到的寄生参数结合在一起。

布局中的重复模块

如果将一个设计模块在布局中复制多次,则可以将从一个实例(instantiation)中提取的寄生参数用于所有实例,这就要求该模块的布局在各方面对于每个实例都是相同的。例如,从布局内的布线网络看,布局环境(environment)应该没有差异,这意味着模块内网络不与模块外部的任何网络电容耦合。可以做到这一点的一种方法是:确保没有在模块内布线任何顶层的网络,并且对在块的边界附近布线的网络有足够的保护或间距。



4.6 减少关键网络的寄生参数(Reducing Parasitics for Critical Nets)

本节简要概述了管理寄生参数对关键(critical)网络影响的常用技术。

降低互连电阻

对于关键网络,重要的是要保持较低的压摆率(slew)或快速的过渡时间(transition),这意味着应降低互连电阻。通常,有两种方法可以实现较低的电阻:

  • 宽走线(Wide trace):具有比最小宽度更加宽的走线可以降低互连电阻,而且不会引起寄生电容的显著增加。因此,可以减少总的RC互连延迟和过渡时间。
  • 在较高(较厚)金属中布线:较高的金属层通常具有低电阻率,可用于给关键信号布线。较低的互连电阻可减少互连延迟以及目标引脚(destination pin)上的过渡时间。

增加走线间距

增加走线之间的间距可以减少网络的耦合电容和总电容。大的耦合电容会增加串扰,避免串扰是在长距离相邻走线中布线的网络的重要考虑因素。

相关网络的寄生参数

在许多情况下,一组网络必须在时序上匹配。比如高速DDR接口的一个字节通道内的数据信号,因为需要保证一个字节通道内的所有信号都具有相同的寄生参数,所以这些信号都应在同一金属层中布线。例如,虽然金属层 M 2 M2 M2 M 3 M3 M3具有相同的平均值和相同的统计变化,但是这些变化是独立的,从而这两个金属层中的寄生参数变化是无关的。因此,如果对于关键信号的时序匹配很重要,则在每个金属层中的布线必须相同。



知乎翻译圣经

静态时序分析圣经翻译计划——第四章:互连寄生 (上)
静态时序分析圣经翻译计划——第四章:互连寄生 (下)

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值