2.10 查看时序分析结果

通过查看时序分析的结果,设计者才能最终确定设计结果是否满足要求,也就是说在设计在下载到FPGA运行时,不会出现任何不稳定的状态。

2.10.1 时序分析的基本概念

时序分析中使用的一些基本术语如表2.15所示。

表2.15 时序分析中使用的一些基本术语

续表

2.10.2 时序路径和时钟分析

时序分析器测量设计中所有识别的时序路径,测量时序性能。时序分析器需要一个描述设计节点和连接的时序网表用于分析。时序分析器通过分析在发送沿和锁存沿之间的时钟建立和保持关系,确定设计中所有寄存器到寄存器传输的时钟关系。

1.时序网表

时序分析器使用时序网表数据来确定设计中所有时序路径的数据和时钟到达时间与所要求的时间。在运行完适配或全编译后,可以随时在时序分析器中生成时序网表。

时序网表将设计元素划分为单元、引脚、网络和端口,用于测量延迟,如图2.108所示。

2.时序路径

时序路径连接两个设计节点,如一个寄存器输出到另一个寄存器的输入。

理解时序路径的类型对时序收敛和优化非常重要。时序分析器识别并分析以下的时序路径,如图2.109所示。

(1)沿路径(图2.109中无)。从端口到引脚、从引脚到引脚和从引脚到端口的连接。

图2.108 简单设计的原理图及其时序网表

图2.109 时序分析器使用的路径类型

(2)时钟路径。从器件端口或内部生成时钟引脚到一个寄存器时钟引脚的连接。

(3)数据路径。从时序元件的端口或数据输出引脚到另一个时序元件的端口或数据输入引脚的连接。

(4)异步路径。来自端口或者另一个时序元素异步引脚的连接,如异步复位或异步清除。

除识别设计中的各种路径外,时序分析器还分析时钟特性,用于计算在单个寄存器到其他寄存器中任意两个寄存器之间的最坏情况。在分析时钟特性之前,必须约束设计中的所有时钟。

3.数据和时钟到达时间

在时序分析器识别路径类型后,时序分析器能报告数据和时钟到达寄存器引脚的时间。通过将发送沿时间到来自时钟源的延迟添加到源寄存器的时钟引脚,时序分析器计算数据到达的时间、源寄存器的微时钟到输出的延迟(μtCO)和从源寄存器输出(Q)到目的寄存器的数据输入(D)的延迟。

通过将锁存沿时间添加到时钟端口和目的寄存器时钟引脚之间的总延迟(包括时钟端口缓冲区延迟,并减去目标寄存器的微建立时间 μtSU),时序分析器来计算寄存器数据要求的时间,其中μtSU是FPGA内部寄存器的固有建立时间。

数据到达的时间和所要求的数据时间如图 2.110 所示。数据到达的时间和所要求的数据时间的基本计算(包括发送沿和锁存沿)如下:

数据到达的时间=发送沿+源时钟延迟+μtCO+寄存器到寄存器的延迟

所要求的数据时间=锁存沿+目的时钟的延迟-μtSU

图2.110 数据到达的时间和所要求的数据时间

4.发送沿和锁存沿

所有的时序分析都需要存在一个或多个时钟信号。通过分析发送沿与锁存沿之间的时间建立和保持关系,时序分析器确定设计中所有寄存器到寄存器传输的时钟关系。

时钟信号的发送沿是时钟沿,它发送一个寄存器或其他时序元件的输出数据,充当数据传输的源。锁存沿是活动时钟边沿,它捕获一个寄存器或其他时序元件的数据输出,充当数据传输的目的。

发送沿在0ns发送来自寄存器reg1的数据,寄存器reg2在10ns时由锁存边沿触发时捕获数据。在下一个锁存沿之前,数据到达目的寄存器,如图2.111所示。

设计者可以为所有时钟创建定义约束,并且将约束分配到设计中的节点。这些时钟约束提供了可重复数据关系所要求的结构。如果在设计中不约束时钟,Quartus Prime软件将根据1GHz 时钟进行分析,以最大限度地提高基于时序的适配器工作量。要确保实际的松弛值,必须使用真实值来约束设计中的所有时钟。

图2.111 用于发送沿与锁存沿分开10ns的建立和保持关系

2.10.3 时钟建立分析

