We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 59065

Vivado - Helpful hints related to getting information about RAM utilization in a design


I would like to get information about the RAM used in my Vivado design.

  • resources with distributive memory
  • instance name
  • type of memory (RAM32M, RAM32X1D, RAM32X1S, RAM64, etc.)

By default, the Vivado tool reports limited details for the RAM.

Is there a way to get more information?


Here are some examples of how to get more imformation about the RAM in a design.

Getting a list of all BRAMS:

set my_rams [get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ BMEM.bram.* }]

Counting the length of the list:

llength $my_rams

Reporting out the properties of all the brams:

foreach test $my_rams {report_property -all [get_cells $test]}

Creating a set of brams with a specific attribute:

set no_doa_reg [get_cells -hierarchical -filter { PRIMITIVE_TYPE == BMEM.bram.RAMB36E1 && DOA_REG == "FALSE" }]

Creating the specific sets based on properties and then getting the list length may be more of what you are interested in:

show_objects -name find_3 [get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ DMEM.*.* } ]

To get the width and the height, you could go from the RAM cells to the sites and use the Site properties, or maybe even another step from Sites to Tiles:

set site [get_sites -of_objects  [get_cells <switches>]]
report_property -all $site
set tile [get_tiles -of_objects  $site]
report_property -all $tile

From the site and tile properties you can get the X and Y RPM and regular coordinates as properties directly.

To get all of the rams in the open design:


To see the carry chain sizes:

report_carry_chains -max_chains 100

To get distributed memory:

get_cells -hierarchical -filter { PRIMITIVE_GROUP == DMEM }
get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ DMEM.*.* }

To get block memory:

get_cells -hierarchical -filter { PRIMITIVE_GROUP == BMEM }
get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ BMEM.*.* }

Parent property can be used to get the instance name:

PARENT    cell    true    true    cpuEngine/cpu_dbg_dat_i/buffer_fifo

Parent filter can be used to get all of the children that make that instance:

get_cells -hierarchical filter {PARENT == cpuEngine/cpu_dbg_dat_i/buffer_fifo}

To get the type of memory (or PRIMITIVE_TYPE):

get_property REF_NAME [get_cells <switches>]

Check DO*_REG is TRUE to see if an output is registered:

get_property DOA_REG [get_cells <bram_switches>]
AR# 59065
Date 02/13/2014
Status Active
Type General Article
  • Vivado Design Suite