Setting BRAM Mode for Improved Accuracy - 2021.1 English

Xilinx Power Estimator User Guide (UG440)

Document ID
UG440
Release Date
2021-06-16
Version
2021.1 English

If the breakdown of the memory usage of your design is known, the XPE spreadsheet allows you to specify which block RAM modes are being used. The Mode column has selectable values from a drop-down menu that lists the different primitive names and modes of the block RAM. Depending on the target family, this includes:

BRAM
Simple dual-port or True dual-port Block RAM.
FIFO
Dedicated built-in FIFO.
CASC (pair) (7 series only)
Cascaded block RAM blocks (built from two RAM blocks).
ECC
When the block RAM is configured in ECC mode.

In True dual-port mode the following data write mode options are available:

WRITE_FIRST
The port will first write to the location and then read out the newly written data.
READ_FIRST
The old data is first read out and then the new data is written in. This mode effectively allows 4 operations per clock cycle (saving power or resource utilization), because the old data can be read out and replaced with new data on the same clock cycle of each port. However, note that READ_FIRST is only more power efficient if the data in the memory is used the same time as writing out new data, and does not force separate read and write operations to get the data. If that is not the case, READ_FIRST is generally less efficient in power than NO_CHANGE in TDP mode. If the functionality of READ_FIRST is not needed, the BRAM should be configured as WRITE_FIRST or NO_CHANGE to save power.
NO_CHANGE
When a Write happens the block RAM outputs remain unchanged.

In Simple dual-port mode the following data write mode options are available:

WRITE_FIRST
The port will first write to the location and then read out the newly written data.
READ_FIRST
The old data is first read out and then the new data is written in. This mode effectively allows 2 operations per clock cycle (saving power or resource utilization), because the old data can be read out and replaced with new data on the same clock cycle of each port. However, note that READ_FIRST is only more power efficient if the data in the memory is used the same time as writing out new data, and does not force separate read and write operations to get the data. If that is not the case, READ_FIRST is generally less efficient in power than WRITE_FIRST in SDP mode. If the functionality of READ_FIRST is not needed, the BRAM should be configured as WRITE_FIRST to save power.
NO_CHANGE
Not available in the SDP mode because it is identical in behavior to WRITE_FIRST mode.