I am trying to observe the correct operation of FRAME_ECC_VIRTEX6 with ICAP but there are some unexpected behaviours.
I use ICAP(32 bit width) and FRAME_ECC together. I read the configuration data frame by frame and observing the ECCERROR output of FRAME_ECC. I use the read sequence in ug360 Configuration Memory Read Procedure. I write 162(x"480000A2" for two frame dummy+actual) to the number of words read from FDRO field. I read the dummy frame and actual frame. After that i send the Desync sequence in ug360 Configuration Memory Read Procedure. After the desync sequence completed i continue with next frame. ICAP output does not give any error during writes and BUSY signal of ICAP works as expected.Stay low for 162 clk during reads.
My problem is with FRAME_ECC_VIRTEX6. It drives ECCERROR and SYNDROMEVALID outputs to high after actual frame reads. It does not do the same thing after dummy frames. Also it does not do the same thing for every frame. It starts to work correctly for few frames. But after the frame with x"0000002C" FAR address it starts to give an ECC error after frame reads.
I have read some bug about FRAME_ECC primitive in VIRTEX4. It was about the FRAME_ECC primitive gives the correct result one clock before the last word of the frame. Not after the last word of the frame as written.The question and related work is in below.
Is that happening in FRAME_ECC_VIRTEX6 too? Should i use the SYNDROME output one clock before the SYNDROMEVALID signal goes HIGH.
Or am i need to change some bitgen settings.
I am suspecting that the first few frames are all zeros and ecc word in those frames are also all zeros. For that reason in those frames it does not give any errors. After frame data starts to take values other than zero it starts to give errors because the ecc words are still all zeros. If this is the case how sould i use the frame_ecc primitive correctly with ICAP.