优化fpga实现的管道吞吐量的最佳实践是什么?

时间:2011-04-28 02:42:22

标签: vhdl verilog fpga hdl system-verilog

例如,如何充分利用重定时和/或c-slow来充分利用给定的管道。

通过重新定时,一些模块通过将移位寄存器置于输入(正向寄存器平衡)上获得更好的结果,而其他模块在输出上使用移位寄存器(向后寄存器平衡)时效果更好。

现在我使用以下方法:

  • 代码hdl(在verilog中)
  • 创建时间约束 具体模块
  • 合成,地图,地点和路线(使用 ISE 13.1)
  • 看帖子的地方&路线时间 对于要改进的模块,以及 最大逻辑电平数。
  • 取这个逻辑电平,并且 对这个数字进行有根据的猜测 人字拖鞋插入。
  • 插入触发器,启用寄存器 平衡,希望最好的

目前,这种方法很受欢迎。小姐。有时它会得到相当不错的结果,有时它会变废话。那么,提高这种重定时成功率的好方法是什么呢?

是否有任何工具可以帮助解决这个问题?此外,我们非常感谢链接,论文和书籍推荐。

2 个答案:

答案 0 :(得分:4)

听起来你有正确的想法。基于工具的重新定时可能有点昙花一现。有时候将额外的2或3个FF放在你认为好的之上会有所帮助。

另一方面,当我需要将性能提升到极限时,我必须手动平衡管道。这可能是一个正确的痛苦,不得不将你的可读性很好的HDL代码分成可怕的显式逻辑和寄存器 - 但有时我发现它只需要完成:(需要很多评论和一个非常好的测试平台,以确保你避风港'打破了它!

最后,有一个“中途宿舍”。如果我查看具有最多逻辑级别的逻辑路径并仔细考虑代码,我经常会发现它只是一小段代码(可能只有一行)。这可以被拉出而不会“严重”损害模块其余部分的可读性。有时将该代码拉入自己的实体并将额外的触发器放在该实体中可以使自动重新平衡器更好地工作。

祝你好运!

答案 1 :(得分:0)

不是一种工具,但您可能会欣赏我关于高性能FPGA设计艺术的博客文章。 http://www.fpgacpu.org/log/aug02.html#art

快乐的黑客攻击!