The external source has to be synchronized with a Spartan output clock or input clock and you need a means for an initial delay adjustment, e.g. by programming the Spartan DCM accordingly. You should however check the Spartan specification for expectable delay skew.
From the Spartan perspective, it would be best, to generate a 250 MHz (respectively a fraction of it) clock parallel to the data and have a precise external PLL to generate 500 MHz from it.
I have designed systems, where 500 MHz clock and data are sourced from the same (Stratix II) FPGA, which is rather easy.