Block RAM - 2023.2 English

Power Design Manager User Guide (UG1556)

Document ID
UG1556
Release Date
2023-10-18
Version
2023.2 English
The Block RAM page covers power estimates of the dedicated 36 kb block RAMs, which are used to implement much larger memory arrays than the memories that are feasible with LUTRAMs. Block RAMs typically comprise an array of a particular depth, width, and cascade height. The Memory Configuration wizard available from the Add Memory button is recommended for entering large arrays because it closely matches the synthesized results. Often synthesis chooses certain architectural trade-offs to balance performance, area, and power which can be slightly different than expected. Following are descriptions of the columns used for block RAM size configurations.
Cascade Group Size
Block RAMs have dedicated cascade circuitry for efficiently building deeper memories without incurring extra logic cost for addressing, decoding, and multiplexing. Most importantly cascading block RAMs results in significant dynamic power savings as only one block RAM of a cascade group is active at a time. There is a trade-off between power and performance which is reflected in the PDM default cascade group size of 4. Synthesis creates cascades as deep as 8 (least power) and as shallow as 1 (best performance).
Mode
This represents the configuration of the block RAM size and error correction mode if used. The different sizes modeled by PDM include:
  • RAMB18: 18 kbit capacity with width up to 18 bits
  • RAMB36: 36 kbit capacity with width up to 36 bits
  • RAMB18SDP: A Simple Dual-Port mode with fixed width of 36 bits
  • RAMB36SDP: A Simple Dual-Port mode with fixed width of 72 bits

You can configure the SDP modes to enable Error Correction Coding circuitry. Also, the SDP RAM modes are not always used for simple dual-port RAMs. It depends on whether or not the port Bit Width fits efficiently into the fixed widths of the SDP mode configurations: 36 bits wide for RAMB18 and 72 bits wide for RAMB36. Intermediate widths are more likely to be mapped to RAMB18 and RAMB36 modes.

Bit Width
This is the data width of each block RAM port with choices limited to width values that are supported by the RAM block configuration.
  • For intermediate widths, select the next higher width.
  • For SDP mode configurations you must select a width of 36 for RAMB18SDP and 72 for RAMB36SDP.
  • Asymmetric widths are supported.

Once the structural configurations are determined, additional settings configure the activity rates affecting dynamic power.

Clock
Each port can be clocked by the same clock or independent clocks. As soon as a clock is assigned, the respective port consumes power, even when disabled. This is because the clock network is still active in parts of the block RAM circuit.
Toggle Rate
This is the percentage of clock cycles where block RAM data is toggling. This is the average value of all input and output data pins over all block RAMs in the row entry.
Write Mode
This mode determines what happens when there is a simultaneous write and read to the same address. The default value of NO_CHANGE results in the lowest power as there is no transition seen at the block RAM outputs. The other modes of WRITE_FIRST and READ_FIRST result in higher dynamic power because output data undergoes transitions to the Write data or Read data respectively.
Enable Rate
This is the percentage of time a port is active versus on standby. When a port is enabled, it consumes more power.
Write Enable
This is the percentage of time a port is being written, independent of the Enable Rate. So, make sure Write Enable <= Enable Rate.
To minimize power for RAMs, the enable logic should be designed such that ports are only enabled when necessary. A port that is constantly enabled (100% Enable Rate) wastes power. Vivado block RAM power optimizations enforce this recommendation with logical optimizations. For example, a write-only port with a Write Enable active for 25% of cycles and Enable tied high could be estimated using a 100% Enable Rate for that port. However, Vivado swaps the Write and Enable control signals in the logical netlist such that the Write Enable is tied active (Write Enable 100%) and the Enable is driven by the Write Enable logic (Enable Rate 25%).
Note: Review entries carefully to ensure the Enable Rate is minimized.