08-13-2016 09:34 PM
I have been migrating a legacy PCIe DMA from Virtex 5 to Ultrascale and am have simply hit a wall trying to get the Requester interface to run properly.
As a background, I have a fully functional PCIe IP core with PC drvier running on a Virtex 5 and have been tasked to migrate this guy forward to the Kintex Ultrascale. The current state of my core and driver is such that I can read and write the PIO registers just fine, but I cannot request from the PC.
The general flow is as follows:
Unfortunately, I have been stuck on this for too long and simply do not know how to debug it further. To the extent of my knowledge, I feel that that PCI Core is set in the similar manor as the Virtex 5 revision.
Can we start with the basics, how to know what the Function and Tag field should be?
More difficult, how to move forward on this? What new tests can I try?
08-14-2016 07:30 AM
As UltraScale is so new, it does not have as much support and debug information available. There is the 7 series debugging guide however. Have you attempted to follow that ?
Tech answer 56616
08-22-2016 08:22 AM
Thanks for the reply. I looked over the documentation and found that the situation is still the same.
I am wondering if I have a link issue because my PC is only GEN2 whereas the core is GEN3. Since PIO messages go through the cc/cq interface initiated by the PC, maybe that link is healthy (i.e. trained). Perhaps, the core and FW are assuming that the link is GEN3 (i.e. no training) and therefore I get timeouts on the interface.
Is it possible? I have no other idea.
08-24-2016 06:51 AM - edited 08-24-2016 06:51 AM
Gen3 is supposed to be able to fall back, I agree. Look at the documentation. Contact your local FAE. Check for any errata.
01-19-2018 06:24 AM
I have create a pcie core project using Ultrascale Gen3 PCIe Integrated Block 4.2 version. It work well for the Memory Write requests but fail for Memory Read requests. All the parameters in both requests are identical excepts the Req Type field to set the memory reaad/write. But for memory read requests, I am getting a completion timeout TLP. I have tested this on a FPGA board using a linux driver which I have used in testing the earlier generation (gen1) PCIe core transactions. Below is the Vivado Hardware Manager results window. Can you provide some guidance on this please?
Thanks in advance.