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

2021年11月25日 阅读数:4
这篇文章主要向大家介绍Vivado如何计算关键路径的创建时间裕量?(实践篇),主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

上篇博文中已经提到了:markdown

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

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

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

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

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

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

实现结果
随便找一条路径来看,这里以图中为例。3d

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

闲情可分为以下几部分:get

  1. 时序总结:

summary

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

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

裕量计算

  1. 源时钟路径延迟

源时钟路径延迟

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

反馈
FPGA内部根据时序约束的要求,这么调整时钟延迟来尽量达到时序知足,如什么时候序比较宽裕,也许结果就不同了。

  1. 数据路径延迟

数据路径延迟

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

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

  1. 目的时钟路径延迟

目的时钟路径

目的时钟路径的含义实际上是时钟通过多久,到达目的寄存器的时钟输入端;
既然是目的时钟,固然参考时刻是外部输入时钟的目的时钟沿,是源时钟沿的下一个沿,天然相差一个周期,因为要预留好创建时间的,所以要减去一个创建时间;这样就获得一个具体的时刻,告诉布局布线工具,在这个时期以前,数据到达便可,不要超过这个时间,不然就知足不了时序,这样工具就会努力朝这个方向走。

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

以下图:

时钟分析

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

时序

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

最后,固然若是看上面的路径不方便不直观,能够打开任意一条路径的原理图,能够很清晰地看出时序模型,具体路径等等:

原理图

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

时序分析

你们本身去尝试下吧!对比理解很容易。

本文同步分享在 博客“李锐博恩”(CSDN)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。