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

建立时间和保持时间贯穿了整个时序分析过程。只要涉及到同步时序电路,那么必然有上升沿、下降沿采样,那么无法避免setup-time 和 hold-time这两个概念。
1. 什么是setup-time 和 hold-time
不论是在输入,输出或是寄存器-寄存器之间,只要设计到时钟上升沿/下降沿的采样,就会提到setup time 和 hold time。这两个指标说明器件本身不是理想的(时延等),正是这个不理想的特性,限制了工作时钟等。
setup time is the minimum amount of time the data signal should be held steady before the clock event so that the data is reliably sampled by the clock. this applies to synchronous input signals to the flip-flop.
hold time is the minimum amount of time the data signal should be held steady after the clock event so that the data are reliably sampled. this applies to synchronous input signals to the flip-flop.
上文是维基百科中的解释,这里很清楚的解释了这两个概念,但是不够具体化。也就是说,这里并没有提及这个值到底等于多少。xilinx 文档ug612 page65提到了这两个等式
setup time = data path delay + synchronous element setup time - clock path skew
hold time = clock path skew + synchronous element hold time - data path delay
这两个等式告诉我们的是需求值,setup time是时钟上升沿之前的数据所需要的(最小)有效时间,hold time是时钟上升沿之后的数据所需要的(最小)有效时间。 synchronous element setup time 和 synchronous element hold time可以看作是触发器的固有属性。那么,如何理解这两个式子呢?以setup time为例,hold time具有同样的性质。
首先回到维基百科的解释,其中涉及到data signal 和 clock event,这两个到底指的是什么?对于一个触发器来说,对与直接输入到其内部的clock_in和data_in来说,这个建立时间是 synchronous element setup time 。这表明了该触发器的属性。回到ug612定义的式子,这应该用下图来解释。
data signal :data
clock event: clk event
那么对于这一种情况,data 和clk延时候到达触发器内部,所以setup time发生了变化。有setup time = synchronous element setup time + data path delay - clock path skew
2. 如何理解slack
再谈一个xilinx公司的术语:slack。slack的中文意思是“松弛的”,可以简单的理解为设计余量。即如果slack是正数,那么设计满足要求,否则不满足要求。对于setup time的slack,有
slack = requirement - (data path - clock path skew + clock uncertainty)
slack = requirement - (clock path skew + clock uncertainty - data path)
这里data path = data path delay + synchronous element setup time。而clock uncertainty正如其字面意思,时钟不可能完美,时钟的不确定性会使得slack变小,这是符合我们感知的。
这里最值得注意的是requirement,ug612中的各种 ‘require’把我彻底绕晕了好几次。这里的requirement来源于约束,即这个设计中能提供的数据在时钟沿之前有效时间的值是多少。而“data path - clock path skew ”实际上就是上节中提到的setup time,这是一个最小值,如果大于这个最小值,那么slack大于0,对应的就是满足要求了。这里没有考虑clock uncertainty,clock uncertainty如下图所示,带来的影响总是不好的,所以最终的slack还要剪掉这个值。
下图是一个时序图示例,clk和data对应的是节1图中的信号,clk_in和data_in是到达触发器内部的信号。clk和data之间的相位关系表明requirement为一个时钟周期。setup margin是在这一个例子中的slack,由于时钟的不确定性,这个setup margin还需要减去一个clock uncertainty。
slack: -0.865ns (requirement - (clock arrival + clock path + data path + uncertainty))
source: outd_7 (ff)
destination: outd (pad)
source clock: clock3_std_bufg rising at 0.000ns
requirement: 3.000ns
data path delay: 3.405ns (levels of logic = 1)
clock path delay: 0.280ns (levels of logic = 3)
clock uncertainty: 0.180ns

德国德累斯顿市圣约瑟夫•史蒂夫特医院通过网络解决方案保护其建筑物围护结构
步进电机原理与问答
医疗行业中广泛应用的村田制作所的引线型NTC系列产品
瓴盛科技推出首款基于三星11纳米工艺制程的AIOT芯片JA310
电流互感器变比有哪些?型号汇总
建立时间和保持时间(setup time 和 hold time)
iPhone 12全系四款产品入网工信部,产品信息首次确认
代码+实验分析,助你全面理解C3F
5G在商用部署、技术和应用创新方面有哪些新特点?
基于里德堡原子临界增强的高灵敏微波传感
努比亚Z18评测 值不值得买
中国为什么造不出主流的高精度模拟芯片
网络安全技术的基础设施需要国际之间的互相信任
MIT技术评论:2014年十大科技突破
开关电源芯片U6513全系列大盘点
小米推出Yeelight智能LED灯丝灯 售价129元
iPad商标权之争最新进展:商家接到iPad下架令,多地仍在售
选择工业相机的10个要点
小米6即将发布:双摄像头+256G存储,多色版本齐上阵!能否打一场漂亮的翻身仗?
怎么区分物理中定律、定理与定则?