本附录将介绍标准延迟标注格式,并说明了如何在仿真中执行反标。

延迟格式描述了设计网表的单元延迟和互连走线延迟,无论设计是用两种主要硬件描述语言(VHDL或Verilog HDL)中的哪一种所描述的。

本章还会介绍仿真的反标(backannotation),STA的反标其实是一个简单直接的过程,其中DUA中的时序弧将由SDF所指定的延迟进行标注。

B.1 什么是SDF?

SDF是指标准延迟格式(Standard Delay Format)。它是一个IEEE标准——IEEE Std1497,它是ASCII文本文件,它描述了时序信息和约束,其目的是用作各种工具之间的文本类型的时序信息交换媒介,它也可以用来描述需要它的工具的时序数据。由于它是IEEE标准,因此由一个工具生成的时序信息可以被支持该标准的许多其它工具所使用。SDF中的数据与工具和语言都无关,且包括了互连走线延迟、器件延迟以及时序检查的规范。

由于SDF是ASCII文件,因此它易于阅读,尽管对于实际设计而言,这些文件往往很大。但是,它是作为工具之间的交换媒介。经常在进行信息交换时,一个工具可能会在生成SDF文件时产生一个问题,而另一个读取SDF的工具可能无法正确读取SDF。读取SDF的工具可能会在读取SDF时产生一个错误或警告,或者它可能会错误地解释SDF中的值。在这种情况下,设计人员可能必须查看SDF文件,看看出了什么问题。本章介绍了SDF文件的基础知识,并提供了必要和足够的信息,以帮助理解和调试任何标注问题。

图B-1显示了如何使用SDF文件的典型流程。时序计算工具通常会生成时序信息存储在SDF文件中。然后,通过读取SDF的工具将该信息反标到设计中。请注意,完整的设计信息不会都存储到SDF文件中,而只会存储延迟值。例如,实例名称和实例的引脚名称将被存储到SDF文件中,因为它们对于指定实例相关或引脚相关的延迟是必需的。因此,必须为SDF生成工具和SDF读取工具提供相同的设计。

图B-1

一个设计可以具有多个与之关联的SDF文件。可以为一个设计创建一个SDF文件,在分层设计中,也可以为分层中的每个块创建多个SDF文件。在标注期间,每个SDF都将应用于适当的分层实例中,如图B-2所示。

图B-2

SDF文件包含了用于反标和标注的时序数据。更具体地说,它包含:

● 单元延迟(Cell delays)

● 脉冲传播(Pulse propagation)

● 时序检查(Timing checks)

● 互连走线延迟(Interconnect delays)

● 时序环境(Timing environment)

引脚到引脚的延迟(pin-to-pin delay)和分布式延迟(distributed delay)都可以针对单元延迟进行建模。引脚到引脚的延迟使用IOPATH结构(construct)表示,这些结构定义了每个单元输入到输出的路径延迟。COND结构还可以用于额外指定有条件的引脚到引脚延迟。状态相关(state-dependent)的路径延迟也可以使用COND结构来指定,分布式延迟的建模是使用DEVICE结构指定的。

脉冲传播结构——PATHPULSEPATHPULSEPERCENT可用于指定使用引脚到引脚延迟模型时允许传播到单元输出端口的毛刺大小。

可以在SDF中指定的时序检查包括:

● 建立时间:SETUP,SETUPHOLD

● 保持时间:HOLD,SETUPHOLD

● 恢复时间:RECOVERY,RECREM

● 撤销时间:REMOVAL,RECREM

● 最大偏斜:SKEW,BIDIRECTSKEW

● 最小脉冲宽度:WIDTH

● 最小周期:PERIOD

● 不变化:NOCHANGE

时序检查中的信号可能存在某些条件。在时序检查中允许使用负值,不支持负值的工具可以选择将其替换为零。

