描述
本一般答复记录提供了有关如何解决Vivado中出现的时序违规的建议。
解
高扇出导致的时间违规:
- Floorplan或LOC高扇出信号的原点和全局缓冲区。
- 复制驱动程序并告诉综合工具不要删除重复的逻辑。
- 对于控制信号以外的信号,如复位,置位和时钟使能,请在综合中使用max_fanout。
- 使用可以对扇出执行优化的phys_opt_design。有关更多信息,请参阅(Xilinx答复53986) 。
由于状态机优化导致的时间违规:
- 对状态使用单热编码。这是优化速度的不错选择。
- 如果可能,请使用综合状态机编码工具。
- 减少输入信号的数量并预先解码输入信号。
- 注册输入和输出信号。
- 预解码和注册计数器值。
- 从状态机中删除数据流并创建控制信号以控制数据流。
- 重复状态到许多状态转换的位置,并减少状态方程中的状态数。
- 使用CASE语句而不是IF-ELSE语句。
对长期逻辑链的建议:
- 您可以使用较小的计数器来驱动其他计数器,并将它们级联,以便第一个计数器是第二个计数器的启用。
对逻辑层次的建议:
这适用于逻辑超过总路径延迟的某个百分比的情况,这意味着在定时终点之间存在太多逻辑;必须减少逻辑量以满足时序要求。
要降低逻辑级别,请返回源并尝试以下操作:
- 问题状态机优化建议。
- 使用CASE语句而不是嵌套的IF-ELSE语句。
- 使用3态而不是大型多路复用器(7个或更多输入)。
- 使用创意数学;转移而不是乘以2的倍数。
- 使用解码器而不是比较器。
- 平衡寄存器周围的逻辑
- 带括号的金字塔逻辑而不是串行实现。
- 添加管道寄存器。
- 仅使用IF-THEN-ELSE语句执行以下操作:
- 预解码和注册计数器值。
- 添加一个流水线级别以预解码和注册输入信号
没有回复内容