首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

如何计算门数?[转帖]

如何计算门数?[转帖]

问:请问各位高手,如何计算你的片子用的门数呀?

回答1:一般来说,FPGA/CPLD说的是用了多少CLB或slice,具体的门数只是个估计值,我是这么看的。在ISE中实现后,会有Map Report和Post P&R Static Timing Report,你只要看Map Report中的信息就可以了,比如我的设计给出的Map Report是这样的:
Number of errors:      0
Number of warnings:    5
Logic Utilization:
  Number of Slice Flip Flops:       1,278 out of   3,072   41%
  Number of 4 input LUTs:           1,172 out of   3,072   38%
Logic Distribution:
  Number of occupied Slices:          959 out of   1,536   62%
  Number of Slices containing only related logic:     959 out of     959  100%
  Number of Slices containing unrelated logic:          0 out of     959    0%
        *See NOTES below for an explanation of the effects of unrelated logic
Total Number 4 input LUTs:          1,237 out of   3,072   40%
  Number used as logic:             1,172
  Number used as a route-thru:         65
  Number of bonded IOBs:               40 out of      92   43%
    IOB Flip Flops:                     1
  Number of Block RAMs:                 6 out of      24   25%
  Number of GCLKs:                      3 out of      16   18%
Total equivalent gate count for design:  414,573  //这就是门数
Additional JTAG gate count for IOBs:  1,920
Peak Memory Usage:  86 MB

我不是高手
回答二: FPGA等效门数的计算方法有两种,一是把FPGA基本单元(如LUT+FF,ESB/BRAM)和实现相同功能的标准门阵列比较,门阵列中包含的门数即为该FPGA基本单元的等效门数,然后乘以基本单元的数目就可以得到FPGA门数估计值;二是分别用FPGA和标准门阵列实现相同的功能,从中统计出FPGA的等效门数,这种方法比较多的依赖于经验数据。 对于第一种方法,FPGA包括LUT/FF/RAM等资源,分析各种资源等效门数时,总原则是等效原则,就是实现相同的功能,在标准门阵列中需要的门数就是FPGA该资源等效门数,例如实现一个带寄存器输出的4输入XOR,在FPGA中需要用一个LUT和1个FF实现,在标准门阵列中一般要用21个与非门实现,于是1个LUT+1个FF等效于21个门。对ESB(BRAM),由于用标准门阵列实 现1bit的RAM时一般需要4个门,因此ESB/BARM 做RAM使用时,1bit等效4个门,对Altera FPGA中一个2048bit的ESB,等效门数为8K。光靠这些数据还不能比较准确地计算出FPGA的等效门数。因为这只是一种简单情况,实际情况要复杂很多。 例如,如果实现的是带寄存器输出地2输入XOR,FPGA也要用1个LUT+FF,而标准门阵列只需要8个NAND,于是1个LUT+1个FF只等效于8个门。同时特定功能的实现,在不同的标准门阵列系列中需要的门数也不一样,因此等效门的计算只能是个大概的数值。 也就是说对于某一具体型号FPGA的门数估计,与FPGA资源的用途有密切关系。LUT用于实现2输入XOR和4输入XOR等效门数不一样(分别为1和13);FF不带异步清零、复位、时钟使能和带这些端口的等效门数不同(分别为8和13);ESB(BRAM)做RAM使用时,1bit等效4个门,1个2048bit的BRAM等效8K门,但是做查找表使用时可能只相当于不到200门。因此估计FPGA的等效门数需要做更细致的分析。 图1显示了EP20K系列的等效门数等参数,下面以EP20K1000E为例详细说明FPGA等效门数的估计方法。 (1)计算逻辑阵列的等效门数:估算EP20K1000E的门数时,把FPGA特定资源和LCA300K标准逻辑阵列的门数(LSI LCA300K Data Book)比较,可以对FPGA等效门做出估计。FPGA一个LUT+FF等效门数计算如图2所示 即LUT+FF等效于8~21个门,上限和下限分别由实现简单函数、复杂函数分别界定。 APEX20K的等效门数也可以根据经验数据获得,把超过100个针对4输入LUT的设计用FPGA实现,同时用LCA300K gate arrays和Design Compiler实现,比较相同的设计FPGA所用的LE数目和LCA300K所用的门数可知,每个LE相当于12个门。EP20K1000E有38400个LE,于是相当于46万门。 (2)计算ESB的等效门数 RAM中一个bit所需要的门数与RAM的体系结构、工艺、厂商等有关,一般而言,1bit相当于4个门,Altera也采用这个标准,这样可以方便地估计ESB等效门数。 计算ESB等效门数也可以采用和LSI LCA300K比较的方法,即通过与实现相同容量RAM在LCA300K所用的门数相比较,从而得到ESB的每一bit相当于多少门,从而计算出ESB的等效门数,参考图3。 从上表可见,4gates/bit是一个比较合适的估计,于是EP20K1000E的ESB等效门数为160 ESBs X 2,048 bits per ESB X 4 gates per bit = 1,310,720 gates,即约为130万门。 总而言之,对EP20K1000E,LUT+FF等效门数约为46万(经验数值),ESB全用作RAM时等效门数约为130万,所以最大系统门数为170万。 结论:FPGA等效门数估计方法可以是把FPGA资源基本单元(如LUT+FF,ESB)和实现相同功能的标准门阵列相比得到FPGA基本单元等效的门数,然后乘以单元的个数得到整个FPGA等效门数。也可以是实现很多设计,和用标准门阵列相比,从中统计出等效门数。FPGA的等效门数估计一般分为LUT+FF和ESB(BRAM)两部分,LUT+FF等效于8~21个门,典型值为12;ESB做RAM使用时,一般相当于4门/bit,此时估计出的门数最多,如果ESB做乘积项/LUT则等效门数大大减小,例如对EP20K1000E,前者为130万,后者为2万不知道,你们能不能看懂,看懂的在解释一下.

