|
楼主 |
发表于 2012-1-28 22:15:38
|
显示全部楼层
估计我看错书了
另外找到一篇帖子:
FPGA的最终面积不但和要实现的功能有关,而且和不同人的不同设计方法有关,比如同样一个buffer,用block memory 和 coregen 的方法可能面积很省,但是如果直接用RTL编码产生,而且不幸没有综合成blockmem而是综合成了一大堆的寄存器和LUT则面积会很大,大到不可想象(我有个这样的经历)。所以要在设计前就估计出面积不太可行。除非公司开发的产品有很强的延续性,那样的话可以根据原来的项目进行近似的推算,这是可能的。
那么在ISE里面如何看到自己设计的部分的面积呢。
1. 在ISE项目中打开“view design summary”。
2. 在右侧design summary窗口中选择“detailed reports”中的“map report”。
3. 出现如下所示的内容。我们分析一下。
Design Summary
--------------
Logic Utilization:
1. FPGA资源利用率
Number of Slice Flip Flops: 11,555 out of 178,176 6%
Slice内部FF寄存器利用率:6%
Number of 4 input LUTs: 21,446 out of 178,176 12%
4输入LUT利用率:12%
Logic Distribution:
2. 被使用的FPGA资源分布情况
Number of occupied Slices: 16,079 out of 89,088 18%
占用的Slice数目:18%。
为什么Slice利用率是18%而上面的LUT利用率是12%呢?简单说明一下。假如一个Slice有两个LUT,片内总共有100个单位的Slice, 也即有200个单位的LUT,那么如果我们的设计使用了24个单元的LUT,而这些LUT分布在18个Slice里面时,恰好就是现在的这种情况了。即 Slice利用率18% (18/100),LUT利用率12%(24/200)。
Number of Slices containing only related logic: 16,079 out of 16,079 100%
Slice里面只有互相相关的逻辑,这种Slice所占比例:100%
Number of Slices containing unrelated logic: 0 out of 16,079 0%
Slice里面有互不相关的逻辑,这种Slice所占比例:0%
*See NOTES below for an explanation of the effects of unrelated logic
Total Number of 4 input LUTs: 25,027 out of 178,176 14%
3. 4输入LUT的利用率:14%
Number used as logic: 21,446
设计用LUT数目:21446
Number used as a route-thru: 787
布线路由用LUT:787
Number used for Dual Port RAMs: 2,596
双端口RAM用LUT:2596
(Two LUTs used per Dual Port RAM)
每个双端口RAM由两个LUT构成
Number used as 16x1 RAMs: 64
用做16x1RAM的LUT:64
Number used as Shift registers: 134
用做shift register的LUT:134
4. 其他
Number of bonded IOBs: 495 out of 960 51%
Number of BUFG/BUFGCTRLs: 8 out of 32 25%
Number used as BUFGs: 8
Number used as BUFGCTRLs: 0
Number of FIFO16/RAMB16s: 19 out of 336 5%
Number used as FIFO16s: 0
Number used as RAMB16s: 19
Number of DCM_ADVs: 2 out of 12 16%
Number of BSCAN_VIRTEX4s: 1 out of 4 25%
Number of RPM macros: 12
5. 等效门数
Total equivalent gate count for design: 1,681,068
这是一个168万门的设计。
Additional JTAG gate count for IOBs: 23,760
附:6. 等效门数的意义
本文在edacn.net发布以后,很多人回帖或者发信给我询问我等效门数的意义。我想这个问题不能一句话说完,就逐一做一下说明吧。
(1). 等效门数是对ASIC实现的大概估计。这里包含了两个意思:一呢是对ASIC实现的估计,也就是说ASIC实现的时候是在168万门左右的数量级;二呢是个大概估计,所以要强调的是等效门数仅供参考,和最后真正的ASIC结果可能会相去甚远,比如可能是100万门,也可能是300万门,甚至我们无法理解的数目。
(2). 等效门数的单位是二输入的NAND和NOR,这一点未经确认,但是有这样的印象,因为在CMOS工艺里面NAND、NOR、NOT和XOR是基本的门结构。
(3). 对ISE是否足够智能要保持怀疑。比如我们的设计中用到了一个BlockMem,ISE在计算等效门的时候可能不会区分这个blockmem是被用作了RAM,ROM,还是异步FIFO。但是这些不同的应用在ASIC的时候,综合出来的结果是不同的。在deepchip ESNUG里贴了这样的内容,可以参考一下(原文见:http://www.deepchip.com/items/0356-05.html):
Frag Virtex ASIC equivalent gates
---------------------------------------------------
4-input LUT 6
4-input ROM 32
3-input LUT na
16x1 RAM 64
32x1 RAM 128
16 Shift Reg LUT 64
CLB flop 8
CLB latch 5
IOB flop 8
IOB latch 5
IOB Sync latch na
TBUF 3
Block RAM 16,384
BSCAN 48
Clk DLL 7,000
F5 MUX 3
F6 MUX 3
MUXCY 3
XORCY 3
(4). ASIC厂商和工艺的不同决定了等效门数只会是个general的参考数。不同的工艺在综合相同结构的时候,产生的门数也会不同,但是ISE的报告里面没有提及这一点,足见这是一个参考用得数据,且不可当真。
(5). 等效门数的意义在于:一、作为增量设计时的参考,评估新模块的大小和在全系统中占有的比例;二、可以用等效门数作为“一阶估计”,预测大致的ASIC规模比如1XXX万门的设计就当作是1000门左右的设计。
最后,切记,等效门数并不等于最后ASIC的门数,而且可能很不等效。 |
|