【第四章:互联寄生 上】静态时序分析圣经翻译计划
本文由知乎
赵俊军
授权转载,知乎主页为https://www.zhihu.com/people/zhao-jun-jun-19
本章节介绍用于处理和表示互连寄生(interconnect parasitics)现象的各种技术,以验证设计的时序。
- 在数字设计中,将标准单元或块(block)的引脚连接在一起的线(wire)称为网络(net)。网络通常只有一个驱动,但它可以驱动多个扇出单元或块。物理实现(physical implementation)后,网络可以在芯片的多个金属层上移动,各种金属层可以具有不同的电阻和电容值。对于等效的电气表示,通常将网络划分为多个段(segment),每个段均由等效的寄生参数表示。我们也将段称为互连走线(interconnect trace),也就是说,它是特定金属层上网络的一部分。
4.1 互连RLC
互连电阻(R)来自设计实现中各种金属层和过孔(vias)中的互连走线。图4-1是一个穿越各种金属层和过孔的网络示例。因此,可以将互连电阻视为单元的输出引脚与扇出单元的输入引脚之间的电阻。
互连电容(C)也来自金属走线,包括接地电容以及相邻信号路径之间的电容。
互连电感(L)是由于电流环路而产生的,通常,电感效应在芯片内可以忽略不计,仅在封装和板级分析中考虑。在芯片级设计中,电流环路又窄又短,这意味着电流返回路径是通过电源或地信号而紧密相连的。在大多数情况下,时序分析不考虑片上电感,片上电感分析的任何进一步描述都超出了本书的范围。接下来仅分析互连电阻和互连电容的表示方法。
理想情况下,互连走线一部分的电阻和电容(RC)用分布式(distributed)RC树表示,如图4-2所示。 在此图中,RC树的总电阻和总电容Rt和Ct分别等于Rp * L和Cp * L,其中Rp和Cp分别是单位长度走线的互连电阻和电容值,L是走线长度。Rp和Cp值通常是从各种配置下提取的寄生参数中获得的,并由ASIC代工厂提供。
RC互连可以通过各种简化模型来表示,这些将在下面的小节中进行介绍。
T模型
使用T模型表示时,总电容Ct被建模为在电阻树中间的连接。总电阻Rt被分为两部分(每部分为Rt / 2),Ct连接在电阻树的中点,如图4-3所示。
π模型
在如图4-4所示的π模型中,总电容Ct被分为两部分(每部分为Ct / 2),并连接在电阻的两侧。
通过将Rt和Ct分成多个部分,可以获得分布式RC树的更准确表示。若分为N个部分,则每个中间部分的电阻和电容值分别为Rt / N和Ct /N,而两端部分需要根据T模型或π模型的概念来进行建模。图4-5中两端部分使用了T模型进行建模,而图4-6中两端部分使用了π模型进行建模。
4.2 线负载模型
在进行布局规划(floorplanning)或布局(layout)之前,可以使用线负载模型(wireload models)来估计由互连线带来的电容、电阻以及面积开销。线负载模型可用于根据扇出数量来估计网络的长度,线负载模型取决于块(block)的面积,具有不同面积的设计可以选择不同的线负载模型。线负载模型还可以将网络的估计长度映射(map)为电阻、电容以及由于布线而产生的相应面积开销。
块内的平均走线长度与块的面积密切相关:随着块面积的增加,平均走线长度也会增加。图4-7显示,对于不同的面积(芯片或块),通常将使用不同的线负载模型来确定寄生效应。因此,下图中面积小的块的电容比较小。
以下是一个线负载模型的例子:
resistance是互连线单位长度的电阻值,capacitance是互连线单位长度的电容值,area是互连线单位长度的面积开销,slope是用于扇出-长度(fanout_length)表中未指定的数据点的外推斜率。
线负载模型描述了互连线长度与扇出之间的函数关系,上面的示例如图4-8所示。对于表中未明确列出的任何扇出值,可使用具有指定斜率的线性外推法计算得到互连线长度。例如,扇出为8时可进行如下计算:
- 互连线长度 = 4.1 + (8 - 5) * 0.5 = 5.6
- 电容值 = 5.6 * 1.1 = 6.16
- 电阻值 = 5.6 * 5 =28.0
- 面积开销 = 5.6 * 0.05 = 0.28
上述计算结果中长度、电容、电阻、面积的单位都会在库(library)中指定。
4.2.1 互连树
一旦确定了预布局(pre-layout)后互连线的电阻电容估计值(即Rwire和Cwire),下一个问题便是互连结构。互连RC结构相对于驱动单元该如何分布呢? 这一点很重要,因为从驱动引脚(driver pin)到负载引脚(load pin)的互连延迟取决于互连的结构。通常,互连延迟取决于沿路径的互连电阻和电容大小。因此,延迟值可能会有所不同,具体取决于给这个网络(net)假定的拓扑结构。
对于预布局估计,可以使用以下三种不同形式来表示互连RC树(见图4-9)。请注意,每个互连线的总长度(以及电阻和电容估计值)在这三种情况下是相同的。
- Best-case tree
在最佳情况树中,假定负载引脚在物理上与驱动引脚相邻。因此,到负载引脚的路径中都没有互连电阻,来自其它扇出引脚的所有互连线电容和引脚电容仍然作为驱动引脚上的负载。
- Balanced tree
在这种情况下,假定每个负载引脚都在互连线的一部分上,并且每条到达负载引脚的路径上的总电阻和电容都相等。
- Worst-case tree
在最差情况树中,假定所有负载引脚都集中在互连线的另一端。因此,每条到负载引脚的路径上都会有全部的互连线电阻和电容。
4.2.2 指定线负载模型
使用以下命令指定线负载模型:
set_wire_load_model "wlm_cons" -library "lib_stdcell"
以上命令表示使用单元库lib_stdcell中的线负载模型wlm_cons。
当一个网络跨越了设计层次(hierarchical)的边界时,可以基于线负载模式(wireload mode)将不同的线负载模型应用于每个层次中网络的不同部分。这些线负载模式是:
- top
- enclosed
- segmented
可以使用set_wire_load_mode来指定线负载模式:
set_wire_load_mode enclosed
在top线负载模式下,层次结构中的所有网络都将继承顶层(top)的线负载模型,即忽略下级层级中指定的任何线负载模型。因此,顶层的线负载模型具有优先权。对于图4-10所示的例子,块B1中指定的wlm_cons线负载模型优先于块B2、B3和B4中指定的所有其它线负载模型。
在enclosed线负载模式下,将完全包含网络的那个块中使用的线负载模型用于整个网络。对于图4-11中所示的例子,网络NETQ被完全包含在块B2中,因此将块B2的线负载模型wlm_light用于该网络。同理,完全包含在块B3中的网络使用wlm_aggr线负载模型,而完全包含在块B5中的网络使用wlm_typ线负载模型。
在segmented线负载模式下,网络的每段(segment)都从包含该段的块中获取其线负载模型,网络的每个部分都在该层次内使用适当的线负载模型。图4-12举例说明了一个网络NETQ,它的三段分别在三个块中。B3块中此网络的扇出互连使用wlm_aggr线负载模型,B4块中使用wlm_typ线负载模型,B2块中使用wlm_light线负载模型。
通常,是根据模块的芯片面积来选择线负载模型的。但是,可以根据用户的判断修改或更改它们。例如,可以为面积在0到400之间的块选择线负载模型wlm_aggr,为面积在400到1000之间的块选择线负载模型wlm_typ,为面积大于1000的块选择线负载模型wlm_cons。 线负载模型通常在单元库中定义,但是用户也可以自定义线负载模型。可以在单元库中将默认的线负载模型指定为:
default_wire_load : "wlm_light" ;
在单元库中定义了一个线负载模型选择组,该组根据面积选择线负载模型,以下是一个示例:
单元库可以包含许多这样的选择组。通过使用set_wire_load_selection_group,可以选择特定的一个组供STA使用。
set_wire_load_selection_group WireAreaSelGrp
本节介绍了在物理实现之前(即在预布局阶段)估算寄生参数的建模过程。下一节将介绍从布局中提取得到的寄生参数的表示方法。