Report 阅读指南

I. 时序报告 (Timing Report)

1.1 核心 Metrics

(1) Setup Time (建立时间, \(t_{su}\))

  1. 物理含义:时钟有效沿到来之前,数据必须保持稳定的最短时间。
  2. 报告体现:对应“最大延迟(Max Delay)”检查。限制了逻辑的最长路径。

(2) Hold Time (保持时间, \(t_{h}\))

  1. 物理含义:时钟有效沿到来之后,数据必须继续保持稳定的最短时间。
  2. 报告体现:对应“最小延迟(Min Delay)”检查。限制了逻辑的最短路径。

(3) Arrivals Time (AT, 到达时间)

  1. 物理含义:数据信号从时钟边沿触发(Launch FF)出发,经过各种门延迟和线延迟,实际到达终点(Capture FF)D 端的时间。
  2. 公式解释
\[\text{Arrival Time} = \text{CLK→Q Time} + \sum \text{Gate Delays} + \sum \text{Wire Delays}\]

(4) Required Time (RT, 需求时间)

  1. 物理含义:为了满足 Setup 或 Hold 条件,数据必须到达终点的时间界限。它是工具根据时钟周期、时钟网络延迟和 \(t_{su}\)\(t_{h}\) 反推出来的标准线。
  2. 公式解释
\[\begin{aligned} \text{Required Time(Setup)} &= \text{目标寄存器时钟到达时间} - t_{\text{setup}} \\ \text{Required Time(Hold)} &= \text{目标寄存器时钟到达时间} + t_{\text{hold}} \end{aligned}\]

(5) Slack (时序裕量)

  1. 物理含义:实际到达时间与需求时间之间的“安全距离”。
  2. 计算公式

$$\begin{aligned}

\text{Setup Slack} &= \text{Required Time} - \text{Arrival Time} \
\text{Hold Slack} &= \text{Arrival Time} - \text{Required Time}
\end{aligned}$$

正确范围必须 \(\ge 0\)。如果是正数,说明满足时序且有盈余(Met);如果是负数,说明违例(Violated),芯片极大概率失效。

(6) WNS (Worst Negative Slack, 最差负裕量)

  1. 物理含义:整个设计中,所有路径里最差的那条路径的 Slack 值。
  2. 正确范围目标是 \(\ge 0\)。如果 WNS 是 -0.5ns,说明你芯片的最高频率达不到预期,需要降频或优化 RTL。

(7) TNS (Total Negative Slack, 总负裕量)

  1. 物理含义:设计中所有违例路径(Slack < 0)的 Slack 负值之和。
  2. 代表什么:WNS 代表你病得最重的地方,TNS 代表你全身病的范围。如果 WNS 只有 -0.1ns,但 TNS 是 -100ns,说明你的设计有成千上万条路径差一点点达标(通常是全局时钟约束过紧)。

(8) WHS (Worst Hold Slack, 最差保持裕量)

  1. 物理含义:整个设计中,所有路径里最差的那条路径的 Hold Slack 值。
  2. 正确范围目标是 \(\ge 0\)。如果 WHS 是 -0.2ns,说明你芯片的时钟树设计有问题,可能需要调整时钟树结构或增加缓冲器来降低 Skew。

(9) THS (Total Hold Slack, 总保持裕量)

  1. 物理含义:设计中所有 Hold 违例路径(Hold Slack < 0)的 Hold Slack 负值之和。
  2. 代表什么:WHS 代表你最严重的保持问题,THS 代表你整体的保持问题。如果 WHS 只有 -0.05ns,但 THS 是 -50ns,说明你的设计有很多条路径存在轻微的保持违例,可能需要全局调整时钟树或优化 RTL 来解决。

(10) Skew (时钟偏斜)

  1. 物理含义:同一个时钟源发出的时钟信号,到达两个不同触发器时钟端的时间差。
  2. 报告体现:后端布线(CTS)后非常关注,合理的 Skew 可以用来“借时间(Useful Skew)”,但恶性 Skew 会导致严重的 Hold 违例。

