Xilinx Parameterized Macros (XPM) is a tool for creating RAM and ROM structures according to user-specified requirements. Within the XPM code, you can specify a number of generics including memory size, clocking mode, and ECC mode. These requirements are then converted by the Vivado synthesis tool into the appropriate size and style of memory array.
XPMs are simple, lightweight, and in-line customizable solutions for common HDL flow use cases. They can also be considered as simple parameterizable IP. XPMs are synthesizable SystemVerilog-based HDL delivered with the Vivado Design Suite.
For details on XPMs, see the Vivado Design Suite User Guide: System-Level Design Entry (UG895).
For details on the various XPMs and their parameterization options, see the UltraScale Architecture Libraries Guide (UG974).
Because XPMs are used in RTL flows (or non-processor based designs), the
UpdateMEM command needs a MEM (.mem) file as an argument; it cannot take an ELF file as an argument.
The limitations to using UpdateMEM with XPM memories are, as follows:
- ROM configurations need a MEM file prior to synthesis.
- ECC is not supported.