SDF描述中支持三种类型的互连走线建模。INTERCONNECT结构是最通用且最常用的,可用于指定点对点延迟(从源端到接收端),因此单个网络可以具有多个INTERCONNECT结构。PORT结构可用于指定负载端口处的网络延迟,假定网络只有一个源端驱动。NETDELAY结构可用于指定整个网络的延迟,而无需考虑其源端或接收端,因此是指定网络上延迟的最不具体的方法。

时序环境提供了设计在工作时所依据的信息,这些信息包括ARRIVALDEPARTURESLACKWAVEFORM结构。这些结构主要用于标注,例如可用于综合。

B.2 SDF格式

SDF文件包含一个首部(header section),后跟一个或多个单元。每个单元代表设计中的一个区域或范围,它可以是库原语(primitive)或用户自定义的黑盒。

首部包含一般信息,除了层次结构分隔符、时间刻度(timescale)和SDF版本号外,都不会影响SDF文件的语义。默认情况下,层次结构分隔符DIVIDER是点字符(“.”)。通过以下方法,可以将其替换为“/”字符:

● (DIVIDER /)

如果首部中没有时间刻度信息,则默认值为1ns。否则,可以使用以下命令明确指定时间刻度TIMESCALE

● (TIMESCALE 10ps)

也就是说,将SDF文件中指定的所有延迟值乘以10ps。

SDF版本号SDFVERSION是必需的,SDF文件的使用者会根据它来确保文件符合指定的SDF版本。首部中可能存在的其它信息(属于常规信息类别)包括日期、程序名称、版本和工作条件。

首部之后是一个或多个单元的描述,每个单元在设计中代表一个或多个实例(使用通配符),单元可以是库原语或分层块(hierarchical block)。

单元的顺序很重要,因为数据是从上到下进行处理的。后面的单元描述可以覆盖前面的单元描述所指定的时序信息(通常,两次定义同一单元实例的时序信息并不常见)。另外,可以将时序信息标注为绝对值或增量的形式。如果时序信息使用增量的形式,它将会把新值添加到现有值中。而如果时序信息是绝对值,它将覆盖任何先前指定的时序信息。

单元实例可以是分层实例名称。用于层次结构分隔的分隔符必须符合首部中指定的分隔符。单元实例名称可以选择为“ * ”字符,即通配符,这表示指定类型的所有单元实例。

单元中可以描述四种类型的时序规范:

DELAY:用于描述延迟

TIMINGCHECK:用于描述时序检查

TIMINGENV:用于描述时序环境

LABEL:声明可用于描述延迟的时序模型变量。

以下是一些例子:

DELAY时序规范有四种类型:

ABSOLUTE:在反标期间替换单元实例的现有延迟值。

INCREMETN:将新的延迟数据添加到单元实例的任何现有延迟值。

PATHPULSE:指定设计输入和输出之间的脉冲传播极限。此极限值用于决定是将出现在输入上的脉冲传播到输出,还是将其标记为“ X ”,或者将其滤除。

PATHPULSEPERCENT:除了值以百分比表示外,这与PATHPULSE完全相同。

以下是一些例子:

RN和Q是单元的输入端口和输出端口。第一个值3是脉冲抑制极限(pulse rejection limit),称为r-limit,它定义了可以出现在输出上的最窄脉冲。窄于此的任何脉冲都会被拒绝通过,也就是说,它将不会出现在输出上。第二个值7(如果存在)是错误极限(error limit),也称为e-limit。任何小于e-limit的脉冲都会导致输出为“ X ”。e-limit必须大于r-limit,如图B-3所示。 当出现小于3(r-limit)的脉冲时,该脉冲不会传播到输出;当脉冲宽度在3(r-limit)和7(e-limit)之间时,输出为X ;当脉冲宽度大于7(e-limit)时,脉冲会传播到输出且没有任何滤除(unfiltered)。

图B-3

可以使用ABSOLUTEINCREMENT描述八种延迟定义:

IOPATH:输入到输出路径的延迟。

RETAIN:保留时间定义,可以用于指定输出端口在其相关输入端口改变后应保留其先前值的时间。

COND:条件路径延迟,可以用于指定状态相关的输入到输出路径延迟。

CONDELSE:默认路径延迟,可以用于指定条件路径的默认值。

PORT:端口延迟,可以用于指定互连走线延迟,该延迟被建模为输入端口的延迟。

INTERCONNECT:互连走线延迟,可以用于指定从其源端到接收端的整个网络的传播延迟。

NETDELAY:网络延迟,可以用于指定从一个网络的所有源端到所有接收端的传播延迟。

DEVICE:器件延迟,主要用于描述分布式时序模型,可以用于指定通过单元到输出端口的所有路径的传播延迟。

以下是一些例子:

输入A上的值发生更改后,Y将保留其先前值50ps(低电平为40ps)。50ps是保持高电平的值,40ps是保持低电平的值,101ps是传播上升沿延迟,90ps是传播下降沿延迟,如图B-4所示。

图B-4

延迟

到目前为止,我们已经看过了许多不同形式的延迟,其实延迟规范还有其它形式。通常,可以将延迟指定为一个、两个、三个、六个或十二个令牌(token)的集合,这些令牌可用于描述以下过渡的延迟:0-> 1、1-> 0、0-> Z,Z-> 1,1-> Z,Z-> 0,0-> X,X-> 1,1-> X,X-> 0,X-> Z,Z-> X。下表展示了如何使用少于十二个延迟令牌来表示十二种过渡情况。

以下是这些延迟的一些示例:

每个延迟令牌可以依次写为一个、两个或三个值,如以下示例所示:

一个SDF文件中的延迟值可以使用有符号的实数或以下形式的三元数组来编写:

● ( 8.0:3.6:9.8 )

为了表示出设计在三个工艺工作条件下的最小、典型以及最大延迟,注释器通常会根据用户提供的选项来决定去选择哪个值。三元数组形式中的值是可选的,但是至少应有一个。例如,以下形式是规范的:

● ( : : 0.22)

● ( 1.001 : : 0.998 )

未指定的值就不会去标注。

时序检查

在以TIMINGCHECK关键字开头的部分中指定了时序检查的极限。在任何这些检查中,可以使用COND结构指定有条件的时序检查。在某些情况下,可以指定两个额外的条件检查SCONDCCOND,它们与stamp eventcheck event关联。

以下是一组检查:

SETUP:建立时间检查

HOLD:保持时间检查

SETUPHOLD:建立时间和保持时间检查

RECOVERY:恢复时间检查

REMOVAL:撤销时间检查

RECREM:恢复时间和撤销时间检查

SKEW:单向偏斜时序检查

BIDIRECTSKEW:双向偏斜时序检查

WIDTH:脉宽时序检查

PERIOD:周期时序检查

NOCHANGE:不变化时序检查

以下是一些例子:

标签

标签可用于指定VHDL泛型(generics)或Verilog HDL参数的值。

时序环境

有许多结构可用于描述设计的时序环境。但是,这些结构可用于标注,而不是用于反标,例如在逻辑综合工具中。这些未在本文中描述。

B.2.1 例子

接下去,我们将为两个设计提供完整的SDF文件。

全加器

这是用于全加器(full-adder)电路的Verilog HDL网表(netlist):

以下是时序分析工具生成的完整SDF文件:

INTERCONNECT中的所有延迟均为0,因为这是布局前的数据,因此建模的是理想互连走线模型。

十进制计数器

这是十进制计数器的Verilog HDL模型:

对应的完整SDF文件如下:

B.3 标注过程

在本节中,我们将介绍如何在HDL描述中进行SDF的标注(annotation)。SDF的标注可以通过多种工具执行,例如逻辑综合工具、仿真工具和静态时序分析工具。SDF标注器(annotator)是这些工具的组件,可用于读取SDF、解释并向设计中标注时序值。假定会使用与HDL模型一致的信息创建SDF文件,并且在反标期间使用相同的HDL模型。此外,SDF标注器还需要负责正确解释SDF中的时序值。

