The RAM_DECOMP
attribute
instructs the tool to infer RTL RAMs that are too large to fit in a single block RAM
primitive to use a more customizable configuration.
For example, a RAM specified as 2K x 36 would often be
configured as two 2 K x 18 block RAMs arranged side by side. This is the configuration
that yields the fastest design. By setting RAM_DECOMP =
"power"
, the RAM would instead be configured as two 1K x 36 block RAMs.
This is more power-friendly because during a read or write, only the one RAM with the
address being used is active. It comes at the cost of timing because Vivado synthesis must use address decoding. The RAM_DECOMP
would force the second configuration of that
RAM.
Alternatively, a value of area would force the configuration to be as small of an area as possible. This could also be a change from the fastest design.
The
values
accepted for RAM_DECOMP
are "power
and area
".
This attribute can be set in either RTL or XDC. Place the attribute on the RAM instance itself.