文章目录
- C.1 基础(Basics)
- C.2 格式(Format)
- C.3 完整语法
- 知乎翻译圣经
本附录将介绍标准寄生参数提取格式( 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 C−R−C)。在集总电容模型中,仅为整个网络指定一个电容。图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_percent
,high_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”
这意味着将存在另一个带有*DESIGN
值ddrphy
的
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
表示端口),*14212
:D
表示实例*14212
的D
引脚,*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)
(R∗C)。 图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.243 : 0.269 : 0.300
最佳情况下值为0.243,典型情况下值为0.269,最差情况下值为0.300。
C.3 完整语法
本节描述了 S P E F SPEF SPEF文件的完整语法。
可以在字符前面加上反斜杠\
来对其进行转义。注释有两种形式://
开始注释直到行尾,而/ * . . . * /
是多行注释。
在以下语法中,粗体字符如(
,[
是语法的一部分。所有结构均按字母顺序排列,起始符号为SPEF_file
:
知乎翻译圣经
静态时序分析圣经翻译计划——附录C:SPEF