I’ve been having some problems with DDR2 memories on XEM5010. I use only one of the memory ICs (DDR2A) and it’s connected to a MPMC instance of Microblaze. Long story short, InitDone never gets high.
After much work, I found that if I set “Pull Down”, which comes as default, memory initialization fails. If I set “Unused Pins” as “Float”, memory initialization finishes OK.
I don’t particularly like the idea of setting unused pins to float, though it works.
Scrutinize your pad file to see which pins may have been trimmed.