我通过计算组件所需的触发器数量来估计我的资源使用情况。例如,当我估计ins_controldata (简单计数器和一些I/O)时,我使用32个触发器。当我查看这个组件的详细map报告,第13节-按层次划分的利用率时,我看到我的估计接近于此组件使用的切片寄存器的数量。每个切片有4个LUT和8个触发器。
现在,当我对我的有限状态机inst_xtm640执行同样的操作时,我估计我的触发器使用率约为43 (包括6个状态所需的3个触发器)。当我查看map报告时,我发现我的估计或多或少是正确的(+-10%误差)。但是所需的片的数量远远高于片寄存器和LUT所需的片的数量。当您查看使用的LUT时,它是40,它应该只有20左右。
为什么对此组件使用额外的切片?它是为了速度优化吗?
+----------------------------------------------------------------------------------+
| Module | Partition | Slices* | Slice Reg | LUTs |
+----------------------------------------------------------------------------------+
| ++inst_controldata | | 6/6 | 35/35 | 20/20 |
| +++inst_xtm640 | | 40/40 | 57/57 | 88/88 |
+----------------------------------------------------------------------------------+编辑:我想我自己找到了它,但欢迎其他输入:
并不是所有的切片都被充分利用。所以这并不意味着如果我使用88个LUTS和57个切片寄存器,我将使用22个切片。一些切片没有被充分利用,因此这会使切片使用率更高。此外,还将使用额外的切片来满足时间约束。
发布于 2013-08-15 00:02:33
您的编辑确实是正确的。合成器有时是一个非常不可预测的东西,特别是你的约束是什么,你优化什么是获得结果的关键。
如果你对大小(面积)进行优化,你的估计可能会更接近。你的系统越大越复杂,这对你的最终地点和路线的影响就越大。这就是为什么,当你看你的小例子时,结果会更接近。
这也是为什么你不应该“填满”你的FPGA的原因。剩下的空间越大,优化器关闭计时的效率就越高。这当然是对资源的“浪费”,但可能会带来更好的结果。
我收到的一个关于FPGA布局的建议是,不要深入到合成器没有操作空间的细节。例如,不要用逻辑做触发器,而要用语言的抽象来代替。只要你知道结果是如何得到的,让合成器做它的工作,找出什么是必要的,以及如何优化它,它通常会做得更好。
\Paul
发布于 2013-09-30 02:58:32
在Xilinx工具链中,将LUT和寄存器分配给特定片的构建步骤称为"map“。默认情况下,尤其是当您的设计只占用少量设备资源时,map将不会尝试将尽可能多的LUT和寄存器打包到一个片中。这就是为什么您会看到比预期更高的切片计数。
您可以通过将-c (打包切片)选项设置为1来强制map更积极地打包切片:
-c封装因子
packfactor (对于非零值)是目标切片密度百分比。
https://stackoverflow.com/questions/18205688
复制相似问题