❝本附录将介绍标准寄生参数提取格式(SPEF),它是 IEEE Std 1481 标准的一部分。❞
C.1 基础
SPEF 允许以 ASCII 交换格式描述设计的寄生信息(R,L 和 C)。用户可以读取和检查 SPEF 文件中的值,尽管用户永远不会手动创建此文件。它主要用于将寄生信息从一个工具传递到另一个工具。图 C-1 显示了 SPEF 可以由诸如布局布线工具或寄生参数提取工具之类的工具生成,然后交由时序分析工具用于电路仿真或执行串扰分析。
图 C-1
寄生参数可以在许多不同的层次上表示。SPEF 支持分布式(distributed)网络模型、(reduced)简化网络模型和(lumped)集总电容模型。在分布式网络模型(D_NET)中,网络走线的每段都有其自己的 R 和 C。在简化网络模型(R_NET)中,在网络的负载引脚上考虑一个简化的 R 和 C,而在网络的驱动引脚上考虑一个π模型(C-R-C)。在集总电容模型中,仅为整个网络指定一个电容。图 C-2 显示了物理网络走线的一个示例,图 C-3 显示了分布式网络模型,图 C-4 显示了简化的网络模型,图 C-5 显示了集总电容模型。
图 C-2
图 C-3
图 C-4
图 C-5
互连寄生效应取决于工艺,SPEF 支持最佳(best-case)、典型(typical)和最差(worst-case)三种情况。允许 R、L 和 C 值、端口压摆和负载使用此三种不同情况下的值。
通过提供一个包含网络名称和实例名称映射到索引的一个名称映射(name map),可以有效地减小 SPEF 文件的大小,更重要的是,所有较长名称仅出现在一个位置。
设计的 SPEF 文件可以拆分为多个文件,也可以分层。
C.2 格式
SPEF 文件的格式如下:
header_definition 包含了基本信息,例如 SPEF 版本号、设计名称以及 R,L 和 C 的单位。name_map 指定了网络名称和实例名称到索引的映射。power_definition 声明了电源网络和地网络。external_definition 定义了设计的端口。define_definition 中指出了 SPEF 还在其它文件中进行了描述的那些实例。internal_definition 包含的是文件的核心——设计的寄生参数。
图 C-6 显示了 header_definition 的示例:
图 C-6
SPEF name 指定了 SPEF 的版本号;
DESIGN name 指定了设计的名称;
DATE string 指定了创建文件时的时间戳;
VENDOR string 指定了用于创建 SPEF 的供应商工具;
PROGRAM string 指定了用于生成 SPEF 的程序;
VERSION string 指定了用于创建 SPEF 的程序的版本号;
DESIGN_FLOW string string string . . . 指定了在什么阶段创建 SPEF 文件。它描述了有关 SPEF 文件的信息,这些信息无法通过读取文件来获得。
预定义的字符串值为:
EXTERNAL_LOADS:外部载荷在 SPEF 文件中完全指定。
EXTERNAL_SLEWS:外部压摆在 SPEF 文件中完全指定。
FULL_CONNECTIVITY:SPEF 中存在逻辑网表连接。
MISSING_NETS:SPEF 文件中可能缺少某些逻辑网络。
NETLIST_TYPE_VERILOG:使用 Verilog HDL 类型命名约定。
NETLIST_TYPE_VHDL87:使用 VHDL87 命名约定。
NETLIST_TYPE_VHDL93:使用 VHDL93 网表命名约定。
NETLIST_TYPE_EDIF:使用 EDIF 类型命名约定。
ROUTING_CONFIDENCE:(正整数)所有网络的默认走线置信度,基本上是寄生精度的水平。
ROUTING_CONFIDENCE_ENTRY:补充走线置信度值。
NAME_SCOPE_LOCAL | FLAT:指定了 SPEF 文件中的路径是相对于文件还是相对于设计顶层。
SLEW_THRESHOLDS:(low_input_threshold_percent,high_input_threshold_percent)指定了设计的默认输入转换阈值。
PIN_CAP NONE | INPUT_OUTPUT | INPUT_ONLY:指定了作为总电容一部分的引脚电容类型,默认值为 INPUT_OUTPUT。
DIVIDER / 指定了层次结构分隔符。可以使用的其它字符是" . " , " : "和" / "。
DELIMITER :指定了实例与其引脚之间的分隔符。可以使用的其它可能字符是" . " , " / " , " : " 或者 "|"。
BUS_DELIMITER [ ] 指定了用于标识总线位的前缀和后缀。可以用于前缀和后缀的其他可能字符是" { " , " ( " , " < " , " : "," ."和" } " , " ) ", " > "。
T_UNIT 正整数 NS | PS 指定了时间单位。
C_UNIT 正整数 PF | FF 指定了电容单位。
R_UNIT 正整数 OHM| KOHM 指定了电阻单位。
L_UNIT 正整数 HENRY | MH | UH 指定了电感单位。
SPEF 文件中的注释可以两种形式出现:
图 C-7 显示了一个名称映射的示例。它的形式为:
图 C-7
名称映射将指定名称到唯一整数值(它们的索引)的映射。名称映射有助于通过索引来对名称进行引用从而减小文件的大小,名称可以是网络名称或实例名称。考虑图 C-7 中的名称映射,以后可以使用它们的索引在 SPEF 文件中引用这些名称,例如:
因此,名称映射会通过使用其唯一的整数表示来避免重复长名称及其路径。
power definition 部分定义了电源和接地网络:
以下是一些例子:
external_definition 包含了设计的逻辑和物理端口的定义。图 C-8 显示了逻辑端口的示例,逻辑端口可以以下形式描述:
图 C-8
其中 port_name 可以是形式为*正整数的端口索引。方向为 I 表示输入,O 表示输出,B 表示双向。连接属性(conn_attribute)是可选的,可以是以下属性:
*C number number:端口的坐标。
*L par_value:端口的电容负载。
*S par_value par_value:定义端口上的波形。
*D cell_type:定义端口的驱动单元。
可以使用以下命令定义 SPEF 文件中的物理端口:
define definition 部分定义了当前 SPEF 文件中引用的实例,但其寄生参数在其它 SPEF 文件中进行了描述:
当实例是物理分区(而不是逻辑层次结构)时,将使用*PDEFINE。以下有些例子:
这意味着将存在另一个带有*DESIGN 值 ddrphy 的 SPEF 文件,该文件将包含设计 ddrphy 的寄生参数,其可能具有物理和逻辑层次结构。跨越层次边界的任何网络都必须描述为分布式网络(D_NET)。
internal definition 部分包含了 SPEF 文件的核心,即设计中网络的寄生参数。基本上有两种形式:分布式网络 D_NET 和简化网络 R_NET。图 C-9 中为一个分布式网络定义的示例:
图 C-9
第一行中的*5426 是网络的索引号(网络名称请参见名称映射),0.899466 是网络上的总电容值。电容值是网络上所有电容的总和,其中包括假定为接地的交叉耦合电容,还包括负载电容。它可能包含也可能不包含引脚电容,具体取决于 DESIGN_FLOW 定义中的 PIN_CAP 设置。
connectivity section 描述了网络的驱动和负载引脚:
*I 表示内部引脚( * P 表示端口),*14212:D 表示实例*14212 的 D 引脚,14212 是一个索引号(有关实际名称需参见名称映射)。“ I”表示网络上的负载(输入引脚),“ O”表示网络上的驱动(输出引脚)。*C 和 *D 如先前在 connection attributes 中所定义的那样,*C 定义了引脚的坐标,*D 定义了引脚的驱动单元。
capacitance section 描述了分布式网络的电容,电容单位在之前已用* C_UNIT 指定。
第一个数字是电容标识符。电容规范有两种形式:第一种到第四种一种形式,第五种是另一种形式。第一种形式(第一至第四种)指定两个网络之间的交叉耦合电容,而第二种形式(id 为 5)指定接地电容。因此,在电容 id1 中,网络*5426 和*5290 之间的交叉耦合电容为 0.217446;在电容 id5 中,接地电容为 0.529736。请注意,第一个节点名称必须是所描述的 D_NET 的网络名称。网络索引后面的正整数(*5426:10278 中的 10278)指定内部节点或连接点。因此,电容 id4 表示在内部节点 10278 的网络*5426 和内部节点 9922 的网络*5116 之间存在耦合电容,该耦合电容的值为 0.113918。
resistance section 描述了分布式网络的电阻,电阻单位在之前已用* R_UNIT 指定。
第一个字段是电阻标识符。因此,该网络具有三个电阻部分。第一个在内部节点*5426:10278 与*14212 上的 D 引脚之间,电阻值为 0.34。使用图 C-10 中所示的 RC 网络可以更好地理解电容和电阻部分。
图 C-10
图 C-11 显示了分布式网络的另一个示例。该网络具有一个驱动和两个负载,网络上的总电容为 2.69358。图 C-12 显示了与分布式网络相对应的 RC 网络。
图 C-11
图 C-12
通常,内部定义(internal definition)可以包含以下规范:
D_NET:逻辑网络的分布式 RC 网络形式。
R_NET:逻辑网络的简化 RC 网络形式。
D_PNET:物理网络的分布式形式。
R_PNET:物理网络的简化形式。
语法如下:
inductance section 用于指定电感,其格式类似于电阻部分。* V 用于指定网络寄生参数的准确性。这些可以单独使用网络指定,也可以使用带有 ROUTING_CONFIDENCE 值的* DESIGN_FLOW 语句进行全局指定,例如:
它指定了寄生参数是在最终单元布局和最终布线之后提取得到的,并且使用了 3d 提取。走线置信度的其它可能值为:
10:统计线负载模型
20:物理线负载模型
30:具有位置但没有单元布局的物理分区
40:使用基于斯坦纳树(steiner tree)的走线估计的单元位置
50:使用全局走线估计的单元位置
60:使用斯坦纳走线进行的最终单元布局
70:使用全局走线进行的最终单元布局
80:最终单元布局,最终走线,2d 提取
90:最终单元布局,最终走线,2.5d 提取
100:最终单元布局,最终走线,3d 提取
reduced net 是从分布式网络形式简化而来的网络。网络上每个驱动都有一个驱动精简部分(driver reduction section)。驱动精简部分的形式为:
*C2_R1_C1 表示在网络的驱动引脚上使用π模型的寄生参数。* RC 结构中的 rc_value 是指 Elmore 延迟(R * C)。图 C-13 显示了简化后的网络的 SPEF 示例,图 C-14 以图形方式显示了 RC 网络。
图 C-13
图 C-14
可使用*D_NET 或*R_NET 结构描述集总电容模型(lumped capacitance model),该结构仅具有总电容而没有其它信息。以下是集总电容声明的示例:
SPEF 文件中的值可以采用三元数组的形式来表示工艺变化,例如:
- 0.243 :0.269 :0.300
最佳情况下值为 0.243,典型情况下值为 0.269,最差情况下值为 0.300。
C.3 完整语法
本节描述了 SPEF 文件的完整语法。
可以在字符前面加上反斜杠(\)来对其进行转义。注释有两种形式:// 开始注释直到行尾,而 / * . . . * / 是多行注释。
在以下语法中,粗体字符如(,[是语法的一部分。所有结构均按字母顺序排列,起始符号为 SPEF_file:
打个广告
❝
新一期的路科验证春季班已经开始了!现在报名早鸟班(开班之前)即可享受 500 优惠,此外在文末扫描二维码联系路科验证 MOMO,然后报出 a 暗号
摸鱼范式
就能获得额外的200 优惠券
!可以和早鸟班的 500 优惠叠加!对于课程学习有任何问题,都可以扫描下面的二维码,加我微信咨询。除了这门升级中的 V2Pro 课程,恐怕你找不到更好的学验证的途径了
❞
❝
贝塔的微信❞
❝
MOMO 的微信❞