为什么hold check不需要考虑jitter等timing signoff三问

TSMC sign off guideline如下图所示:

可以看出来:signoff corner一共16个,setup有4个,都在慢速低压下;hold一共12个,在高速高压下8个,另外在慢速低压下也可能出现hold最差的情况,与setup一样还有4个。

setup uncertainty = clock jitter + margin

hold uncertainty = margin,且hold margin可以加在launch或capture path上。

T40项目中,timing signoff对setup加的uncertainty为100ps,对hold的uncertainty为50ps。

一般后仿用的WC(慢速低压高温)和LT(高速高压低温)。

那么问题来了

1、为什么hold check不需要考虑jitter呢?

2、为什么hold check需要考虑慢速低压的情况?

3、为什么在hold check,需要分别在launch和capture clock上加正负两种margin?

  • 先看第一个问题

如果launch edge从红色沿发出,那么hold是看capture reg的红色沿还是黄色沿呢?

来看一条hold路径就知道了

很清楚了,hold capture edge也是同周期的红色沿。

jitter来自于时钟源的固有抖动,对作用于不用寄存器的同周期的沿,jitter施加的影响一致,所以对hold来说,jitter天然不存在,uncertainty中只需要加margin,不需要考虑jitter。

而对于setup check,capture edge(橘色)在launch reg发出后的下一周期 ,jitter会对两个沿施加不同影响,所以uncertainty中除了margin还需要考虑jitter。

  • 再看第二个问题,从data path上看,一般ss下setup最差,ff下hold最差,那么什么情况下,ss会触发hold violation?

clock skew会导致capture clock比launch clock慢得多,那么hold slack就出现了最差情况。clock skew在ff下会更好,而在ss下会出现偏移所以hold check增加ss corner是考虑了clock skew。

  • 再看第三个问题,对launch/capture clock加margin为何区别对待?

首先,众所周知,launch data提前和capture clock延迟都是减少hold slack的行为。

在launch edge上加-12%的 hold margin,那么数据输出的沿(红色)也会相应提前,从而进一步减少hold slack。在capture edge上加12% hold margin,此为采样时钟延迟。

至于为什么分别加在ss和ff corner,可否交换,ss下+12% margin@capture clock,ff下-12% margin@launch clock?个人认为也是可以的,因为不管在哪个corner下,hold slack都是capture clock time - launch clock time - data delay

