I am not sure that I understand what you are saying in your last post. It sounds like you are talking about two different devices performing memory read requests where the two devices assign the same tag to the requests. Short of analyzing packets on the bus, I don't know how you could know that this is the case. You simply need to guarantee that your PCIe device does not make two memory read requests with the same ID. You can only re-use the ID for a new request after a completion comes back for the first request containing that same ID.
Sorry if I am not getting to the heart of your question.