【FPGA】基于vivado FPGA设计过程中时序报红的分析及解决办法

这篇具有很好参考价值的文章主要介绍了【FPGA】基于vivado FPGA设计过程中时序报红的分析及解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

序言

本文基于vivado的FPGA,对时序报红问题分析方法进行说明,并提供常见问题的解决办法。

时序报告

1.打开时序报告界面

(1)前提
先将工程进行综合和布局布线。
(2)方法1
IMPLEMENTION - Report Timing Summary
vivado中时序问题怎么解决,【FPGA】vivado及mdelsim联合仿真,fpga开发
参数设置:
Maximum number of paths per clock or path group:每个时钟路径或者时钟组显示的最大路径数,想要查看的信号数越多,这个值就要设置更大,一般默认值10就可以了;
Maximum number of worst paths per endpoint:最坏路径数量,只用看最差路径的情况即可,保持默认值1即可。
设置好了值-点击OK
vivado中时序问题怎么解决,【FPGA】vivado及mdelsim联合仿真,fpga开发
(3)方法2
在功能栏点击-在弹出的Project Summary界面的Timing框内-点击Implementation Timing Report
vivado中时序问题怎么解决,【FPGA】vivado及mdelsim联合仿真,fpga开发

2.时序报告界面说明

(1)Timing界面
在弹出的Timing界面中,左侧是时序信息总览、时钟和时序路径分类,右侧是时序报告的详细信息,主要包含了三部分SetupHold以及Pulse Width,对应建立时间保持时间脉冲宽度三部分的时序违例说明:
vivado中时序问题怎么解决,【FPGA】vivado及mdelsim联合仿真,fpga开发
具体参数:
WNS (Worst Negative Slack) :最差负时序裕量
TNS(Total Negative Slack) :总的负时序裕量 ,也就是负时序裕量路径之和
WHS (Worst Hold Slack) :最差保持时序裕量
THS (Total Hold Slack) :总的保持时序裕量,也就是负保持时序裕量路径之和
WPWS (Worst Pulse Width Slack) :最差脉冲宽度时序裕量
TPWS (Total Pulse Width Slack) :总的脉冲宽度时序裕量,也就是负脉冲宽度时序裕量路径之和
注意:显示为红色表示存在时序违例

(2)时序违例分析位置
点击WNSWHS或者WPWS就会弹出对应时序问题最严重的信号界面:
vivado中时序问题怎么解决,【FPGA】vivado及mdelsim联合仿真,fpga开发
主要参数:
Name:路径名;
Slack:时间裕量;
Levels:组合逻辑级数,表示两个寄存器之间存在的组合逻辑层数
High Fanout:高扇出数,表示一个信号驱动的所有接收端的数量
From:路径起始位置,包含HDL代码中的起始寄存器
To:路径结束位置,包含HDL代码中的起始寄存器的下一级寄存器
Total Delay:整个路径的总体延时
Logic Delay:整个路径的逻辑延时
Source Clock:路径起始寄存器的时钟
Destination Clock:路径终点寄存器的时钟
Requirement:时钟周期,即路径延时最大值

3.常见的时序违例问题及解决办法

(1)建立时间问题
A)问题一:两个寄存器间组合逻辑级数层数过多
标志:2.(2)中Levels值过大,一般要求:逻辑级数≤时钟周期(ns)×2
解决办法:
方法1:
在Levels过大的位置,将组合逻辑使用寄存器进行打拍,即在两级寄存器中间位置插入一个寄存器;
方法2:
修改信号属性,使用Vivado 中提供的 retiming_forward 和 retiming_backward 属性来控制特定寄存器或路径上的最优化。使用这些属性会对一组特定路径(而不是顶层模块或子模块)应用重定时最优化,从而减少面积开销:

(*retiming_forward = 1 *) reg gt_reset;
(*retiming_backward = 1 *) reg gt_reset;

B)问题二:信号扇出数过高,即信号驱动的接收端数量过多
标志:2.(2)中High Fanout值过大
解决方法:
方法1:手动减少对应信号驱动接收端的数量;

方法2:设置信号属性,通过设置信号扇出数的上限,让综合器自动优化;(这种方法的基本原理同1是一样的,不同的是这种方法是vivado综合时自动实现的)

方法3:BUFG,一般用于时钟和复位信号的高扇出问题,但是BUFG资源有限,一般不用于解决普通信号的高扇出问题。

set_property CLOCK_BUFFER_TYPE BUFG [get_nets netName]

(2)保持时间问题
A)规范进行跨时钟域传输数据
后续会出跨时钟域数据传输的具体方法合集,这里不再赘述。
(3)通用方法
A)删除ILA(很重要)
ILA是最容易造成时序报红的原因之一,在代码完成后且不需要观测信号后,将所有ILA代码删除或者注释掉。
B)修改综合策略(这种方法一般不能完全解决问题)
操作:在任务栏点击-在Project Summary界面中的Synthesis框中点击Strategy后面的蓝色字体-在弹出的下示界面进行策略修改
vivado中时序问题怎么解决,【FPGA】vivado及mdelsim联合仿真,fpga开发