要执行时钟建立检查,时序分析器通过分析每个寄存器到寄存器路径的每个发送沿和锁存沿来确定一个建立关系。

对于目的寄存器的每个锁存沿,时序分析器使用源寄存器最接近的前一个时钟沿作为发送边沿。图 2.112 显示了两种建立关系,即建立 A 和建立 B。对于在 10ns 处的锁存沿,在3ns 处的最近时钟用作发送沿,并标记为建立 A。对于在 20ns 处的锁存沿,在 19ns 处最近的时钟当作发送沿,并标记为建立 B。时序分析器分析最严格的建立关系,在这种情况下建立B;如果关系满足设计要求,默认建立A满足要求。

图2.112 建立检查

时序分析器将时钟建立检查的结果报告为松弛值(Slack)。松弛值是满足/不满足时序要求的余量。正的松弛值表示满足要求的余量,负的松弛值表示余量不满足要求。

(1)对于内部寄存器到寄存器路径的时钟建立松弛,计算公式如下。

时钟建立松弛=所要求的数据时间-数据到达的时间

数据到达的时间=发送沿+时钟网络到源寄存器的延迟+μtCO+寄存器到寄存器的延迟

所要求的数据时间=锁存沿+时钟网络到目的寄存器的延迟-μtSU-建立的不确定

时序分析器执行建立检查,当计算数据到达的时间时,使用最大的延迟;当计算所要求的数据时间时,使用最小的延迟。

(2)从输入端口到内部寄存器的时钟建立松弛,计算公式如下。

时钟建立松弛=所要求的数据时间-数据到达的时间

数据到达的时间=发送沿+时钟网络延迟+输入最大的延迟+端口到寄存器的延迟

所要求的数据时间=锁存沿+时钟网络到目的寄存器的延迟-μtSU-建立的不确定

(3)从内部寄存器到输出端口的时钟建立松弛,计算公式如下。

时钟建立松弛=所要求的数据时间-数据到达的时间

所要求的数据时间=锁存沿+时钟网络到输出端口的延迟-输出最大的延迟

数据到达的时间=发送沿+时钟网络到源寄存器的延迟+μtCO+寄存器到端口的延迟

2.10.4 时钟保持分析

要执行时钟保持检查,时序分析器为存在所有源寄存器和目的寄存器对的每个可能的建立关系确定一个保持关系。时序分析器通过检查来自所有建立关系的所有相邻的时钟沿来确定保持关系。

时序分析器为每个建立关系执行两次保持检查。第一次保持检查确定当前发送沿所发送的数据没有被前面的锁存沿捕获;第二次保持检查确定由下一个发送沿发送的数据没有被当前的锁存沿捕获。从可能的保持关系中,时序分析器选择最严格的保持关系。最严格的保持关系是在锁存沿和发送沿之间具有最小差异的保持关系,并确定寄存器到寄存器路径的最小允许延迟。如图 2.113 所示为时序分析器选择保持检查 A2 作为两个建立关系的最严格保持关系,建立A和建立B,以及它们各自的保持检查。

图2.113 建立和保持检查关系

(1)用于内部寄存器到寄存器路径的时钟保持松弛,计算公式如下。

时钟保持松弛=数据到达的时间-所要求的数据时间

数据到达的时间=发送沿+时钟网络到源寄存器的延迟+μtCO+寄存器到寄存器的延迟

所要求的数据时间=锁存沿+时钟网络到目的寄存器的延迟+μtH+保持的不确定

注:μtH为目标寄存器的微保持时间。

时序分析器执行保持检查,当计算数据到达的时间时,使用最小的延迟;当计算所要求的数据时间时,使用最大的延迟。

(2)从输入端口到内部寄存器的时钟保持松弛,计算公式如下。

时钟保持松弛=数据到达的时间-所要求的数据时间

数据到达的时间=发送沿+时钟网络延迟+输入最小的延迟+引脚到寄存器的延迟

所要求的数据时间=锁存沿+时钟网络到目的寄存器的延迟+μtH

(3)从内部寄存器到输出端口的时钟保持松弛,计算公式如下。

时钟保持松弛=数据到达的时间-所要求的数据时间

数据到达的时间=发送沿+时钟网络到源寄存器的延迟+μtCO+寄存器到引脚的延迟

