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
如果文章對你有收穫,歡迎轉發~

