这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 何为锁存器的time borrowing?

共1条 1/1 1 跳转至

何为锁存器的time borrowing?

菜鸟
2017-06-28 16:01:38     打赏
静态时序分析经常会遇到基于锁存器(latch)的设计从而引入了一个概念称为“Time Borrowing”。这篇文章向大家解释了什么是time borrowing,以及锁存器(latch)设计和时序报告中关于time borrowing的处理方式。


下面的时钟信号周期为10,占空比为50%:


同时我们引入一个简单的电路,如下所示:


为了更容易理解,我们假设每个触发器的建立时间和保持时间均为“0”。


同样假设时钟偏移和时钟延迟也为“0”。


F1在时刻0得到数据,F2在时刻10对数据进行了采样。


因此如果数据在时刻10之后到达F2,那么F2就不能采集到正确的数据。


同理,从F2传出的数据到达F3也需要10个时间单位,在下一个时钟沿的时候被采样。


现在我们用一个锁存器(latch)L2替代F2,锁存器的Gate也由同样的时钟信号驱动:


F1在时刻0发出数据:


数据会在时刻10之前到达锁存器的输入端,数据会在锁存器的D端口等待。


这与F2的效果非常相似。


但是如果数据在时刻10之后到达会发生什么呢?


在时刻10到15之间可以说L2是透明的。


因此即使数据在时刻10之后到达L2,L2也能够处理只要数据能够在时刻15之前到达L2。


这意味着数据可以最多用15个时间单位到达锁存器,而使用触发器最多是10个时间单位。


举个例子,如果数据在时刻12到达L2,这意味着与触发器相比,锁存器提供了2个时间单位的优势。


在这个例子中L2最多能提供5个时间单位的优势。


现在让我们再来看一下L2到F3之间的路径。


数据在时刻12从L2传出,在时刻20被F3采样。


那么从L2到F3仅花费了8个时间单位。


在都是由触发器组成的电路中,第二段路径则需要10个时间单位。


这样看来这个电路少用了2个时间单位。


从本质上来说:


通往锁存器的路径多用了2个时间单位
因此,锁存器后面的路径必须在原来的基础上(10个时间单位)少用2个时间单位。
我们可以这样来看,通往锁存器的路径向后面的路径“借用”了2个时间单位。


因此,通往锁存器的路径可以从后续的路径借用时间(相当于锁存器是透明的)。


时间借用的时间不需要全部都借。


实际借用的时间只需要满足路径时序要求的最小值(锁存器全部透明时为最大界限)。


以我们这个例子来说:


可以借用的时间单位为5个时间单位。
实际借用的时间为2个时间单位。
默认是10个时间单位,加上额外的2个时间单位,这段信号路径需要12ns能够满足时序要求。
我们要注意到F1到F3这段路径仍然使用了20个时间单位,没用改变。


只是时间分布改变了。


感谢Catalin Baetoniu,在实际的时序设计中验证了这些概念。


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]