Vivado 时序分析(理论篇) 卷一

引言

在之前我的文章中,已经写过时序分析,但当时仅解决了step slack的问题,为了加深进一步的理解,随着资料的不断增多,现在,重新进一步整理,当然这一次整理将是干货的归纳,并且纳入IC学习路线一文中,为IC中的PT工具的时序分析先铺垫道路。

参考文章:https://blog.csdn.net/ciscomonkey/article/details/88046646

1、建立余量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从图中可以看出,data arrival time 的时间点和data require time的时间点,只要两个相减,就是setup slack的值。并且需要保证slack>0.

而Fmax的值=1/(Tcycle -setup slack)

关于这个Fmax的理解:如果要让时钟可以快,更快,更快,显然,setup slack的余量更加充足,更容易让时钟更快,如果slack足够充足,我可以把Tsu这一段整体往前移动,移动,从而时钟的上升沿更快的到来,然而,想一下,如果slack很小很小,你想把Tsu往前提,也提不了,所以时钟快不起来。如果以极限来考虑,也就是说,我可以最多将Tsu提前slack这么一个长度,因此,得到Fmax的公式。

2、建立时间余量的Vivado软件分析

在实现或者综合后,点击编辑时序约束
在这里插入图片描述
在进行时序约束前,需要分配管脚,否则时序分析是没有意义的。如下图所示,创建时钟约束。如果系统中使用了PLL,就没必要设置时钟约束,因为系统已经知道了你的时钟。
在这里插入图片描述
现在需要重新编译。重新编译后,在Timing summary中。
在这里插入图片描述
如下图所示,最糟糕的情况下,slack还有5.906ns的余量,而所有负的salck为0,是没有的。

WNS 代表最差负时序裕量 (Worst Negative Slack)
TNS 代表总的负时序裕量 (Total Negative Slack)(所有path-slack 加起来),也就是负时序裕量路径之和。
在这里插入图片描述
关闭窗口后,然后report timing,报告100条路径
在这里插入图片描述
slack代表的余量,level代表该路径是否有组合逻辑,比如if
在这里插入图片描述
双击某一条路径后,可以对该条路径显示细节,通过点击右键进行highlight标亮后,然后再device中查看,从而可以看到路径
在这里插入图片描述
始终要根据此模型
在这里插入图片描述
首先通过外部的时钟晶振,时钟通过时钟缓冲器buffer,进行输出,当然一路时钟(黄色)输出给了源寄存器,另一路时钟输出给了目的寄存器。
在这里插入图片描述
然后看到,第一路时钟给了一个触发器,触发器的类型是FDRE,代表同步复位,复位值为0。
在这里插入图片描述
然后数据线经过了一个组合逻辑
在这里插入图片描述
然后数据到达目的寄存器,从而这条路径完全符合我们的经典两级寄存器时序分析模型
在这里插入图片描述
在这里插入图片描述

下面来看一下计算的数据
首先是数据到达时间,表里面理出了,经过每一条路径的时间累加,incr代表这条线(器件)增加的时间,path代表总的累加时间,直到计算出累加的时间是3.937.

在这里插入图片描述
接着是数据需求时间,在询问后,其实我觉得可这样来理解,真正进入寄存器的采集还需要一定延时,与建立时间之和后,可能为正,也可能为负。
最后用需求时间减去数据到达时间即可。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
疑问?
为什么下图经过同样的ibuf,结果会不一样呢?
前面那个相当于TCLK1,后面那个相当于TCLK2
为了以最坏的角度考虑,TCLK1应该取最大值,TCLK2应该取最小值。所以下面的结果不一样,是考虑的最悲观的角度。
在这里插入图片描述

3、保持时间

如下图所示,为了计算hold slack的时间,需要计算两个点
在这里插入图片描述
在这里插入图片描述

所以hold slack与时钟的快慢(时钟周期)是没有关系的。

所以看出,增加组合逻辑的延时,可以改善hold 的slack
在这里插入图片描述

4、保持时间余量的Vivado软件分析

在这里插入图片描述
在这里插入图片描述
同样是符合公式的
在这里插入图片描述
约束时钟的意义在于软件更好的优化布局布线,所以需要绑定好管脚。

根据引用\[1\]中的官方回复,Fmax是指FPGA设计中的最大工作频率。根据公式Fmax = 1/(T-WNS),其中T是时钟周期,WNS是Timing Summary Report中给出的最差负向路径延迟。为了估算Fmax,种常见的做法是在时钟约束中过约束,直到TNS为负。这样可以得到个较为保守的Fmax估计。 引用\[2\]中提到,如果想让时钟更快,需要确保setup slack的余量充足。如果slack足够充足,可以将时钟上升沿提前,从而使时钟更快。但是如果slack很小,无法将时钟上升沿提前,那么时钟就无法加快。根据极限情况,可以将Tsu最多提前slack这么个长度,从而得到Fmax的公式。 引用\[3\]中的示例说明了时钟偏斜可能导致的电路故障。在移位寄存器的设计中,时钟偏斜问题尤为重要。如果第二级触发器对数据的采样时间(td)小于数据传输时间(tf),则可能导致第二级触发器对数据的采样出现错误。 综上所述,vivado fmax是指FPGA设计中的最大工作频率,其计算方法可以通过时钟约束slack来估算。时钟偏斜问题在设计中需要特别注意,以确保数据的正确采样。 #### 引用[.reference_title] - *1* [FPGA | Vivado 查看最大工作频率(Fmax)](https://blog.csdn.net/qq_43580646/article/details/122588087)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Vivado 时序分析理论](https://blog.csdn.net/ciscomonkey/article/details/106382810)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [FPGA/ASIC笔试面试题集锦(1)知识点高频复现练习题](https://blog.csdn.net/Reborn_Lee/article/details/106669904)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值