Xilinx users should tell. With Altera Q.uartus, internal ROM can be "inferred" from an initialized constant array or a case structure.
The best method depends on where you get the data for your table. If it's supplied from an external data file, e.g. a *.hex file, a
ROM IP function ("MegaFunction") referencing the data file would be instatianted. If the data can be described by a simple generator
algorithm, e.g. a sine table, it can be implemented as an initialized VHDL data structure.
I would expect th Xilinx tool documents to tell how to.