Report 阅读指南
I. 时序报告 (Timing Report)¶
1.1 核心 Metrics¶
(1) Setup Time (建立时间, \(t_{su}\))¶
- 物理含义:时钟有效沿到来之前,数据必须保持稳定的最短时间。
- 报告体现:对应“最大延迟(Max Delay)”检查。限制了逻辑的最长路径。
(2) Hold Time (保持时间, \(t_{h}\))¶
- 物理含义:时钟有效沿到来之后,数据必须继续保持稳定的最短时间。
- 报告体现:对应“最小延迟(Min Delay)”检查。限制了逻辑的最短路径。
(3) Arrivals Time (AT, 到达时间)¶
- 物理含义:数据信号从时钟边沿触发(Launch FF)出发,经过各种门延迟和线延迟,实际到达终点(Capture FF)D 端的时间。
- 公式解释:
\[\text{Arrival Time} = \text{CLK→Q Time} + \sum \text{Gate Delays} + \sum \text{Wire Delays}\]
(4) Required Time (RT, 需求时间)¶
- 物理含义:为了满足 Setup 或 Hold 条件,数据必须到达终点的时间界限。它是工具根据时钟周期、时钟网络延迟和 \(t_{su}\) 或 \(t_{h}\) 反推出来的标准线。
- 公式解释:
\[\begin{aligned} \text{Required Time(Setup)} &= \text{目标寄存器时钟到达时间} - t_{\text{setup}} \\ \text{Required Time(Hold)} &= \text{目标寄存器时钟到达时间} + t_{\text{hold}} \end{aligned}\]
(5) Slack (时序裕量)¶
- 物理含义:实际到达时间与需求时间之间的“安全距离”。
- 计算公式:
$$\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, 最差负裕量)¶
- 物理含义:整个设计中,所有路径里最差的那条路径的 Slack 值。
- 正确范围:目标是 \(\ge 0\)。如果 WNS 是 -0.5ns,说明你芯片的最高频率达不到预期,需要降频或优化 RTL。
(7) TNS (Total Negative Slack, 总负裕量)¶
- 物理含义:设计中所有违例路径(Slack < 0)的 Slack 负值之和。
- 代表什么:WNS 代表你病得最重的地方,TNS 代表你全身病的范围。如果 WNS 只有 -0.1ns,但 TNS 是 -100ns,说明你的设计有成千上万条路径差一点点达标(通常是全局时钟约束过紧)。
(8) WHS (Worst Hold Slack, 最差保持裕量)¶
- 物理含义:整个设计中,所有路径里最差的那条路径的 Hold Slack 值。
- 正确范围:目标是 \(\ge 0\)。如果 WHS 是 -0.2ns,说明你芯片的时钟树设计有问题,可能需要调整时钟树结构或增加缓冲器来降低 Skew。
(9) THS (Total Hold Slack, 总保持裕量)¶
- 物理含义:设计中所有 Hold 违例路径(Hold Slack < 0)的 Hold Slack 负值之和。
- 代表什么:WHS 代表你最严重的保持问题,THS 代表你整体的保持问题。如果 WHS 只有 -0.05ns,但 THS 是 -50ns,说明你的设计有很多条路径存在轻微的保持违例,可能需要全局调整时钟树或优化 RTL 来解决。
(10) Skew (时钟偏斜)¶
- 物理含义:同一个时钟源发出的时钟信号,到达两个不同触发器时钟端的时间差。
- 报告体现:后端布线(CTS)后非常关注,合理的 Skew 可以用来“借时间(Useful Skew)”,但恶性 Skew 会导致严重的 Hold 违例。
(11) Uncertainty (时钟不确定性)¶
- 物理含义:工具为了模拟真实世界中时钟的抖动(Jitter)、偏斜(Skew)以及给后期布线预留的余量,而人为加上的“惩罚值”。
- 正确范围:综合(DC)阶段通常设得较大(如周期的 5%-10%),后端(ICC/Innovus)阶段随着真实时钟树建好会逐渐减小。
(12) Data Path Delay (数据路径延迟)¶
含义:
信号从源触发器的时钟引脚(C)到目标触发器的数据引脚(D)所经过的全部延迟。
组成部分:
-
Logic Delay(单元延迟)
信号经过逻辑门(与、或、非、LUT、触发器、加法器等)内部所需的延迟。
影响因素:输入转换时间(slew)、输出负载电容、工艺角(PVT)、单元驱动能力。 -
Route Delay(互连延迟 / 线延迟)
信号在金属连线上传输的 RC 延迟,受线长、线宽、层数、通孔、相邻线耦合电容等影响。
在布局布线前使用线载模型(WLM)估计;布局布线后使用实际提取的寄生参数(如通过 TLUPlus 计算)。
报告示例
- 总延迟 5.571 ns
- 逻辑占 2.672 ns(约 48%),布线占 2.899 ns(约 52%)
- 若布线占比过高(>60%),需检查是否存在长线或高扇出,可插入缓冲器或优化布局。
(13) DCD, SCD, CPR¶
- Destination Clock Delay (DCD): 目标时钟延迟,时钟信号从时钟源(如
create_clock定义的源点)到达目标触发器时钟引脚(C 端) 的总延迟。 - Source Clock Delay (SCD): 源时钟延迟,时钟信号从时钟源到达源触发器时钟引脚(C 端) 的总延迟。
- 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: