如何确定使用最多资源和面积的FPGA设计区域?


11

我正在做一个大型FPGA设计,并且我非常接近当前使用的FPGA的资源限制,即CSG225封装中的Xilinx LX16。

该设计几乎也已经完成,但是目前它已不再适合FPGA。我可以关闭零件使其适合,但是我需要减少资源使用量才能完成设计并使其符合时序和尺寸要求。

我想知道我们的报告中是否有任何工具可以帮助我确定设计中哪些部分消耗的资源最多。我的设计未分区,而是划分为大约十二个或更多的VHDL模块。

Xilinx时序报告非常棒,但是现在我需要知道在节省空间方面我能得到最好的回报。

我也很难告诉我我将要用尽哪种类型的资源,或对那些资源有什么影响。

另一个烦人的是,随着设计的扩大,用于满足时序要求的组件开始出现故障,因为它们的放置不再理想。

当前,我使用“放置后和路线静态”时序报告,并使用SmartXplorer。我正在使用设计策略来优化时序。

在关闭我的设计的一部分以使其适合之后,下面是一些结果:

切片寄存器利用率:42%切片LUT利用率:96%完全使用的LUT-FF对的数量:38%这是否意味着我对寄存器比较轻,但对门的使用却很繁重?

是否有工具可帮助开发人员针对区域进行优化,或者至少使他们对自己的代码有更深入的了解?

更新: 查看了模块级别的利用率后,我发现我在整个地方都有小的胶水异步fifo,大约占所有LUT的30%。我将它们用作高速总线的跨时钟域胶水。我应该能够消除这些问题,因为时钟紧密相关。(120 MHz输入,通过DCM产生100 MHz和200 MHz)


信号之间似乎有很多相互联系,我相信您可以通过更改优化,资源共享等级别来解决此问题。您正在使用什么工具?ISE还是Vivado?
FarhadA 2013年

1
我使用的是ISE(Vivado不支持Spartan-6),我在Xilinx论坛上交叉发布了此文件,并说要打开“详细地图报告”。我这样做了,*。mrp文件现在包含第13节-层次结构的利用。数据格式化后,我将发布该数据。
Marcus10110 2013年

Answers:


5

我将这个问题交叉发布在Xilinx论坛上,网址为http : //forums.xilinx.com/t5/Implementation/How-to-determine-what-part-of-the-design-consumes-the-most/td-p / 393247

这个答案主要基于那里的评论。感谢Deepika,Sikta和Gabor。

首先,在地图处理属性(详细信息)中启用“生成详细的MAP报告”。

然后,打开“设计摘要”,然后导航到“模块级别的利用率”。这是完整的层次结构,显示了排他性和包容性设计利用率。

每行将显示一个数字对,例如0/5392。这意味着该模块包含该特定元素的零,但该模块及其所有子模块总共包含5392个元素。

这是我的输出(部分扩展) 使用报告

当致力于减小尺寸时,Gabor建议在合成器工具中切换到更大的FPGA,以便即使它太大而无法容纳当前的FPGA,它也可以完全映射,这将使工具运行更快。


3

看起来您正在用尽几乎所有的逻辑资源,而仅使用了一半的寄存器。看来您需要弄清楚所有LUT都被吞噬了。有一些方法可以优化特定的组件,并使它们的空间利用率更高-例如RAM,移位寄存器和状态机。查看合成器生成的.log文件。它会告诉您要推断出哪种成分。确保它正确推断了组件。如果不是,则可能不会生成特别有效的网表。您可以通过查看综合日志文件了解很多信息。可能需要对代码进行一些小的更改,以允许合成器推断各种组件,因此请查看一些模板的合成器手册。您可能需要切换合成器以优化面积而不是速度。另外,请检查并确保没有关闭任何推断设置。我曾经尝试为Virtex 6 HXT 565(354,240个6输入LUT /双FF对,32个)消耗40%的Spartan 3E 500(9,312个4输入LUT / FF对,5.6 KB块RAM)合成一个设计组件。 MB块RAM)。Xilinx标准杆需要7个小时才能完成,并占用了大约40%的芯片。?!?!!?!?事实证明,推断块RAM已关闭,合成器将数KB RAM转换为LUT。从来没有最有效的决定。更改设置后,占用了大约1%的芯片。去搞清楚。适用于Virtex 6 HXT 565的312个4输入LUT / FF对,5.6 KB块RAM)(354,240个6输入LUT /双重FF对,32 MB块RAM)。Xilinx标准杆需要7个小时才能完成,并占用了大约40%的芯片。?!?!!?!?事实证明,推断块RAM已关闭,合成器将数KB RAM转换为LUT。从来没有最有效的决定。更改设置后,占用了大约1%的芯片。去搞清楚。适用于Virtex 6 HXT 565的312个4输入LUT / FF对,5.6 KB块RAM)(354,240个6输入LUT /双重FF对,32 MB块RAM)。Xilinx标准杆需要7个小时才能完成,并占用了大约40%的芯片。?!?!!?!?事实证明,推断块RAM已关闭,合成器将数KB RAM转换为LUT。从来没有最有效的决定。更改设置后,占用了大约1%的芯片。去搞清楚。


3

值得从工具输出中发布整个“资源使用情况”部分。

您是否使用了所有的Block RAM?如果域受到足够的限制,通常可以用等效的RAM查找表替换逻辑/数学函数,并且它们的复杂性足以值得进行预先计算。

除了内存的推断外,乘法器也是如此。有时,与推荐的实例化模板的微小偏差可能会使推断到DSP48A单元的乘法器丢失。

如果使用PCIe控制器,是否可以减少为TLP有效负载保留的总缓冲区空间或最大TLP数据包大小?这样可以以吞吐量/总带宽为代价减少IP内核的RAM /逻辑使用量。

使用(Altera)Quartus,您可以在设计层次结构视图中多选项目,并在其中查看P&R区域后的使用颜色编码/群集。这样可以直观地了解设计模块的相对用法。


谢谢。我将硬IP宏用于乘法器,并使用CoreGen制作FIFO,尽管我确实选择了一些小型fifo以使用分布式RAM(而不是Block RAM)。我会研究它们的用法。
Marcus10110 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.