Following is the UltraRAM primitive in Versal ACAPs. To force Vivado synthesis to infer the
UltraRAM, set the
RAM_STYLE = "ultra" attribute on
|Primitive||Supported Aspect Ratios||Supported Mode|
In addition to the optional output registers, the UltraRAM supports input registers on the data lines. As with block RAMs, you can reset the optional registers either with synchronous or asynchronous reset signals.
In Versal ACAPs, the UltraRAMs can be initialized to a non-zero value. Initialize the UltraRAMs using the INIT_xx attribute on the RAM as follows:
- Verilog: Use the
- VHDL: Set up a function to read an external file in VHDL.
For details, see the Vivado Design Suite User Guide: Synthesis (UG901).
Byte Write Enables
The UltraRAM also supports byte write enable operations. As with block RAMs, the bytes can either be 8 bits or 9 bits using the extra parity bit. However, when using byte write with Versal ACAPs, read operations are ignored during writing. Therefore, only the NO_CHANGE mode is supported when describing UltraRAMs with byte write.
UltraRAMs can also be inferred using XPMs. The advantage of using this approach is that XPMs always have the correct coding style for any type of RAM needed. For more information on XPMs, see the Vivado Design Suite User Guide: System-Level Design Entry (UG895).