RAM_STYLE instructs the Vivado synthesis tool on how to infer memory. Accepted values are:
•block: Instructs the tool to infer RAMB type components.
•distributed: Instructs the tool to infer the LUT RAMs.
•registers: Instructs the tool to infer registers instead of RAMs.
•ultra: Instructs the tool to use the UltraScale+™ URAM primitives.
•mixed: Instructs the tool to infer a combination of RAM types designed to minimize the amount of space that is unused.
By default, the tool selects which RAM to infer based upon heuristics that give the best results for most designs. Place this attribute on the array that is declared for the RAM or a level of hierarchy.
•If set on a signal, the attribute will affect that specific signal.
•If set on a level of hierarchy, this is affects all the RAMs in that level of hierarchy. Sub-levels of hierarchy are not affected.
This can be set in the RTL or the XDC.