Embedding data in RAM during synthesis
I realised the reason why readmemh wasn't working for me was that the size of the structure being written to has to be the same size as the data being read in. This may be a normal constraint or it could be down to my setup but it fixed the issue for me.