Parameterizable Macros - UG1192

AMD Design Conversion for Altera FPGAs and SoCs Methodology Guide (UG1192)

Document ID
UG1192
Release Date
2025-07-15
Revision
3.0.1 English

Parameterizable macros (XPM) are the preferred method for building memory arrays in RTL because of the flexibility and control afforded to the designer. By using an XPM macro, the designer can specify the required characteristics of the memory, including width, depth, clocking, number of ports, array type (LUTRAM, block RAM, or UltraRAM), for each array. Because the XPM is part of the RTL, there is no need to recompile a large list of memory IP because the XPMs are compiled as part of the top-level synthesis of the design.

The two XPM types supported are XPM_MEMORY for memory arrays and XPM_FIFO for FIFO arrays. Examples of using each are provided in the XPM section of the language templates in the Vivado tools.

Figure 1. XPM Templates

Table 1. XPM Mapping
Description Altera Parameterizable Macro AMD Parameterizable Macro Choices
Simple dual-port memory simple_dual_port_ram xpm_memory_sdpram
True dual-port memory true_dual_port_ram xpm_memory_tdpram
Synchronous FIFO sync_fifo xpm_fifo_sync
Asynchronous FIFO async_fifo xpm_fifo_async
Single-port memory N/A xpm_memory_spram
Dual-port LUTRAM N/A xpm_memory_dpdistram