Hi Ignacio,
The formal equivalence tool will only make sure that RTL and nettles are formally equivalent from a logical point of view… so this does’t tell a lot about X propagation :-P
There are a lot of other reasons that could generate an X in your design.
The very first thing that you need to check is that your design is timing clean (check your DC reports) and that the target frequency that you specified in your synthesis flow is bigger or equal than the one generated in your test bench.
If all of these are fine, you could for example make sure that your memory model is fine (for example if you might generate hold violations if you use an use ideal memory model (i.e. the memory output is immediately updated with the clock edge).
If if all of these look fine, you have no other way than opening your waveform viewer and just track the X back to see who is generating it.
I hope this helps.
Cheers,
Oliv'