report_ram_utilization - 2022.1 English

Vivado Design Suite Tcl Command Reference Guide (UG835)

Document ID
Release Date
2022.1 English

Report configuration about RAMs in design


report_ram_utilization [‑append] [‑file <arg>] [‑csv <arg>]
    [‑return_string] [‑cells <args>] [‑include_path_info] [‑include_lutram]
    [‑quiet] [‑verbose]




Name Description
[-append] Append to existing file
[-file] Filename to output results to. (send output to console if -file is not used)
[-csv] Write detailed tables to the CSV filename specified
[-return_string] return report as string
[-cells] Limits the reporting to only those memory arrays that are contained within the specified cells.
[-include_path_info] Adds path info to the RAM inputs/outputs
[-include_lutram] Adds LUTRAMs to the report
[-quiet] Ignore command errors
[-verbose] Suspend message limits during command execution




Reports RAM usage in the current design at any stage after synthesis. It is recommended to run this report after optimizations in opt_design have been run. The report is returned to the standard output, unless the -file or -return_string arguments are used.

The report details the following tables:
  • Summary: The Summary table shows the utilization by RAM type, broken down into URAM, Block RAM and LUTRAM. For each RAM type, it is broken down into the individual primitives. Also detailed is the inferred primitive %. If using a synthesis tool other than Vivado® Synthesis or instantiation of primitives, then rams will be reported under instantiated primitives.

    The information in the summary can be used to determine if there are imbalances in the utilization of different types of RAMs. Based on the summary, a design might benefit from retargeting heavily used primitives to lesser used ones at the cost of being less efficient.

    Additionally LUTRAM implementation can be evaluated. LUTRAM primitives vary in their efficiency of Bits/LUT. For example, a RAM32M16 uses 8 LUTs and can have up to 14 data bits. Using RAM32X1D primitives, 8 LUTs yields a maximum of 8 bits when LUT combined.

  • Memory Description: The Memory Description table gives an RTL look at the inferred memories. It refers to memories that are inferred directly or indirectly using XPMs. The table is ordered by the total number of bits in the memory array. Items reported are memory type and mapping.

    The mapping format is <report>:<physical>:<depth>x<width>

The following tables are repeated for inferred and instantiated primitives.Collectively they are refered to as the detailed tables.
  • Memory Utilization: The Memory Utilization table details how each memory array is mapped to primitives. Also provided is information on how efficient the mapping is and whether the mapping is limited by depth or width.
  • Memory Performance: The Memory Performance table details performance aspects of the RAM. It includes information whether the output register is used, cascading has been used. If the -include_path_info switch is specified there is extra information on the worst path from each pin listed.
  • Memory Power: The Memory Power table details what power aspects of the RAM have been used. It includes information on cascading and whether the enable pin is tied to POWER or a signal.

This command returns the requested report to the Tcl console, to a file, or as a string; or returns an error if it fails.


-file <arg> - (Optional) Write the report into the specified file. Send output to console if not specified. This command will overwrite any files of the same name without warning.
Note: If the path is not specified as part of the file name, the file will be written into the current working directory, or the directory from which the tool was launched.

-csv <arg> - (Optional) Write the report into the specified CSV file.

-append - (Optional) Append the output of the command to the specified file rather than overwriting it.
Note: The -append option is only valid for the text report specified using the -file option and not the CSV file.
-return_string - (Optional) Directs the output to a Tcl string rather than to the standard output. The Tcl string can be captured by a variable definition and parsed or otherwise processed.
Note: This argument cannot be used with the -file option.

-cells <arg> - (Optional) Report the RAM resources utilized by one or more hierarchical cells in the current design. The cells must be specified as objects, using get_cells, rather than by name.

-include_lutram - (Optional) Include LUTRAMs in the detailed tables. By default, only BlockRAMs and UltraRAMs are reported.

-include_path_info - (Optional) Include a shorthand representation of the worst case timing path from the given pins under the Memory Performance table of the report.
Note: This option can add significant runtime to the report.
-quiet - (Optional) Execute the command quietly, returning no messages from the command. The command also returns TCL_OK regardless of any errors encountered during execution.
Note: Any errors encountered on the command-line, while launching the command, will be returned. Only errors occurring inside the command will be trapped.
-verbose - (Optional) Temporarily override any message limits and return all messages from this command.
Note: Message limits can be defined with the set_msg_config command.


The following example provides a full report of the inferred and non-inferred BlockRAM and UltraRAM resources and writes the results to both the specified text and CSV files:
report_ram_utilization -csv ./ram_util.csv -file ./ram_util.txt
The following example provides a full report of the inferred and non-inferred BlockRAM, UltraRAM and LUTRAM resources and writes the results to the specified CSV file:
report_ram_utilization -csv ./ram_util.csv -include_lutram