<think>首先,用户的题是关于“在设置中考虑 jitter hold考虑 jitter 的相关情况”。他们提供了几个引用,我需要参考这些引用,并结合用户的上一个题来回答。 回顾用户的消息: - 用户引用了几段文本: - [^1]: jitter来自于时钟源的固有抖动...对hold来说,jitter天然存在,uncertainty中只需要加margin,需要考虑jitter。 - [^2]: clock uncertainty包含clock jitter, input jitter, system jitter...使用set_clock_uncertainty可以对同的场景设置时钟确定性。 - [^3]: 关于jitterbuffer的帧跳跃检查,似乎与时钟抖动相关,但更偏向于视频或音频处理。 用户的上一个题可能是关于时钟抖动的,但在这个消息中,他们直接提到了“设置时考虑 jitter hold考虑 jitter 的相关内容”。从引用[^1],它明确指出对于hold时间检查,jitter产生影响,因此在uncertainty中需要考虑jitter,只需要加margin。 关键点: - 在数字电路设计中,时钟抖动(jitter)会影响时序分析。 - 对于setup时间检查,jitter会增加确定性,因为它会导致时钟边沿的变化。 - 对于hold时间检查,引用说jitter对作用于同寄存器的同周期沿的影响一致,因此对hold时间检查产生题,只考虑margin即可。 因此,用户的题是在时序分析设置中,为什么hold时间检查时考虑jitter,而只考虑margin。 我的回答需要: - 使用中文。 - 结构清晰,逐步解释。 - 引用提供的引用,末尾添加引用标识。 - 生成相关题。 - 确保LaTeX语法正确:行内数学表达式用$...$,独立公式用$$...$$。 结构化回答: 1. **解释概念**:简要介绍时钟抖动和时序分析中的setup和hold时间。 2. **分析为什么hold时间考虑jitter**:基于引用[^1],解释jitterhold时间的影响为什么是零或可忽略。 3. **讨论uncertainty设置**:引用[^2],说明如何设置时钟确定性,包括在setup和hold同处理。 4. **回答用户题**:明确说明在设置中考虑jitter hold考虑jitter的具体情况。 5. **生成相关题**:在最后添加相关题。 生成相关题: - 基于主题,如时序分析、jitter的影响、uncertainty设置等。 确保真实性: - 基于提供的引用和一般知识。引用[^1]是核心,它说对hold时间,jitter天然存在。 完整回答: - 先回答题。 - 然后添加相关题。 </think> ### 时序分析中考虑jitter hold考虑jitter的设置说明 在数字电路时序分析中,时钟抖动(jitter)和时钟确定性(clock uncertainty)是关键概念。用户的题聚焦于“在设置中考虑jitter hold考虑jitter的相关情况”,这主要涉及hold时间检查的特定处理方式。以下基于您提供的引用和时序分析原理,逐步解释这一设置逻辑。 #### 1. **时钟抖动和时序分析基础** - **时钟抖动(jitter)**:指时钟信号边沿的实际到达时间与理想时间之间的随机偏差,通常由时钟源噪声或环境因素引起。在时序分析中,抖动会影响setup时间和hold时间的计算。 - **时钟确定性(clock uncertainty)**:包括抖动、输入抖动(input jitter)和系统抖动(system jitter)等,用于在时序约束中增加裕量(margin),以覆盖可预测的延迟变化[^2]。 - **setup和hold时间检查**: - **Setup时间**:数据必须在时钟边沿到来前稳定,抖动会增加确定性,因为时钟边沿的偏移可能导致数据采样失败。 - **Hold时间**:数据必须在时钟边沿后保持稳定一段时间,抖动的影响较小,因为对同一时钟周期的边沿,抖动对所有寄存器施加的影响是一致的[^1]。 #### 2. **为什么hold时间检查考虑jitter?** 根据引用,jitterhold时间的影响可以忽略,原因如下: - **固有特性**:jitter来源于时钟源的固有抖动,作用于同一时钟周期的上升沿或下降沿时,其对源寄存器和目标寄存器的延迟变化是相同的。因此,在hold时间检查中,数据到达时间和时钟边沿的偏移会同步变化,导致**净影响为零**。 - **uncertainty设置**:在hold时间检查中,时钟确定性(uncertainty)只需添加固定的裕量(margin)来覆盖工艺变异或温度变化等非抖动因素,无需单独包含jitter分量。例如,在使用EDA工具如PrimeTime时,可以通过`set_clock_uncertainty`命令为hold场景专门设置一个较小的裕量,而涉及jitter计算[^2]。 - **数学表达**:设时钟抖动为$\Delta t_j$,对于同一时钟周期,源寄存器时钟边沿的抖动$\Delta t_{j,\text{src}}$和目标寄存器时钟边沿的抖动$\Delta t_{j,\text{dst}}$满足$\Delta t_{j,\text{src}} = \Delta t_{j,\text{dst}}$。因此,hold时间裕量计算为: $$ \text{Hold Slack} = T_{\text{data\_arrival}} - T_{\text{clock\_capture}} - \text{Hold Time} - \text{Margin} $$ 其中,$T_{\text{data\_arrival}}$和$T_{\text{clock\_capture}}$的抖动分量相互抵消,只需通过margin覆盖其他确定性。 #### 3. **如何在实际设置中实现** - **使用`set_clock_uncertainty`命令**:在静态时序分析(STA)中,您可以为setup和hold时间分别配置确定性: - **对于setup时间**:uncertainty包含jitter分量(如时钟抖动和输入抖动),以增加时序裕量。 - **对于hold时间**:uncertainty仅设置一个固定margin(例如0.1ns),忽略jitter,因为它产生额外风险[^2]。 - 示例代码(基于SDC约束): ```tcl # 设置setup时间的确定性,包含jitter set_clock_uncertainty -setup 0.2 [get_clocks clk] # 设置hold时间的确定性,仅添加margin,考虑jitter set_clock_uncertainty -hold 0.05 [get_clocks clk] ``` - **设计注意事项**:在高速电路(如FPGA或ASIC)中,hold时间检查通常更关注局部路径的变异,而jitter的影响主要在全局时钟分布中体现。因此,这种设置能简化分析并减少悲观度(pessimism)。 #### 4. **引用总结** - 引用明确指出,jitterhold时间“天然存在”,uncertainty只需margin。 - 引用强调,`set_clock_uncertainty`可针对同场景(setup/hold)灵活设置,以添加时序裕量。 - 引用涉及jitterbuffer的帧跳跃检查,虽与时钟抖动相关,但更适用于通信系统(如视频流),在数字电路时序分析中直接影响hold时间设置。 总之,在时序约束设置中,“考虑jitter hold考虑jitter”意味着在hold时间检查时,仅通过固定margin覆盖非抖动确定性,而jitter被忽略,因其影响已被固有同步性抵消[^1]。这种处理能优化时序收敛和设计裕量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值