Vivado XDC约束与时序优化(一)

这篇具有很好参考价值的文章主要介绍了Vivado XDC约束与时序优化(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

摘要:有关xdc约束、时序优化的文章很多,并不重头开始介绍,仅仅记录一下在实际工程中遇到的情况。时序不好是非常正常的现象,此时需要进行大量的约束。我认为时序约束的难点其实更多的是在,有时候约束一条路径之后导致了功能出现异常。此时不得不采取其它的方式,这就需要更多约束手段去完成这些事情,但是这并不意味这些手段都能保证工程功能是正常的。

很多约束属性、参数等根本无法用百度直接查询得到,看文档也会极其的慢。建议使用ChatGPT辅助理解


目录

1. XDC约束

1.1 creat_clock

1.2 set_input_delay

1.3 set_clock_groups

1.4 set_false_path

1.5 set_property MAX_FANOUT 

1.6 ASYNC_REG

1.7 phys_opt_design -force_replication_on_nets

2. 时序优化

2.1 策略

2.2 Incremental implementation

2.3 修改代码

总结

参考文章:


1. XDC约束

1.1 creat_clock

Vivado XDC约束与时序优化(一)

 像时钟的create是必须的,如果不create的话就会导致工具不分析这个时钟的所有路径,那么工具并不会帮助你将一些建立时间或保持时间不够的路径进行优化,非常容易出现功能的问题。我在测试以太网多lane内外环中踩过坑。

1.2 set_input_delay

Vivado XDC约束与时序优化(一)

1.3 set_clock_groups

比如我的工程中用两个122.88MHz时钟,分了两个mmcm,那这两个mmcm需要分组,但是彼此之间不是同源时钟,不需要进行分析。

Vivado XDC约束与时序优化(一)

Vivado XDC约束与时序优化(一)

1.4 set_false_path

非常常用的约束,需要注意的是:

1.约束不分析的路径时,极有可能造成功能不正确

2.正确约束路径,可以让时序变好,并且工程综合、布线更快

Vivado XDC约束与时序优化(一)

可以约束from的路径不分析,也可以约束to的路径不分析,也可以约束时钟到时钟的路径不分析,也可以约束点到点的路径不分析。

1.5 set_property MAX_FANOUT 

Vivado XDC约束与时序优化(一)

Vivado XDC约束与时序优化(一)

 看时序报告的时候,路径越差的地方,有可能伴随着fanout很高;但是更改MAX_FANOUT有可能会导致功能出线问题,需要综合使用。

1.6 ASYNC_REG

Vivado XDC约束与时序优化(一)

Vivado XDC约束与时序优化(一)

 Vivado XDC约束与时序优化(一)

1.7 phys_opt_design -force_replication_on_nets

Vivado XDC约束与时序优化(一) Vivado XDC约束与时序优化(一)

 

2.时序优化

2.1 策略

首先不同的策略会对时序进行不同的优化(综合也可以选择不同的策略):

解决Vivado implementation拥塞的策略方法(一)_Y__Yshans的博客-CSDN博客

Vivado implementation策略使用(二)_Y__Yshans的博客-CSDN博客_vivado实现策略的选择文章来源地址https://www.toymoban.com/news/detail-413124.html

在一般情况下Xilinx提供的策略已经比较优的了,但是在极端情况下,还是可以手动配置策略让策略组合达到最优解。

2.2 Incremental implementation

有的时候不同的电脑跑出来的时序可能不一样(不确定,有人说跟电脑硬件也有关系)。并且每台电脑每次跑出来的时序也可能会略有不同,有的时候就能跑出来稍微好点的时序,这个时候可以保存下来,给以后的每次跑版本用。

Vivado XDC约束与时序优化(一)

2.3 修改代码

2.1和2.2都是工具在优化时序,很多时候治标不治本,所以最好还是尽可能的修改代码,例如:

  1. 跨时钟域的处理:快到慢可以扩宽脉冲、打拍;慢到快可以用ram、fifo
  2. assign语句太多,这种语句前后的连接必须都经过always
  3. 计数器太大,需要进行拆分
  4. 冗余逻辑、不规范代码进行修改

总结

目前我所用到的XDC约束和时序优化,时序优化是一个很大的内容,还需要不断地学习。

参考文章:

ChatGPT

解决Vivado implementation拥塞的策略方法(一)_Y__Yshans的博客-CSDN博客

Vivado implementation策略使用(二)_Y__Yshans的博客-CSDN博客_vivado实现策略的选择

到了这里,关于Vivado XDC约束与时序优化(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • FPGA时序约束--实战篇(读懂Vivado时序报告)

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

    2024年02月12日
    浏览(43)
  • vivado 一文归纳出时序约束

    对于时序路径来说,一共有4种时序路径,如下图: (1)从上游芯片最后一级触发器的时钟发送沿有效到FPGA中第一级触发器的输入。 (2)FPGA内部从上级触发器时钟发送沿有效到下级触发器的输入。 (3)从FPGA最后一级触发器的时钟发送沿有效到下游芯片第一级触发器的输入

    2024年01月20日
    浏览(37)
  • Vivado操作之时序约束介绍

    目录 一、前言 二、时序约束界面 三、时序约束介绍 四、参考        任何一个FPGA工程都需要设置相关的时序约束,下面将介绍Vivado中如何进行时序约束操作以及各种约束的使用方法。          在一个工程运行到IMPLEMENTATION后,进入到左侧的Flow Navigator窗口,点击IMPL

    2024年02月05日
    浏览(52)
  • tcl学习之路(五)(Vivado时序约束)

      主时钟通常是FPGA器件外部的板机时钟或FPGA的高速收发器输出数据的同步恢复时钟信号等。下面这句语法大家一定不会陌生。该语句用于对主时钟的名称、周期、占空比以及对应物理引脚进行约束。   在设计中,未约束的时钟可以通过时钟网络报告和时钟确认报告查看

    2024年02月12日
    浏览(44)
  • FPGA的时序分析、约束和收敛(6)----如何读懂vivado下的时序报告?

    目录 写在前面 1、建立工程与添加时序约束 2、时序报表         在之前的文章中写了一些时序分析的基础概念,同时还说了文章中提到的公式根本就不需要记忆,因为综合工具vivado会帮你把所有时序路径都做详尽的分析,你所需要做的就是理解概念。         光说不

    2024年02月12日
    浏览(51)
  • Vivado时序约束之—— set_max_delay、set_min_dealy(最大最小延迟约束)

    1. set_max_delay、set_min_delay约束的目的 最大最小延迟约束主要是为了解决异步信号之间的时序路径进行时序约束的问题。最大延迟约束(set_max_delay)将默认覆盖建立时间分析中的最大路径延迟;最小延迟约束(set_min_delay)将默认覆盖保持时间分析中的最小路径延迟。所谓的最

    2023年04月09日
    浏览(37)
  • FPGA时序约束--实战篇(时序收敛优化)

    目录 一、模块运行时钟频率 二、HDL代码 1、HDL代码风格 2、HDL代码逻辑优化 三、组合逻辑层数 1、插入寄存器 2、逻辑展平设计 3、防止变量被优化 四、高扇出 1、使用max_fanout 2、复位信号高扇出 五、资源消耗 1、优化代码逻辑,减少资源消耗。 2、使用替代资源实现 六、总结

    2024年02月11日
    浏览(44)
  • Xilinx FPGA管脚约束语法规则(UCF和XDC文件)

    本文介绍ISE和Vivado管脚约束的语句使用,仅仅是管脚和电平状态指定,不包括时钟约束等其他语法。 ISE使用UCF文件格式,Vivado使用XDC文件,Vivado中的MIG_DDR管脚也是使用的UCF文件。 1. ISE环境(UCF文件) ISE开发环境可以使用图形化分配界面PlanAhead工具,本文介绍手动编写约束语

    2024年02月05日
    浏览(45)
  • 【IC设计】ZC706板卡点灯入门(含Verilog代码,xdc约束,实验截图)

    这篇博客将针对AMD Zynq 7000 SoC ZC706 Evaluation Kit板卡(对应Vivado创建工程时FPGA型号:XC7Z045ffg900-2)实现基本的点灯程序。 本文对以下内容不再介绍, 使用Vivado进行综合、实现、生成比特流并烧录FPGA FPGA的概念、Verilog的基础语法 板卡时钟为200MHz,让板子上的一个LED灯 保持 0.5秒亮

    2024年02月20日
    浏览(31)
  • 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

领红包