第 14 章 同步时序设计与时序约束
1. 本章要解决的问题
第 13 章的同步计数器在一个边沿后计算下一状态,再在下一个边沿把结果写回寄存器。功能方程告诉我们“应该得到什么”,但真实门电路还必须回答“来不来得及”和“会不会来得太早”。
本章解决五个核心问题:
- 数据从一个寄存器出发,到另一个寄存器被采样,途中经历了哪些延迟?
- 为什么建立时间检查决定最小时钟周期和最高频率?
- 为什么保持时间检查关注最短路径,而且降低时钟频率通常没有帮助?
- 最大延迟、最小延迟、到达时间、要求时间和时序裕量怎样对应?
- 当一条路径违例时,应先判断什么,再选择怎样的修复方向?
2. 与前一章的联系
第 13 章把同步时序模块抽象为“寄存器—下一状态组合逻辑—寄存器”。本章不改变这个功能结构,只给每一段加入时间参数:
发射寄存器 Q ──→ 组合逻辑与互连 ──→ 捕获寄存器 D
t_cq t_comb t_setup / t_hold
在计数器中,发射寄存器和捕获寄存器可能是同一组状态寄存器;在数据通路中,它们也可能是相邻两级寄存器。分析方法相同。
3. 前置知识快速检查
- 正边沿 D 触发器在什么时候读取 \(D\)?
- \(t_{cq}\) 从哪个事件开始,到哪个事件结束?
- 第 10 章中的传播延迟与污染延迟分别描述最晚变化和最早变化中的哪一个?
- 500 MHz 时钟的周期是多少?
- 同步计数器的全部触发器是否在同一有效边沿启动更新?
答案是:在上升沿读取边沿前的 \(D\);从有效时钟边沿到 \(Q\) 越过参考点;传播延迟看最晚稳定,污染延迟看最早可能开始变化;2 ns;是。若第 1~2 题不熟,回看第 12 章;若第 3 题不熟,回看第 10 章。
4. 学习目标
完成本章后,你应能够:
- 从电路图识别发射寄存器、组合路径和捕获寄存器;
- 写出零偏斜条件下的建立与保持约束;
- 根据路径参数计算建立裕量、保持裕量和最高时钟频率;
- 解释最大延迟用于建立检查、最小延迟用于保持检查的原因;
- 使用明确的偏斜定义判断偏斜对两类检查的影响;
- 区分功能正确、建立通过和保持通过;
- 针对最长路径与最短路径选择正确的基础修复方向。
5. 一条完整的寄存器到寄存器路径
同步时序分析最基本的对象是寄存器到寄存器路径(register-to-register path)。它包含:
- 发射寄存器(launch register): 在当前有效边沿后把旧状态变成新的 \(Q\) 输出;
- 组合逻辑与互连: 对 \(Q\) 进行逻辑运算并把结果送往下一级;
- 捕获寄存器(capture register): 在目标有效边沿采样其 D 输入;
- 时钟路径: 把时钟边沿送到两个寄存器。
图 14-1 从左到右显示数据路径,从下方显示时钟路径。先把功能模块名称放到一边,只观察“边沿—数据传播—下一边沿”的时间链。
图 14-1 数据由发射寄存器在一个边沿后推出,经过组合逻辑,在捕获寄存器的采样窗口前稳定
本章主要处在门级时序抽象。\(t_{comb}\) 已把逻辑门和互连的效果合并成路径延迟;触发器内部晶体管只通过 \(t_{cq}\)、\(t_{setup}\) 和 \(t_{hold}\) 等表征参数出现。
6. 为什么同一条路径需要最大值和最小值
真实路径延迟不是一个固定常数。它会随输入跳变方向、负载、输入边沿、工艺、电压、温度以及版图寄生变化。基础分析用两个边界表示:
- \(t_{cq,max}\):发射边沿后,寄存器 Q 最晚完成规定变化的时间;
- \(t_{cq,min}\):发射边沿后,寄存器 Q 最早可能开始有效变化的时间;
- \(t_{comb,max}\):组合路径从输入变化到输出最晚稳定的延迟;
- \(t_{comb,min}\):组合路径从输入变化到输出最早可能变化的延迟。
最大值回答“最慢会有多慢”,用于检查数据能否赶上下一个捕获边沿。最小值回答“最快会有多快”,用于检查新数据是否过早冲进捕获寄存器。
第 10 章曾用传播延迟和污染延迟描述组合逻辑的这两个方向。工程库与静态时序分析会采用更完整的延迟模型,本章先使用题目给出的路径最大值和最小值。
7. 建立检查:数据最晚必须何时到达
先采用最简单条件:两个寄存器由同一理想时钟驱动,时钟偏斜为 0,也暂不加入时钟抖动。
令当前发射边沿发生在 \(t=0\),下一捕获边沿发生在 \(t=T_{clk}\)。新数据最晚在
\[ t_{arr,max}=t_{cq,max}+t_{comb,max} \]
到达捕获寄存器 D 端。为了满足建立时间,D 必须在下一捕获边沿之前至少提前 \(t_{setup}\) 稳定,因此最晚允许到达时间为
\[ t_{req,setup}=T_{clk}-t_{setup}. \]
建立要求是“最晚到达不晚于最晚允许时刻”:
\[ t_{cq,max}+t_{comb,max}\le T_{clk}-t_{setup}. \]
移项后得到最常用形式:
\[ T_{clk}\ge t_{cq,max}+t_{comb,max}+t_{setup}. \]
图 14-2 把发射边沿、最晚到达点、建立窗口和捕获边沿排在一条时间轴上。数据在建立窗口开始前稳定,检查通过。
图 14-2 最大数据路径必须在下一捕获边沿的建立窗口开始前完成传播
例题 1:计算最小时钟周期
已知一条路径:
- \(t_{cq,max}=80\) ps;
- \(t_{comb,max}=620\) ps;
- \(t_{setup}=100\) ps。
最小时钟周期为
\[ T_{clk,min}=80+620+100=800\ \text{ps}. \]
这意味着时钟周期不能小于 800 ps。结果的三个量单位一致,并且都处在同一条最大延迟检查链上。
变式: 若组合逻辑优化到 520 ps,最小时钟周期降为 700 ps。
8. 建立裕量
时序裕量(timing slack)表示要求时间与实际到达时间之间还剩多少空间。建立裕量定义为
\[ S_{setup}=t_{req,setup}-t_{arr,max}. \]
在零偏斜条件下:
\[ S_{setup}=T_{clk}-t_{setup}-t_{cq,max}-t_{comb,max}. \]
- \(S_{setup}>0\):通过,还有正裕量;
- \(S_{setup}=0\):刚好压在边界上;
- \(S_{setup}<0\):建立违例,数据到得太晚。
裕量不是“概率”或“可靠度百分比”,而是带时间单位的差值。例如 \(S_{setup}=50\) ps 表示在当前给定参数和分析条件下,最晚数据比建立截止时刻早 50 ps。
例题 2:计算建立裕量
沿用例题 1 的路径,实际时钟周期为 1 ns,即 1000 ps。
\[ S_{setup}=1000-100-80-620=200\ \text{ps}. \]
建立检查通过,正裕量为 200 ps。
若把时钟周期缩短为 700 ps:
\[ S_{setup}=700-100-80-620=-100\ \text{ps}. \]
负号表示数据比允许时刻晚 100 ps。
变式: 时钟周期为 850 ps 时,裕量为 50 ps。
9. 最高时钟频率
建立检查给出最小时钟周期后,最高频率为
\[ f_{max}=\frac{1}{T_{clk,min}}. \]
例题 1 中 \(T_{clk,min}=800\) ps:
\[ f_{max}=\frac{1}{800\times10^{-12}}=1.25\times10^9\ \text{Hz}=1.25\ \text{GHz}. \]
这个 \(f_{max}\) 只对应题目给定的路径参数和简化条件。实际芯片的目标频率还要覆盖时钟不确定性、偏斜、PVT、片上变化以及设计裕量。
10. 关键路径决定建立上限
一个设计通常有大量寄存器到寄存器路径。对每条路径分别计算最小周期,要求最大的那条路径限制整个同步时钟域:
\[ T_{clk,min}=\max_{p\in P}\left(t_{cq,max,p}+t_{comb,max,p}+t_{setup,p}\right). \]
这里 \(P\) 是需要在一个周期内完成的路径集合。限制最小时钟周期的路径称为建立关键路径(setup critical path)。
图 14-3 中三条路径共享同一个捕获寄存器。虽然路径 A 的门数量看起来最多,真正的关键路径仍要按总最大延迟计算,不能只数逻辑级数。
图 14-3 比较所有候选路径的 \(t_{cq,max}+t_{comb,max}+t_{setup}\),总值最大的路径限制频率
例题 3:在多条路径中找关键路径
同一时钟域有三条路径,捕获触发器的 \(t_{setup}\) 均为 70 ps:
| 路径 | \(t_{cq,max}\) | \(t_{comb,max}\) | 所需最小周期 |
|---|---|---|---|
| A | 60 ps | 540 ps | 670 ps |
| B | 80 ps | 610 ps | 760 ps |
| C | 55 ps | 480 ps | 605 ps |
路径 B 的总值最大,因此它是建立关键路径:
\[ T_{clk,min}=760\ \text{ps},qquad f_{max}\approx1.316\ \text{GHz}. \]
变式: 若只把路径 A 优化 100 ps,整体 \(f_{max}\) 不变,因为路径 B 仍然限制周期。
11. 保持检查:新数据最早何时可以到达
保持检查观察的是当前捕获边沿附近,而不是下一周期。仍令共同边沿为 \(t=0\)。捕获寄存器要求旧数据在边沿后继续稳定至少 \(t_{hold}\),因此新数据不能早于
\[ t_{req,hold}=t_{hold} \]
到达。新数据最早到达捕获 D 端的时间为
\[ t_{arr,min}=t_{cq,min}+t_{comb,min}. \]
保持要求是“最早到达不早于保持窗口结束”:
\[ t_{cq,min}+t_{comb,min}\ge t_{hold}. \]
图 14-4 中橙色区域是捕获边沿后的保持窗口。旧数据必须覆盖完整窗口,新数据只能在窗口结束后开始影响 D。
图 14-4 保持检查使用最小延迟,防止同一发射边沿产生的新数据过早冲入捕获寄存器
这里的“同一边沿”很重要:发射寄存器和捕获寄存器都看到当前边沿。捕获寄存器正在采样旧数据时,发射寄存器也开始推出新数据。路径必须慢到足以让旧数据守住保持窗口。
12. 保持裕量
保持裕量定义为最早数据到达时间减去保持要求时间:
\[ S_{hold}=t_{arr,min}-t_{req,hold}. \]
零偏斜时:
\[ S_{hold}=t_{cq,min}+t_{comb,min}-t_{hold}. \]
- \(S_{hold}>0\):新数据在保持窗口结束后才到,检查通过;
- \(S_{hold}=0\):刚好到达边界;
- \(S_{hold}<0\):新数据到得太早,发生保持违例。
例题 4:计算保持裕量
已知
\[ t_{cq,min}=35\ \text{ps},\quad t_{comb,min}=25\ \text{ps},\quad t_{hold}=50\ \text{ps}. \]
则
\[ S_{hold}=35+25-50=10\ \text{ps}. \]
保持检查通过,裕量为 10 ps。
若组合路径只有 5 ps:
\[ S_{hold}=35+5-50=-10\ \text{ps}, \]
新数据早了 10 ps,需要增加最短数据路径延迟或调整时钟关系。
变式: 把时钟周期从 1 ns 增加到 2 ns,保持裕量仍是 \(-10\) ps,因为这个零偏斜保持式中没有 \(T_{clk}\)。
13. 为什么降频不能修复保持违例
建立检查比较当前发射边沿与下一捕获边沿,增大 \(T_{clk}\) 会把下一边沿推远,给慢数据更多时间。
保持检查比较同一个边沿附近的旧数据与新数据。把后续周期拉长,并不会改变当前边沿后最初几十皮秒内发生的事情。因此降低频率通常只能改善建立裕量,不能修复保持违例。
图 14-5 把两类检查放在同一时间轴上:建立看“能否赶上下班车”,保持看“新数据是否在当前采样尚未结束时闯进来”。类比只帮助区分时间方向;真实判断仍由到达时间和要求时间完成。
图 14-5 保持窗口位于当前边沿之后,建立窗口位于下一捕获边沿之前
14. 加入时钟偏斜:先定义正负号
时钟偏斜(clock skew)是同一个名义时钟边沿到达不同寄存器的时间差。本章定义
\[ t_{skew}=t_{capture}-t_{launch}. \]
- \(t_{skew}>0\):捕获边沿比发射边沿晚到;
- \(t_{skew}<0\):捕获边沿比发射边沿早到。
在这个定义下,建立检查的可用时间变为 \(T_{clk}+t_{skew}\):
\[ T_{clk}+t_{skew}\ge t_{cq,max}+t_{comb,max}+t_{setup}. \]
建立裕量为
\[ S_{setup}=T_{clk}+t_{skew}-t_{setup}-t_{cq,max}-t_{comb,max}. \]
正偏斜让捕获边沿晚到,建立时间增加;负偏斜让捕获边沿早到,建立时间减少。
保持窗口随捕获边沿一起移动,其检查式为
\[ t_{cq,min}+t_{comb,min}\ge t_{skew}+t_{hold}. \]
保持裕量为
\[ S_{hold}=t_{cq,min}+t_{comb,min}-t_{skew}-t_{hold}. \]
正偏斜使捕获保持窗口向后移动,对保持不利;负偏斜对保持有利。第 15 章会进一步讨论偏斜、抖动和时钟不确定性。遇到不同教材或工具报告时,必须先确认它采用的偏斜符号定义,再比较公式。
例题 5:偏斜对建立与保持的相反影响
一条路径参数为:
\[ T_{clk}=800\ \text{ps},\quad t_{cq,max}=70\ \text{ps},\quad t_{comb,max}=600\ \text{ps},\quad t_{setup}=80\ \text{ps}, \]
\[ t_{cq,min}=30\ \text{ps},\quad t_{comb,min}=45\ \text{ps},\quad t_{hold}=40\ \text{ps}. \]
若 \(t_{skew}=+30\) ps:
\[ S_{setup}=800+30-80-70-600=80\ \text{ps}, \]
\[ S_{hold}=30+45-30-40=5\ \text{ps}. \]
同一个正偏斜给建立增加了 30 ps,却从保持裕量中减去了 30 ps。
变式: 若 \(t_{skew}=-20\) ps,建立裕量变为 30 ps,保持裕量变为 55 ps。
15. 建立与保持必须分别通过
一条路径可能出现四种结果:
| 建立 | 保持 | 结论 |
|---|---|---|
| 通过 | 通过 | 在给定约束下时序满足 |
| 违例 | 通过 | 最长路径太慢或周期太短 |
| 通过 | 违例 | 最短路径太快 |
| 违例 | 违例 | 需要分别处理两个方向的问题 |
不能用很大的建立正裕量抵消保持负裕量。两项检查保护的是不同采样边界,必须各自满足。
16. 哪些路径最容易出问题
建立违例常见于:
- 多级组合逻辑或长进位链;
- 大扇出信号和长互连;
- 慢速 PVT 条件下的高负载路径;
- 复杂 MUX、比较和算术逻辑串联;
- 目标时钟周期过短。
保持违例常见于:
- 两个寄存器几乎直接相连;
- 组合逻辑很少、互连很短;
- 快速 PVT 条件下的数据路径;
- 捕获时钟相对较晚到达,即本章定义的正偏斜较大。
同一逻辑设计的最坏建立条件和最坏保持条件通常不是同一个 PVT 角。静态时序分析需要分别检查最大路径与最小路径。
17. 基础修复方向
先判断违例类型,再选择方向。
建立违例:让慢路径更快或给它更多时间
- 降低时钟频率,增大 \(T_{clk}\);
- 化简组合逻辑,减少串联级数;
- 采用更快的门或提高关键节点驱动能力;
- 减小负载和互连延迟;
- 在允许改变微架构时插入流水寄存器,把长路径分成两拍;
- 调整逻辑或寄存器位置,使关键路径更短。
保持违例:让快路径稍慢
- 在最短数据路径中加入受控延迟;
- 调整缓冲器和布线,使最短到达时间增加;
- 调整时钟树关系,减小不利偏斜。
保持修复必须局部且可分析。随意在 RTL 功能逻辑中加入反相器对或延时语句不能替代实现阶段的时序修复。
图 14-6 用“问题—判据—修复方向”总结检查流程。建立优化关注最大路径;保持修复关注最小路径,二者不能混用。
图 14-6 负裕量先按建立或保持分类,再分别处理慢路径和过快路径
18. 选学:流水线为什么能提高频率
先修知识: 掌握本章建立约束。学习收益: 建立“吞吐率提高但延迟拍数增加”的直觉。
假设一段组合逻辑最大延迟为 900 ps,其他寄存器相关时间合计 100 ps,单周期最小周期约为 1000 ps。若能在逻辑中间插入一级寄存器,把组合延迟近似分成 450 ps 和 450 ps,则每一级最小周期约为 550 ps。
流水线提高了可用频率和单位时间吞吐率,但一份数据需要经过更多寄存器级才到达最终输出。新增寄存器还会增加面积、时钟功耗和控制复杂度。第 17 章会在数据通路中继续讨论。
例题 6:判断两条路径并选择修复方向
时钟周期为 900 ps,零偏斜。两条路径共用 \(t_{setup}=80\) ps、\(t_{hold}=45\) ps。
| 路径 | \(t_{cq,max}\) | \(t_{comb,max}\) | \(t_{cq,min}\) | \(t_{comb,min}\) |
|---|---|---|---|---|
| P1 | 70 ps | 780 ps | 35 ps | 50 ps |
| P2 | 60 ps | 500 ps | 25 ps | 10 ps |
P1 建立裕量:
\[ S_{setup,P1}=900-80-70-780=-30\ \text{ps}. \]
P1 保持裕量:
\[ S_{hold,P1}=35+50-45=40\ \text{ps}. \]
P2 建立裕量:
\[ S_{setup,P2}=900-80-60-500=260\ \text{ps}. \]
P2 保持裕量:
\[ S_{hold,P2}=25+10-45=-10\ \text{ps}. \]
P1 是慢路径,应优化最大延迟或增加周期;P2 是过快路径,应增加最小数据延迟。把周期增大只能修复 P1,不能改变 P2 的 \(-10\) ps 保持裕量。
变式: 若在 P2 数据路径中加入一个最小延迟 20 ps、最大延迟 35 ps 的缓冲单元,P2 保持裕量变为 10 ps,建立裕量仍有 225 ps。
19. 从规格到检查结果的固定步骤
处理基础时序题时按下面顺序:
- 确认发射寄存器、捕获寄存器和有效边沿;
- 写清是否同一时钟域、是否给出偏斜;
- 建立检查只取最大值:\(t_{cq,max}\)、\(t_{comb,max}\)、\(t_{setup}\);
- 保持检查只取最小值:\(t_{cq,min}\)、\(t_{comb,min}\)、\(t_{hold}\);
- 先写到达时间和要求时间,再计算裕量;
- 用正负号判断通过或违例,并写出相差多少时间;
- 若求 \(f_{max}\),先从最坏建立路径得到 \(T_{clk,min}\),再取倒数;
- 修复前先确认负裕量属于建立还是保持。
把所有数字直接塞进一个背诵公式容易混用最大值和最小值。先回答“数据最晚/最早何时到”和“捕获端最晚/最早允许什么”,公式会自然对应。
20. 常见误区与反例
误区 1:只要功能仿真正确,时序就一定正确
零延迟功能模型可以给出正确逻辑值,却不保证数据在采样窗口内到达。功能与时序是两组不同检查。
误区 2:建立时间属于组合逻辑
\(t_{setup}\) 是捕获触发器对 D 输入的要求;组合逻辑提供的是数据路径延迟。
误区 3:保持检查也用 \(t_{comb,max}\)
保持问题来自新数据过早到达,必须使用 \(t_{cq,min}\) 与 \(t_{comb,min}\)。
误区 4:时钟周期越大,所有时序问题都越容易解决
增大周期改善建立检查。零偏斜保持式中没有时钟周期,保持违例仍然存在。
误区 5:组合逻辑为零延迟最好
对建立检查,较短最大延迟有利;对保持检查,过短的最小延迟可能让新数据过早到达。
误区 6:正裕量和负裕量可以互相抵消
不同路径、不同检查类型的裕量不能相互抵消。所有要求检查的路径都应分别通过。
误区 7:门级数最多的路径一定是关键路径
路径延迟还受门类型、尺寸、负载、边沿和互连影响。关键路径按总延迟确定。
误区 8:偏斜公式可以不定义符号
不同资料可能采用相反的偏斜定义。先写 \(t_{skew}=t_{capture}-t_{launch}\),再判断正负影响。
21. 工程中的实际意义
同步设计把复杂的连续时间行为整理为一组可检查的路径。每条路径都有起点、终点、最大到达时间、最小到达时间和对应要求。静态时序分析(STA)会在不枚举所有功能输入序列的情况下,对这些路径进行系统检查。
时序约束影响整个芯片实现流程:
- 综合工具根据目标周期选择门结构和驱动能力;
- 布局布线决定互连长度、负载和寄生延迟;
- 时钟树改变时钟到达时间和偏斜;
- PVT 与片上变化决定需要检查的快慢条件;
- 时序报告指出最差裕量和违例路径,指导优化。
本章的简单相加模型用于建立正确直觉。工业 STA 会处理波形斜率、负载、串扰、统计或片上变化、时钟不确定性和多周期关系,但核心仍是比较到达时间与要求时间。
22. 本章知识链
寄存器到寄存器路径
├─ 最晚数据:t_cq,max + t_comb,max
│ ↓ 与下一边沿前的建立截止比较
│ 建立裕量 → 最小时钟周期 → f_max
│
└─ 最早数据:t_cq,min + t_comb,min
↓ 与当前边沿后的保持截止比较
保持裕量 → 最短路径修复
↓
加入时钟偏斜、抖动与不确定性
↓
下一章:时钟偏斜、抖动与亚稳态
23. 本章小结
- 同步时序分析的基本对象是发射寄存器—组合路径—捕获寄存器。
- 建立检查使用最大延迟,保证数据赶上下一捕获边沿。
- 零偏斜建立约束为 \(T_{clk}\ge t_{cq,max}+t_{comb,max}+t_{setup}\)。
- 建立裕量等于建立要求时间减去最晚到达时间。
- 最高频率由所有建立路径中所需最小周期最大的路径决定。
- 保持检查使用最小延迟,防止新数据在当前边沿后到得太早。
- 零偏斜保持约束为 \(t_{cq,min}+t_{comb,min}\ge t_{hold}\)。
- 保持裕量等于最早到达时间减去保持要求时间。
- 增大时钟周期能改善建立裕量,通常不能修复保持违例。
- 本章定义 \(t_{skew}=t_{capture}-t_{launch}\);正偏斜帮助建立、损害保持。
- 建立和保持必须分别检查,正裕量不能抵消另一项负裕量。
- 建立修复关注慢路径,保持修复关注过快路径。
24. 练习
基础题
- 什么是发射寄存器和捕获寄存器?
- 一条寄存器到寄存器数据路径包含哪三段主要时间?
- 为什么建立检查使用最大延迟?
- 为什么保持检查使用最小延迟?
- 用一句话区分建立时间与保持时间。
- 什么是时序裕量?负裕量表示什么?
- 为什么降低时钟频率通常不能修复保持违例?
分析与计算题
- 零偏斜路径的 \(t_{cq,max}=70\) ps、\(t_{comb,max}=530\) ps、\(t_{setup}=90\) ps。求最小时钟周期。
- 根据第 8 题求最高时钟频率。
- 若第 8 题实际周期为 750 ps,求建立裕量。
- 一条零偏斜路径的 \(t_{cq,min}=25\) ps、\(t_{comb,min}=30\) ps、\(t_{hold}=45\) ps。求保持裕量。
- 若第 11 题的 \(t_{comb,min}\) 降为 10 ps,是否通过保持检查?违例多少?
- 三条路径所需的建立最小周期分别为 650 ps、720 ps 和 680 ps。求该时钟域的 \(T_{clk,min}\) 与 \(f_{max}\)。
- 某路径零偏斜,\(T_{clk}=1\) ns,\(t_{cq,max}=100\) ps,\(t_{setup}=80\) ps。组合逻辑最大延迟最多允许多少?
- 某路径 \(t_{cq,min}=40\) ps,\(t_{hold}=70\) ps。组合路径最小延迟至少需要多少?
- 采用本章偏斜定义,\(t_{skew}=+40\) ps。它对建立和保持分别有利还是不利?
- 某路径 \(T_{clk}=900\) ps、\(t_{skew}=20\) ps、\(t_{cq,max}=80\) ps、\(t_{comb,max}=700\) ps、\(t_{setup}=90\) ps。求建立裕量。
- 同一条路径的 \(t_{cq,min}=30\) ps、\(t_{comb,min}=50\) ps、\(t_{hold}=55\) ps,沿用 \(t_{skew}=20\) ps。求保持裕量。
综合题
- 两条路径中,A 的建立裕量为 \(-60\) ps、保持裕量为 80 ps;B 的建立裕量为 150 ps、保持裕量为 \(-15\) ps。分别给出修复方向,并说明单纯降频能解决哪些问题。
- 一个同步计数器的最高位反馈路径成为建立关键路径。结合第 13 章的翻转条件,解释位宽增加为什么可能加长这条路径。
- 画出一条寄存器到寄存器路径,并自行给出一组最大/最小延迟参数,使它建立检查通过但保持检查违例。写出两项裕量验证你的设计。
25. 练习答案
展开第 14 章练习答案
题 1
发射寄存器在当前有效边沿后推出新数据;捕获寄存器在目标有效边沿采样经过组合路径到达的数据。
题 2
主要包含发射寄存器的时钟到 Q 延迟、组合逻辑与互连延迟,以及捕获寄存器的建立或保持要求。
题 3
建立检查要保证最慢的数据也能在下一捕获边沿的建立窗口前到达,因此使用 \(t_{cq,max}\) 与 \(t_{comb,max}\)。
题 4
保持检查要防止最快的新数据过早改变捕获端,因此使用 \(t_{cq,min}\) 与 \(t_{comb,min}\)。
题 5
建立时间要求数据在有效边沿前提前稳定;保持时间要求数据在有效边沿后继续稳定。
题 6
时序裕量是要求时间与实际到达时间之间的时间差。负裕量表示到达时间越过允许边界,发生时序违例。
题 7
保持检查关注同一边沿后最初的一小段时间,零偏斜保持式中没有 \(T_{clk}\);拉长后续周期不会延迟本边沿推出的新数据。
题 8
\[ T_{clk,min}=70+530+90=690\ \text{ps}. \]
题 9
\[ f_{max}=\frac{1}{690\times10^{-12}}\approx1.449\ \text{GHz}. \]
题 10
\[ S_{setup}=750-70-530-90=60\ \text{ps}. \]
题 11
\[ S_{hold}=25+30-45=10\ \text{ps}. \]
检查通过。
题 12
\[ S_{hold}=25+10-45=-10\ \text{ps}. \]
保持检查不通过,新数据早到 10 ps。
题 13
取三条路径中的最大值:
\[ T_{clk,min}=720\ \text{ps}, \]
\[ f_{max}=\frac{1}{720\times10^{-12}}\approx1.389\ \text{GHz}. \]
题 14
1 ns 等于 1000 ps:
\[ t_{comb,max}\le1000-100-80=820\ \text{ps}. \]
题 15
由
\[ 40+t_{comb,min}\ge70 \]
得到
\[ t_{comb,min}\ge30\ \text{ps}. \]
题 16
按 \(t_{skew}=t_{capture}-t_{launch}\),\(+40\) ps 表示捕获时钟晚到。它给建立增加 40 ps 可用时间,对建立有利;同时把保持窗口向后推 40 ps,对保持不利。
题 17
\[ S_{setup}=900+20-80-700-90=50\ \text{ps}. \]
建立检查通过。
题 18
\[ S_{hold}=30+50-20-55=5\ \text{ps}. \]
保持检查通过。
题 19
A 是建立违例,应优化最大延迟、降低频率或在允许时增加流水级;其保持已经通过。B 是保持违例,应增加最短数据路径延迟或调整不利偏斜;其建立已经通过。单纯降频可以修复 A 的建立问题,不能修复 B 的保持问题。
题 20
同步二进制计数器第 \(i\) 位的翻转条件包含全部更低位的乘积 \(Q_{i-1}\cdots Q_0\)。位宽增加时,高位条件可能需要更多级逻辑、更大扇入或更复杂的前缀结构;门延迟、负载和互连共同增加,使最高位反馈路径可能成为建立关键路径。
题 21
一种可行示例:取零偏斜、\(T_{clk}=800\) ps、\(t_{cq,max}=60\) ps、\(t_{comb,max}=600\) ps、\(t_{setup}=80\) ps,则
\[ S_{setup}=800-60-600-80=60\ \text{ps}>0. \]
再取 \(t_{cq,min}=20\) ps、\(t_{comb,min}=10\) ps、\(t_{hold}=50\) ps,则
\[ S_{hold}=20+10-50=-20\ \text{ps}<0. \]
因此该组参数满足“建立通过、保持违例”。其他数值只要满足两条不等式也可以。
26. 自测清单
若第 2~5 项不稳定,请在纸上画两条时间轴:建立轴从当前边沿画到下一边沿,保持轴只放大当前边沿后的短窗口。若第 8 项不稳定,请检查两个公式中是否出现 \(T_{clk}\)。若第 9 项不稳定,每次先写 \(t_{skew}=t_{capture}-t_{launch}\) 再代数计算。
27. 下一章衔接
本章已经把偏斜作为一个确定的时钟到达时间差加入公式。真实芯片中的时钟边沿还会随周期波动,触发器在采样窗口被破坏时也可能进入亚稳态。第 15 章《时钟偏斜、抖动与亚稳态》会解释这些现象的物理来源、它们怎样消耗时序裕量,以及同步器为什么能降低异步信号传播亚稳态的风险。