BRAM的用量为什么会出现小数

  • 2019 年 10 月 31 日
  • 筆記

通过report_utilization可查看设计的资源利用率,而在资源利用率报告中,有时会发现BRAM的Utilization为小数,如下图中的503.50,这是什么原因呢?

实际上,BRAM的利用率是以36Kb的BRAM为计算单位的,而一个36Kb的BRAM是由两个相对独立的18Kb BRAM构成的。从而,一个36Kb的BRAM可以配置为4种模式:2个18Kb RAM;1个18Kb RAM+ 1个18Kb FIFO;1个36Kb RAM;1个36Kb FIFO(点击这里复习Block RAM的基本结构

另外,资源利用率是通过Tcl脚本生成的。我们也可以自己写Tcl脚本生成资源利用率。这里就以BRAM为例。BRAM的4种配置方式对应的REF_NAME分别为RAMB18E2、FIFO18E2、RAMB36E2和FIFO36E2。从而,可通过如下命令找到相应的资源用量:

set ram36_num [llength [get_cells -hier

-filter "REF_NAME == RAMB36E2”]]

set ram18_num [llength [get_cells -hier

-filter "REF_NAME == RAMB18E2”]]

set fifo36_num [llength [get_cells -hier

-filter "REF_NAME == FIFO36E2”]]

set fifo18_num [llength [get_cells -hier

-filter "REF_NAME == FIFO18E2”]]

那么整个设计的BRAM用量即为

expr $ram36_num + $fifo36_num +

($ram18_num+ $fifo18_num) / 2.0

最后一条Tcl命令中出现了/2.0的操作,验证了出现小数确地说是出现.5。还需要注意一点,这里是2.0,而不能写成2,为什么?简单说,下面这两条Tcl命令结果是不一样的。

expr 7/2

expr 7/2.0

如果文章对你有收获,欢迎转发~