Why FF has Setup & Hold time

Why FF has Setup & Hold time?

对于setup和hold的定义大家都知道,也相信大家都理解它,应用起来很顺手,看看以下几个问题,如果你不知道可以看看本文。

  • FF为什么有setup和hold time的要求?
  • 理想情况下hold time按定义是基本满足的,那么violation产生的本质是什么?
  • 某些library,setup time是负值,怎么做到的?

Setup & Hold

我们先来回忆一下setup和hold的定义。

Setup time is defined as the minimum amount of time before the clock’s active edge that the data must be stable for it to be latched correctly. Any violation may cause incorrect data to be captured, which is known as setup violation.

建立时间就是时序器件有效沿到来之前数据必须稳定的最少时间,建立时间违规会造成数据捕获出错。

Hold time is defined as the minimum amount of time after the clock’s active edge during which data must be stable. Violation in this case may cause incorrect data to be latched, which is known as a hold violation.

保持时间是时序器件有效沿之后数据必须保持稳定的最少时间,保持时间违规会造成数据在器件内保存出错。

Note that setup and hold time is measured with respect to the active clock edge only.

setup和hold都是相对有效时钟沿来说的。

CMOS FF的构成

传输门 Transmission Gates

传输门的功能很简单,当CK为低电压(Logic 0)时,NMOS的substrate即衬底供电为低电势,NMOS管处于关闭状态,PMOS的substrate即衬底供电为高电势,PMOS管也处于关闭状态。

当CK为高电压(Logic 1)时,相反NMOS,PMOS的substrate分别处于高电势和低电势,MOS管的source源和drain漏电压会充放电到相同电位,即整个传输门处于导通状态。

触发器 Latch


由传输门和基本门电路组成的触发器,这是是最基本的结构,实际中为了达到某些效果,比如高速、面积最优、特殊的setup,hold时间等,电路会有所不同。

电路中的门充放电是需要时间的,比如反相器的cell delay是0.2ns,传输门的delay可能是0.2ns等等。

CK=1

当CK为高电平时,TG1打开,TG2关闭,D端数据通过TG1,到达TG2的输入端,而TG2处于关闭状态,Q端数据直接来自于TG1的输出,即D=Q,数据传输需要经过TG1,N2和N3。

CK=0

当CK为低电平时,TG1关闭,TG2打开,D端杯TG1 block,无法通过TG1,而TG1输出端的数据通过TG2被传输到Q端,数据被保持住上一个状态的值。

由此可看出,这是一个我们通常说的latch,由电平触发。

触发器 Flip-Flop

由两个上述的latch构成一个沿触发的触发器。

TG1和TG2构成了master FF,TG3和TG4构成了slave FF。

当CK为0即低电平时,master FF处于透明状态,D数据通过master FF,而此时slave FF处于阻断状态,维持Q端数据不变,master FF锁定D的过程中,D必须保持不变,这样master FF所存的数据才是可靠的,可知的,那么这段电平由低变高之前,D通过master FF的时间就是setup time吗?非也,setup time是TG1和TG2的skew。所以本质上setup是clock到达与否的描述,所以本质上是一段clock skew(假设clock是ideal的,没有transition)。这才有了setup可以是负值的可能。

当CK为1即高电平时,master FF被block,slave FF处于透明状态,D已经被master FF阻隔了,Q端如果需要获得Master FF锁存的数据,必须经过一定的时间,即数据通过slave FF的时间,这段时间过后,Q端的数据将稳定不变了。那么hold本质上是一段clock latency(假设clock是ideal的,没有transition)。

当然setup和hold都要考虑MOS管的充放电时间,transition的影响。

Library

我们回到最初提到的两个问题。

hold violation产生的本质是什么?

我们看上面的图,只要CK到TG3做得足够短,其实hold time可以控制得很短,当然做不到0。从这个角度来说,launch出来的数据,经过launch FF,经过一段线延时,很容易满足capture的hold time要求,design中那么多hold violation哪里来的?

timing path中的hold violation与这个内部结构没有太大关系,都是由于skew产生的,launch clock latency短于capture clock latency。

第二个问题,setup为什么可以是负值,前面讲了setup本质上是一段skew,skew当然可以做到可正可负。只要到达TG2的clock latency长于到达TG1的clock latency,那么setup就是一个负值。


阅读更多IC物理设计内容,请访问作者网站 Share The Value From QF 或者关注微信 ic_pdi


我们的知乎Live,“IC脚本如何高大上”即将播出,欢迎关注收听,经验丰富的工程师给你讲解IC CAD的压箱底干货。

知乎 Live - IC脚本如何高大上

预告,我们后期会出IC CAD的内容:

IC CAD 是如何与 Design Engineer 合作解决 Flow,Design 问题的?

IC CAD 学习路径

IC CAD 怎么构建自己的 Tcl 开发环境

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值