FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.
5886 Discussions

Handling ECRC on completions with a Stratix V Hard IP PCI Express

Honored Contributor II

I was reading the documentation and I saw that if an incomming request has an ECRC error the Application layer deletes the request. If it is a non-posted request it automatically sends the Completion Abort response. That sounds ok, but a question comes up when dealing with Completions in response to read requests from the application layer. 


It seems the request is simply deleted. Is there some notification that the request was deleted? I presume the IP does not reissue the read request, so the applicaiton layer would have to do this. If there is no notification do I have to look for discontinuities in strings of CplD packets (in case the read request was split) or maybe simply rely on the timeout mechanism?
0 Kudos
1 Reply
Honored Contributor II

Both, you look for discontinuity and for timeout. What the application does in reaction to the missing completions is application-specific: For example, if you already fed some data into a consuming fifo received as part of the completions, followed by a timeout, you might be out of luck rerunning the transaction. But if you buffer the whole request in memory and only forward it internally once it is completed, you can rollback the whole or just the remaining read request to re-issue it. 


btw, it might be easier to just wait for the timeout and rollback the whole read request, if possible. If one of a couple of completion TLPs is missing, you will most probably not receive all data and run into the timeout. 


– Matthias