附录C:Standard Parasitic Extraction Format(SPEF)

本附录将介绍标准寄生参数提取格式( S P E F SPEF SPEF),它是 I E E E   S t d   1481 IEEE\ Std\ 1481 IEEE Std 1481标准的一部分。



C.1 基础(Basics)

S P E F SPEF SPEF允许以 A S C I I ASCII ASCII交换格式描述设计的寄生信息( R R R L L L C C C)。用户可以读取和检查 S P E F SPEF SPEF文件中的值,尽管用户永远不会手动创建此文件。它主要用于将寄生信息从一个工具传递到另一个工具。图C-1显示了 S P E F SPEF SPEF可以由诸如布局布线工具或寄生参数提取工具之类的工具生成,然后交由时序分析工具用于电路仿真或执行串扰分析。

寄生参数可以在许多不同的层次上表示。 S P E F SPEF SPEF支持分布式(distributed net)网络模型、(reduced net)简化网络模型和(lumped capacitance)集总电容模型。在分布式网络模型( D _ N E T D\_NET D_NET)中,网络走线的每段都有其自己的 R R R C C C。在简化网络模型( R _ N E T R\_NET R_NET)中,在网络的负载引脚上考虑一个简化的 R R R C C C,而在网络的驱动引脚上考虑一个 π π π模型( C − R − C C-R-C CRC)。在集总电容模型中,仅为整个网络指定一个电容。图C-2显示了物理网络走线的一个示例,图C-3显示了分布式网络模型,图C-4显示了简化的网络模型,图C-5显示了集总电容模型。

互连寄生效应取决于工艺, S P E F SPEF SPEF支持最佳(best-case)、典型(typical)和最差(worst-case)三种情况。允许 R R R L L L C C C值、端口压摆和负载使用此三种不同情况下的值。

通过提供一个包含网络名称和实例名称映射到索引的一个名称映射(name map),可以有效地减小 S P E F SPEF SPEF文件的大小,更重要的是,所有较长名称仅出现在一个位置。

设计的 S P E F SPEF SPEF文件可以拆分为多个文件,也可以分层。



C.2 格式(Format)

S P E F SPEF SPEF文件的格式如下:

header_definition
[ name_map ]
[ power_definition ]
[ external_definition ]
[ define_definition ]
internal_definition

header_definition包含了基本信息,例如 S P E F SPEF SPEF版本号、设计名称以及 R R R L L L C C C的单位。name_map指定了网络名称和实例名称到索引的映射。power_definition声明了电源网络和地网络。external_definition定义了设计的端口。define_definition中指出了 S P E F SPEF SPEF还在其它文件中进行描述了的那些实例。internal_definition包含的是文件的核心——设计的寄生参数。

图C-6显示了header_definition的示例:

  • *SPEF name 指定了SPEF的版本号;
  • *DESIGN name 指定了设计的名称;
  • *DATE string 指定了创建文件时的时间戳;
  • *VENDOR string 指定了用于创建 S P E F SPEF SPEF的供应商工具;
  • *PROGRAM string 指定了用于生成 S P E F SPEF SPEF的程序;
  • *VERSION string 指定了用于创建 S P E F SPEF SPEF的程序的版本号;
  • *DESIGN_FLOW string string string . . . 指定了在什么阶段创建 S P E F SPEF SPEF文件。它描述了有关 S P E F SPEF SPEF文件的信息,这些信息无法通过读取文件来获得。

