slack 发送html,【转】setup time和hold time的周期问题(slack)

本文深入解析了时序分析中setup和hold时间的计算原理,阐述了为何在计算setup时需要考虑加周期而hold时间则不需要。总结了在多周期路径检查时,setup与hold约束的关系,并探讨了clock skew对两者slack计算的影响。关键点在于理解数据传输延迟与时钟边沿的关系,以及在不同时序检查中如何调整周期参数。

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

为什么计算setup time的slack时需要考虑加周期,hold time时不需要?

总结一:

因为计算setup time时,由于存在数据传输data delay,Launch edge与Capture edge并不对应时钟信号source clock的同一个时钟沿,因此需要考虑加周期。单时钟周期检查的时候工具默认capture edge-launch edge=1个周期。

Hold time时由于二者对应的是同一个时钟沿,所以不考虑周期。

如图所示:REG1.CLK的第一个时钟上升沿对应launch edge,REG2.CLK的第二个时钟上升沿对应capture  edge。二者分别对应时钟源source clock CLK的第一个上升沿和第二个上升沿。

20180506114157000512.png

总结二:

时钟源CLK经过network latency后,第一个上升沿到达REG1.CLK端,并触发REG.1数据输入端REG.1.D数据输入。此时CLK第一个上升沿同时发送往REG2.CLK,它所需要的时间相比data latency非常之短,因而此时检查setup time对此次数据传输没有意义,增加周期后,才有意义。

Hold time时,第一波数据稳定输入REG2.D与第二波数据传输至REG2.D对应REG2.CLK同一个时钟信号,因而不用加周期计算。

20180506114157356971.jpg

对于多周期:

多时钟周期或者多周期路径检查的时候,如果setup设置成N,那么hold需要设置成N-1;即是说

Thus, in most designs, a multicycle setup specified as N (cycles) should be accompanied by a multicycle hold constraint specified as N-1 (cycles).

20180506114157675343.jpg

解释有两种,本质都是一样的

说法一: hold的capature edge is prior to setup capature edge,This imposes a restriction that data can only change in the one cycle before the setup capture edge as the figure shows. Thus the data path must have a min delay of at least two clock cycles tomeet this requirement. Here is such a path report.

说法二:hold 是对前后两个flip flop在相同时钟沿的检查.设了n-1就是返回n-1个周期做hold的检查,满足了两个flip flop在同一个时钟沿。如果没有-hold默认是检查n前一个有效时钟沿,如果n>=2,hold的检查就不是在同一个时钟效沿,对hold的要求就要多n-1个周期,那样太苛刻了,一般时序无法收敛。

Skew的大小对setup和hold的影响是什么?

根据原理可以修改下slack的计算方式得:

Setup: slack=(period+clock skew-setup time)-(REG1 cell delay+combinatinal logic delay)

Hold:slack=(REG1 cell delay+combinatinal logic delay)-(clock skew+hold time)

其中clock skew=Tclk2-Tclk1

因此无论对于setup还是hold时计算slack,clock skew都是越趋于0越悲观。如果clock skew可为负值,则对setup time越小越悲观,对hold time越大越悲观。

【我的理解】

有关setup和hold相关的计算与概念时,最大的难点在于,对于不同的模型和分析角度,它们对应的计算方式和概念理解算法和说法都不一样,大家在讨论的时候,因为角度不同,很容易造成理解偏差。其实根本概念都只是针对时钟信号和数据信号两部分来看,本质互通,并没有涉及到特别难的原理或公式。

转至: https://www.cnblogs.com/kylechiang/p/4773196.html

原文:https://www.cnblogs.com/houxiliang/p/8997651.html

### Setup Time Hold Time 的定义 Setup Time 是指数据信号在钟边沿之前必须稳定并保持不变的间长度。这一参数用于确保触发器能够在钟上升沿或下降沿采样到稳定的输入数据[^1]。 Hold Time 则是指钟边沿之后,数据信号必须维持其状态而不发生变化的最小间间隔。这是为了防止由于数据过早变化而导致触发器无法正确锁存数据的情况发生[^2]。 两者的关键区别在于它们相对于钟边沿的位置: - **Setup Time** 要求数据提前准备好,在钟边沿前达到稳定状态。 - **Hold Time** 要求数据在钟边沿后的一段间内继续保持稳定。 ### Timing Path 及 Slack Analysis Timing Path 表示从一个寄存器输出端到另一个寄存器输入端的数据传输路径。在此过程中,会涉及两种主要类型的松弛分析(Slack Analysis): #### Setup Slack Analysis Setup Slack 定义为数据所需到达(Data Required Time) 减去数据实际到达(Data Arrival Time),即: ```python Setup_Slack = Data_Required_Time - Data_Arrival_Time ``` 如果 `Setup_Slack` 小于零,则表明存在设置间违规,可能导致逻辑错误。 #### Hold Slack Analysis Hold Slack 计算方法与此类似,但关注的是钟边沿后的保持间约束。具体计算如下: ```python Hold_Slack = Actual_Hold_Time - Minimum_Required_Hold_Time ``` 当 `Hold_Slack` 值小于零,意味着发生了保持间冲突,可能引发亚稳态问题。 ### 数据到达需求间的关系 Data Arrival Time Data Required Time 并非间段,而是在间轴上具体的刻点。其中,Data Arrival Time 描述了数据实际上何抵达目标寄存器;而 Data Required Time 则规定了数据应满足的有效窗口起点位置。 通过上述分析可以看出,无论是 setup 还是 hold 间检查都至关重要,因为只有严格遵循这些定标准才能保障电路功能正常运作以及性能表现最佳化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值