所要求的数据时间=锁存沿+时钟网络延迟-输出最小的延迟

2.10.5 恢复和去除分析

本节将介绍恢复和去除分析。

1.恢复时间分析

恢复时间是异步控制信号无效相对于下一个时钟沿的最小时间长度。例如,在下一个活动的时钟沿之前,清除和置位必须保持稳定。恢复松弛计算类似于时钟建立松弛计算,但是计算适用于异步控制信号。

(1)如果异步控制信号被寄存,计算公式如下。

恢复松弛的时间=所要求的数据时间-数据到达的时间

所要求的数据时间=锁存沿+时钟网络到目的寄存器的延迟-μtSU

数据到达的时间=发送沿+时钟网络到源寄存器的延迟+μtCO+寄存器到寄存器的延迟

(2)如果没有寄存异步控制信号,计算公式如下。

恢复松弛的时间=所要求的数据时间-数据到达的时间

所要求的数据时间=锁存沿+时钟网络到目的寄存器的延迟-μtSU

数据到达的时间=发送沿+时钟网络延迟+输入最小的延迟+端口到寄存器的延迟

如果异步复位信号来自器件的I/O端口,则必须为异步复位端口创建输入延迟约束,以便时序分析器执行路径上的恢复分析。

2.去除时间分析

去除时间是在有效时钟沿之后异步控制信号无效必须稳定的最小时间长度。时序分析器去除松弛的计算类似时钟保持松弛的计算,但是计算应用于异步控制信号。

(1)如果异步控制信号被寄存,计算公式如下。

去除松弛的时间=数据到达的时间-所要求的数据时间

数据到达的时间=发送沿+时钟网络到源寄存器的延迟+源寄存器的μtCO+寄存器到寄存器的延迟

所要求的数据时间=锁存沿+时钟网络到目的寄存器的延迟+μtH

(2)如果没有寄存异步控制信号,计算公式如下。

去除松弛的时间=数据到达的时间-所要求的数据时间

数据达到的时间=发送沿+时钟网络的延迟+引脚的最小输入延迟+引脚到寄存器的最小延迟

所要求的数据时间=锁存沿+时钟网络到目的寄存器的延迟+μtH

如果异步复位信号来自器件引脚,必须为异步复位引脚分配 Input Minimum Delay 时序,用于时序分析器在路径上执行去除分析。

2.10.6 多周期路径分析

多周期路径是要求非默认建立或保持关系的数据路径,用以进行正确分析。

例如,一个寄存器可能要求在每两个或3个时钟的上升沿捕获数据。一个例子就是在乘法器数据寄存器和输出寄存器之间的多周期路径,其目标是在每隔一个时钟沿锁存数据,如图2.114所示。

图2.114 多周期路径

当源时钟src_clk具有10ns周期和目的时钟dst_clk具有5ns周期时,一条寄存器到寄存器的路径用于默认的建立和保持关系,各自的时序图用于源和目的时钟,以及默认的建立和保持关系。默认的建立关系是5ns,默认的保持关系是0ns,如图2.115所示。

图2.115 寄存器到寄存器的路径,以及建立和保持关系的时序图

为了满足系统要求,可以通过为寄存器到寄存器的路径指定多周期时序约束来修改默认的建立和保持关系。一条寄存器到寄存器的路径如图 2.116 所示。一个例子是多周期路径建立分配为2,使用第2个锁存沿。如图2.117所示,在该例子中,从默认的5ns改成10ns。

图2.116 寄存器到寄存器的路径

图2.117 修改后的建立图

1.多周期时钟的保持

时钟发送沿和锁存沿之间的时钟周期数定义了保持关系。

默认,时序分析器执行单周期路径分析,这会导致保持关系等于一个时钟周期(发送沿-锁存沿)。当分析一条路径时,时序分析器执行两次保持检查。第一次保持检查确定当前发送沿发送的数据没有被前面的锁存沿捕获;第二个保持检查确定下一个发送沿发送的数据不会被当前的锁存沿捕获。时序分析器仅报告最严格的保持检查。通过比较发送沿和锁存沿,时序分析器计算保持检查。时序分析器执行的计算用于确定保持检查。两个保持检查表示为

保持检查1=当前发送沿-前面的锁存沿

保持检查2=下一个发送沿-当前锁存沿

