Vivado综合 - 减少运行时间的策略
描述
使用Vivado Synthesis时,有时需要分析或找到减少与综合相关的运行时间的方法。本文包含几个建议。
解
一些运行时间的改进是以牺牲结果质量为代价的。
情况并非总是如此,但关闭各种优化将改善综合的运行时间:
- 使用“-quick”选项。
使用-quick选项运行Vivado Synthesis将大大减少运行时间,因为执行的优化很少或根本没有。 - 使用“RunTimeOptimized”指令。
RunTimeOptimized指令是另一种减少Vivado Synthesis执行的优化的方法。
“synth_design -help”选项返回以下信息:
执行更少的时序优化并消除一些RTL优化以减少综合运行时间。
当设计具有大的循环迭代时,可以看到运行时间的增加。
诊断这可能很困难,但通常与在综合似乎缓慢的点之前或之后在控制台中报告的逻辑有关。
- 要通过大循环迭代提高运行时性能,可以将循环拆分为更小的循环。
根据需要,可以将一个环制成两个或更多个。
以下是更改循环范围的VHDL示例:
REG_LENGTH:整数:= 10000; -
REG_LENGTH_A:整数:= 5000; - 添加两个泛型来分割循环迭代
REG_LENGTH_B:integer:= 5000); - 添加两个泛型来分割循环迭代--GEN_REGS:我在1到REG_LENGTH生成 - ORIGINAL
GEN_REGS:我在1到REG_LENGTH_A生成
...
GEN_REGS2:我在REG_LENGTH_A到REG_LENGTH_B生成
...
- 还提出了HDL编码样式,以便从循环中获得更好的运行时间。见(赛灵思答案55302)
- 确保没有组合时序循环。
如果设计包含这样的循环,则综合报告将包含以下警告:
警告:[Synth 8-295]发现了定时循环。
- 还有建议的加速约束处理的方法,参见(Xilinx答复56371)
这些包括仅在实现中应用物理约束,以及减少时序约束中使用的通配符的数量。