If you are taking several attempts for the chain integrity test to pass, it suggests some signal level/termination issues on your design.
A symptom of this could be that during programming the data is being corrupted and hence the program (SPI slave) not working as you expect.
Try an oscilloscope probe on the TCK pin during testing/programming. The probe capacitance can sometimes help in altering the signal termination.
Also the JTAGLIve (
www.jtaglive.com (
http://www.jtaglive.com)) free utility Buzz includes an alternative
integrity/infrastructure test that works with the USB-Blaster and returns more information.
BR
Paul