Übrigens: Das mit dem 64 KByte XILINX FPGA Limit ist nicht so ganz richtig:
Stimmt, eigentlich hat ein XC6SLX9 576Kbit RAM, aber aus irgendwelchen historischen Gründen ist das mit 9 Bit pro Byte organisiert. Wenn man nur 8 Bit pro Byte braucht ist es am einfachsten wenn man das 9. Bit ignoriert weil es im Modus mit 9 (oder 18) Bit Breite keine bitweisen Write-Enable-Signale gibt und die Modi mit weniger als 9 Bit Breite das "Bonusbit" nicht als zusätzlichen Speicher zugänglich machen.
Prinzipiell kann man auch ungenutzte Logikresourcen als RAM verwenden (nennt sich bei FPGAs dann "Distributed RAM"), aber das geht halt auf Kosten der Logik und beim XC6SLX9 bekommt man so maximal 90 Kbit zusätzlich.
Bei 64k x 8 Bit ergibt sich daraus 64 KByte; Bei 64k x 16 Bit => 128 KByte; ... Bei 64k x 1024 Bit theoretisch 8 MByte....
Das ist das, was das Hilfsprogramm im Synthesetool basteln kann wenn man den Code nicht von Hand schreiben möchte. Wenn der als Ziel eingestellte Chip weniger Resourcen hat als man sich damit zusammengeklickt hat bricht es beim Map- oder Place&Route-Schritt mit einer Fehlermeldung ab.