There are two obvious possibilities. Timing is the more likely problem. Does your design have timing constraints and does the design meet these constraints? Does the test bench accurately model the timing of your input signal?
The second possibility is less likely but should be considered. Are your process sensitivity lists in the VHDL correct? A behavior simulation uses the process sensitivity list to determine when to model a transaction. The routed simulation is a hardware model and does not use the process sensitivity list, so an incorrect list could cause differences between the simulations.
Still, timing is the first thing to look at. 159MHz is fairly fast for a Spartan6 and you need to be careful here.