预定义的字符串值为:

  • EXTERNAL_LOADS:外部载荷在 S P E F SPEF SPEF文件中完全指定。
  • EXTERNAL_SLEWS:外部压摆在 S P E F SPEF SPEF文件中完全指定。
  • FULL_CONNECTIVITY S P E F SPEF SPEF中存在逻辑网表连接。
  • MISSING_NETS S P E F SPEF SPEF文件中可能缺少某些逻辑网络。
  • NETLIST_TYPE_VERILOG:使用 V e r i l o g   H D L Verilog\ HDL Verilog HDL类型命名约定。
  • NETLIST_TYPE_VHDL87:使用 V H D L 87 VHDL87 VHDL87命名约定。
  • NETLIST_TYPE_VHDL93:使用 V H D L 93 VHDL93 VHDL93网表命名约定。
  • NETLIST_TYPE_EDIF:使用 E D I F EDIF EDIF类型命名约定。
  • ROUTING_CONFIDENCE:(正整数)所有网络的默认走线置信度,基本上是寄生精度的水平。
  • ROUTING_CONFIDENCE_ENTRY:补充走线置信度值。
  • NAME_SCOPE_LOCAL | FLAT:指定了 S P E F SPEF SPEF文件中的路径是相对于文件还是相对于设计顶层。
  • SLEW_THRESHOLDS:(low_input_threshold_percenthigh_input_threshold_percent)指定了设计的默认输入转换阈值。
  • PIN_CAP NONE | INPUT_OUTPUT | INPUT_ONLY:指定了作为总电容一部分的引脚电容类型,默认值为INPUT_OUTPUT

header definition字段中:

  • *DIVIDER / 指定了层次结构分隔符。可以使用的其它字符是. , :/
  • *DELIMITER :指定了实例与其引脚之间的分隔符。可以使用的其它可能字符是. , / , : 或者 |
  • *BUS_DELIMITER [ ] 指定了用于标识总线位的前缀和后缀。可以用于前缀和后缀的其他可能字符是{ , ( , < , : .} , ), >
  • *T_UNIT 正整数 NS | PS 指定了时间单位。
  • *C_UNIT 正整数 PF | FF 指定了电容单位。
  • *R_UNIT 正整数 OHM| KOHM 指定了电阻单位。
  • *L_UNIT 正整数 HENRY | MH | UH 指定了电感单位。

S P E F SPEF SPEF文件中的注释可以两种形式出现:

// Comment - until end of line.

/* This comment can
extend across multiple
lines */

下面是名称映射形式,同时图C-7展示了一个名称映射的示例:

*NAME_MAP
*positive_integer name
*positive_integer name
. . .

在这里插入图片描述

名称映射将指定名称到唯一整数值(它们的索引)的映射。名称映射有助于通过索引来对名称进行引用从而减小文件的大小,名称可以是网络名称或实例名称。考虑图C-7中的名称映射,以后可以使用它们的索引在 S P E F SPEF SPEF文件中引用这些名称,例如:

*364:D // D pin of instance
	// mcdll_write_data/write19/d_out_2x_reg_19
*11172:Y // Y pin of instance
		 // Tie_VSSQ_assign_buf_318_N_1
*5426:116 // Internal node of net
	// mcdll_read_data/read21/capture_pos_0[21]
*5426:10278 // Internal node of net *5426
*12 // The net int_d_out[57]

因此,名称映射会通过使用其唯一的整数表示来避免重复长名称及其路径。


power definition部分定义了电源和接地网络:

*POWER_NETS net_name net_name . . .
*GROUND_NETS net_name net_name . . .

以下是一些示例:

*POWER_NETS VDDQ
*GROUND_NETS VSSQ

external_definition包含了设计的逻辑和物理端口的定义。图C-8显示了逻辑端口的示例,逻辑端口可以以下形式描述:

*PORTS
port_name direction { conn_attribute }
port_name direction { conn_attribute }
. . .

在这里插入图片描述
其中port_name可以是形式为*positive_integer的端口索引。方向为 I I I表示输入, O O O表示输出, B B B表示双向。连接属性(conn_attribute)是可选的,可以是以下属性:

  • *C number number:端口的坐标。
  • *L par_value:端口的电容负载。
  • *S par_value par_value:定义端口上的波形。
  • *D cell_type:定义端口的驱动单元。

可以使用以下命令定义 S P E F SPEF SPEF文件中的物理端口:

