Xilinx Parameterized Macros (XPM) is a tool for creating RAM and ROM structures according to user-specified requirements. Within the XPM code, you specify a number of generics including memory size, clocking mode, ECC mode, and so forth. These requirements are then converted by the Vivado synthesis tool into the appropriate size and style of memory array.
XPMs are simple, lightweight, 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.