UPGRADE YOUR BROWSER

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

Description

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?

Solution

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:

all_rams

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 Created 01/10/2014
Last Updated 02/13/2014
Status Active
Type General Article
Tools
  • Vivado Design Suite