ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-09-25 15:31:14  阅读:243  来源: 互联网

标签:路径 时序 Vivado 裕量 时间 时钟 数据 延迟


上篇博文中已经提到了:

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

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

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

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

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

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

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

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

闲情可分为如下几部分:

  1. 时序总结:

summary

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

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

裕量计算

  1. 源时钟路径延迟

源时钟路径延迟

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

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

  1. 数据路径延迟

数据路径延迟

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

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

  1. 目的时钟路径延迟

目的时钟路径

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

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

如下图:

时钟分析

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

时序

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

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

原理图

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

时序分析

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

标签:路径,时序,Vivado,裕量,时间,时钟,数据,延迟
来源: https://blog.csdn.net/Reborn_Lee/article/details/120471615

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有