关于锁存器的time borrowing概念

嵌入式技术

1362人已加入

描述

静态时序分析经常会遇到基于锁存器(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,在实际的时序设计中验证了这些概念。

作者:Sanjay Churiwala,赛灵思公司工具与方法学应用专家

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分