FPGA的人都跑不掉的一个问题就是进行静态分析办法

任何学习 FPGA 的人都无法解决的一个问题是静态时序分析。静态时序分析的公式老实说很晦涩难懂,总能看到不同的版本,内容也不是那么一致。为了彻底解决这个问题,我研究了一天,终于找到了一个很简单的解释方法,可以看透它的本质,不用去记住复杂的公式。

我们的分析从下图开始d触发器的逻辑功能,这是一张常用的静态分析结构图。公式一开始看不懂也没关系,因为后面我会给出一个很简单的解释:

这两个公式是建立时间和保持时间的一个非常全面和准确的公式。其中d触发器的逻辑功能,Tperiod为时钟周期;Tcko是从D触发器开始采样到D触发器采样的数据开始输出的时间;Tlogic是中间组合逻辑的延迟;Tnet是布线的延迟;Tsetup是D触发器建立时间的延迟;Tclk_skew 是时钟偏移。产生偏移的原因是因为时钟到达前后两个D触发器的走线长度不一样。

在这里,我们进行以下转换:

因为对于有意义的时序约束,setup time margin Tslack、setup and hold time margin Thold必须大于0,所以时序约束的要求实际上等价于:

Tperiod>Tcko+Tlogic+Tnet+Tsetup-Tclk_skew (1)

Tcko+Tlogic+Tnet>Thold+Tclk_skew (2)

前面说了,这两个公式是最全面的,但其实大部分教科书都没有覆盖那么深,也没有考虑一些不太重要的延迟,所以不同的教科书有不同的看法。这里,为了更简单的理解,我们照常忽略Tnet和Tclk_skew这两项。原因是 Tnet 通常太小,而 Tclk_skew 不那么简陋。简化如下:

Tperiod>Tcko+Tlogic+Tsetup (3)

Tcko+Tlogic>Thold (4)

简单多了!但是你能看出这两个公式是什么意思吗?其实(3)公式更容易理解,意思是数据从第一个触发器的采样时间传输到第二个触发器的采样时间,不能超过一个时钟周期!如果数据传输超过一个时钟周期,那么当第二次触发开始采样的时候,想要的数据还没有发送出去!那么(4)公式怎么理解?说实话,大部分人是看不出来的乍看上去。

我们将 Tsetup 添加到 (4) 等式的两边,我们得到 (5):

Tcko+Tlogic+Tsetup>Thold+Tsetup (5)

结合 (3) 公式和 (5)) 公式,我们得到以下公式:

Thold+Tsetup

这个公式是让我们看到模式的公式。也是一个能看出静态时序分析精髓的公式。

Tcko+Tlogic+Tsetup是指数据从第一级触发器采样到第二级触发器并被采样的时刻的传输延迟。我们简称为数据传输延迟。下面介绍 (6) 公式两端的含义。

Tcko+Tlogic+Tsetup< Tperiod :约定数据传输延迟不能太大。如果太大(超过一个时钟周期),二级触发器会发现采样时数据还没有到达。

Thold+Tsetup

综上所述,我们可以知道,数据传输延迟既不能大到超过一个时钟周期,也不能小到小于触发器采样窗口的宽度。这就是静态时序分析的终极意义。有了这个,就不再需要记住任何公式了。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论