*PHYSICAL_PORTS
pport_name direction { conn_attribute }
pport_name direction { conn_attribute }
. . .

define definition部分定义了当前 S P E F SPEF SPEF文件中引用的实例,但其寄生参数在其它 S P E F SPEF SPEF文件中进行了描述:

*DEFINE instance_name { instance_name } entity_name
*PDEFINE physical_instance entity_name

当实例是物理分区(而不是逻辑层次结构)时,将使用*PDEFINE。以下有些例子:

*DEFINE core/u1ddrphy core/u2ddrphy “ddrphy”

这意味着将存在另一个带有*DESIGNddrphy S P E F SPEF SPEF文件,该文件将包含设计ddrphy的寄生参数,其可能具有物理和逻辑层次结构。跨越层次边界的任何网络都必须描述为分布式网络( D _ N E T D\_NET D_NET)。


internal definition部分包含了 S P E F SPEF SPEF文件的核心,即设计中网络的寄生参数。基本上有两种形式:分布式网络 D _ N E T D\_NET D_NET和简化网络 R _ N E T R\_NET R_NET。图C-9中为一个分布式网络定义的示例:

在这里插入图片描述
第一行中的*5426是网络的索引号(网络名称请参见名称映射),0.899466是网络上的总电容值。电容值是网络上所有电容的总和,其中包括假定为接地的交叉耦合电容,还包括负载电容。它可能包含也可能不包含引脚电容,具体取决于*DESIGN_FLOW定义中的PIN_CAP设置。


connectivity section描述了网络的驱动和负载引脚:

*CONN
*I *14212:D I *C 21.7150 79.2300
*I *14214:Q O *C 21.4950 76.6000 *D DFFQX1

*I表示内部引脚( *P表示端口),*14212D表示实例*14212D引脚,*14212是一个索引号(有关实际名称需参见名称映射)。I表示网络上的负载(输入引脚),O表示网络上的驱动(输出引脚)。*C*D如先前在connection attributes中所定义的那样,*C定义了引脚的坐标,*D定义了引脚的驱动单元。


capacitance section描述了分布式网络的电容,电容单位在之前已用*C_UNIT指定。

*CAP
//version 1
1 *5426:10278 *5290:8775 0.217446
2 *5426:10278 *16:3754 0.0105401
3 *5426:10278 *5266:9481 0.0278254
4 *5426:10278 *5116:9922 0.113918
//version 2
5 *5426:10278 0.529736

第一个数字是电容标识符。电容规范有两种形式: 第一种到第四种一种形式,第五种是另一种形式。第一种形式(第一至第四种)指定两个网络之间的交叉耦合电容,而第二种形式( i d id id 5 5 5)指定接地电容。因此,在电容 i d 1 id1 id1中,网络*5426*5290之间的交叉耦合电容为0.217446;在电容 i d 5 id5 id5中,接地电容为0.529736。请注意,第一个节点名称必须是所描述的 D _ N E T D\_NET D_NET的网络名称。网络索引后面的正整数(*5426:10278中的10278)指定内部节点或连接点。因此,电容 i d 4 id4 id4表示在内部节点10278的网络*5426和内部节点9922的网络*5116之间存在耦合电容,该耦合电容的值为0.113918


resistance section描述了分布式网络的电阻,电阻单位在之前已用*R_UNIT指定。

*RES
1 *5426:10278 *14212:D 0.340000
2 *5426:10278 *5426:10142 0.916273
3 *5426:10142 *14214:Q 0.340000

第一个字段是电阻标识符。因此,该网络具有三个电阻部分。第一个在内部节点*5426:10278*14212上的 D D D引脚之间,电阻值为0.34。使用图C-10中所示的 R C RC RC网络可以更好地理解电容和电阻部分。

图C-11显示了分布式网络的另一个示例。该网络具有一个驱动和两个负载,网络上的总电容为 2.69358 2.69358 2.69358。图C-12显示了与分布式网络相对应的RC网络。

