setup/hold/recovery/removal check时序分析

本文深入浅出地解析了FPGA中静态时序分析的基本原理及其核心公式,通过简化模型帮助读者理解建立时间和保持时间的约束条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

任何学FPGA的人都跑不掉的一个问题就是进行静态时序分析。静态时序分析的公式,老实说很晦涩,而且总能看到不同的版本,内容又不那么一致,为了彻底解决这个问题,我研究了一天,终于找到了一种很简单的解读办法,可以看透它的本质,而且不需要再记复杂的公式了。

我们的分析从下图开始,下图是常用的静态分析结构图,一开始看不懂公式不要紧,因为我会在后面给以非常简单的解释:

这两个公式是一个非常全面的,准确的关于建立时间和保持时间的公式。其中Tperiod为时钟周期;Tcko为D触发器开始采样瞬间到D触发器采样的数据开始输出的时间;Tlogic为中间的组合逻辑的延时;Tnet为走线的延时;Tsetup为D触发器的建立时间;Tclk_skew为时钟偏移,偏移的原因是因为时钟到达前后两个D触发器的路线不是一样长。

这里我们来做如下转化:

因为对于有意义的时序约束,建立时间余量Tslack,setup和保持时间余量Thold都要大于0才行,所以对于时序约束的要求其实等价于:

Tperiod>Tcko+Tlogic+Tnet+Tsetup-Tclk_skew             (1)

Tcko+Tlogic+Tnet>Thold+Tclk_skew                             (2)

之前说了,这两个公式是最全面的,而实际上,大部分教材没讲这么深,他们对于一些不那么重要的延时没有考虑,所以就导致不同的教材说法不一。这里,为了得到更加简单的理解,我们按照常规,忽略两项Tnet和Tclk_skew。原因在于Tnet通常太小,而Tclk_skew比较不那么初级。简化后如下:

Tperiod>Tcko+Tlogic+Tsetup                                         (3)

Tcko+Tlogic>Thold                                                         (4)

简单多了吧!但是你能看出这两个公式的含义吗?其实(3)式比较好理解,意思是数据从第一个触发器采样时刻传到第二个触发器采样时刻,不能超过一个时钟周期啊!假如数据传输超过一个时钟周期,那么就会导致第二个触发器开始采样的时候,想要的数据还没有传过来呢!那么(4)式又如何理解呢?老实说,一般人一眼看不出来。

我们对于(4)式两边同时加上Tsetup,得到(5):

Tcko+Tlogic+Tsetup>Thold+Tsetup                               (5)

结合(3)式和(5)式,我们得到如下的式子:

Thold+Tsetup  <Tcko+Tlogic+Tsetup<  Tperiod                   (6)

这个式子就是那个可以让我们看出规律的式子。也是可以看出静态时序分析本质的式子。

Tcko+Tlogic+Tsetup是指数据从第一级触发器采样瞬间开始,传输到第二级触发器并被采样的传输延时。我们简称为数据传输延时。下面讲述(6)式两端的含义。

Tcko+Tlogic+Tsetup<  Tperiod :约定数据传输延时不能太大,如果太大(超过一个时钟周期),那么第二级触发器就会在采样的时刻发现数据还没有到来。

Thold+Tsetup  <Tcko+Tlogic+Tsetup:约定数据传输延时不能太小。这就奇怪了,数据传得太慢大家都知道不好,难道传得太快也不行吗?是的,不行!Thold+Tsetup是一个触发器的采样窗口时间,我们知道,D触发器并不是绝对的瞬间采样,它不可能那么理想。在D触发器采样的瞬间,在这瞬间之前Tsetup时间之内,或者这瞬间之后Thold时间之内,如果输入端口发生变化,那么D触发器就会处于亚稳态。所以采样是有窗口的,我们把Thold+Tsetup的时间宽度叫做触发器的采样窗口,在窗口期内,D触发器是脆弱的,对毛刺没有免疫力的。假如数据传输延时特别小,那么就会发现,当第二级触发器开始采样的时候,第一级触发器的窗口期还没有结束!也就是说,如果这个时候输入端数据有变化,那么不仅第一级触发器处于亚稳态,第二级触发器也将处于亚稳态!

综上,我们就可以知道,数据传输延时既不能太大以至于超过一个时钟周期,也不能太小以至于小于触发器采样窗口的宽度。这就是静态时序分析的终极内涵。有了这个,就不需要再记任何公式了。
————————————————
版权声明:本文为优快云博主「龚黎明」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/verylogic/article/details/14261989