策略选择(Options):
Strategy:包含多种综合策略,也可以自定义策略:
Flow_AreaOptimized_high:执行常规面积优化,包括强制执行三进制加法器,在比较器中使用新阈值以使用进位链以及实现面积优化的多路复用器;
Flow_AreaOptimized_medium:执行常规面积优化,包括更改控制集优化的阈值,强制执行三进制加法器,将推理的乘法器阈值降低到DSP模块,将移位寄存器移入BRAM,在比较器中使用较低阈值以使用进位链,以及进行区域优化的MUX操作;
Flow_AreaMultThresholdDSP:专用DSP块推断的下限阈值;
Flow_AlternateRoutability:使用算法提高布线能力,减少MUXF和CARRY的使用;
Flow_RuntimeOptimized:执行较少的时序优化,并消除一些RTL优化以减少综合运行时间。
vivado中时序问题怎么解决,【FPGA】vivado及mdelsim联合仿真,fpga开发
下面的具体参数也可以调整,具体参数调整大家查一下资料,这里不再赘述:
vivado中时序问题怎么解决,【FPGA】vivado及mdelsim联合仿真,fpga开发
C)修改IP核参数(针对IP核内部信号报红)
有的IP核需要选择资源最优还是速度最优时,选择速度最优(speed)。文章来源地址https://www.toymoban.com/news/detail-754283.html

到了这里,关于【FPGA】基于vivado FPGA设计过程中时序报红的分析及解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA设计时序分析二、建立/恢复时间

    目录 一、背景知识 1.1 理想时序模型 1.2 实际时序模型     1.2.1 时钟不确定性     1.2.2 触发器特性 二、时序分析 2.1 时序模型图 ​2.2 时序定性分析     之前的章节提到,时钟对于FPGA的重要性不亚于心脏对于人的重要性,所有的逻辑运算都离开时钟的驱动。那是不是

    2024年02月14日
    浏览(42)
  • FPGA时序约束--实战篇(读懂Vivado时序报告)

    目录 一、新建工程 二、时序报告分析 1、打开时序报告界面 2、时序报告界面介绍 3、时序路径分析 三、总结 FPGA开发过程中,vivado和quartus等开发软件都会提供时序报告,以方便开发者判断自己的工程时序是否满足时序要求。 本文将详细介绍如何读懂Vivado时序报告,包括报告

    2024年02月12日
    浏览(43)
  • FPGA时序约束--实战篇(Vivado添加时序约束)

    前面几篇文章已经详细介绍了FPGA时序约束基础知识以及常用的时序约束命令,相信大家已经基本掌握了时序约束的方法。 今天介绍一下,如何在Vivado中添加时序约束,Vivado添加约束的方法有3种:xdc文件、时序约束向导(Constraints Wizard)、时序约束编辑器(Edit Timing Constrain

    2024年02月10日
    浏览(46)
  • IDEA中pom.xml配置文件依赖文件版本号报红的最有效解决办法

    原因是从别的地方引入的项目文件,本地的MavenRepository库中并不存在对应版本的dependency依赖,所以导致版本号报红。 找到对应项目,右键reload就可以了。      

    2024年02月05日
    浏览(49)
  • 解决IDEA Maven依赖下载失败、Maven依赖包导入失败报红的问题(项目实操)

    在向IDEA导入一个maven项目的时候,有一些依赖就是无法下载下来,我想尽了办法,查尽了资料,还是无法解决,最后通过我的一个突发奇想解决了问题。 一、我的pom文件报红的依赖,在maven仓库官网上都可以搜索到,但是无论想什么办法,IDEA就是下载不下来依赖 二、首先列

    2024年02月16日
    浏览(52)
  • 基于FPGA的脉冲压缩设计(Matlab+vivado)

    前言: 本科学了四年机械,后面转头去了电子信息读研,以FPGA的脉压入手,在从零开始的路上CSDN对我的帮助很大,现整理所学,与诸君共勉。本文不少代码均是参考CSDN上的前辈们一步一步理解做出来的,如有冒犯之处,烦请谅解。 目录 一:脉冲压缩原理介绍 1.我们简单了

    2024年01月19日
    浏览(41)
  • 【Vivado】基于FPGA的出租车计价表设计

    学校FPGA设计结课课设 主要做了出租车计价表,一个比较旧的课题,代码如下: 分模块编程,按照价目表写代码,具体注释见代码。 在module里新加一个 input 变量 key_stage ,用 key_stage 表示不同车流量段,用以计数 在module里新增一个变量 state 来限定是在白天还是夜间

    2024年02月04日
    浏览(53)
  • FPGA基于Vivado开发,设计顶层文件Top.v

    首先得承认,我并不是主动拥抱顶层文件这套思路的,原因很简单,能用就行干嘛费劲搞那么多东西。起初知识点亮一个LED灯,整一个半加器的简单模拟,也确实根本用不上。后边工程有一定的负责度,例如设计数字时钟,LCD1602驱动设计等等,这个时候我就发现了层次化设计

    2024年02月08日
    浏览(44)
  • 【FPGA基础】基于PWM脉宽调制的呼吸灯设计(Vivado)

    软件:Vivado2019.1 硬件:Zynq7010 仿真:Vivado Simulator 众所周知,灯的亮度和加在其两端的电压有关。电压越高,亮度越亮,反之越暗。 于是,设计一个呼吸灯就变得很简单了。让IO的输出电平由低到高,再有高到底有规律的变化,就能达到呼吸效果。 现在问题来了,IO的输出电

    2024年02月07日
    浏览(68)
  • Vivado时序约束TCL命令——获取引脚(get_pins)在FPGA设计中起着重要作用。本文将为大家详细介绍get_pins命令的语法和使用方法。

    Vivado时序约束TCL命令——获取引脚(get_pins)在FPGA设计中起着重要作用。本文将为大家详细介绍get_pins命令的语法和使用方法。 get_pins命令用于获取指定对象(Object)的引脚(Pin)列表。我们可以使用get_pins来获取具有特定命名约定的引脚(如CLOCK、RESET等),并通过对这些引

    2024年02月05日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包