在这里插入图片描述

通常,内部定义(internal definition)可以包含以下规范:

  • D_NET:逻辑网络的分布式 R C RC RC网络形式。
  • R_NET:逻辑网络的简化 R C RC RC网络形式。
  • D_PNET:物理网络的分布式形式。
  • R_PNET:物理网络的简化形式。

语法如下:

*D_NET net_index total_cap [*V routing_confidence ]
	[ conn_section ]
	[ cap_section ]
	[ res_section ]
	[ inductance_section ]
*END

*R_NET net_index total_cap [ *V routing_confidence ]
	[ driver_reduction ]
*END

*D_PNET pnet_index total_cap [*V routing_confidence ]
	[ pconn_section ]
	[ pcap_section ]
	[ pres_section ]
	[ pinduc_section ]
*END

*R_PNET pnet_index total_cap [*V routing_confidence ]
	[ pdriver_reduction ]
*END

inductance section用于指定电感,其格式类似于电阻部分。 *V用于指定网络寄生参数的准确性。这些可以单独使用网络指定,也可以使用带有ROUTING_CONFIDENCE值的*DESIGN_FLOW语句进行全局指定,例如:

*DESIGN_FLOW “ROUTING_CONFIDENCE 100

它指定了寄生参数是在最终单元布局和最终布线之后提取得到的,并且使用了 3 d 3d 3d提取。走线置信度的其它可能值为:

  • 10 10 10:统计线负载模型;
  • 20 20 20:物理线负载模型;
  • 30 30 30:具有位置但没有单元布局的物理分区;
  • 40 40 40:使用基于斯坦纳树(steiner tree)的走线估计的单元位置;
  • 50 50 50:使用全局走线估计的单元位置;
  • 60 60 60:使用斯坦纳走线进行的最终单元布局;
  • 70 70 70:使用全局走线进行的最终单元布局;
  • 80 80 80:最终单元布局,最终走线, 2 d 2d 2d提取;
  • 90 90 90:最终单元布局,最终走线, 2.5 d 2.5d 2.5d提取;
  • 100 100 100:最终单元布局,最终走线, 3 d 3d 3d提取;

reduced net是从分布式网络形式简化而来的网络。网络上每个驱动都有一个驱动精简部分(driver reduction section)。驱动精简部分的形式为:

*DRIVER pin_name
*CELL cell_type
// Driver reduction: one such section for each driver
// of net:
*C2_R1_C1 cap_value res_value cap_value
*LOADS // One following set for each load on net:
*RC pin_name rc_value
*RC pin_name rc_value
. . .

*C2_R1_C1表示在网络的驱动引脚上使用 π π π模型的寄生参数。 *RC结构中的rc_value是指 E l m o r e Elmore Elmore延迟 ( R ∗ C ) (R * C) RC。 图C-13显示了简化后的网络的 S P E F SPEF SPEF示例,图C-14以图形方式显示了 R C RC RC网络。

在这里插入图片描述

可使用*D_NET*R_NET结构描述集总电容模型(lumped capacitance model),该结构仅具有总电容而没有其它信息。以下是集总电容声明的示例:

*D_NET *1 80.2096
*CONN
*I *2:Y O *L 0 *D CLKMX2X2
*P *1 O *L 0
*END

*R_NET *17 58.5204
*END

SPEF文件中的值可以采用三元数组的形式来表示工艺变化,例如:

0.2430.2690.300

最佳情况下值为0.243,典型情况下值为0.269,最差情况下值为0.300。



C.3 完整语法

本节描述了 S P E F SPEF SPEF文件的完整语法。

可以在字符前面加上反斜杠\来对其进行转义。注释有两种形式://开始注释直到行尾,而/ * . . . * /是多行注释。

在以下语法中,粗体字符如([是语法的一部分。所有结构均按字母顺序排列,起始符号为SPEF_file

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



知乎翻译圣经

静态时序分析圣经翻译计划——附录C:SPEF

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值