本文由知乎
赵俊军
授权转载,知乎主页为https://www.zhihu.com/people/zhao-jun-jun-19
本附录将介绍标准延迟标注格式,并说明了如何在仿真中执行反标。
延迟格式描述了设计网表的单元延迟和互连走线延迟,无论设计是用两种主要硬件描述语言(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读取工具提供相同的设计。
一个设计可以具有多个与之关联的SDF文件。可以为一个设计创建一个SDF文件,在分层设计中,也可以为分层中的每个块创建多个SDF文件。在标注期间,每个SDF都将应用于适当的分层实例中,如图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结构指定的。
脉冲传播结构——PATHPULSE和PATHPULSEPERCENT可用于指定使用引脚到引脚延迟模型时允许传播到单元输出端口的毛刺大小。
可以在SDF中指定的时序检查包括:
-
建立时间:SETUP,SETUPHOLD
-
保持时间:HOLD,SETUPHOLD
-
恢复时间:RECOVERY,RECREM
-
撤销时间:REMOVAL,RECREM
-
最大偏斜:SKEW,BIDIRECTSKEW
-
最小脉冲宽度:WIDTH
-
最小周期:PERIOD
-
不变化:NOCHANGE
时序检查中的信号可能存在某些条件。在时序检查中允许使用负值,不支持负值的工具可以选择将其替换为零。
SDF描述中支持三种类型的互连走线建模。INTERCONNECT结构是最通用且最常用的,可用于指定点对点延迟(从源端到接收端),因此单个网络可以具有多个INTERCONNECT结构。PORT结构可用于指定负载端口处的网络延迟,假定网络只有一个源端驱动。NETDELAY结构可用于指定整个网络的延迟,而无需考