Configuration via Protocol (CvP) Implementation in V-series FPGA Devices User Guide

ID 683889
Date 9/04/2020
Public
Document Table of Contents

5.5. CvP Debugging Check List

  1. Check the PCIe configuration to ensure that it supports CvP. For instance, Stratix V does not support Gen3 CvP.
  2. Confirm that the current Quartus Prime software version supports CvP.
  3. Check that your physical pin assignments support CvP. For Example, for Stratix V, only the bottom left Stratix V Hard IP for PCI Express supports CvP. Other Hard IP cores in the same device do not support CvP.
  4. Check the PCB connections for PERST# and refclk.
  5. Make sure the reset and clock connections to the Transceiver Reconfiguration Controller IP Core are correct. For CvP mode, you must use refclk to drive reconfig_clk. PERST#must drive reconfig_reset to the Hard IP for PCI Express IP Core.
  6. Confirm that the design meets timing constraints for setup, hold time, and recovery for multi-corners.
  7. Check that the test_in bus is hardwired to 0xA8. The following test_in signals are most important when debugging:
    1. Setting test_in[7]=1 disables support for the low power states.
    2. Setting test_in[5]=1 prevents the core from entering the Compliance Mode.
    3. Setting test_in[3]=1 indicates that the Hard IP for PCI Express is implemented in an FPGA.
    4. Setting test_in[0] = 0 uses timeout and counter values which meet the PCIe specifications. Otherwise the shorter, non-compliant simulation values are used.
  8. Disable power management support in the host BIOS settings.
  9. Confirm that the Vendor ID and Device ID arguments specified as arguments to the quartus_cvp.exe command match the values specified in the Hard IP for PCI Express IP Core GUI.
  10. If you are designing an open system, test with different PCs and compare the results.
  11. If the first CvP update fails, check that the correct quartus_cvp.exe command is used. For 32-bit systems, you must use .\quartus\bin\quartus_cvp.exe. For 64-bit systems, the correct quartus_cvp version is .\quartus\bin64.
  12. Before executing the quartus_cvp command, make sure that the Memory Space Enable bit is set in the Command register of PCI Express Configuration Space. If the BIOS does not enable this bit, you must use a system tool such as RW Utilities to write a value of 0x0006 to the Command register at offset 0x4. Writing this value will set both Memory Space Enable and Master Bus Enable bits.
  13. If encryption or compression is enabled, disable them and retry. Record the symptoms.
  14. Check if the design works after configuring the FPGA with the SOF via JTAG and then doing a warm reboot. The .sof file contains both periphery image and the core image; consequently, this test will not determine which type of image causes the failure.
  15. Use a PCI Express analyzer to capture the PCIe trace of the failing scenarios. Observe the transitions of LTSSM if it fails to get insight into the link failures.
  16. Use the Power On Trigger of the SignalTap II Embedded Logic Analyzer and record the LTSSM transitions. Determine whether the LTSSM goes to L0 (0xF) or toggles between Detect states and Polling states.
  17. Disable the Transceiver Reconfiguration Controller and hardwire other inputs to zero, except the reconfig_to_xcvr() bus which requires bit[44] of each channel to be driven high. The remaining bit of reconfig_to_xcvr() are tied to low. The sample file is top_wo_reconfig.v under ./altera_pcie_cvp/hw_devkit_ed directory.
  18. If CvP fails, try a similar Altera CvP example design to determine if the symptoms remain the same. If the failure still persists, try a non-CvP design and take note of the differences.
  19. Determine if the example CvP design with similar configuration works on the same platform.
  20. If you have tried all these suggestions and your design is still not working, file a Service Request (SR). In your SR, include the following information:
    1. Describe what you have tried and the results of your tests.
    2. List the Quartus Prime software version, the target device, information about the system under test, and what CvP modes are being used.
    3. Specify where the failure occurs. Does it occur after loading the periphery, on the first CvP update, or on subsequent CvP updates?
    4. If possible, attach your design so that we can review the reset and clock connections and try to replicate your failure.
    5. Describe the steps necessary to run your design.
  21. For subsequent CvP update, you must compile both revisions for any changes to any of the following logic:
    1. The periphery logic
    2. The I/O ports or core wrapper
    3. The Quartus Prime software version