如果保持检查与建立检查重叠,则忽略保持检查。

开始多周期保持分配,通过将锁存沿指定的时钟个数移动到默认发送沿的右侧来修改时钟的发送沿。图2.118给出了开始多周期保持(Start Multicycle Hold,SMH)分配的不同值和最终的发送沿。

结束多周期保持分配通过将锁存沿指定的时钟周期数移动到默认锁存沿的左侧来修改目标时钟的锁存沿。图 2.119 给出了结束多周期保持(End Multicycle Hold,EMH)分配和最终的锁存沿。

图2.118 开始多周期保持分配的不同值和最终的发送沿

图2.119 结束多周期保持分配和最终的锁存沿

图2.120给出了时序分析器对于负保持关系给出的保持关系。

图2.120 时序分析器对于负保持关系给出的保持关系

2.多周期时钟的建立

建立关系定义为锁存沿和发送沿之间的时钟周期数。默认,时钟分析器执行单周期路径的分析,结果导致建立关系等于一个时钟周期(锁存沿-发送沿)。应用多周期建立分配,通过多周期建立值来调整建立关系。调整值可能是负的。

一个结束多周期建立分配通过将锁存沿指定的时钟周期数移动到所确定默认锁存沿的右侧来调整目的时钟的锁存沿。如图 2.121 所示,给出了结束多周期建立(End Multicycle Setup,EMS)分配和最终的锁存沿。

开始多周期建立分配通过移动发送沿指定的时钟周期数到默认确定发送沿的左侧来修改源时钟的发送沿。如图2.122所示,包含不同值的开始多周期建立(Start Multicycle Setup,SMS)分配导致一个特定的发送沿。

图2.121 结束多周期建立分配和最终的锁存沿

图2.122 开始多周期建立分配的不同值和一个特定的发送沿

对于负建立关系,时序分析器给出的建立关系和SMS值如图2.123所示。

图2.123 时序分析器给出的建立关系和SMS值(负建立关系)

2.10.7 亚稳态分析

当信号在无关或异步时钟域的电路中传输时就可能会发生亚稳态问题,这是因为信号不满足建立和保持时间的要求。

为了最大限度地减少亚稳态引起的故障,典型地,电路设计人员使用一系列的寄存器,也称为同步寄存器链或同步器,将数据重新同步到新的时钟域。

平均故障时间(Mean Time Between Failures,MTBF)是对由亚稳态引起故障实例之间平均时间的估计。

时序分析器分析设计中潜在的亚稳态可能性,并且为同步寄存器链计算 MTBF,然后时序分析器根据设计中包含的同步链来估算整个设计的MTBF。

除报告在设计中发现的同步链外,Quartus 也保护这些寄存器免受可能对 MTBF 产生不利影响的优化,如寄存器复制和逻辑重定时。如果 MTBF 太低,Quartus 软件也优化设计的MTBF。

2.10.8 时序悲观

公共时钟路径悲观的消除考虑了静态时序分析期间与公共时钟路径相关的最小和最大延迟变化,它通过将公共时钟路径的最大和最小延迟值的差值添加到合适的松弛等式中来实现消除。

当两个不同的延迟值用于相同的时钟路径时,就可能发生最小和最大延迟的变化。例如,在一个简单的建立分析中,到源寄存器的最大时钟路径延迟用于确定数据到达的时间。到目的寄存器的最小时钟路径延迟用于确定所要求的数据时间。然而,如果到源寄存器和目的寄存器的时钟路径共享一个公共时钟路径,则最大延迟和最小延迟都用来在时序分析期间建模公共时钟路径。最小延迟和最大延迟导致过度悲观的分析,因为两个不同的延迟值,即最大和最小延迟,不能用于建模相同的时钟路径。

一个典型的寄存器到寄存器的路径如图2.124所示。

图2.124 一个典型的寄存器到寄存器的路径

段A是reg1和reg2之间的公共时钟路径,最小的延迟是5.0ns,最大的延迟是5.5ns。最大和最小延迟值之间的差值等于公共时钟路径悲观消除值。在这种情况下,公共时钟路径悲观消除值为 0.5ns。时序分析器将公共时钟路径悲观消除值添加到适当的松弛等式以确定整个的松弛,松弛是1.2ns(包含了公共时钟路径的悲观消除值)。

