我正在用verilog合成一些乘法单元,我想知道如果您在乘法时使用booth编码实现自己的CSA,或者如果您只使用*符号并让合成工具占用,您是否通常会在面积/功率节省方面获得更好的结果为你解决问题?
谢谢!
我正在用verilog合成一些乘法单元,我想知道如果您在乘法时使用booth编码实现自己的CSA,或者如果您只使用*符号并让合成工具占用,您是否通常会在面积/功率节省方面获得更好的结果为你解决问题?
谢谢!
一般来说,我倾向于信任我使用的编译器工具,只要它们符合我的时间和面积预算,就不会担心结果。
也就是说,对于需要快速运行的乘法器,我发现如果我创建一个包含乘法*
(在弹出到顶层综合之前综合它。如果您尝试一次执行所有操作,似乎编译器会被其他时序路径“分心”,因此将其专注于您知道会很棘手的乘数似乎会有所帮助。
我同意@Marty,因为我会使用*
. 我之前构建了自己的低功耗加法器结构,然后在设计转移过程/必须以更高频率运行时遇到问题。像这样的硬编码架构从代码中移除了相当多的可移植性。
在试验中使用指令可以很好地查看架构的不同大小(面积),但我将决定留给综合工具,以根据时序约束和可用面积做出最佳调用。我不确定默认情况下这些工具对电源的感知能力如何。以前我们最终获得了一个额外的许可证,它为合成增加了很多功率感知知识。
您已将此问题标记为“FPGA”。如果您的目标设备是 FPGA,那么建议使用 FPGA 的乘法器宏功能(不记得 Xilinx 近来如何称呼它。)
这样,您将确保该工具利用您打算使用的任何内部硬件结构,而与合成器工具无关。您一定会获得从时间和延迟的角度来看也是可预测的最佳解决方案。
此外,您不必针对所有极端情况对其进行测试,如果您正在执行有符号乘法以及您遵循什么样的编码准则,这一点尤其重要。