原创 如何分析FPGA的片上资源使用情况

2011-2-28 14:24 5477 17 24 分类: FPGA/CPLD
        在维护遗留代码(4)——时序问题初露端倪这篇文章中,我提到“第三方开发的设计中,组合逻辑与时序逻辑的比例为2.6:1”,这是造成该设计时序收敛困难的原因之一。mengyudn朋友很细心,对这个数据的来历产生了疑问。下面我就简单地介绍一下如何分析FPGA芯片上的组合逻辑(LUT)和时序逻辑(REG)的利用率。 riple

一、如何得到LUT与REG的使用比例 riple
        我们先看一个FPGA工程的编译结果报告:
05e594c7-12ae-4868-a6e6-17ccc843da8d.jpg
        在这个报告中,我们可以看到如下信息:
        Total logic elements 24071/24624(98%): 该芯片中共有24624个LE资源,其中的98%在这个工程的这次编译中得到了使用。 riple
        Total combinational functions 21612/24624(88%): 该芯片的24624个LE资源中,88%用于实现组合逻辑。 riple
        Dedicated logic registers 8858/24624(36%): 该芯片的24624个LE资源中,36%用于实现寄存器,即时序逻辑。 riple
        就是从上述信息中,我得到了组合逻辑与时序逻辑的使用比例——21612/8858 = 2.4:1。 riple

二、一份更详细的资源利用率报告 riple
        在这个报告中,有一点可能会令人困惑:为什么Total combinational functions与Dedicated logic registers之和(30470)大于Total logic elements(24071),甚至大于该芯片的总资源(24624)。我们再来看一份更详细的资源使用报告——Fitter Resource Usage Summary:
661b729e-bf42-4a34-b008-1b9ccfb0f327.jpg
        这份报告包含很多信息,在这里我们只需要关心Total logic elements一项。Total logic elements 24071/24624(98%)由三种使用情况不同的LE资源组成:仅用于实现组合逻辑的LE(Combinational with no register 15213),仅用于实现时序逻辑的LE(Register only 2459),同时用于实现组合逻辑和时序逻辑的LE(Combinational with a register 6399)。 riple

三、从Resource Property Editor看LE的使用情况 riple
        在进一步分析这些数据之前,我们有必要回顾一下FPGA的基本组成元素LE(Logic Element)的结构和功能。以Altera的Cyclone III系列FPGA芯片为例,其LE内部结构如下图所示:
700f5d93-95f2-4129-a33b-4c3b67b6ce15.jpg
        这个LE同时用于实现组合逻辑和时序逻辑,其中蓝色部分为组合逻辑(一个4输入LUT),其中黄色高亮部分为时序逻辑(一个D触发器)。 riple
        我们再来看一个更有趣的LE:
6bda5f5a-29c9-457d-81af-59fb721b96d2.JPG
        这个LE也同时用于实现组合逻辑和时序逻辑,与上一幅图不同的地方在于,这里的组合逻辑(4输入LUT)与时序逻辑(REG)并没有连接关系。组合逻辑从COMBOUT直接输出,时序逻辑从REGOUT输出。这种互不相关的组合逻辑与时序逻辑共用同一个LE的情况很特殊,这是采用了Register Packing资源优化技术之后的实现方式。如果没有采用这一资源优化技术,就要用两个LE来分别实现相应的组合逻辑和时序逻辑。 riple
        明白了上面这两幅图,大家也能由此类推,想象出仅用于实现组合逻辑的LE(Combinational with no register)和仅用于实现时序逻辑的LE(Register only)该是什么样子。 riple

四、“数字终于对(凑)上了!” riple
        我们回到前面关于资源利用率分析的部分。有了上面介绍的知识,大家应该能够把资源利用率报告中三种使用情况不同的LE区分开了。 riple
        我们把“同时用于实现组合逻辑和时序逻辑的LE(6399)”分别加到“仅用于实现组合逻辑的LE(15213)”和“仅用于实现时序逻辑的LE(2459)”上面,
就可以得到“全部组合逻辑”(Total combinational functions = 6399 + 15213 = 21612)和“全部寄存器”(Dedicated logic registers =
6399 + 2459 = 8858)两个数值了。这两个数值就是第一幅图中关于资源利用率的汇总报告结果,它们的比例恰好就是2.4:1。 riple
        由于6399这个数字被使用了两次,所以我们最初关于“Total combinational functions与Dedicated logic registers之和(30470 = (6399 + 15213) + (6399 + 2459))大于Total logic elements(24071 = 6399 + 15213 + 2459)”的困惑也得到了解答。 riple

