Forum Discussion

leondietrich's avatar
leondietrich
Icon for Occasional Contributor rankOccasional Contributor
5 years ago
Solved

Intel Agilex F-Series dev kit cant be programmed by JTAG

Hi,
Im officially out of luck. After wasting an entire week on trying to get the programmer to work I posting my question within this forum.

I've got multiple bit stream files I'd like to use for configuration of our agilex FPGA (AGFB014R24A2E3VR0). While the UBII and Power Max 10 chips do seam to work (the board test system shows power and clock stats) the programming (both our bitstream and the intel example bitstreams) always fails at 13% (using both the quartus programmer and the one provided by the BTS). Searching the exact error message (obtained by right click -> copy on the log message) wasn't of any help. We're using Quartus Pro 20.4 on Ubuntu 20 and Windows 10 (neither worked, both with the same issue).

Please review the attached screen shot for further details.

  • leondietrich's avatar
    leondietrich
    4 years ago

    Hi,

    thanks a lot for your help! We've fixed this issue now. One thing we'd like to share, for a potential future reader, is that in addition to the above mentioned article one needs to completely erase the flash prior to configuring. Our working solutions looks like the following:

    1. Power off the board. Waiting for the caps to be drained doesn't seam to be necessary.
    2. Set MSEL[2:0] to ON/OFF/OFF
    3. Power on the board.
    4. Erase the boards flash using the programmer tools
    5. Power off the board.
    6. Set MSEL[2:0] to OFF/OFF/OFF
    7. Power on the board
    8. Programm your *.sof file.

    It's also required to leave the JTAG chain in the default configuration while erasing the flash. Last but not least: If step 8 fails retry a couple of times until it stops failing (we usually don't need more than 3 tries). It also seams to be more reliable (programming fails less often) at 24MHz than 6MHz, which the programmer defaults to anyway.