设计者还可以使用公共时钟路径悲观消除值来确定寄存器的最小脉冲宽度。时钟信号必须满足寄存器可以识别的最小脉冲宽度要求。最小高电平时间定义了上升沿触发寄存器的最小脉冲宽度,最小低电平时间定义了下降沿触发寄存器的最小脉冲宽度。

违反寄存器最小脉冲宽度的时钟脉冲将阻止在寄存器的数据引脚上锁存数据。为了计算最小脉冲宽度的松弛,时序分析器从真实的最小脉冲宽度时间中减去所要求的最小脉冲宽度时间。时序分析器通过为馈送到寄存器时钟端口的时钟指定的时钟要求来决定实际的最小脉冲宽度。通过最大上升、最小上升、最大下降和最小下降时间,时序分析器确定所要求的最小脉冲宽度时间,如图2.125所示。

图2.125 用于高脉冲和低脉冲所要求的最小脉冲宽度时间

通过公共时钟路径悲观,通过最大上升时间减去最小上升时间,或最大下降时间减去最小下降时间,来增加最小脉冲宽度松弛。在该例子中,松弛值可以增加 0.2ns,这是 0.3ns (0.8-0.5=0.3ns)和0.2ns(0.9-0.7=0.2ns)之间的最小值。

2.10.9 时钟作为数据分析

大多数FPGA设计包含任意两个节点之间的简单连接,称为数据路径或时钟路径。数据路径是同步元件输出与另一个同步元件输入之间的连接。一个时钟是与同步元件时钟引脚的连接。然而,对于更复杂的FPGA设计,如使用源同步接口的设计,这种简化的视图就不充分。在包含时钟分频器和DDR源同步输出的电路中,执行时钟作为数据分析。

在输入时钟端口和输出时钟端口之间的连接可看作时钟路径或数据路径。一个从clk_in端口到clk_out端口的路径都是时钟和数据路径的设计。时钟路径是从clk_in端口到寄存器 reg_data 时钟引脚的路径,数据路径是从 clk_in 端口到 clk_out 端口的路径,如图2.126所示。

图2.126 从clk_in端口到clk_out端口的数据路径

通过时钟作为数据分析,时序分析器基于用户的约束提供了更准确的路径分析。对于时钟路径分析,任何包含与 PLL 有关的相移都应该考虑。对于数据延迟分析,任何与 PLL 相关的相移都应考虑而不是忽略。

时钟作为数据分析也应用到内部生成的时钟分频器。一个内部生成的时钟分频器,如图2.127 所示,在时序分析期间,波形用于分析反相器的反馈路径。分频器寄存器的输出用于确定发送时间,以及寄存器的时钟端口用于确定锁存时间。

图2.127 时钟分频器

2.10.10 多角时序分析

时序分析器执行多角时序分析,在执行静态时序分析时验证设计在不同条件(如电压、过程和温度)下的操作。

要改变当前器件的操作条件或速度等级,请使用set_operating_conditions命令。

如果指定一个操作条件Tcl对象,则-model、-speed、-temperature和-voltage可供选择。如果没指定一个操作条件Tcl对象,则Tcl要求-model选项。-speed、-temperature和-voltage是可选的。

要获取目标期间的可用操作条件列表,请使用 get_available_operating_conditions-all命令。

为了确保器件运行期间不会在各种条件下出现违规,请在所有可用操作条件下执行静态时序分析。

用于慢时序和快时序模型的操作条件如表2.16所示。

表2.16 用于慢时序和快时序模型的操作条件

在设计中,使用下面的代码可以设置操作条件用于慢时序模型,电压为 1100mV,温度为85℃:

也可以使用带有Tcl对象设置相同的操作条件:

2.10.11 时序分析的实现

本节将对设计执行简单的时序分析(注:在本书的后面将详细介绍时序的概念)。

1.启动时序分析

启动时序分析的主要步骤包括:

(1)通过下面方式之一运行Timing Anaylzer。

① 在 Quartus Prime 主界面主菜单下,选择 Processing->Start->Start Timing Analysis (Signoff)。

② 在Quartus Prime主界面的“Compilation Dashboard”界面下,单击“Timing Analysis(Signoff)”前面的(Run during full compilation)按钮。

(2)开始重新对设计进行编译,完成对设计的时序分析。