五、总结 riple
        由于FPGA设计中用到的组合逻辑与时序逻辑的数量不均衡,部分LE会仅用于实现组合逻辑或时序逻辑;进一步,由于布局位置的限制,单独实现组合逻辑或时序逻辑的两个LE可能不能合并到一个LE中实现。所以,在资源利用率报告中会出现三种使用情况不同的LE。 riple
        由于过长的组合逻辑链(级联的LUT)会引入较大的延时,而插入Register(时序逻辑)能够把一条较长的组合逻辑链分割成几条较短的组合逻辑链,有效地缩短关键路径和次关键路径的长度,进而提高FPGA设计的整体时序性能,所以组合逻辑与时序逻辑的使用比例可以作为评价FPGA设计时序性能的一个辅助参数。 riple
        过于复杂的组合逻辑也会占用多个LE。我们在编写HDL代码的时候,不能单独把减少Register的使用量作为节省资源的手段,而应该兼顾组合逻辑与时序逻辑,根据目标PLD器件的底层结构,编写组合逻辑和时序逻辑比例符合PLD器件资源比例的代码。 riple


相关链接:
what is register packing?
用之有道—如何用尽FPGA芯片的所有资源?

PARTNER CONTENT

文章评论7条评论)

登录后参与讨论

用户1769659 2014-6-25 08:57

分析的很好,赞一个!

用户386445 2012-3-14 13:29

太好了~~~

用户412143 2011-11-14 23:10

一直没弄清楚,太感谢了!

用户1395232 2010-1-16 10:32

拜读 实践是检验真理的唯一标准:)

用户1303485 2010-1-6 23:22

谢谢riple详细的解释,让我学到了register packing:) 你解释清楚了quartus报告的含义! 有关reg和lut实际使用比例的问题,确实比较难回答,只能说是个经验值。即使有register packing,想使最终比例为1:1我估计还比较困难。 但看起来好像总是lut的比例要高些。所以,多分几级流水最终不会使逻辑资源膨胀。 有关两个沿时序分析,我找时间把之前xinlix的一个ppt中介绍发来看看。不过总体说时序分析是个比较复杂的问题,尤其是时钟关系比较复杂的逻辑,想分析全面确实很麻烦。

ilove314_323192455 2010-1-6 13:48

好文章,但是实际设计中不可能也不一定非得要榨干每一个可用的资源,呵呵

coyoo 2010-1-6 10:14

要知道一个LE由一个4输入查找表外加2个(或者1个)寄存器组成。
相关推荐阅读
ash_riple_768180695 2015-12-18 11:06
学习示例程序:FPGA快速系统原型设计--敏捷实践
        学习与开发板配套的示例程序,是敏捷实践的起点。示例程序是厂商针对开发板上提供的硬件资源和接口量身定做的工程,可以展示其FPGA芯片的功能和性能特点。从示例程序入手最大的好处就是:示...
ash_riple_768180695 2015-11-03 16:46
开发板选取:FPGA快速系统原型设计--敏捷实践
    既然是“实践”,就不能只谈编码和仿真,必须要上板运行、调试。这个虚拟项目的目标是实现一块兼容Intel82574L以太网控制器的千兆网卡,需要运行在一块具备PCIe接口和10/100/10...
ash_riple_768180695 2015-10-22 12:41
开篇:FPGA快速系统原型设计--敏捷实践
    虽然借用了 “系统原型开发”的标题,本系列文章将围绕FPGA IP级别的开发这个主题展开,如果可能的话,将扩展至FPGA System级别的开发。     先上一篇PPT:RSPwFP...
ash_riple_768180695 2013-08-26 10:21
学习SystemVerilog(二)——学习它的理由
    学习SystemVerilog的理由也很多,我在阅读SystemVerilog for Design 和 SystemVerilog for Verification两本书前言的过程中,总...
ash_riple_768180695 2013-08-26 10:19
学习SystemVerilog(一)——不学习它的理由
    想要学习SystemVerilog已经很久了。曾经尝试通过Accellera网站上给出的LRM学习,怎奈内容众多,找不出入手点和重点,只能望而却步。虽然手头有三本SystemVerilog...
ash_riple_768180695 2011-06-26 23:20
Hardware-Assisted IEEE1588 Implementation Analysis
06/18/11 11:00:05 PM         最近一段时间在研究IEEE1588-2008精确时间同步协议(PTP)。该协议可以在软件中实现,如果需要提高时间同步...
EE直播间
更多
我要评论
7
17
关闭 站长推荐上一条 /3 下一条