--- Quote Start ---
Great! Thanks.
These are reasonable waveforms.
Keep in mind that the FPGA offset cancellation routine only ever runs when the FPGA is first configured, eg., when its powered or reprogrammed via JTAG or another configuration source. After that point, the ALTGX_RECONFIG busy signal will not assert right after reconfig_reset or offset_cancellation_reset deasserts to indicate offset cancellation is running.
Note: that if you reconfigured your FPGA using JTAG, pressed the reset button, and then took the SignalTap II traces, you would see the ALTGX_RECONFIG busy signal asserted while offset cancellation is running, and PCIe reset would be deasserted (if you missed the 5ms low time of the signal).
--- Quote End ---
Its not loaded through JTAG, but is configured by the CPLD on powerup, I flashed the binary. In my case, I dont have any other reset other than PCIe reset (No reset button/other POR). So on PERST# assertion, CPLD programs the FPGA and since the reprogramming will take more than 5ms (FPP), by the time config is done, the PERST# reset would already have been deasserted in the case of a PC Reset.
--- Quote Start ---
Its possible. But if those plots were also showing offset cancellation running (busy high), the reset signal should be low (if it was a power-on SignalTap II trace).
--- Quote End ---
Yes, it was a Power-on signaltap. Offset cancellation went busy after my internally generated reset was asserted, but I never saw the PCIe reset being asserted in my signaltap.
--- Quote Start ---
5ms is more than long enough for a reset.
The PCIe reset should be passed through reset synchronizers that asynchronously assert and synchronously deassert for each of the clock domains in your design that PCIe reset is supposed to reset. Assuming all of these clocks are in the MHz range, 5ms is thousands of clocks.
--- Quote End ---
Yes, but since I am programming the FPGA on this reset, once config is done, reset would have already deaaserted.
--- Quote Start ---
Is the PCIe interface working in either or both of these reset sequences/conditions?
--- Quote End ---
Yes, PCIe interface seems to be working fine. Enumeration is done and device is transferring data. The only thing I am unable to do is to cause a re-enumeration without restarting the PC. (For eg. if I reprogram the FPGA via JTAG, and try to access the PCIe interface, it would not be recognized, since the enumeration is happening only during powerup/reboot). Any idea, if there is a way I can achieve that? Hotplug?/warm reset?
--- Quote Start ---
If the power-on-reset is not working, then probe CONF_DONE to see when your FPGA is configured relative to PCIe reset deasserting.
--- Quote End ---
I was trying to do that, but unfortunately I dont have any vias on the board to probe on conf_done. All I could get my probe on was the nConfig signal (config start), which as you would expect is happening at the reset edge.