Vivado Timing Closure - 解决Vivado中出现的时序问题的建议

描述

本一般答复记录提供了有关如何解决Vivado中出现的时序违规的建议。

高扇出导致的时间违规:

  • Floorplan或LOC高扇出信号的原点和全局缓冲区。
  • 复制驱动程序并告诉综合工具不要删除重复的逻辑。
  • 对于控制信号以外的信号,如复位,置位和时钟使能,请在综合中使用max_fanout。
  • 使用可以对扇出执行优化的phys_opt_design。有关更多信息,请参阅(Xilinx答复53986)

由于状态机优化导致的时间违规:

  • 对状态使用单热编码。这是优化速度的不错选择。
  • 如果可能,请使用综合状态机编码工具。
  • 减少输入信号的数量并预先解码输入信号。
  • 注册输入和输出信号。
  • 预解码和注册计数器值。
  • 从状态机中删除数据流并创建控制信号以控制数据流。
  • 重复状态到许多状态转换的位置,并减少状态方程中的状态数。
  • 使用CASE语句而不是IF-ELSE语句。

对长期逻辑链的建议:

  • 您可以使用较小的计数器来驱动其他计数器,并将它们级联,以便第一个计数器是第二个计数器的启用。

对逻辑层次的建议:

这适用于逻辑超过总路径延迟的某个百分比的情况,这意味着在定时终点之间存在太多逻辑;必须减少逻辑量以满足时序要求。

要降低逻辑级别,请返回源并尝试以下操作:

  1. 问题状态机优化建议。
  2. 使用CASE语句而不是嵌套的IF-ELSE语句。
  3. 使用3态而不是大型多路复用器(7个或更多输入)。
  4. 使用创意数学;转移而不是乘以2的倍数。
  5. 使用解码器而不是比较器。
  6. 平衡寄存器周围的逻辑
  7. 带括号的金字塔逻辑而不是串行实现。
  8. 添加管道寄存器。
  9. 仅使用IF-THEN-ELSE语句执行以下操作:
  • 预解码和注册计数器值。
  • 添加一个流水线级别以预解码和注册输入信号
编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-30 20:52:31 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它