SDF标注器标注了反标时序的泛型和参数。如果在语法或映射(mapping)过程中不符合该标准,它将给出错误报告。如果一个SDF标注器不支持某些SDF结构,则不会产生任何错误,标注器将忽略这些错误。

如果SDF标注器未能修改反标时序的泛型,则在反标过程中不会修改泛型的值,即保持不变。

在仿真工具中,反标通常发生在规划(elaboration)阶段之后,紧接在负约束延迟计算之前。

B.3.1 Verilog HDL

在Verilog HDL中,标注的主要机制是指定块(specify block),指定块可以指定路径延迟和时序检查。实际延迟值和时序检查极限值是通过SDF文件指定的,映射是一种行业标准,在IEEE Std 1364中定义。

从SDF文件中获得并在Verilog HDL模块的指定块中标注的信息包括指定路径的延迟、参数值、时序检查约束极限值和互连走线延迟。向一个Verilog HDL模型进行标注时,将忽略SDF文件中的其它结构。SDF中的LABEL部分定义了参数值。通过将SDF结构与相应的Verilog HDL声明进行匹配,然后将现有的时序值替换为SDF文件中的时序值,即可完成反标。

下表显示了SDF延迟值如何映射到Verilog HDL延迟值:

下表描述了SDF结构到Verilog HDL结构的映射:

有关示例,请参见后面部分。

B.3.2 VHDL

SDF到VHDL的标注是一个行业标准,它在VITAL ASIC建模规范的IEEE标准IEEE Std 1076.4中定义,该标准的其中一部分描述了SDF延迟到ASIC库的标注。在这里,我们仅介绍与SDF映射有关的VITAL标准的相关部分。

SDF可用于直接在符合VITAL的模型中修改反标时序泛型,只能使用SDF为符合VITAL的模型指定时序数据。有两种方法可以将时序数据传递到VHDL模型中:通过配置,或直接传递到仿真中去。SDF标注过程包括在仿真期间在符合VITAL的模型中映射SDF结构和相应的泛型。

在符合VITAL的模型中,存在着有关如何命名和声明泛型的规则,以确保可以在模型的时序泛型和相应的SDF时序信息之间建立映射。

时序泛型由泛型名称及其类型组成,名称指定时序信息的种类,类型指定时序值的种类。如果泛型名称不符合VITAL标准,则它不是时序泛型,也不会被标注。

下表显示了SDF延迟值如何映射到VHDL延迟:

在VHDL中,时序信息是通过泛型进行反标的。泛型名称遵循一定的规则,以便保持一致或从SDF结构中获取。利用每个时序泛型名称,可以指定条件边沿的可选后缀。边沿可以指定一个与时序信息相关联的边沿。

下表列出了各种时序泛型名称:

附录B: SDF (未完待续......)

