Timing Analyzer 时钟分析

author-image

作者

综合静态时序分析包括寄存器到寄存器路径、I/O 路径和异步复位路径的分析。Timing Analyzer 使用数据需求时间、数据到达时间和时钟到达时间验证电路性能并检测可能的时序违规。Timing Analyzer 确定设计正常运行必须满足的时序关系,并将到达时间与需求时间相比较,从而验证时序。

时钟建立时间检查

为了执行时钟建立时间检查,Timing Analyzer 通过分析每个寄存器到寄存器路径的每个启动沿和锁存沿来确定建立时间关系。对于目标寄存器的每个锁存沿,Timing Analyzer 将源寄存器中距离最近的上一个时钟沿用作启动沿。

图 1 中定义了两个建立时间关系,分别标记为建立时间 A 和建立时间 B。对于 10 ns 处的锁存沿,用作启动沿的最近时钟位于 3 ns 处,标记为建立时间 A。对于 20 ns 处的锁存沿,用作启动沿的最近时钟位于 19 ns 处,标记为建立时间 B。

图 1.建立时间检查。

Timing Analyzer 将时钟建立时间检查结果报告为裕量值。裕量是指满足或未满足时序要求时与时序要求之间的差额。正裕量表示满足要求时的差额,负裕量表示不满足要求时的差额。Timing Analyzer 确定内部寄存器到寄存器路径的时钟建立时间裕量,如等式 1 所示。

等式 1

时钟建立时间裕量 = 数据需求时间 - 数据到达时间

数据需求时间 = 时钟到达时间 - μtSU - 建立时间不确定值

时钟到达时间 = 锁存沿 + 目标寄存器的时钟网络延迟

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

如果数据路径是从输入端口到内部寄存器,Timing Analyzer 将使用等式 2 中所示的等式计算建立时间裕量。

等式 2

时钟建立时间裕量 = 数据需求时间 - 数据到达时间

数据到达时间 = 启动沿 + 源寄存器的时钟网络延迟 + 引脚最大输入延迟 + 引脚到寄存器的延迟

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

如果数据路径是从内部寄存器到输出端口,Timing Analyzer 将使用等式 3 中所示的等式计算建立时间裕量。

等式 3

时钟建立时间裕量 = 数据需求时间 - 数据到达时间

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

数据需求时间 = 锁存沿 + 目标寄存器的时钟网络延迟 - 引脚最大输出延迟

时钟保持时间检查

为了执行时钟保持时间检查,Timing Analyzer 分析器为所有源和目标寄存器对中存在的每个可能建立时间关系确定保持时间关系。Timing Analyzer 检查所有建立时间关系中的所有相邻时钟沿,从而确定保持时间关系。Timing Analyzer 分析器对每个建立时间关系执行两次保持时间检查。第一次保持时间检查用于确定当前启动沿启动的数据没有被上一个锁存沿捕获。第二次保持时间检查用于确定下一个启动沿启动的数据没有被当前锁存沿捕获。

图 2 显示了两个建立时间关系,分别标记为建立时间 A 和建立时间 B。建立时间 A 和建立时间 B 的第一次保持时间检查分别标记为保持时间检查 A1 和保持时间检查 B1。建立时间 A 和建立时间 B 的第二次保持时间检查分别标记为保持时间检查 A2 和保持时间检查 B2。

图 2.保持时间检查。

Timing Analyzer 从可能的保持时间关系中选择限制条件最严格的保持时间关系。选择锁存沿与启动沿之间的差(即锁存沿减去启动沿所得的值,而非锁存沿减去启动沿所得值的绝对值)最小的保持时间关系,因为它决定了寄存器到寄存器路径的最小允许延迟。图 2 中选择的保持时间关系是保持时间检查 A2。Timing Analyzer 确定时钟保持时间裕量,如等式 4 所示。

等式 4

时钟保持时间裕量 = 数据到达时间 - 数据需求时间

数据需求时间 = 时钟到达时间 +μtH + 保持时间不确定值

时钟到达时间 = 锁存沿 + 目标寄存器的时钟网络延迟

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

如果数据路径是从输入端口到内部寄存器,Timing Analyzer 将使用等式 5 中所示的等式计算保持时间裕量。

等式 5

时钟建立时间裕量 = 数据到达时间 - 数据需求时间

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

数据需求时间 = 锁存沿 + 目标寄存器的时钟网络延迟 - μtH

如果数据路径是从内部寄存器到输出端口,Timing Analyzer 将使用等式 6 中所示的等式计算保持时间裕量。

等式 6

时钟建立时间裕量 = 数据到达时间 - 数据需求时间

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

数据需求时间 = 锁存沿 + 目标寄存器的时钟网络延迟 - 引脚最小输出延迟

恢复时间和移除时间

恢复时间是异步控制信号(例如异步复位信号)在下一个活动时钟沿之前达到稳定状态所需的最小时间长度。恢复时间裕量计算与时钟建立时间裕量计算类似,区别在于它适用于异步控制信号。如果寄存了异步控制信号,Timing Analyzer 将使用等式 7 计算恢复时间裕量。

等式 7

恢复时间裕量 = 数据需求时间 - 数据到达时间

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

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

如果未寄存异步控制信号,Timing Analyzer 将使用等式 8 中所示的等式计算恢复时间裕量。

等式 8

恢复时间裕量 = 数据需求时间 - 数据到达时间

数据到达时间 = 启动沿 + 最大输入延迟 + 端口到寄存器的延迟

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

备注:如果异步复位信号来自端口(设备 I/O),必须对异步复位引脚进行最大输入延迟赋值,使 Timing Analyzer 对此路径执行恢复时间分析。

移除时间是异步控制信号在活动时钟沿之后达到稳定状态所需的最小时间长度。Timing Analyzer 移除时间裕量计算与时钟保持时间裕量计算类似,区别在于它适用于异步控制信号。如果寄存了异步控制信号,Timing Analyzer 将使用等式 9 中所示的等式计算移除时间裕量。

等式 9

移除时间裕量 = 数据到达

时间 - 数据需求时间

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

数据需求时间 = 锁存沿 + 目标寄存器的时钟网络延迟 - μtH

如果未寄存异步控制信号,Timing Analyzer 将使用等式 10 中所示的等式计算移除时间裕量。

等式 10

移除时间裕量 = 数据到达时间 - 数据需求时间

数据到达时间 = 启动沿 + 引脚最小输入延迟 + 引脚到寄存器的最小延迟

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

注:如果异步复位信号来自设备引脚,必须为异步复位引脚指定最小输入延迟约束,使 Timing Analyzer 对此路径执行移除时间分析。

多周期路径

多周期路径是需要多个时钟周期在目标寄存器上锁存数据的数据路径。例如,可能需要使用寄存器每隔一个或两个时钟上升沿捕获一次数据。

图 3 显示了乘法器的输入寄存器和输出寄存器之间的多周期路径示例,其中的目标寄存器每隔一个时钟沿锁存一次数据。有关 set_multicycle_path 命令的信息,请参阅“Timing Analyzer set_multicycle_path 命令”

图 3.多周期路径。

以下页面提供了描述时钟和时钟特性的 SDC 命令的相关信息。