静态时序分析中建立时间和保持时间关系详解
建立时间、保持时间、建立余量、保持余量的理解
建立时间、保持时间、建立余量、保持余量的理解分析说明:D2:目的寄存器;D1:源寄存器;edge2:下一个时钟上升沿;edge1:当前时钟上升沿;edge0:当前时钟上升沿的前一个时钟沿;如下图:建立时间:触发器D2(数据要到达目的的地方)在时钟上升沿edge1(以edge1是当前的时钟上升沿)输入端的数据data1(data1是edge0时D1打给D1的数据,或者说是edge0时刻D1的输出。
edge0是edge1的前一个上升沿)的前一段时间t_setup要求data1数据稳定(为什么要这样要求呢?)。
很明显建立时间是对D2的输入数据的时间要求,或者说data1要在edge1来之前的某段时间内到达D2。
1、为什么要求建立时间呢?为了使数据正确的锁存就需要数据是稳定的,如果知道触发器的实现电路的话。
如果在edge1-t_setup到edge1这段时间有可能变动的话,就会造成不知道锁存的是1还是0,这就是所说的亚稳态情况之一。
这样是不能使数据可靠传输的。
所以需要建立时间。
2、数据data1(来自触发器D1,即数据源)要传输到D2的输入端,这个数据data1到达D2时间t12如何计算呢?在edge0来的时候之后的某个很小的时间t1(可以认为是触发器的传播延时),开始由D1出发,经过组合逻辑延时t2,到达D2(数据的目的地)。
答案已经知道t12= t1 + t2。
(一定要注意当前时刻是edge1,对于t12的分析是以edge0作为参考时钟。
为什么要这样呢?看3小点。
)此时时钟到达D2,D1的差没有考虑,即时钟抖动。
还有t2一般都是给最大延时,最小延时即t2max, t2min。
具体用哪个看等等说。
3、在当前时刻edge1的D2 data1建立时间的时候,那data1的数据在什么时候由D1输出呢?再次强调建立时间是分析D2输入端的数据时间要求。
此时刻即edge1,D2输入端的数据在哪个时刻由D1发出呢(假设在同步系统中,为什么要做这个假设呢?)?肯定是在某个edge,或者说是……edge2,edge1,还是edge0,edge(-1),………。
建立时间、保持时间和时序约束条件
建立时间、保持时间和时序约束条件1、什么是建立时间(Tsu)和保持时间(Th)以上升沿锁存为例,建立时间是指在时钟翻转之前输入的数据D必须保持稳定的时间;保持时间是在时钟翻转之后输入数据D必须保持稳定的时间[1]。
如下图所示,一个数据要在上升沿被锁存,那么这个数据就要在时钟上升沿的建立时间和保持时间内保持稳定。
图1 建立时间和保持时间建立时间与保持时间,是对触发器(或者寄存器)和锁存器而言,以能够稳定准确的锁存或者触发为目的,对其输入数据信号保持稳定的时间要求,具体数值与具体器件的内部结构特点密切相关,不能人为控制。
建立时间和保持时间在时序分析中是一个很重要的准备知识,弄清楚这个两个时间对时序分析的原理的理解很有帮助。
2、根据内部结构分析建立时间和保持时间图2 经典的上升沿D触发器内部结构关于为什么会有建立时间和保持时间,我曾试图从触发器或锁存器内部的结构去分析和证实,但是看了许多资料,由于触发器的内部结构有很多,所以分析方法很多,说法也很多。
下面我选两个比较经典的结构来分析一下建立时间和保持时间。
以经典边沿触发的D触发器为例子,从内部结构上分析一下D触发器建立时间和保持时间。
这个说明主要来源于EETOP的一篇帖子,其结构在维基百科的触发器词条可以得到验证。
如上图所示,这是一个上升沿触发的D触发器,需要注意的是,图中的6个与非门都是有延迟的,也就是在某一时刻输入组合逻辑的数据,在一段时间之后才能影响其输出,这是产生建立时间和保持时间要求的最根本原因。
首先,我们在假设所有的与非门的延迟为0,叙述一下这个触发器的整体工作流程。
当CLK=0时,与非门G3和G4的输出均为1,输出的1反馈到G1和G2作为输入,导致G1和G2的输出分别为D和/D,输出的D和/D又反馈到G3和G4;而G5和G6在此期间一直锁存着之前的数据,不受输入影响。
图3 CLK=0时触发器内部信号详情当CLK=1时,与非门G3和G4的输出变为/D和D,输出到G5和G6作为输入,根据锁存器的原理,G5和G6最终会稳定的输出Q和/Q。
DC时序分析
设计中常用的约束
设计中常用的约束(Assignments或Constraints)主要分为 3类:
时序约束:主要用于规范设计的时序行为,表达设计者期 望满足的时序条件,指导综合和布局布线阶段的优化算法 等。 区域与位置约束:主要用于指定芯片I/O引脚位置以及指导 实现工具在芯片特定的物理区域进行布局布线。 其他约束:泛指目标芯片型号、接口位置,电气特性等约 束属性。
首先要分析路径,找出最长和最短路径,因为dc的综合都 是根据约束而得到最短和最长路径来进行器件选择的。所 以接下来将图中的所有路径标出。因为没有前级( input_delay)和后级电路(output_delay),我们只分析图中给 出的 路径,如下图:
对于红色路径:Td=Tcell+Td4+Td5+Td6=1+4+3+1=9 对于黄色路径:Td=Tcell+Td4+Td5+Td6+Td8=1+4+3+1+2=11 对于粉色路径:Td=Tcell+Td1+Td2+Td3=1+2+3+2=8 对于绿色路径:Td=Tcell+Td7+Td2+Td3=1+2+3+2=8
Global skew是指,同一时钟域,任意路径的最大skew。
Local skew是指,同一时钟域,任意2个有逻辑关联关系的 路径最大skew。
interClock skew是指,不同时钟域之间路径的最大skew
latency
Latency分为source lantency 和 一般的latency。 Source latency 指的是时钟源 到时钟端口的延迟。 一般Latency指的是时钟端口 到内部时序器件的时钟管脚 的延迟。 一般只考虑latency即可。
关于建立时间(setup time)保持时间(hold time)以及时序的一些问题集合
建立时间和保持时间giltch1.jpg图1建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器。
如图1 。
数据稳定传输必须满足建立和保持时间的要求,当然在一些情况下,建立时间和保持时间的值可以为零。
QUOTE:DC,建立时间不满足,只能重新综合设计,并以违例路径为目标进行优化,以及对涉及到违例的组合逻辑以及子模块加紧约束。
保持时间不满足,可在布图前或者布图后再修改这些违例,通常布图后再修改。
因为布图前综合,时序分析采用统计线载模型,在布局前修正保持时间违例可能会导致布图后建立时间违例。
QUOTE:1、setup time的意义:为什么Data需要在Clock到达之前到达?其实在实际的问题中,setup time并不一定是大于零的,因为Clock到达时刻并不等同于latch的传输门A关闭的时刻(更何况这种关闭并不是绝对的和瞬间完成的),这之间有一个未知的延迟时间。
为使问题简化,假设Clock的到达时刻为传输门A关闭、传输们B打开的时刻。
如果Data没有在这之前足够早的时刻到达,那么很有可能内部的feedback线路上的电压还没有达到足够使得inv1翻转的地步(因为inv0有延时,Data有slope,传输门B打开后原来的Q值将通过inv2迫使feedback保持原来的值)。
如果这种竞争的情况发生,Q的旧值将有可能获胜,使Q不能够寄存住正确的Data值;当然如果feedback上的电压已经达到了足够大的程度也有可能在竞争中取胜,使得Q能够正确输出。
如果inv0、inv1和inv2的延时较大(Data的变化影响feedback和Q的时间越长),那么为了保证正确性就需要更大的setup time。
【第八章时序检查下】静态时序分析圣经翻译计划
【第⼋章时序检查下】静态时序分析圣经翻译计划8.9 举例在本节中,我们将介绍发起和捕获时钟的不同情况,并分别说明如何执⾏建⽴时间和保持时间检查。
图8-28为所举例⼦的⽰意图:半周期路径——情况1在此⽰例中,两个时钟具有相同的周期,但相位相反。
以下是时钟定义,其波形如图8-29所⽰。
create_clock -name CLKM -period 20 -waveform {0 10} [get_ports CLKM]create_clock -name CLKP -period 20 -waveform {10 20} [get_ports CLKP]建⽴时间检查是从发起沿(0ns)到下⼀个捕获沿(10ns)的。
半个时钟周期的裕量可⽤于保持时间检查,以验证在20ns处发起的数据是否在10ns处未被捕获沿所捕获。
以下是建⽴时间检查的路径报告:以下是保持时间检查的路径报告:半周期路径——情况2此⽰例与情况1类似,不过发起时钟和捕获时钟的相位相反。
以下是时钟定义,其波形如图8-30所⽰。
create_clock -name CLKM -period 10 -waveform {5 10} [get_ports CLKM]create_clock -name CLKP -period 10 -waveform {0 5} [get_ports CLKP]建⽴时间检查从5ns的发起时钟沿到10ns的下⼀个捕获时钟沿。
保持时间检查从5ns的发起时钟沿到0ns的捕获时钟沿。
以下是建⽴时间检查的路径报告:以下是保持时间检查的路径报告:快速时钟域到慢速时钟域在此⽰例中,捕获时钟是发起时钟的⼆分频。
以下是时钟定义:create_clock -name CLKM -period 10 -waveform {0 5} [get_ports CLKM]create_clock -name CLKP -period 20 -waveform {0 10} [get_ports CLKP]波形如图8-31所⽰。
静态时序分析
静态时序分析或称静态时序验证,是电子工程中,对数字电路的时序进行计算、预计的工作流程,该流程不需要通过输入激励的方式进行仿真。
在一个同步数字系统中,数据的流动应当以一致的步伐进行,即时间脉冲信号每改变一次,数据能够改变一次。
这种运作方式是通过同步的数字电路器件,例如触发器或锁存器来实现的,这类器件以时钟信号为指示将其输入端的数据复制到其输出端。
在同步电路中,只存在两种时序错误:
保持时间违例:时钟信号有效变化之后,如果输入信号没能保持足够长的时间,数据将不能在下一个时钟信号变化时被记录下来;
建立时间违例:时钟信号有效变化之前,如果输入信号没能保持足够长的时间,数据将不能在那个时钟信号变化时被记录下来。
建立时间和保持时间关系详解
建立时间和保持时间关系详解图1建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器。
如图1 。
数据稳定传输必须满足建立和保持时间的要求,当然在一些情况下,建立时间和保持时间的值可以为零。
PLD/FPGA开发软件可以自动计算两个相关输入的建立和保持时间。
个人理解:1、建立时间(setup time)触发器在时钟沿到来之前,其数据的输入端的数据必须保持不变的时间;建立时间决定了该触发器之间的组合逻辑的最大延迟。
2、保持时间(hold time)触发器在时钟沿到来之后,其数据输入端的数据必须保持不变的时间;保持时间决定了该触发器之间的组合逻辑的最小延迟。
关于建立时间保持时间的考虑华为题目:时钟周期为T,触发器D1的建立时间最大为T1max,最小为T1min。
组合逻辑电路最大延迟为T2max,最小为T2min。
问:触发器D2的建立时间T3和保持时间T4应满足什么条件?分析:Tffpd:触发器输出的响应时间,也就是触发器的输出在clk时钟上升沿到来之后多长的时间内发生变化并且稳定,也可以理解为触发器的输出延时。
Tcomb:触发器的输出经过组合逻辑所需要的时间,也就是题目中的组合逻辑延迟。
Tsetup:建立时间Thold:保持时间Tclk:时钟周期建立时间容限:相当于保护时间,这里要求建立时间容限大于等于0。
保持时间容限:保持时间容限也要求大于等于0。
由上图可知,建立时间容限=Tclk-Tffpd(max)-Tcomb(max)-Tsetup,根据建立时间容限≥0,也就是Tclk-Tffpd(max)-Tcomb(max)-Tsetup≥0,可以得到触发器D2的Tsetup≤Tclk-Tffpd(max)-Tcomb(max),由于题目没有考虑Tffpd,所以我们认为Tffpd=0,于是得到Tsetup≤T-T2max。
什么是 和Holdup 时间 Hold time 建立时间是指在
module dff8(clk , reset, d, q);
input
clk;
input
reset;
input [7:0] d;
output [7:0] q;
reg e clk or posedge reset)
if(reset)
q <= 0;
else
除了最通用的南北桥结构外,目前芯片组正向更高级的加速集线架构发展,Intel 的 8xx 系列芯片组就 是这类芯片组的代表,它将一些子系统如 IDE 接口、音效、MODEM 和 USB 直接接入主芯片,能够提供 比 PCI 总线宽一倍的带宽,达到了 266MB/s。 24 用传输门和反向器搭一个边沿触发器 25 画状态机,接受 1,2,5 分钱的卖报机,每份报纸 5 分钱 library ieee;
end bh; 汉王笔试 下面是一些基本的数字电路知识问题,请简要回答之。 a) 什么是 Setup 和 Holdup 时间? b) 什么是竞争与冒险现象?怎样判断?如何消除? c) 请画出用 D 触发器实现 2 倍分频的逻辑电路? d) 什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求? e) 什么是同步逻辑和异步逻辑? f) 请画出微机接口电路中,典型的输入设备与微机接口逻辑示意图(数据接口、控制接口、所存器/缓冲器)。 g) 你知道那些常用逻辑电平?TTL 与 COMS 电平可以直接互连吗? 2、 可编程逻辑器件在现代电子设计中越来越重要,请问: a) 你所知道的可编程逻辑器件有哪些? b) 试用 VHDL 或 VERILOG、ABLE 描述 8 位 D 触发器逻辑。 3、 设想你将设计完成一个电子电路方案。请简述用 EDA 软件(如 PROTEL)进行设计(包 括原理图和 PCB 图)到调试出样机的整个过程。在各环节应注意哪些问题? 飞利浦-大唐笔试归来 1,用逻辑们和 cmos 电路实现 ab+cd 2. 用一个二选一 mux 和一个 inv 实现异或 3. 给了 reg 的 setup,hold 时间,求中间组合逻辑的 delay 范围。
静态时序分析
静态时序分析1、STA过程中定义的时序路径有四种,如图1所示图1路径1:基本输入到内部时序单元的数据输入端;路径2:内部时序单元的时钟输入端到下一个内部时序单元的数据输入端;路径3:内部时序单元的数据输入端到基本输出端口;路径4:基本输入端到基本输出端口。
静态时序分析的目的是保证设计中所有的以上路径,满足内部时序单元对建立时间和保持时间的要求。
即无论起点是什么,信号都可以被及时地传递到该路径的终点,并且在电路正常工作所必需的时间段内保持恒定,也就是时序收敛。
2、时序分析起点(launch edge):第一级寄存器数据变化的时钟边沿,也是静态时序分析的起点。
3、建立时间(Tsu):是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器。
如图2所示:图2 建立时间示意图4、保持时间(Th):是指数据稳定后保持的时间,如果保持时间不满足要求那么数据同样也不能被稳定的打入触发器。
保持时间示意图如图3所示:图35、时钟偏斜(clock skew):是指一个时钟源到达两个不同寄存器时钟端的时间偏移,如图4所示:图4时钟偏斜计算公式如下:Tskew = Tclk2 - Tclk16、数据到达时间(Data Arrival Time):输入数据在有效时钟沿后到达所需要的时间。
主要分为三部分:时钟到达寄存器时间(Tclk1),寄存器输出延时(Tco)和数据传输延时(Tdata),如图5所示:图5数据到达时间计算公式如下:Data Arrival Time = Launch edge + Tclk1 +Tco + Tdata7、时钟到达时间(Clock Arrival Time):时钟从latch边沿到达锁存寄存器时钟输入端所消耗的时间为时钟到达时间,如图6所示:图6时钟到达时间计算公式如下:Clock Arrival Time = Lacth edge + Tclk28、数据需求时间(Data Required Time):在时钟锁存的建立时间和保持时间之间数据必须稳定,从源时钟起点达到这种稳定状态需要的时间即为数据需求时间。
建立时间和保持时间
建立时间和保持时间信号经过传输线到达接收端之后,就牵涉到建立时间和保持时间这两个时序参数,Setup/Hold time是测试芯片对输入信号和时钟信号之间的时间要求,也就是它们表征了时钟边沿触发前后数据需要在锁存器的输入持续时间,是芯片本身的特性。
建立时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。
输入信号应提前时钟上升沿(如上升沿有效)T时间到达芯片,这个T就是建立时间Setup time.如不满足Setup time,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器;保持时间是指触发器的时钟信号上升沿到来以后,数据也必须保持一段时间,数据保持不变以便能够稳定读取(信号在器件内部通过连线和逻辑单元时,都有一定的延时。
延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。
信号的高低电平转换也需要一定的过渡时间。
)。
如果holdtime不够,数据便不能被有效读取并转换为输出。
如果数据信号在时钟边沿触发前后持续的时间分别超过建立时间和保持时间,那么这部分超过的分量分别称为建立时间裕量和保持时间裕量。
(这期间其实还涉及到竞争冒险的问题,也就是毛刺,稍后在研究,建立保持时间的存在即是触发器内部的特性又在屏蔽毛刺方面起到了一定的作用。
)其实建立时间就是在脉冲信号到来时,输入信号已经稳定等待的时间;而保持时间是信号脉冲到来后,而输入信号还没有到达下降沿的时间。
举个例子:建立时间就是你到朋友家做客去早了,但是主人还没回来,你等待的时间就是建立时间;保持时间就是进入房子后,逗留的(有效)时间。
当然在实际测试中我发现时钟信号也是存在抖动和偏移的。
虽然系统时序设计中对时钟信号的要求非常严格,因为我们所有的时序计算都是以恒定的时钟信号为基准。
但实际中时钟信号往往不可能那么理想,常会出现抖动(Jitter)和偏移(Skew)问题。
(估计没有真正稳定的信号)。
建立时间保存时间详解
0 技术交流fpga欢迎您的加入什么是Setup 和Holdup时间?a) 什么是Setup 和Holdup时间?建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器。
b) 什么是竞争与冒险现象?怎样判断?如何消除?信号在FPGA器件内部通过连线和逻辑单元时,都有一定的延时。
延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。
信号的高低电平转换也需要一定的过渡时间。
由于存在这两方面因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为"毛刺"。
如果一个组合逻辑电路中有"毛刺"出现,就说明该电路存在"冒险"。
用D触发器,格雷码计数器,同步电路等优秀的设计方案可以消除。
c) 请画出用D触发器实现2倍分频的逻辑电路?就是把D触发器的输出端加非门接到D端。
d) 什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?将几个OC门结构与非门输出并联,当每个OC门输出为高电平时,总输出才为高,这种连接方式称为线与。
e) 什么是同步逻辑和异步逻辑?整个设计中只有一个全局时钟成为同步逻辑。
多时钟系统逻辑设计成为异步逻辑。
f) 请画出微机接口电路中,典型的输入设备与微机接口逻辑示意图(数据接口、控制接口、所存器/缓冲器)。
是不是结构图?g) 你知道那些常用逻辑电平?TTL与COMS电平可以直接互连吗?TTL,cmos,不能直连LVDS:LVDS(Low Voltage Differential Signal)即低电压差分信号,LVDS接口又称RS644总线接口,是20世纪90年代才出现的一种数据传输和接口技术。
建立时间、保持时间、传播延时、组合逻辑延时都是什么呢?
建立时间、保持时间、传播延时、组合逻辑延时都是什么呢?建立时间(Setup Time)是指触发器的时钟信号上升沿到来之前,数据保持稳定不变的时间。
输入信号应该提前时钟上升沿(如上升沿有效)T su 时间到达芯片,这个 T su 就是建立时间。
如果不满足建立时间要求,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器,或者说,该数据就会被永久“跳过”而未被“采样”。
举个例子:坐火车时需要提前到站检票安检,而不是一到火车站就可以乘坐,必须的提前到站的时间就是建立时间。
如果数据信号在时钟沿触发前的持续时间超过了建立时间 T su,那么这个时间间隔就叫做建立时间裕量。
保持时间(Hold Time)是指触发器的时钟信号上升沿到来之后,数据保持稳定不变的时间(数据保持不变以便能够稳定读取,如果保持时间不满足的话,那么数据便不能被有效读取并转换为输出)。
如果数据信号在时钟沿触发后的持续时间超过了保持时间T h,那么这个时间间隔就叫做保持时间裕量。
总结(Summary):建立时间和保持时间这两个时序参数是测试芯片对输入信号和时钟信号之间的时间要求,也就是它们表征了时钟边沿触发前后数据需要在锁存器的输入持续时间,是芯片本身的特性。
其实,这期间其实还涉及到竞争冒险的问题,也就是毛刺,建立保持时间的存在即是触发器内部的特性又在屏蔽毛刺方面起到了一定的作用。
传播延迟(Propagation Delay)是指一个数字信号从器件(一般是DFF,符号表示为T cq)的输入端到输出端所需的时间。
一般在FPGA 中是指时钟上升沿之后延时T cq的时间,数据才到达寄存器Q 端。
区别于门传播延时:证明其对输入信号变化响应有多快,表示为信号通过该门所经历的时间,定义为输入信号和输出信号波形在50% 翻转点之间的时间。
组合逻辑延时(Combinational Logic Delay)是指两级寄存器之间的输出端 Q 到输入端 D 之间的组合逻辑延时,符号表示为 T logic 。
建立时间和保持时间
建立时间和保持时间图1 保持时间与建立时间示意图在FPGA设计同一个模块中常常是包含组合逻辑与时序逻辑,为了保证在这些逻辑接口处数据能稳定被处理,那么对建立时间与保持时间建立清晰概念非常重要。
下面在认识了建立时间与保持时间概念上思考如下问题。
举一个常见例子。
图2 同步设计中一个基本模型图2为统一采用一个时钟同步设计中一个基本模型。
图中Tco是触发器数据输出延时;Tdelay是组合逻辑延时;Tsetup是触发器建立时间;Tpd为时钟延时。
如果第一个触发器D1建立时间最大为T1max,最小为T 1min,组合逻辑延时最大为T2max,最小为T2min。
问第二个触发器D2立时间T3与保持时间T4应该满足什么条件,或者是知道了T3与T4那么能容许最大时钟周期是多少。
这个问题是在设计中必须考虑问题,只有弄清了这个问题才能保证所设计组合逻辑延时是否满足了要求。
下面通过时序图来分析:设第一个触发器输入为D1,输出为Q1,第二个触发器输入为D2,输出为Q2;时钟统一在上升沿进行采样,为了便于分析我们讨论两种情况即第一:假设时钟延时Tpd为零,其实这种情况在FPGA设计中是常常满足,由于在FPGA 设计中一般是采用统一系统时钟,也就是利用从全局时钟管脚输入时钟,这样在内部时钟延时完全可以忽略不计。
这种情况下不必考虑保持时间,因为每个数据都是保持一个时钟节拍同时又有线路延时,也就是都是基于CLOCK延迟远小于数据延迟基础上,所以保持时间都能满足要求,重点是要关心建立时间,此时如果D2建立时间满足要求那么时序图应该如图3所示。
从图中可以看出如果:T-Tco-Tdelay>T3即:Tdelay< T-Tco-T3那么就满足了建立时间要求,其中T为时钟周期,这种情况下第二个触发器就能在第二个时钟升沿就能稳定采到D2,时序图如图3所示。
图3 符合要求时序图如果组合逻辑延时过大使得T-Tco-Tdelay<T3那么将不满足要求,第二个触发器就在第二个时钟升沿将采到是一个不定态,如图4所示。
时序分析中建立时间,保持时间,时钟到输出,PIN到PIN延时的说明
时序分析中建立时间,保持时间,时钟到输出,PIN到PIN延时的说明Clock Setup Time (tsu) 要想正确采样数据,就必须使数据和使能信号在有效时钟沿到达前就准备好,所谓时钟建立时间就是指时钟到达前,数据和使能已经准备好的最小时间间隔。
如下图所示:这里定义Setup时间是站在同步时序整个路径上的,需要区别的是另一个概念Micro tsu。
Micro tsu指的是一个触发器内部的建立时间,它是触发器的固有属性,一般典型值小于1~2ns。
在Xilinx等的时序概念中,称Altera的Micro tsu为setup时间,用Tsetup表示,请大家区分一下。
回到Altera的时序概念,Altera的tsu定义如下:tsu = Data Delay – Clock Delay + Micro tsuClock Hold Time (tH)时钟保持时间是只能保证有效时钟沿正确采用的数据和使能信号的最小稳定时间。
其定义如下图所示:tH示意图定义的公式为:tH= Clock Delay – Data Delay + Micro tH注:其中Micro tH是指寄存器内部的固有保持时间,同样是寄存器的一个固有参数,典型值小于1~2ns。
Clock-to-Output Delay(tco)这个时间指的是当时钟有效沿变化后,将数据推倒同步时序路径的输出端的最小时间间隔。
如下图所示:tco示意图其中Micor tco也是一个寄存器的固有属性,指的是寄存器相应时钟有效沿,将数据送到输出端口的内部时间参数。
它与Xilinx的时序定义中,有一个概念叫T cko是同一个概念。
Pin to Pin Delay (tpd)tpd指输入管脚通过纯组合逻辑到达输出管脚这段路径的延时,特别需要说明的是,要求输入到输出之间只有组合逻辑,才是tpd延时。
Slack是表示设计是否满足时序的一个称谓,正的slack表示满足时序(时序的余量),负的slack表示不满足时序(时序的欠缺量)。
保持和建立时间详解
这几天经常看到有关数字电路中建立时间(setup time)、保持时间(holdup time)以及延迟时间(delay)的讨论。
自己也高不清楚,查了相关的资料,总算了解了一些。
首先:建立时间和保持时间都是器件要求的特性。
其中建立时间是器件输入端在时钟信号有效沿到来前,要求输入信号稳定不变的时间。
保持时间是器件输入端要求输入信号在时钟信号有效沿到来后保持稳定不变的时间。
如果输入信号不满足建立时间和保持时间的要求,就可能导致数据锁存错误。
延迟时间是器件本身或布线的物理特性,其含义是信号从器件或布线经过所需的时间。
这里主要讨论器件的延迟时间。
通常器件的延迟时间由两部分组成。
一个是触发器输出响应时间(tffpd)。
可以理解为触发器输出在clk有效沿到来后的时间内发生变化, 之后稳定,也可以理解输出延迟。
另一个触发器输出的变化经过组合逻辑元件所需的附加时间,一般是组合逻辑延迟(tcomb)。
如下图所示:再来解释两个概念:建立时间容限和保持时间容限。
所谓建立时间容限是指器件允许的安全的建立时间长度范围。
同样保持时间也就是器件允许的安全的保持时间长度范围。
一般来说建立时间容限和保持时间容限都大于等于0。
根据这个要求,如上图所示,就有以下约束:tclk = tffpd + tcomb + 建立时间容限 + tsetup所以建立时间容限 = tclk - tffpd(max) - tcomb(max) - tsetup >=0tsetup <= tclk - tffpd (max)- tcomb(max)再来看保持时间容限首先对于数据接收端来说,任何时钟沿采样的数据,都是发送端前一时钟周期发送的数据。
发送端可能每个时钟周期都要发送数据,那么对于接收端来说,任何一个时钟沿后一段时间,数据线上的数据都会被发送端第二次发送的数据改变,所以保持时间容限其实是由于下一个时钟节拍上的数据引起的。
有效数据在tffpd + tcomb之后到达触发器,如果tholdup > tffpd + tcomb,则下一个有效数据到达后,tholdup仍然没结束,但前一个数据已经被破坏,所以必须tholdup <= tffpd + tcomb。
时序分析的建立时间和保持时间详解
1:概念2:对建立时间的约束3:对保持时间约束4:对于保持时间的理解:5: 建立时间保持时间的考虑—华为题目6:positive skew和negative skew的考虑。
7:latency的分析。
8:考虑latency、skew的建立时间和保持时间---很详细8.1:建立时间(setup time)的到达时间和要求时间。
8.2:保持时间(hold time)的到达时间和要求时间。
2:对建立时间的约束:1-max max2logcq ic setupT T T T++<,其中触发器单元的延时就是cqT。
另一种解释:建立时间容限(slack)+1-max max2logcq ic setupT T T T++=,要求slack>=0。
3:对保持时间约束:1-minmin 2log cqic hold T T T +>另一种解释:1-min min 2log cq ic hold T T T +=+保持时间容限(slack ),要求slack>=0。
4:对于保持时间的理解:(1) My_idea: the two meanings of my ideas are in similar !!!解释1:输入数据只有满足一定的保持时间后,下一个周期的输入数据才可以被打入。
当skew>0时,从min minholdcq comb T T T δ+≤+这个式子我们可以理解为实际Thold 变小了(要求的hold time 是没变的,但现在的hold time 比你要求的小了一点),则下个周期的数据可能会提前打入触发器导致和触发器原有的信号产生竞争。
当skew<0时,从min minholdcq comb T T T δ+≤+这个式子我们可以理解为Thold 变大了,则此时实际的hold time 肯定比之前的hold time 大(也就是说我现在的hold time 比你要求的大了一些),所以肯定满足保持时间要求。
建立时间和保持时间
建立时间和保持时间
建立时间是以两个不同时钟沿分析的,保持时间是以相同时钟沿分析
不考虑数据过度时间,上图D1是edge1沿驱动的,D0是上一个数据,在FF2处分析建立保持时间。
对于保持时间,如果D1到达时间太早,也就意味着D0结束时间太早,Th(保持时间)就会变小,导致其不满足要求。
对于建立时间,如果D1到达太晚,Ts(建立时间)就会变小,导致其不满足要求。
从上图可以看出,Th是在同一个时钟沿edge1下分析的,而Ts
是在相邻两个时钟沿edge1和edge2分析的。
所以在做静态时序分析时,对于Th,在最小工况(高压,低温,此时延迟最小)分析,因为此时数据延迟最小,D1到达/D0结束时间提前的最多。
对于Ts,在最大工况(低压,高温,此时延迟最大)分析,因为此时数据延迟最大,D1到达/D0结束时间延后的最多。
静态时序分析中建立时间和保持时间关系详解总结
建立时间和保持时间关系详解______________ X 数搭___________________-1 £U'未时钟班X建立时间th:保持时间图1建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器。
如图1。
数据稳定传输必须满足建立和保持时间的要求,当然在一些情况下,建立时间和保持时间的值可以为零。
PLD/FPGA开发软件可以自动计算两个相关输入的建立和保持时间。
个人理解:1、建立时间(setup time)触发器在时钟沿到来之前,其数据的输入端的数据必须保持不变的时间;建立时间决定了该触发器之间的组合逻辑的最大延迟。
2、保持时间(hold time)触发器在时钟沿到来之后,其数据输入端的数据必须保持不变的时间;保持时间决定了该触发器之间的组合逻辑的最小延迟。
关于建立时间保持时间的考虑华为题目时钟周期为T,触发器D1的建立时间最大为T1max,最小为Timin。
组合逻辑电路最大延迟为T2max,最小为T2min。
问:触发器D2的建立时间T3和保持时间T4应满足什么条件?分析:Tffpd :触发器输岀的响应时间,也就是触发器的输岀在clk时钟上升沿到来之后多长的时间内发生变化并且稳定,也可以理解为触发器的输岀延时。
Tcomb :触发器的输岀经过组合逻辑所需要的时间,也就是题目中的组合逻辑延迟。
Tsetup :建立时间Thold :保持时间Tclk :时钟周期建立时间容限:相当于保护时间,这里要求建立时间容限大于等于0。
保持时间容限:保持时间容限也要求大于等于0elk由上图可知,建立时间容限= Tclk-Tffpd(max)-Tcomb(max)-Tsetup ,根据建立时间容限>0也就是Tclk-Tffpd(max)-Tcomb(max)- Tsetup >0 可以得到触发器D2 的Tsetup <C1k-Tffpd(max)-T comb(max),由于题目没有考虑Tffpd,所以我们认为Tffpd = 0,于是得到Tsetup<T-T2max---------------------- 1 elk-----------------------由上图可知,保持时间容限+Thold = Tffpd(min)+T comb(min),所以保持时间容限=Tffpd(min)+Tcomb(min)-Thold,根据保持时间容限>0,也就是Tffpd(min)+T comb(min)- Thold >0可以得到触发器D2的Thold < Tffpd(min)+icomb(min),由于题目没有考虑Tffpd,所以我们认为Tffpd = 0,于是得到Thold < T2min关于保持时间的理解就是,在触发器D2的输入信号还处在保持时间的时候,如果触发器的输岀已经通过组合逻辑到达D的输入端的话,将会破坏D2本来应该保持的数据2Teo表示dff从输入到输出延时;Tlogic表示组合逻辑延时;Tsu表示dff的建立时间;Thold表示dff的保持时间。
校招基础——时序分析概念
校招基础——时序分析概念1、什么是建⽴时间和保持时间?建⽴时间:指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间。
如果建⽴的时间不满⾜要求那么数据将不能在这个时钟上升沿被稳定的打⼊触发器保持时间:是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间。
如果保持时间不满⾜要求那么数据同样也不能被稳定的打⼊触发器。
(setup time不受系统时钟频率影响)2、为什么D触发器要满⾜建⽴时间和保持时间?因为触发器内部数据的形成是需要⼀定的时间的,如果不满⾜建⽴和保持时间,D触发器将进⼊亚稳态,亚稳态的值也并不⼀定是你的输⼊值,亚稳态传播到后⾯逻辑中,可能导致整个系统奔溃。
3、如何修复建⽴时间和保持时间修复Tsetup(1)降低时钟频率;(2)增⼤时钟正偏斜;(3)减⼩时钟负偏斜;(4)减少组合逻辑延迟;(5)减少多扇出⽹络;(6)选⽤延时少的cell修复Thold(1)减⼩时钟正偏斜;(2)增⼤时钟负偏斜;(3)增加组合逻辑延迟4、什么是流⽔线?流⽔线使⽤存储器件将时钟周期内关键路径(最⼤组合延迟的路径)分割开来,从⽽减少关键路径上各个阶段延迟并使电路能以更⾼的频率⼯作。
5、什么是流⽔线冒险?冒险有结构冒险、数据冒险和控制冒险三种。
解决通⽤办法是在流⽔线中插⼊流⽔线⽓泡直⾄冒险消除。
结构冒险:由于资源冲突⽽使硬件⽆法⽀持所有可能的指令组合同时执⾏。
例如在单端⼝存储器执⾏读写操作过程,假设流⽔线要求同⼀时钟周期内要对存储器进⾏访问两次,这样的话就会产⽣存储器读写冲突。
这种情况可以再增加⼀个时钟周期,即将流⽔线停⽌⼀个周期(产⽣⼀个流⽔线⽓泡)。
另⼀种⽅法就是使⽤不同的存储器或者多端⼝存储器,消耗更多的资源。
(采⽤使能信号推迟时钟,使得流出流⽔线⽓泡时间)数据冒险:指令执⾏需要之前指令的计算结果,⽽这个结果在流⽔线中还没有计算出来。
解决办法就是使⽤数据/寄存器转移,进⾏纵向⽓泡延迟,从⽽解决问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
建立时间和保持时间关系详解图1建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器。
如图1 。
数据稳定传输必须满足建立和保持时间的要求,当然在一些情况下,建立时间和保持时间的值可以为零。
PLD/FPGA开发软件可以自动计算两个相关输入的建立和保持时间。
个人理解:1、建立时间(setup time)触发器在时钟沿到来之前,其数据的输入端的数据必须保持不变的时间;建立时间决定了该触发器之间的组合逻辑的最大延迟。
2、保持时间(hold time)触发器在时钟沿到来之后,其数据输入端的数据必须保持不变的时间;保持时间决定了该触发器之间的组合逻辑的最小延迟。
关于建立时间保持时间的考虑华为题目:时钟周期为T,触发器D1的建立时间最大为T1max,最小为T1min。
组合逻辑电路最大延迟为T2max,最小为T2min。
问:触发器D2的建立时间T3和保持时间T4应满足什么条件?分析:Tffpd:触发器输出的响应时间,也就是触发器的输出在clk时钟上升沿到来之后多长的时间内发生变化并且稳定,也可以理解为触发器的输出延时。
Tcomb:触发器的输出经过组合逻辑所需要的时间,也就是题目中的组合逻辑延迟。
Tsetup:建立时间Thold:保持时间Tclk:时钟周期建立时间容限:相当于保护时间,这里要求建立时间容限大于等于0。
保持时间容限:保持时间容限也要求大于等于0。
由上图可知,建立时间容限=Tclk-Tffpd(max)-Tcomb(max)-Tsetup,根据建立时间容限≥0,也就是Tclk-Tffpd(max)-Tcomb(max)-Tsetup≥0,可以得到触发器D2的Tsetup≤Tclk-Tffpd(max)-Tcomb(max),由于题目没有考虑Tffpd,所以我们认为Tffpd=0,于是得到Tsetup≤T-T2max。
由上图可知,保持时间容限+Thold=Tffpd(min)+Tcomb(min),所以保持时间容限=Tffpd(min)+Tcomb(min)-Thold,根据保持时间容限≥0,也就是Tffpd(min)+Tcomb(min)-Thold≥0可以得到触发器D2的Thold≤Tffpd(min)+Tcomb(min),由于题目没有考虑Tffpd,所以我们认为Tffpd=0,于是得到Thold≤T2min。
关于保持时间的理解就是,在触发器D2的输入信号还处在保持时间的时候,如果触发器D1的输出已经通过组合逻辑到达D2的输入端的话,将会破坏D2本来应该保持的数据Tco表示dff从输入到输出延时;Tlogic表示组合逻辑延时;Tsu表示dff的建立时间;Thold表示dff的保持时间。
无skew:T>Tco+Tlogic+TsuThold<Tco+Tlogic有skew:T>Tco+Tlogic+Tsu-TskewThold<Tco+Tlogic-Tskew建立时间与保持时间时钟是整个电路最重要、最特殊的信号,系统内大部分器件的动作都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小, 否则就可能造成时序逻辑状态出错;因而明确FPGA设计中决定系统时钟的因素,尽量较小时钟的延时对保证设计的稳定性有非常重要的意义。
建立时间与保持时间建立时间(Tsu:set up time)是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器;保持时间(Th:hold time)是指数据稳定后保持的时间,如果保持时间不满足要求那么数据同样也不能被稳定的打入触发器。
建立与保持时间的简单示意图如下图1所示。
图1 保持时间与建立时间的示意图在FPGA设计的同一个模块中常常是包含组合逻辑与时序逻辑,为了保证在这些逻辑的接口处数据能稳定的被处理,那么对建立时间与保持时间建立清晰的概念非常重要。
下面在认识了建立时间与保持时间的概念上思考如下的问题。
举一个常见的例子。
图2 同步设计中的一个基本模型图2为统一采用一个时钟的同步设计中一个基本的模型。
图中Tco是触发器的数据输出的延时;Tdelay是组合逻辑的延时;Tsetup是触发器的建立时间;Tpd为时钟的延时。
如果第一个触发器D1建立时间最大为T1max,最小为T1min,组合逻辑的延时最大为T2max,最小为T2min。
问第二个触发器D2建立时间T3与保持时间T4应该满足什么条件,或者是知道了T3与T 4那么能容许的最大时钟周期是多少。
这个问题是在设计中必须考虑的问题,只有弄清了这个问题才能保证所设计的组合逻辑的延时是否满足了要求。
答案:T-Tco-T2max>=T3,Tco+T2min-Tpd>=T4下面通过时序图来分析:设第一个触发器的输入为D1,输出为Q1,第二个触发器的输入为D2,输出为Q2;时钟统一在上升沿进行采样,为了便于分析我们讨论两种情况即第一:假设时钟的延时Tpd为零,其实这种情况在FPGA 设计中是常常满足的,由于在FPGA 设计中一般是采用统一的系统时钟,也就是利用从全局时钟管脚输入的时钟,这样在内部时钟的延时完全可以忽略不计。
这种情况下不必考虑保持时间,因为每个数据都是保持一个时钟节拍同时又有线路的延时,也就是都是基于CLOCK的延迟远小于数据的延迟基础上,所以保持时间都能满足要求,重点是要关心建立时间,此时如果D2的建立时间满足要求那么时序图应该如图3所示。
从图中可以看出如果:T-Tco-Tdelay>T3即:Tdelay< T-Tco-T3那么就满足了建立时间的要求,其中T为时钟的周期,这种情况下第二个触发器就能在第二个时钟的升沿就能稳定的采到D2,时序图如图3所示。
Tco是触发器的数据输出的延时。
图3 符合要求的时序图如果组合逻辑的延时过大使得T-Tco-Tdelay<T3那么将不满足要求,第二个触发器就在第二个时钟的升沿将采到的是一个不定态,如图4所示。
那么电路将不能正常的工作。
图4 组合逻辑的延时过大时序不满足要求结论:从而可以推出T-Tco-T2max>=T3这也就是要求的D2的建立时间。
从上面的时序图中也可以看出,D2的建立时间与保持时间与D1的建立与保持时间是没有关系的,而只和D2前面的组合逻辑和D1的数据传输延时有关,这也是一个很重要的结论。
说明了延时没有叠加效应。
第二种情况如果时钟存在延时,这种情况下就要考虑保持时间了,同时也需要考虑建立时间。
时钟出现较大的延时多是采用了异步时钟的设计方法,这种方法较难保证数据的同步性,所以实际的设计中很少采用。
此时如果建立时间与保持时间都满足要求那么输出的时序如图5所示。
图5 时钟存在延时但满足时序从图5中可以容易的看出对建立时间放宽了Tpd,所以D2的建立时间需满足要求:Tpd+T-Tco-T2max>=T3由于建立时间与保持时间的和是稳定的一个时钟周期,如果时钟有延时,同时数据的延时也较小那么建立时间必然是增大的,保持时间就会随之减小,如果减小到不满足D2的保持时间要求时就不能采集到正确的数据,如图6所示。
这时即T-(Tpd-Tco-T2min)<T4,就不满足要求了,所以D2的保持时间应该为:T-(Tpd+T-Tco-T2min)>=T4 即Tco+T2min-Tpd>=T4从上式也可以看出如果Tpd=0也就是时钟的延时为0那么同样是要求Tco+T2min>T4,但是在实际的应用中由于T2的延时也就是线路的延时远远大于触发器的保持时间即T4所以不必要关系保持时间。
图6 时钟存在延时且保持时间不满足要求下面用数字来说明一下加深理解(以下举例暂不考虑hold time):建立时间Tsetup=Tdelay+ Tco- Tpd假设Tco(触发器固有的建立时间)= 2ns假设1,Clock Delay =0,Data delay="0",那么数据port的新数据必须在时钟port的时钟沿到来之前2ns赶到数据por t,才能满足触发器的Tco。
假设2,Clock delay="0",data Delay = 3ns,那么数据port的新数据必须在时钟port的时钟沿到来之前5ns就得赶到数据port,其中的3ns用来使新数据从数据port赶到触发器的D端(由于data Delay ),剩下的2ns用来满足触发器的Tco。
假设3,Clock delay="1ns",data Delay = 3ns,由于时钟port的时钟沿推后1ns到达触发器的时钟端,那么数据port的新数据只需在时钟port的时钟沿到来之前4ns赶到数据port即可。
假设4,假设时钟的周期T=4ns,即你的系统需要运行在250M频率上,那么以上的假设中,假设2显然是不成立的,也就是说在假设2的情况下,你的系统运行频率是低于250M的,或者说在250M系统里是有setup time violation的。
在假设2的情况下,由于Tco及Tpd均是FPGA的固有特性,要想满足4ns的T,那么唯一你能做的就是想方设法减小Tdelay,也就是数据路径的延时。
即所谓的找出关键路径,想办法优化之。
总结,在实际的设计中,对于一个给定的IC,其实我们很容易看到T,Tpd,Tsetup,Th都是固定不变的(在跨时钟域时,Tpd会有不同),那么我们需要关心的参数就是Tdelay,即数据路径的延时,控制好了这个延时,那我们的设计就不会存在建立时间和保持时间不满足的情况了!笔试题,这样说道:时钟周期为T,触发器D1的建立时间最大为T1max,最小为T1min,该触发器的数据输出延时为Tco。
组合逻辑电路最大延迟为T2max,最小为T2min。
假设D1在前,D2去采样D1的数据(实际就是对图2的文字描述),问,触发器D2的建立时间T3和保持时间应满足什么条件。
这里给出一个简易公式供大家死记一下,以下两个公式确定了D2的Tsetup和Thold:1) D1的Tco + max数据链路延时+ D2的Tsetup < T(即T3 < T - Tco - T2max)2) D1的Tco + min数据链路延时> D2的Thold(即T4< Tco + T2min)其实上面的式2可以从T3+T4=T推出,不过要注意把1)中的T2max改为T2min即可。