VIVADO使用误区与进阶之1:十分钟教会你UltraFast

16 篇文章 7 订阅

时序收敛十大准则:
在这里插入图片描述

准则一:合适的风格代码

理想环境下,源代码可以独立于最终用于实现的器件,但是由于底层器件各自独特的结构,决定了通用代码的效率不佳,要最大化发挥硬件的性能,需要为实现工具和器件量身定制代码。
在这里插入图片描述

准则二:精准的时序约束

  • 精准的时序约束是设计实现的基础,过约束反而会阻碍时序收敛。
  • 通常第一次运行时只需要约束所有时钟,然后在内部路径基本满足时序约束的情况下加入关键 I/O 的约束,其次再考虑必要的时序例外约束。
  • Baseline 基线方法可以说是 UltraFast的灵魂部分,强烈建议所有 Vivado 的用户都能精读 UG949 中的这部分内容
    在这里插入图片描述
  • 上图展示了同一个设计在三个不同阶段用同样的命令报告时序所得到的最差路径,可以清晰的看出,即使不做任何源代码上的改动,设计中真正最差的路径已经不会作为最差路径出现在布局布线后的报告中。这正是因为 Vivado 时序驱动的天性决定了其在设计实现的每一步都是以开始时读到设计输入和约束为依据,尽量将最好的资源用在最差的路径上,从而尽最大可能实现时序收敛。
  • 这便是 Baseline 理论的基础,除了按顺序设置精准的时序约束,在设计实现的每一步,用户都需要关注时序报告,并以其为依据来调整设计源代码或是应用其他必要的约束和选项来优化设计。保证每一阶段之后的时序报告都满足约束或是仅余 300ps 以内的时序违例,再进入下一阶段的设计实现过程,否则,应该继续在当前阶段或是退回到上一阶段调整后重跑设计,直到满足要求再继续。

准则三:管理高扇出网络

  • 高扇出网络几乎是限制 FPGA 设计实现更高性能的第一大障碍,所以我们需要很严肃地对待设计中的高扇出网络。
  • 很多人会陷入一个误区,反复纠结到底多大的扇出值算是大?其实这一点不是绝对的,在资源充裕时序要求不高的情况下几千甚至上万都不算大,反之在局部关键路径上仅有几十的扇出也可能需要进一步降低。
  • 在 Vivado 中,我们除了关注时序报告,尤其是布局后布线前的报告来定位关键路径上影响时序的高扇出网络外,还有一个专门的命令report_high_fanout_nets ,在给其加上 -timing 的选项后,可以在报告高扇出路径的同时报告出这条路径的 Slack,帮助用户直观了解当前路径的时序裕量。
  • 找到目标后,可以利用 max_fanout 来限定其扇出值,让工具在实现过程中复制驱动端寄存器来优化。如果高扇出网络并不是由同步逻辑来驱动,则可能需要修改代码。还有一些工具层面上的降扇出方法,比如选择更强更有针对性的策略,或是允许多次物理优化 phys_opt_design

准则四:层次化设计结构

  • 随着设计规模的不断扩大,以及 SoC 设计的兴起,越来越多的 IP 被整合到大设计中,曾经为高性能设计而生,便于统一管理和控制的自顶向下的设计流程变得不再适用,FPGA 设计也跟大规模 SoC 设计一样,需要采用层次化的设计流程,即自底向上的流程。这也要求设计者在源代码阶段就考虑到最终的实现,处理好模块的层次边界。
  • Vivado 中的 OOC 模式甚至还支持完全层次化的设计,即将底层模块的布局布线结果也进行复用,这么做虽然流程复杂,却带来了更全面的控制性,也是部分可重配置技术的实现基础。

准则五:处理跨时钟域设计

  • 一定要利用好 Vivado 中的各种报告功能,例如 report_cdc 和 DRC 报告中的methodology_checks 来检测设计中的 CDC 结构问题,并作出具体的设计调整或是补全 CDC 约束。另外要注意各种不同的 CDC 路径处理方法之间的优劣,选择最适合自己设计的方式,配合相应的约束来保证跨时钟域
    路径的安全。

准则六:少而精的物理约束

  • 不同于对时序约束尤其是时钟约束之全面而精准的要求,Vivado 对物理约束的要求只有一个字:少。这里的物理约束更多强调的是除了 I/O 引脚位置这些必要项之外的约束,例如对 RAMB 和 DSP48 的位置约束,还有局部的 floorplan 计划。
  • 因为算法的改进,Vivado 在布局上比上一代 ISE 更聪明,没有任何物理约束(除了 IO 引脚位置约束)的设计反而能在更短的时间内更好地满足时序要求。

准则七:选择实现策略

  • 修改策略来提升性能必须放在调整代码、约束和选项等更直接高效的优化方法之后进行,其能带来的性能提升比起前述优化方法来说也更加局限。

准则八:贡献控制信号

  • 共享控制信号这一点充分体现了设计必须考虑到用于底层实现的芯片结构的重要性,在 Xilinx 的芯片上,时钟、置位/复位和时钟使能等信号通称为 Control Set,进入同一个 SLICE 的 Control Set 必须统一。
  • 为了提升 SLICE 的利用率,获得更高效的布局方案,提升时序性能,我们必须控制一个设计中 ControlSet 的总数,尽量共享控制信号。具体做法包括:
  1. 尽量整合频率相同的时钟和时钟使能信号;
  2. 在生成 IP 时选择“共享逻辑”功能,则可以在不同 IP 间尽可能的共享时钟资源;
  3. 遵循 Xilinx 建议的复位准则:
    a)尽量少使用复位
    b) 必须复位时采用同步复位
    c) 确保使用高电平有效的复位
    d) 避免异步复位(RAMB 和 DSP48 模块中不支持异步复位)

准则九:读懂日志和报告

  • Vivado 日志中将信息显示为三大类,分别为 Error、 Critical Warning 和一般 Warning/Note 等。 Error 会导致工具直接中断,其他警告不会中断工具运行,但所有的 Critical Warning 都需要用户逐一检查并通过修改设计、增加约束或设置选项之类的办法来修复。
  • Vivado 的报告功能很强大,除了《读懂用好 Timing Report》 中描述的时序分析报告,还有很多重要的报告,小到检查设计中的特定时序元件和链路,大到各种预置和自定义的 DRC 检查,不仅提供给了用户多样的选择,也进一步保证了设计的可靠性。

准则十:发挥Tcl的作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值