(11) Uncertainty (时钟不确定性)

  1. 物理含义:工具为了模拟真实世界中时钟的抖动(Jitter)、偏斜(Skew)以及给后期布线预留的余量,而人为加上的“惩罚值”。
  2. 正确范围:综合(DC)阶段通常设得较大(如周期的 5%-10%),后端(ICC/Innovus)阶段随着真实时钟树建好会逐渐减小。

(12) Data Path Delay (数据路径延迟)

含义:
信号从源触发器的时钟引脚(C)到目标触发器的数据引脚(D)所经过的全部延迟。

组成部分:

  • Logic Delay(单元延迟)
    信号经过逻辑门(与、或、非、LUT、触发器、加法器等)内部所需的延迟。
    影响因素:输入转换时间(slew)、输出负载电容、工艺角(PVT)、单元驱动能力。

  • Route Delay(互连延迟 / 线延迟)
    信号在金属连线上传输的 RC 延迟,受线长、线宽、层数、通孔、相邻线耦合电容等影响。
    在布局布线前使用线载模型(WLM)估计;布局布线后使用实际提取的寄生参数(如通过 TLUPlus 计算)。

报告示例

Data Path Delay: 5.571ns (logic 2.672ns (47.963%) route 2.899ns (52.037%))
  • 总延迟 5.571 ns
  • 逻辑占 2.672 ns(约 48%),布线占 2.899 ns(约 52%)
  • 若布线占比过高(>60%),需检查是否存在长线或高扇出,可插入缓冲器或优化布局。

(13) DCD, SCD, CPR

  1. Destination Clock Delay (DCD): 目标时钟延迟,时钟信号从时钟源(如 create_clock 定义的源点)到达目标触发器时钟引脚(C 端) 的总延迟。
  2. Source Clock Delay (SCD): 源时钟延迟,时钟信号从时钟源到达源触发器时钟引脚(C 端) 的总延迟。
  3. Clock Path Reliability (CPR): 一种时序分析算法,在计算时钟偏斜(skew)时,移除源路径和目标路径公共部分因独立变化而引入的悲观余量。

为什么需要 CPR?

  • 源时钟路径和目标时钟路径通常共享一段路径(例如从时钟源到最后一个分叉点之前的时钟树)。
  • 传统计算 skew = DCD - SCD 时,会将公共路径上的延迟变化(由 PVT 波动引起)重复计算两次(一次在 SCD,一次在 DCD),导致过度悲观
  • 实际上,公共路径上的延迟对两个时钟是相同的,所以工具会“移除”这部分多余的悲观,即 CPR。

时钟偏斜计算公式:

\[\text{Skew} = \text{DCD} - \text{SCD} \pm \text{CPR}\]

注意:不同的工具或版本中,CPR 可能是,但其结果总是使有效 skew 更优(更有利于时序)。CPR 值越大,说明公共路径越长,相对于简单差值改善越大。

(14) Pulse Width Checks (脉冲宽度检查)

目的:验证时钟信号的高、低电平持续时间是否满足寄存器和时钟缓冲器的最小脉冲宽度要求。若不满足,可能导致寄存器无法正确采样或保持状态。

下属指标:

指标 含义 Required Actual Slack 说明
Min Period 时钟信号允许的最小周期(针对时钟缓冲器等)。 库中要求的最小周期(例如 1.379 ns) 实际时钟周期(如 3.300 ns) Actual - Required 正:满足;负:时钟频率过高
Low Pulse Width 低电平持续的最小宽度。 库要求(如 0.275 ns) 实际低电平宽度(根据时钟波形和占空比计算,如 1.650 ns) Actual - Required 正:满足;负:低电平太窄
High Pulse Width 高电平持续的最小宽度。 同上 实际高电平宽度 Actual - Required 正:满足;负:高电平太窄



Enjoy Reading This Article?

Here are some more articles you might like to read next: