附录C:Standard Parasitic Extraction Format(SPEF)

news2024/11/16 6:29:32

文章目录

    • 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 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/160696.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码整洁之道,好的代码就是为了更美好的生活。

美国童子军有一条简单的军规&#xff1a;让营地比你来时更干净。当梳理代码时&#xff0c;坚守此军规&#xff1a;每次 review 代码&#xff0c;让代码比你发现它时更整洁。 一位大神说过&#xff1a;“衡量代码质量的唯一有效标准&#xff1a;WTF/min”&#xff0c;并配了一个…

Manjaro通过源码编译jdk11

我在编译中遇到的最大的问题就是gcc版本问题&#xff0c;因manjaro是滚动更新&#xff0c;所以gcc也是很新的版本&#xff0c;导致无法编译jdk11 1 下载源码 网上根据关键词查找jdk源码&#xff0c;查找出来很多可以下载源码的链接&#xff0c;这里我们使用github去官方仓库&a…

yolov5-6.0网络添加小目标检测头 TensorRT部署

小目标检测使用TPH-YOLOv5 中的yolov5l-xs-tph.yaml模型&#xff1b;对其中的C3STR替换为C3模块&#xff1b;本文的TensorRT部署是基于yolov5l-xs-tph修改后的模型训练部署&#xff0c;其精度一般主要学习如何TensorRT部署&#xff0c;都是在wang-xinyu基础上简单修改&#xff…

中科大2008年复试机试题

中科大2008年复试机试题 文章目录中科大2008年复试机试题第一题问题描述解题思路及代码第二题问题描述解题思路及代码第三题问题描述解题思路及代码第四题问题描述解题思路及代码第一题 问题描述 一个十进制正整数转换成二进制有多少个1 示例1 输入:10 输出:2解题思路及代码…

数据分析之Excel

自定义格式 一、自定义格式的结构 方式一: 代码结构组成代码码分为四个部分&#xff0c;中间用”;”号分隔&#xff0c;具体如下: 正数格式;负数格式;零格式;文本格式 两个代码部分&#xff0c;则第一部分用于正数和零, 第二部分用于负数 一个代码部分&#xff0c;则该部分将用…

【跟彤砸学编程】——第二课(上)

嗨害嗨大家好&#xff0c;这里是彤砸&#xff01; 今天我们来看看——编程到底是个啥&#xff1f; 上节课滴链接~【跟彤砸学编程】——第一课 程序是什么&#xff1f; 程序数据算法&#xff1b; 数据 生活中到处都是数据—— 1,2,3,是数据 A,B,C是数据 图片是由像素构成&…

【CSDN年度总结】一个四线城市的程序员-苟延残喘

个人简介 首先本人从事软件开发工作近8年&#xff0c;在北京工作5年&#xff0c;2020年1月13号回来老家工作&#xff0c;已经整整3年了&#xff01;&#xff01;&#xff01; 现在做工业大数据方面工作&#xff0c;曾就职于华为做手机系统研发工作。 在一个四线城市坚守做一个…

速看|低代码平台公司流辰信息为实现企业高效办公积极赋能!

流辰信息&#xff0c;历经多年的砥砺奋斗&#xff0c;终于在低代码开发行业斩获越来越多的市场份额&#xff0c;是一家专注于研发低代码产品的低代码平台公司。在持续奋斗的年月中&#xff0c;流辰信息将持续增强研发创新能力&#xff0c;为各企业实现高效办公协作效率强劲赋能…

XC-15媒资管理系统集成

学习页面查询课程计划 需求分析 到目前位置,我们已经可以编辑课程计划信息并且上传课程视频,下一步我们要是心啊在线学习页面动态获取章节对应的视频并且进行播放,在线学习页面所需要的信息有两类,一类是课程计划信息,一类是课程学习信息(视频地址,学习进度等),如下图 在线学…

我与CSDN相识的一年

一、保持初心&#xff0c;笃定前行&#xff0c;回首2022 1、1 保持初心 回想起与CSDN的相识也是有一年多了。最初的相识也是我刚进入大学的时候。那个时候我还是懵懂无知的一个计算机类的大学生。在老师留下的一次任务中&#xff0c;我发现自己有点解决不了&#xff0c;想上网…

