The following shows a code example in which Vitis HLS implements a ROM even though the array is not specified with a
static
or const
qualifier.
This demonstrates how Vitis HLS analyzes the design,
and determines the most optimal implementation. The qualifiers guide the tool, but do not
dictate the final RTL.
#include "array_ROM.h"
dout_t array_ROM(din1_t inval, din2_t idx)
{
din1_t lookup_table[256];
dint_t i;
for (i = 0; i < 256; i++) {
lookup_table[i] = 256 * (i - 128);
}
return (dout_t)inval * (dout_t)lookup_table[idx];
}
In this example, the tool is able to determine that the implementation is best
served by having the variable lookup_table
as a memory element
in the final RTL.