Vivado如何计算关键路径的建立时间裕量?(实践篇)

上篇博文《Vivado如何计算关键路径的建立时间裕量?(理论分析篇)》中已经提到了:

Vivado如何计算关键路径的建立时间裕量?(理论分析篇)

Vivado实际如何对建立时间裕量进行分析?

从中我们得知,数据达到时间以及数据要求时间的概念以及裕量是如何计算的。

这篇短文,从实践出发,看看Vivado是不是那么分析的呢?

本文依旧以Xilinx提供的example工程WaveGen出发,来一起看看:

对设计进行综合实现,之后打开实现结果:

1.jpg
随便找一条路径来看,这里以图中为例。

可见这是一条同步路径,双击Path 1,可见详情:

闲情可分为如下几部分:

时序总结:
2.jpg

summary
这里指出了 1) 路径类型,是建立时间路径;2) 源寄存器以及目的寄存器;3)路径延迟及其组成成分 4) 组合逻辑数量,即lut级数 5) 时钟偏斜以及时钟不确定性等

点击裕量,可见其计算公式,即数据要求时间 - 数据到达时间。

3.jpg

裕量计算
源时钟路径延迟
4.jpg

源时钟路径延迟
源时钟路径的含义是从时钟源头(外部输入时钟)到源触发器的时钟端之间的延迟,可以清晰的看到,这个路径示例的这个时间是一个负值,下图红色部分,外部时钟上升沿为0时刻,到达源寄存器的时间竟然是一个负值,可见,这里经过了一个MMCM时钟管理模块,它的内部对是输入时钟进行了处理,见下图Incr画圈处的延迟增量是一个很大的负值。

5.jpg

FPGA内部根据时序约束的要求,这么调整时钟延迟来尽可能达到时序满足,如何时序比较宽裕,也许结果就不一样了。

数据路径延迟
6.jpg

数据路径延迟
可见,数据路径经历了这么多的LUT,也就是我们说的组合逻辑,这里面包含LUT延迟以及路径布线延迟,其中绝大多数情况,布线延迟会更大。

每一级小路径都会有延迟,路径延迟的计算起点是上述上述的源时钟路径的终点,这样二者叠加到一起就是数据从外部时钟0时刻(参考点)到达目的寄存器的数据输入端的时间,也就是数据到达时间。

目的时钟路径延迟
7.jpg

目的时钟路径
目的时钟路径的含义其实是时钟经过多久,到达目的寄存器的时钟输入端;既然是目的时钟,当然参考时刻是外部输入时钟的目的时钟沿,是源时钟沿的下一个沿,自然相差一个周期,由于要预留好建立时间的,因此要减去一个建立时间;这样就得到一个具体的时刻,告诉布局布线工具,在这个时期之前,数据到达即可,不要超过这个时间,否则就满足不了时序,这样工具就会努力朝这个方向走。

无论是数据到达时间还是数据要求时间,时间的起点都是从外部时钟的时钟沿作为0时刻,开始分析,因此,最终到达源以及目的寄存器的时钟输入端,就有一个时钟偏差,就叫做时钟偏斜。

如下图:

8.jpg

时钟分析
clk1与clk2分别是到达源以及目的时钟端的时钟;二者就有一个时钟偏斜,我们对时序的分析,也就有了上面常见的公式。

9.jpg

时序
数据在蓝线之前到达即可。从发起沿到蓝线的距离也是数据要求时间,即数据延迟允许的最大时间,给了规定,那么工具努力达到这一目标即可满足时序要求,这就是时序分析的原理。

最后,当然如果看上面的路径不方便不直观,可以打开任意一条路径的原理图,可以很清晰地看出时序模型,具体路径等等:

10.png

原理图
将上图组合路径那一块合起来:

11.png

时序分析
大家自己去尝试下吧!对比理解很容易。

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除
匿名用户

匿名