report_ram_utilization - 2025.2 English - UG835

Vivado Design Suite Tcl Command Reference Guide (UG835)

Document ID
UG835
Release Date
2025-11-20
Version
2025.2 English

Reports RAM usage in the current design at any stage after synthesis. The report is more accurate when you run after completing optimizations in opt_design.

If you do not specify the -file, -csv, or -return_string arguments, the command generates the report in the standard output.

The report detail includes the following tables:

* Summary: The Summary table shows the utilization by RAM type, categorized into URAM, Block RAM, and LUTRAM. For each RAM type, it is categorized into individual primitives. Also detailed is the inferred primitive %. If you are using a synthesis tool other than AMD Vivado Design Suite Synthesis or instantiation of primitives, then RAMs are reported under instantiated primitives.

The information in the summary determines imbalances in the utilization of different types of RAMs. Based on the summary, a design benefits from retargeting heavily used primitives to lesser used ones at the cost of being less efficient.

Additionally, it evaluates LUTRAM implementation. LUTRAM primitives vary in their efficiency of bits/LUT. For example, a RAM32M16 uses 8 LUTs and upto 14-bit data. Using RAM32X1D primitives, 8 LUTs yield a maximum of 8-bit when LUT combined.

* Memory

Syntax

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

Returns

Report

Usage

Name Description
[-append] Append to existing file
[-file] Filename to output results to.
[-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_lutram] Adds LUTRAMs to the report
[-quiet] Ignore command errors
[-verbose] Suspend message limits during command execution

Categories

Report

Description

Reports RAM usage in the current design at any stage after synthesis. The report is more accurate when you run after completing optimizations in opt_design.

If you do not specify the -file, -csv, or -return_string arguments, the command generates the report in the standard output.

The report detail includes the following tables:

  • Summary: The Summary table shows the utilization by RAM type, categorized into URAM, Block RAM, and LUTRAM. For each RAM type, it is categorized into individual primitives. Also detailed is the inferred primitive %. If you are using a synthesis tool other than AMD Vivado™ Design Suite Synthesis or instantiation of primitives, then RAMs are reported under instantiated primitives.

    The information in the summary determines imbalances in the utilization of different types of RAMs. Based on the summary, a design benefits from retargeting heavily used primitives to lesser used ones at the cost of being less efficient.

    Additionally, it evaluates LUTRAM implementation. LUTRAM primitives vary in their efficiency of bits/LUT. For example, a RAM32M16 uses 8 LUTs and upto 14-bit data. Using RAM32X1D primitives, 8 LUTs yield a maximum of 8-bit when LUT combined.

  • Memory Description: The Memory Description table displays a synthesis view of the inferred memories including XPM inferred memories. The table sorts entries by the total number of bits in each memory array. It specifies the memory type and mapping for each item.

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

The following categories are available for both inferred and instantiated primitives. They are collectively referred as detailed tables.

  • Memory Utilization: The Memory Utilization table displays how each memory array maps to the primitives. It also reports the efficiency of mapping and indicates whether depth or width limits the mapping.
  • Memory Performance: The Memory Performance table displays performance aspects of the RAM. It provides information on the usage of output register and cascading.
  • Memory Power: The Memory Power table details which power aspects of the RAM are in use. It includes information on cascading and whether the enable pin connects to POWER or to a signal.

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

Arguments

-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.

-file <arg> - (Optional) Write the report into the specified file. This command overwrites any files of the same name without warning.

-csv <arg> - (Optional) Write the report into the specified CSV file. This command overwrites any files of the same name without warning.

Note: -file and -csv work in similar way. If you do not specify the path as part of the file name, the file generates either into the current working directory or the launch directory. If neither -csv or -file are specified, the text version of the report generates in the log file.

-return_string - (Optional) Direct the output to a Tcl string rather than to the standard output. A variable definition captures the Tcl string, parses, or processes as required.

Note: This argument cannot be used with the -file option.

-cells <arg> - (Optional) Report the RAM resources utilization in one or more hierarchical cells in the current design. You must specify the cells as objects using get_cells instead of the name.

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

-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.

Examples

The following example provides a full report of the inferred and non-inferred BlockRAM and UltraRAM resources. It 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. It writes the results to the specified CSV file:

report_ram_utilization -csv ./ram_util.csv -include_lutram