以下不属于时序逻辑电路的有_静态时序分析圣经翻译计划——附录B:SDF相关推荐

  1. 中set无效是怎么回事_静态时序分析圣经翻译计划——第十章:鲁棒性检查 (中)...

    10.5 时钟门控检查 当一个门控信号(gating signal)可以控制逻辑单元中时钟信号(clock signal)的路径时,将会执行时钟门控检查(clock gating check),一个示 ...

  2. 时序图如何表现分支_静态时序分析圣经翻译计划——第五章:延迟计算 (上)...

    本章节介绍了用于布局前后时序验证的基于单元(cell-based)的设计的延迟计算(delay calculation). ● 前几章重点介绍了对互连线和单元库的建模,单元和互连线建模技术可用于获得设 ...

  3. delay 芯片时序output_【第二章 STA概念 上】静态时序分析圣经翻译计划

    本文由知乎赵俊军授权转载,知乎主页为https://www.zhihu.com/people/zhao-jun-jun-19 本章节介绍CMOS技术的基础知识以及执行静态时序分析所涉及的术语. 2.1 ...

  4. 翻译不是一个有效的路径_【第一章:绪论】静态时序分析圣经翻译计划

    本文由知乎赵俊军授权转载,知乎主页为https://www.zhihu.com/people/zhao-jun-jun-19 众所周知,静态时序分析是IC工程师必备知识点,也是秋招中笔试面试的高频考点 ...

  5. 数字IC设计学习笔记_静态时序分析STA_ STA基本概念

    数字IC设计学习笔记 STA基本概念 1. STA基本概念 2. 时序弧概念 Timing Arc 3. 建立时间和保持时间概念 4. 时序路径概念Timing Path 5. 时钟域概念clock ...

  6. 以下不属于时序逻辑电路的有_电工电子技术(不建议浪费时间学习的科目)

    (声明:本资料来自网络,侵权请告知删除.文末有全套高清版资料下载链接,敬请下载学习) 2019年7月在天津召开的土力学及岩土工程年会上,有一场青年教师的土力学讲课竞赛,由我作一些点评,其中关于土颗粒与 ...

  7. 数字IC设计学习笔记_静态时序分析STA_ PrimeTime 基本概述

    数字IC设计学习笔记 PrimeTime 基本概述 1. PrimeTime 基本概述 2. 运行模式 1. PrimeTime 基本概述 PrimeTime,Synopsys公司提出的,针对于复杂的 ...

  8. 数字IC设计学习笔记_静态时序分析STA_伪路径False Paths

    数字IC设计学习笔记 半周期路径Half Cycle Path 1. 伪路径False Paths 2. 如何处理False Paths 1. 伪路径False Paths 在设计中,有些路径是不可能 ...

  9. 【时序逻辑电路(sequential logic circuit)】

    目录 一."组合"与"时序" 二.同步时序电路 与 异步时序电路 三.同步时序电路 四.双稳态 4.1 数字分析 4.2 模拟分析 4.3 亚稳态特性 五.锁存 ...

最新文章

  1. Java 8新特性探究(6):泛型的目标类型推断
  2. python小课文件_[Python]小甲鱼Python视频第028课(文件:因为懂你,所以永恒)课后题及参考解8...
  3. angluar ajax实例,Angular服务Request异步请求的实例讲解
  4. Asp.net(C#)常用函数表--新手必备
  5. AM335X 分配大于4M的framebuffer
  6. Maven学习总结(11)——Maven Tomcat7自动部署
  7. xp关机时询问对计算机做什么,XP关机的六个方法
  8. 注意力模型(Attention Model)
  9. b和kb的换算_KB换算
  10. 双系统笔记本 android,安卓不止平板有 教你使用笔记本装安卓,和WINDOWS一起双系统亦可以的哦!(图解)...
  11. STM32存储器 — 2STM32存储器知识的相关应用(IAP、Bit Banding)
  12. 全国职业院校技能大赛(中职组)网络安全竞赛试题—解析
  13. 如何为自己的 CSDN博客设置自定义域名?
  14. GRANT ALL PRIVILEGES
  15. picview是哪里的图片_pic是图片还是照片
  16. 如何停止计算机设备,电脑出现“该设备因问题而停止”该怎么办?
  17. 无痕模式后如何找到历史_辞职后,如何找到合适的工作?
  18. css绘制各种形状图形
  19. 【机器学习】西瓜书_周志华,python实现基于信息熵进行划分选择的决策树算法
  20. 风水树笔记之四:拖稿一年的开心网研究,互联网营销

热门文章

  1. 金色装饰素材,用这个技巧创造节日的感觉,完美
  2. 手绘时钟的设计与实现
  3. Madagascar的自定义浮点型函数--三角函数和反三角函数
  4. Conditional Jump Instructions
  5. Linux内存管理:ARM64体系结构与编程之cache(3):cache一致性协议(MESI、MOESI)、cache伪共享
  6. HPC高性能运算的发展应用场景以及高性能计算技术总结
  7. diolog js_js组件-js插件-jquery插件-dialog对话框弹层
  8. cookie代码加时间多久出现一次_JavaWeb——Cookie详解
  9. 盒子模型(悬挂式布局)
  10. Django里面的sql查询语句