В доке от Xilinxa указано что для интеграции RAMBLOCK и MULT18X18 у них должны быть общими некоторые связи в доке они указаны дока ug002.pdf правда для VirtexII но я думаю что остальные не слишком отличаются, там указано что если объеденить не все указанные связи он их раскижает по разным местам.
Routing with BlockRAM
The following input pins are shared among adjacent BlockRAM and multiplier :
• RAMB16 MULT18x18
• DIA16 A0
• DIA17 A1
• DIA18 A2
• DIA19 A3
• DIA20 A4
• DIA21 A5
• DIA22 A6
• DIA23 A7
• DIA24 A8
• DIA25 A9
• DIA26 A10
• DIA27 A11
• DIA28 A12
• DIA29 A13
• DIA30 A14
• DIA31 A15
• DIB16 B0
• DIB17 B1
• DIB18 B2
• DIB19 B3
• DIB20 B4
• DIB21 B5
• DIB22 B6
• DIB23 B7
• DIB24 B8
• DIB25 B9
• DIB26 B10
• DIB27 B11
• DIB28 B12
• DIB29 B13
• DIB30 B14
• DIB31 B15
If the above BlockRAM and multiplier pins do not have common source, the implementation
tools will not place the blocks adjacently.
Хреново что примера нет

Насколько я понял напрямую с ближайшей BRAM идут только старшие 16 бит (16:31) с каждого из портов
поэтому и глюки с размещением если снимать с 0 - 15. Удачи
И подходят под это походу только BRAM16_S36_S36 так только у них такие порты(((