2.打开时序分析报告

打开时序分析报告的主要步骤包括:

(1)在Quartus Prime主界面的“Compilation Dashboard”界面下,单击“Timing Analysis(Signoff)”后面名字为“Timing Analyzer Summary”(时序分析器总结)的按钮。

(2)出现“Compilation Report-top”界面,如图2.128所示。在Timing Analyzer文件夹下,给出了各种时序报告。其中 Slow 900mV 100C Model、Slow 900mV 0C Model、Fast 900mV 100C Model和Fast 900mV 0C Model文件夹给出了慢时序模型和快时序模型在不同操作条件(VCC 为 0.9V,最低温度为 0℃,最高温度为 100℃)下的时序分析报告,如图 2.129 所示,主要包括 Fmax Summary(Fmax 总结)、Timing Closure Recommendations (时序收敛推荐)、Setup Summary (建立总结)、Hold Summary (保持总结)、Recovery Summary(恢复总结)、Minimum Pulse Width Summary(最小脉冲宽度总结)、Metastability Summary(亚稳态总结)。

图2.128 “Compilation Report-top”界面

图2.129 慢时序模型和快时序模型在不同操作条件下的时序分析报告

(3)单击图2.129中的“Multicorner Timing Analysis Summary”选项,出现如图2.130所示的“Multicorner Timing Analysis Summary”界面。无论设计者指定的时钟周期如何,该界面报告设计中每个时钟的 Fmax。只为源和目的寄存器的路径,或者由相同时钟驱动的端口计算 Fmax。忽略不同时钟的路径(包括生成的时钟)。对于一个时钟和它反相之间的路径,计算 Fmax,就像上升沿和下降沿与 Fmax 一起标定一样,从而保持占空比(以百分比表示)。Intel推荐设计者使用时钟约束和其他松弛报告用于签核(sign-off)分析。

图2.130 “Multicorner Timing Analysis Summary”界面

3.打开时序分析器

打开时序分析器的步骤主要包括:

(1)通过下面方式之一打开时序分析器主界面。

① 在 Quartus Prime 主界面左下方的“Tasks”窗口中,找到“Analysis”标题。在该标题下,找到并用鼠标左键单击“Timing Analyzer”。

② 在Quartus Prime主界面主菜单下,选择Tools->Timing Analyzer。

(2)弹出“Timing Analyzer”(时序分析器)主界面。

(3)在时序分析器主界面主菜单下,选择Netlist->Create Timing Netlist...。

(4)弹出“Create Timing Netlist”对话框。在该对话框中,选中“Slow-corner”前面的复选框。

(5)单击“OK”按钮,创建时序网表。

(6)在时序分析器主界面左上方的窗口中,给出了4个可选择的操作条件,如图2.131所示。

图2.131 “Set Operating Conditions”窗口

(7)在时序分析器主界面左下方的“Tasks”窗口中,找到并展开Custom Reports文件夹。在展开项中,用鼠标左键单击“Report Timing...”。

(8)弹出“Report Timing”对话框,如图2.132所示,按如下设置参数。

图2.132 “Report Timing”对话框

① From clock:clk1(通过下拉框选择)。

② To clock:clk1(通过下拉框选择)。

③ Analysis Type:Setup(建立)。

④ Report number of paths:100(报告所有的路径)。

这些设置参数对应的Tcl命令格式如下:

(9)单击“Open”按钮,退出“Report Timing”对话框。

(10)在右侧以列表形式给出了在Slow 900mV 100C Model操作条件下的路径时序,如图2.133所示。

图2.133 在Slow 900mV 100C Model操作条件下的路径时序

(11)在图 2.133 给出的列表中,选择第一行的“From Node”列下的“b_1”和“To Node”列下的“z[5]~reg0”。单击图 2.133 中“Path#1:Setup slack is 8.755”标题下面的“Path Summary”标签。在该标签页下,给出了该路径的信息,包括From Node(从节点):b_1;To Node(到节点):z[5]~reg0;Launch Clock(发送时钟):clk1;Latch Clock(锁存时钟):clk1;Data Arrival Time(数据到达的时间):5.290;Data Required Time:14.045;Slack:8.755(14.045-5.29=8.755)。

(12)单击图2.133中“Path#1:Setup slack is 8.755”标题下面的“Data Path”标签,出现“Data Path”标签页,如图2.134所示。