如何处理mybatis处理数据库关系中的多对一关系呢?

测试环境的搭建&#xff1a; 导入lombok&#xff1a; 不懂得小伙伴可移步这篇文章 新建实体类&#xff1a; 拿我们日常生活中最常见的举例&#xff1a;多个学生对应一个老师 对于学生这边而言&#xff0c;关联… 多个学生关联一个老师[多对一] 对于老师而言&#xff0c;集…

BGP(边界网关路由协议)小实验

目录实验要求ospf协议启动关于BGP基本知识点BGP关系建立的配置BGP的宣告实验要求 如下实验拓扑&#xff0c;各个自治系统区域和网段已经标注 基本的ip配置&#xff0c;环回配置就不再展示。 要求&#xff1a;除了R5的环回外&#xff0c;其他环回均可以互相访问 ospf协议启动…

C语言进阶——自定义类型——位段、枚举、联合

结构体 目录 一. 位段 1.概念 2.位段的内存分配 3.位段的跨平台问题 4.位段的应用 二. 枚举 1.枚举类型的定义 2.枚举的优点 3.枚举的使用 三. 联合&#xff08;共用体&#xff09; 1.联合类型的定义 ​编辑 2.联合的特点 3. 联合大小的计算 一. 位段 1.…

Git 合并多条commit

文章目录修改前开始修改第一种方式: 命令行第二种方式: Android Studio遇到冲突的解决办法第一种&#xff1a;修改到底,干就完事了第二种&#xff1a;回滚吧&#xff0c;有点慌修改前 开始修改 第一种方式: 命令行 git rebase -i 01fc32484fb2d2229aa20 // 这里对应的是init的…

osg fbo(四),将颜色缓冲区图片中的牛通过shader变绿

osg fbo&#xff08;三&#xff09;中&#xff0c;把整个屏幕变绿了&#xff0c;因为是把shader添加到了颜色缓冲区图片上了。如果只想把牛变绿&#xff0c;就需要把shader添加到原始场景根中。 即 osg::ref_ptr<osg::StateSet> statset_SceneRoot sceneRoot->getOr…

一、Java框架之Spring配置文件开发

文章目录1. 基础概念1.1 Spring Framework1.2 核心概念产生背景IoC、Bean、DI2. 入门案例2.1 普通Maven项目2.2 IoC入门案例2.3 DI入门案例3. bean配置3.1 bean基础配置bean的基础配置bean的别名配置bean的作用范围3.2 bean实例化实例化方法1&#xff1a;构造方法实例化方法2&a…

Chrome浏览器http访问跨越问题与解决方法

一、Chromium 内核&#xff08;<93版本&#xff09;跨越问题解决方法 设置Chrome浏览器的 disable-web-security, 实现跨域访问后端的接口。这个参数可以降低chrome浏览器的安全性&#xff0c;禁用同源策略&#xff0c;利于开发人员本地调试。 解决办法&#xff1a; 新建一…

【区间合并】AcWing 803. 区间合并

803. 区间合并 文章目录题目描述输入格式&#xff1a;输出格式&#xff1a;数据范围输入样例输出样例方法&#xff1a;区间合并解题思路代码复杂度分析&#xff1a;题目描述 给定 nnn 个区间 [li,ri][l_i,r_i][li​,ri​]&#xff0c;要求合并所有有交集的区间。 注意如果在端…

按键精灵免字库本地识别OCR

按键精灵免字库识别—基于百度飞桨PaddleOCR的RapidOCR前言为什么为什么有大漠了还要使用其它OCR为什么要使用RapidOCR开发PaddleOCR介绍PaddleOCR使用衍生项目版——小白方案按键精灵post调用图片转base64方法转json方法post调用JVM版改为mavenOcrEngine路径idea Run配置网页版…

Hudi系列7:使用SparkSQL操作Hudi

文章目录一. SparkSQL连接Hudi1.1 Hive配置1.2 SparkSQL连接Hudi二. 创建表2.1 常规的建表2.2 CTAS三. 插入数据四. 查询数据五. 更新数据5.1 普通5.2 MergeInto六. 删除数据七. Insert Overwrite参考:一. SparkSQL连接Hudi 1.1 Hive配置 我们需要将Hive 的 metastore服务独立…