【转】setup time和hold time的周期问题(slack)

为什么计算setup timeslack时需要考虑加周期,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的第一个上升沿和第二个上升沿。

总结二:

时钟源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同一个时钟信号,因而不用加周期计算。

对于多周期:

多时钟周期或者多周期路径检查的时候,如果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).

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

说法一: 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的大小对setuphold的影响是什么?

根据原理可以修改下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

时间: 2024-11-09 06:50:39

【转】setup time和hold time的周期问题(slack)的相关文章

setup time和hold time的周期问题

为什么计算setup time的slack时需要考虑加周期,hold time时不需要? 总结一: 因为计算setup time时,由于存在数据传输data delay,Launch edge与Capture edge并不对应时钟信号source clock的同一个时钟沿,因此需要考虑加周期.单时钟周期检查的时候工具默认capture edge-launch edge=1个周期. Hold time时由于二者对应的是同一个时钟沿,所以不考虑周期. 如图所示:REG1.CLK的第一个时钟上升沿对应

同步电路的setup time和hold time

在不考虑时钟的偏移和抖动问题的情况下,先来说一下单周期同步电路的时序问题.通常来说一个同步的时序电路首先要保证单个同步元器件的数据能够稳定的被采集,以不至于太快的传入到下一级同步元件中,这个说的就是hold time.接下来为了保证数据可以在不同的数据流之间进行转换,也就是说由A发出的数据能够正确的被B所采集,以此类推,保证了数据在所有的同步元件中正常传输,为了达到这个目的,就要求发出的数据满足采集数据同步元件的setup time. 依照上面的论述,要使得同步电路正常的工作,首先要保证数据能够

建立时间和保持时间(setup time 和 hold time)

建立时间和保持时间贯穿了整个时序分析过程.只要涉及到同步时序电路,那么必然有上升沿.下降沿采样,那么无法避免setup-time 和 hold-time这两个概念. 系列目录 时序收敛:基本概念 建立时间和保持时间(setup time 和 hold time) OFFSET IN OFFSET OUT 1. 什么是setup-time 和 hold-time 不论是在输入,输出或是寄存器-寄存器之间,只要设计到时钟上升沿/下降沿的采样,就会提到setup time 和 hold time.这两

为什么TLF中setup和hold可以为负值

总结: 简单来说,因为flip-flop 端口到 gate 有一段delay,如果clock 那段delay明显要大,setup就可能是负值了:如果flip-flop端口gata那段delay明显太大,hold就可能取负值了.在我看来,二者的作用都是用来微调数据和时钟经过filp-flop传输时的同异步问题,避免数据和时钟发生大的出入从而无法正常经过过Flip-flop传输信号. 如下所示Edge-Triggered(rise)D Flip-flop ,在针对单个Flip-flop而言,建立时间

频率与Hold Time,gitter与Hold Time

一.Setup time和hold time对频率的影响   setup time和hold up time是由器件cell决定的,一般小于1~2ns,并不随着电路设计的改变而改变. 时钟频率计算方法如下:在不考虑时钟延时抖动等条件下,理想的说:一个信号从触发器的D端到Q端的延时假设是Tcell,从Q端出来之后会经过组合逻辑电路combinational logic或者network的延时称作Tdata,经过Tdata信号将到达下一个触发器D端,而且必须要满足触发器的建立时间Tsetup. 需满

为什么会有建立时间和保持时间

何为建立时间(Setup Time)和保持时间(HoldTime)?以D触发器为例,在作为接收端时:由于工艺.寄生参数.触发器结构等原因决定,被采样数据必需有一个稳定区 间,保证数据可以正确的被触发器采样.通常我们把这个要求的稳定区间称为 Setup-Hold window.我们把 Setup-Hold window 和时钟沿对应起来,把Setup-Hold window 分解为两部分,建立时间(Setup Time)和保持时间(Hold Time). 我们先来对他有一个直观的描述: 在触发器的

【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十六:IIC储存模块

IIC储存器是笔者用来练习精密控时的经典例子.<整合篇>之际,IIC储存器的解释,笔者也自认变态.如今笔者回头望去,笔者也不知道自己当初到底发什么神经,既然将IIC的时序都解释一番.由于开发上板也嵌着IIC储存器(24LC04),笔者还得循例地介绍一下. IIC储存器是应用IIC总线的储存器,时序本身并不是很复杂不过缺有一大堆时序参数,而且官方提供的时序也不利于描述,所以许多时序都必须自行绘制,真是麻烦死人.麻烦归麻烦,笔者终究还要吃饭,为了肚子,再麻烦的事情也要硬着头皮捱过去 ... 这也是

转载论文关于fir滤波器的fpga实现

摘 要 本文讨论的FIR滤波器因其具有严格的线性相位特性而得到广泛的应用.在工程实践中,往往要求信号处理具有实时性和灵活性,本论文研究FIR的FPGA解决方案正体现了电子系统的微型化和单片化. 本论文主要讨论了以下的问题: 首先,以FIR滤波器的基本理论为依据,研究适应工程实际的数字滤波器的设计方法,确定了直接型网络结构.窗函数设计法的设计方案: 然后,讨论了FPGA的原理与结构特点,总结FPGA的设计流程与设计原则,并用Verilog HDL语言根据设计方案编写出FIR滤波器程序: 接着,采用

IIC、SPI和UART区别

第一个区别当然是名字:     SPI(Serial Peripheral Interface:串行外设接口);     I2C(INTER IC BUS)     UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上:     SPI总线由三条信号线组成:串行时钟(SCLK).串行数据输出(SDO).串行数据输入(SDI).SPI总线可以实现多个SPI设备互相连接.提供SPI串行时钟的SPI设备为SPI主机