①“Data Arrival Path”(数据到达路径)窗口中,前面 clock path(时钟路径)给出了clk 从输入到 b_1|clk 所使用的元素(Element)和总的时间为 3.819ns。例如,从 clk~input|i到 clk~input|o 对应在“Incr”栏中给出所用的时间为 0.535ns;后面 data path(数据路径)给出了从 b_1 到 z[5]~reg0 所使用的元素(Element)和总的时间为 1.471ns。因此,时钟路径加上数据路径总的时间是5.29ns(3.819+1.471=5.29)。

图2.134 “Data Path”标签页

②“Data Required Path”(数据要求时间)窗口中,以latch edge time(锁存沿)的10ns为基准,加上时钟路径传播时间 3.776ns,时间变为 13.776ns(10+3.776=13.776);然后,加上时钟的不确定值-0.03ns,时间变为 13.746ns(13.776-0.03=13.746);最后,加上到 z[5]~reg的时间μtSU(0.299ns),时间变为14.045ns(13.746+0.299=14.045)。

很明显,根据时序建立松弛的计算公式,得到:

时钟建立松弛=所要求的数据时间-数据到达的时间=14.045-5.290=8.755ns

(13)单击图2.134中的“Waveform”标签。“Waveform”标签页如图2.135所示,该波形直观地给出了时钟的建立关系。

图2.135 “Wavefrom”标签页

(14)在时序分析器主界面左下方的“Tasks”窗口中,找到并展开Custom Reports文件夹。在展开项中,用鼠标左键单击“Report Timing...”。

(15)弹出“Report Timing”对话框,如图2.132所示,按如下设置参数。

① From clock:clk1(通过下拉框选择)。

② To clock:clk1(通过下拉框选择)。

③ Analysis Type:Hold(建立)。

④ Report number of paths:100(报告所有的路径)。

这些设置参数对应的Tcl命令格式如下:

(16)单击“Open”按钮,退出“Report Timing”对话框。

(17)在右侧以列表的形式给出了在Slow 900mV 100C Model操作条件下的路径时序,如图2.136所示。

图2.136 在Slow 900mV 100C Model操作条件下的路径时序

(18)在图 2.136 给出的列表中,选择第 12 行的“From Node”列下的“b_1”和“To Node”列下的“z[5]~reg0”。单击图2.136中“Path#12:Hold slack is 0.521”标题下面的“Path Summary”标签。在该标签页下,给出了该路径的信息,包括From Node(从节点):b_1;To Node(到节点):z[5]~reg0;Launch Clock(发送时钟):clk1;Latch Clock(锁存时钟):clk1;Data Arrival Time(数据到达的时间):4.596;Data Required Time:4.075;Slack:0.521(4.596-4.075=0.521)。

(19)单击图2.136中“Path#12:Hold slack is 0.521”标题下面的“Data Path”标签,出现“Data Path”标签页,如图2.137所示。

图2.137 “Data Path”标签页

①“Data Arrival Path”(数据到达路径)窗口中,前面 clock path(时钟路径)给出了clk 从输入到 b_1|clk 所使用的元素(Element)和总的时间为 3.545ns。例如,从 clk~input-CLKENA0|inclk 到clk~inputCLKENA0|outclk 对应在 Incr 栏中给出所用的时间为0.489ns;后面data path(数据路径)给出了从b_1到z[5]~reg0所使用的元素(Element)和总的时间为1.051ns。因此,时钟路径加上数据路径总的时间是4.596ns(3.545+1.051=4.596)。

②“Data Required Path”(数据要求时间)窗口中,以latch edge time(锁存沿)的0ns为基准,到 z[5]~reg0 的时间为 3.834ns;然后,去除时钟悲观,即 3.834-0.216=3.618ns;最后,加上μtH,即3.618+0.457=4.075ns。

很明显,根据时序保持松弛的计算公式,得到:

时钟保持松弛=数据到达的时间-要求的数据时间=4.596-4.075=0.521ns

(20)单击图2.137中的“Waveform”标签。“Waveform”标签页如图2.138所示,该波形直观地给出了时钟的保持关系。

思考与练习2-13:读者选择其中一条路径,分析其建立和保持关系。

图2.138 “Wavefrom”标签页