[此贴子已经被作者于2005-11-22 16:41:08编辑过]

我不是高手
不知道在map report 中的等效门数是怎么算出来的!我用V4_lx200 和V2pro_6000实现的两个不同的设计。大小相差很多。但是map report 中报出来的却几乎一样!LX200和V2pro6000相差可是数倍啊!请高人指点
Target Device  : xc4vlx200
Target Package : ff1513
Target Speed   : -10
Mapper Version : virtex4 -- $Revision: 1.26.6.4 $
Mapped Date    : Wed Nov 23 15:49:01 2005

Design Summary
--------------
Number of errors:      0
Number of warnings:   14
Logic Utilization:
  Total Number Slice Registers:    28,199 out of 178,176   15%
    Number used as Flip Flops:                28,198
    Number used as Latches:                        1
  Number of 4 input LUTs:          87,920 out of 178,176   49%
Logic Distribution:
  Number of occupied Slices:                       55,530 out of  89,088   62%
    Number of Slices containing only related logic:  55,530 out of  55,530  100%
    Number of Slices containing unrelated logic:          0 out of  55,530    0%
      *See NOTES below for an explanation of the effects of unrelated logic
Total Number 4 input LUTs:         96,284 out of 178,176   54%
  Number used as logic:             87,920
  Number used as a route-thru:       1,258
  Number used as 16x1 ROMs:            732
  Number used as Shift registers:    6,374
  Number of bonded IOBs:              105 out of     960   10%
  Number of BUFG/BUFGCTRLs:             7 out of      32   21%
    Number used as BUFGs:                4
    Number used as BUFGCTRLs:            3
  Number of DSP48s:                    15 out of      96   15%
  Number of DCM_ADVs:                   1 out of      12    8%

Total equivalent gate count for design:  1,277,705
Additional JTAG gate count for IOBs:  5,040
Peak Memory Usage:  3111 MB

Target Device  : x2v6000
Target Package : ff1517
Target Speed   : -4
Mapper Version : virtex2 -- $Revision: 1.16 $
Mapped Date    : Fri Feb 25 11:02:39 2005

Design Summary
--------------
Number of errors:      0
Number of warnings:    5
Logic Utilization:
  Number of Slice Flip Flops:      18,473 out of  67,584   27%
  Number of 4 input LUTs:          37,297 out of  67,584   55%
Logic Distribution:
  Number of occupied Slices:       24,268 out of  33,792   71%
  Number of Slices containing only related logic:  24,268 out of  24,268  100%
  Number of Slices containing unrelated logic:          0 out of  24,268    0%
        *See NOTES below for an explanation of the effects of unrelated logic
Total Number 4 input LUTs:         39,690 out of  67,584   58%
  Number used as logic:            37,297
  Number used as a route-thru:      2,393

  Number of bonded IOBs:              285 out of   1,104   25%
    IOB Flip Flops:                   179
  Number of Block RAMs:                 9 out of     144    6%
  Number of MULT18X18s:                31 out of     144   21%
  Number of GCLKs:                     15 out of      16   93%

Total equivalent gate count for design:  1,150,800
Additional JTAG gate count for IOBs:  13,680
Peak Memory Usage:  522 MB
呵呵!奇怪啊!我也想知道答案!
gate count一般用synthesis的tool来作吧。如果map到了FPGA,就总是一个估计值了。
返回列表