26 Replies

    • leondietrich's avatar
      leondietrich
      Icon for Occasional Contributor rankOccasional Contributor
      Hi, thanks for your answer. We already tried 1MHz, 6MHz, 12MHz, 24MHz both by changing it within the GUI and the command line tools (al dough we didn't tried 12MHz on Ubuntu). Unfortunately none of these combinations worked.
  • YuanLi_S_Intel's avatar
    YuanLi_S_Intel
    Icon for Regular Contributor rankRegular Contributor

    Hi,


    Can you check the following?

    • Have you tried to program the agilex with a simple design with SOF bitstream?


    Thank You


    • leondietrich's avatar
      leondietrich
      Icon for Occasional Contributor rankOccasional Contributor
      Hi, Thanks for your help! We've also tried to configure the FPGA with an SOF bitstream, reassembling a fairly simple (a 4 bit shift register enabling one QSFP and GPIO led at a time, powered by a clock divider in order to make the blinking human visible, the HDL code itself is known to be working). We've also tried the sof bitstreams provided by the example projects. None of those worked either.
    • leondietrich's avatar
      leondietrich
      Icon for Occasional Contributor rankOccasional Contributor

      I don't know if it's relevant but we're getting the following warning when trying to program said test-bitstream (which I've attached to this message for reference purposes):

      Warning(19729): Current CMF data structure hash (0x15CD440C) is older version than latest CMF data structure but still allowable.
      This might be transition period. You should update your CMF to latest version with hash { 0x8AC9CBBA } [ACDS 20.4 Release]

      • dsigner's avatar
        dsigner
        Icon for New Contributor rankNew Contributor

        I observe the Warning(19729) as well.

  • YuanLi_S_Intel's avatar
    YuanLi_S_Intel
    Icon for Regular Contributor rankRegular Contributor

    Hi,


    May i know which SOF bitstream you are using in the design example? Can you create a simple SOF file with simple input and output initialization and program and see?


    Meanwhile for the warning message regarding to CMF, it can be safely ignored.

    https://www.intel.com/content/www/us/en/programmable/support/support-resources/knowledge-base/component/2020/warning--19729---current-cmf-data-structure-hash--0xa2c420ac--is0.html


    Thank You.


    Regards,

    bruce


    • leondietrich's avatar
      leondietrich
      Icon for Occasional Contributor rankOccasional Contributor

      Hi,

      from the BTS we've tried bts_config.sof and qsfpdd_xcvr_nrz_25gbps.sof as well as the GPIO example. The Bitstream we've provided above (Have a look inside Hello_World.tar.xz), initializes the I/O and toggles the GPIO and QSFP leds at 1Hz. Besides writing a bitstream generated by the golden top example, I'm out of Ideas what could be more simple.

      Also I observed that sometimes, the first JTAG timeout error message occures prior to the 209060 message indicating the start of the programming process.

  • YuanLi_S_Intel's avatar
    YuanLi_S_Intel
    Icon for Regular Contributor rankRegular Contributor

    Hi,


    Can you share me the screenshot of the Quartus programmer?


    Also, what is the device part number used in the quartus design?


    Thank You.


    Regards,

    Bruce


    • leondietrich's avatar
      leondietrich
      Icon for Occasional Contributor rankOccasional Contributor

      We're using the AGFB014R24A2E3VR0 part as stated on the sticker on our dev kit. Since our last post we downgraded to Quartus 19.1 and get a different error since then (Error(18952): Error status: Synchronization failed). I've attached a recent screenshot as requested.

  • YuanLi_S_Intel's avatar
    YuanLi_S_Intel
    Icon for Regular Contributor rankRegular Contributor

    Can you try to use the previous programmer version that you are using? Also, try to remove the other devices in the JTAG chain and remain only the agilex.


    • leondietrich's avatar
      leondietrich
      Icon for Occasional Contributor rankOccasional Contributor
      Hi, Do you mean Quartus 20 with "previous programmer version"? Also, according to the documentation provided by Intel the second device in the chain (the MAX 10 fpga) can't be removed from the chain. All other available DIP switches only add further devices to the JTAG chain.
  • dsigner's avatar
    dsigner
    Icon for New Contributor rankNew Contributor

    I'm observing the exact same problem on two (out of two) boards.

    Our boards are based upon the AGFB014R24A2E2VR0 device.

    The result is the same with a very simple LED flashing design as with a design downloaded from:

    https://www.intel.com/content/dam/altera-www/global/en_US/support/boards-kits/agilex/f-fpga/agilexfb_agfb014r24a2e2vr0_fpga_en_reva_v20.4b72_v1.0.zip

    For example:
    agilexfb_agfb014r24a2e2vr0_fpga_en_reva_v20.4b72_v1.0/examples/pcie_gen4/pcie_gen4_ep_ed.sof

    Setting DEVICE_INITIALIZATION_CLOCK INIT_INTOSC does not change the result.

    It fails at different TCK speeds, including 6MHz.

    Running thousands of IDCODE cycles reports no problems.

    Using an external USB Blaster (TerASIC) results in the exact same error messages.

    I'm running Quartus Programmer Pro v20.4.0.72 under Ubuntu 18.4

    I have no problems loading a sof on a CycloneV SoC board using the same host and SW.

    All DIP switches settings are as when the boards were received and according to the default values in the user guide at:
    https://www.intel.com/content/www/us/en/programmable/documentation/zbg1567202330317.html

    I always get the error:

    Error (18950): Device has stopped receiving configuration data
    Error (18939): Unexpected error in JTAG server: Timeout
    Error (18939): Unexpected error in JTAG server: Timeout
    Error (18939): Unexpected error in JTAG server: Timeout
    Error (18939): Unexpected error in JTAG server: Timeout
    Error (18939): Unexpected error in JTAG server: Timeout
    Error (18939): Unexpected error in JTAG server: Timeout
    Error (18939): Unexpected error in JTAG server: Timeout
    Error (18939): Unexpected error in JTAG server: Timeout
    Error (18939): Unexpected error in JTAG server: Timeout
    Error (18939): Unexpected error in JTAG server: Timeout
    Error (18939): Unexpected error in JTAG server: Timeout
    Error (18939): Unexpected error in JTAG server: Timeout
    Error (18939): Unexpected error in JTAG server: Timeout
    Error (18939): Unexpected error in JTAG server: Timeout
    Error (18939): Unexpected error in JTAG server: Timeout
    Error (18947): Device not responding
    Error (209012): Operation failed

    the first time after power cycle of the board. Then any subsequent programming operations results in:

    Error (18939): Unexpected error in JTAG server: Timeout
    Error (18939): Unexpected error in JTAG server: Timeout
    Error (18952): Error status: Synchronization failed
    Error (209012): Operation failed

  • YuanLi_S_Intel's avatar
    YuanLi_S_Intel
    Icon for Regular Contributor rankRegular Contributor

    Hi Leon,


    Can you try to change SW1.1 to ON as per suggested? Any update on this?


    • leondietrich's avatar
      leondietrich
      Icon for Occasional Contributor rankOccasional Contributor

      Hi,

      I'll be in office tomorrow and will report my results here.

    • leondietrich's avatar
      leondietrich
      Icon for Occasional Contributor rankOccasional Contributor
      Hi, As requested I checked if setting SW1.1 to ON is improving anything. The only difference it made was that it's now failing consistently at 14% instead of 13%. It's still failing with the timeout error from the JTAG server.
    • leondietrich's avatar
      leondietrich
      Icon for Occasional Contributor rankOccasional Contributor

      Hi,

      thanks a lot for your help! We've fixed this issue now. One thing we'd like to share, for a potential future reader, is that in addition to the above mentioned article one needs to completely erase the flash prior to configuring. Our working solutions looks like the following:

      1. Power off the board. Waiting for the caps to be drained doesn't seam to be necessary.
      2. Set MSEL[2:0] to ON/OFF/OFF
      3. Power on the board.
      4. Erase the boards flash using the programmer tools
      5. Power off the board.
      6. Set MSEL[2:0] to OFF/OFF/OFF
      7. Power on the board
      8. Programm your *.sof file.

      It's also required to leave the JTAG chain in the default configuration while erasing the flash. Last but not least: If step 8 fails retry a couple of times until it stops failing (we usually don't need more than 3 tries). It also seams to be more reliable (programming fails less often) at 24MHz than 6MHz, which the programmer defaults to anyway.

  • Star's avatar
    Star
    Icon for New Contributor rankNew Contributor

    Hi,

    Recently, I meet the same problem and struggle on it for couple of weeks. I read your solution and wanted to apply it to my PCB. But I encountered one problem when Erase the boards flash. I used the system console -->SDM Debugging Toolkit to erase the flash. However, the Toolkit replied message as shown below:

    'QSPI Flash Sector 0x00000000: Erase Error'

    It seems that the SDM Debugging Toolkit is useless when the device is not configured.

    Can you clarify that how do you erase the boards flash using the programmer tools.

    Thank you!

    • leondietrich's avatar
      leondietrich
      Icon for Occasional Contributor rankOccasional Contributor

      Well,

      We're using the Quartus Programmer to erase the flash. Open the programmer from the Quartus menu -> click on "Auto Detect" to get the correct chain -> select erase for the flash chip -> press start

      • Star's avatar
        Star
        Icon for New Contributor rankNew Contributor

        Hi,

        We've tried your method and the programming always fails at 99%. The error messages are shown below:

        'Unexpected error in JTAG server: JTAG chain broken

        Unexpected error in JTAG server: JTAG chain broken

        Unexpected error in JTAG server: JTAG chain broken

        Unexpected error in JTAG server: JTAG chain broken

        Device not responding

        Unexpected error in JTAG server: JTAG chain broken

        Operation failed'

        Have you ever met the same problem?