<think>好的,我现在要处理用户关于数字后端设计中“recovery check”的查询。首先,我需要明确用户的问题是什么。用户可能想了解recovery check的具体内容、作用以及它在数字后端设计中的重要性。接下来,我需要回忆相关知识,确保信息准确。 首先,数字后端设计中的时序验证是关键部分,而recovery check属于时序验证的一部分,通常与异步信号(如复位信号)相关。恢复时间(Recovery Time)和移除时间(Removal Time)是检查异步信号是否满足时序要求的重要参数。恢复时间指的是在时钟有效沿到来之前,异步信号(如复位)必须保持稳定的时间,以确保正确解除复位状态。移除时间则是在时钟沿之后,信号需要保持稳定的时间。 用户可能想知道为什么需要recovery check,以及它是如何实施的。需要解释这些检查如何防止亚稳态和电路的不确定状态,确保芯片正常工作。同时,可能还需要提到工具如何进行这些检查,比如使用静态时序分析(STA)工具,并在报告中给出违例路径。 另外,用户可能对修复recovery violation的方法感兴趣,比如调整电路结构、优化路径延迟或插入缓冲器等。需要确保这些解决方法的描述清晰,并符合实际设计流程。 还要注意用户的系统级指令,比如正确使用LaTeX格式。在提到时序公式时,使用$$...$$包裹,例如恢复时间的公式。同时,结构要清晰,分点回答,便于用户理解。 需要检查是否存在误解的可能,比如用户是否混淆了recoveryremoval,或者与其他时序检查(如setup/hold)搞混。因此,在回答中要明确区分这些概念,并强调recovery check的特定应用场景。 最后,确保语言简洁,避免使用过于专业的术语,或在必要时进行解释,以帮助不同背景的用户理解。同时,按照要求使用中文,保持段落分明,逻辑连贯。</think>数字后端设计中的**Recovery Check(恢复时间检查)** 是时序验证的关键环节,主要用于确保异步控制信号(如复位信号)在时钟有效沿到来时满足时序要求。以下从原理、应用场景到解决方法的分步解析: --- ### 一、Recovery Check 的核心定义 1. **恢复时间(Recovery Time)** 指异步控制信号(如复位信号)**解除无效状态**到下一个时钟有效沿之间的最小时间要求。 **公式**: $$ t_{recovery} = T_{clk} - t_{setup} - \Delta $$ 其中 \( T_{clk} \) 为时钟周期,\( t_{setup} \) 为触发器的建立时间,\( \Delta \) 为余量。 2. **与Removal Check的区别** - **Recovery**:检查信号从无效到时钟沿的时序(如复位撤销后到时钟触发的稳定性)。 - **Removal**:检查信号从有效到时钟沿的时序(如复位生效后到时钟触发的保持时间)。 --- ### 二、应用场景与问题成因 1. **典型场景** - 复位信号(Reset)撤销后,电路需在下一个时钟周期正常响应。 - 异步控制信号(如时钟门控使能)的切换时序。 2. **违例后果** - 触发器进入亚稳态(Metastability),导致逻辑状态不确定。 - 系统复位失败或功能异常。 3. **常见违例原因** - 复位信号路径延迟过长(如组合逻辑过多)。 - 时钟树与复位信号路径的偏差(Skew)不匹配。 - 低功耗设计中的电源门控导致信号延迟增加。 --- ### 三、Recovery Check 的实施流程 1. **静态时序分析(STA)工具检查** 通过EDA工具(如PrimeTime)对复位路径进行时序分析,识别违例路径。 **报告示例**: ``` Path Group: reset Startpoint: Reset_Controller (input port) Endpoint: FF_DataPath (sequential cell) Required Recovery Time: 0.3ns Actual Arrival Time: 0.1ns --> VIOLATION ``` 2. **关键路径特征** - 复位信号到触发器的路径延迟。 - 时钟网络与复位网络的相对偏差。 --- ### 四、违例解决方法 1. **路径优化** - 减少复位信号路径的组合逻辑层级。 - 插入缓冲器(Buffer)平衡延迟。 2. **时序约束调整** - 通过`set_recovery`命令设置更宽松的约束(需谨慎,可能掩盖设计问题)。 - 优化时钟树综合(CTS),降低复位与时钟路径的偏差。 3. **架构级改进** - 采用同步复位设计(将复位信号同步到时钟域)。 - 增加复位同步电路(如两级触发器同步链)。 --- ### 五、实例说明 **问题**:某芯片复位撤销后系统启动失败。 **分析**:STA报告显示复位路径 recovery time 违例,实际到达时间比要求短0.2ns。 **解决**: 1. 在复位信号路径插入缓冲器,增加0.15ns延迟。 2. 优化时钟树,减少复位与时钟路径的偏差0.05ns。 3. 复验STA,违例消除。 --- ### 六、总结 Recovery Check 是确保异步信号与时钟协同工作的核心检查,需通过路径优化、约束调整和架构改进综合解决。实际设计中需结合STA报告与物理实现工具(如Innovus)联动调试,最终达成时序闭合(Timing Closure)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值