When an instance is generated, the total width of an entry is calculated:
Entry Width = KEY_WIDTH + RESPONSE_WIDTH + Valid
The valid bit adds one extra bit to the entry width. The total entry width is then mapped to the required number of block RAMs or URAMs necessary to read the entire entry in parallel. Block RAM and URAM are allocated in data width increments of 64 bits. To minimize quantification losses, it is beneficial if the entry size is close below or on a 64-bit boundary. For example, if the total entry size is 308 bits, the quantification loss is 12 bits per entry:
5*64 - 308 = 12
Quantification loss does not only occur when the entry width does not align to 64-bit boundaries. It also occurs when NUM_ENTRIES does not match the RAM address space perfectly. For example, TDM_FACTOR = 1, MEMORY PRIMITIVE = BLOCK, NUM_ENTRIES = 1500. For this BCAM four block RAMs are required. Four block RAMs provide 2048 *0.95 = 1945 entries. Loss = (1945-1500)/1945 = 23%
The maximum supported entry widths are listed in the following table.