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

如果文章對你有收穫,歡迎轉發~

Tags: