Forum Discussion

Sumanth's avatar
Sumanth
Icon for New Contributor rankNew Contributor
2 months ago

Timing Behavior of Remote Update IP After Reset on Cyclone 10 GX (10CX150YF672E5G)

I am using the Remote Update IP with the Cyclone 10 GX FPGA, part number 10CX150YF672E5G. I observed that the Remote Update IP does not respond properly after reset until approximately 300 µs. I experimented with delays of 1 µs and 2 µs after reset, but did not observe the expected behavior. However, after waiting for 300 µs, the IP responded as expected. Previously, I used the same Remote Update IP with a different part number, 10CX150YF672I5G, and in that case, it worked as expected with just a 10 clock cycle delay after reset. Could you please confirm if there is a specific timing requirement after reset for initializing the Remote Update IP with the 10CX150YF672E5G device? I am using Quartus Prime Pro 24.2 tool for Both version of Cyclone 10GX FPGA(10CX150YF672E5G & 10CX105YF672I5G) Thank you.

22 Replies

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

    If you need any further clarification, please feel free to contact me at sumanth_s@procsys.com or call me at +91 9742079856.

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

    After successful configuration, I am reading the current configuration boot address. If it corresponds to the base image address, I then read the reconfiguration trigger conditions. These are expected to be all zeros after power-up.

    In my project, based on the reconfiguration trigger conditions, I pass commands to load the application image.

    The observed faulty behavior is that the current configuration boot address and the reconfiguration trigger conditions are not as expected, all bits are read as 1. I suspect that internal control register updates may be taking additional time, which could be causing this issue.

     

     

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

    Please find the below signal tap waveform

    The PLL locked signal is used as a reset for the Remote Update IP after inversion, and the reset is extended and synchronized for five additional cycles of the Remote Update clock. Later, a state machine checks that the busy signal is not asserted. Once busy is deasserted, it attempts to read the current configuration boot address and then the reconfiguration trigger condition. For all read operations, a response of all 1’s was observed. 


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

      Hello, 

       

      Could you please explain what is the expected behavior you observed, and what is the not expected behavior you observed? 

       

      regards,
      Farabi

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

    I was on leave for the past couple of weeks. The board is currently not free; please give me 2 days, and I will provide the SignalTap waveform.

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

    I observed that the Remote Update IP does not respond properly after reset until approximately 300 µs. I experimented with delays of 1 µs, 2 µs, 3 µs, 4 µs, 5 µs, 10 µs, 100 µs, 150 µs and 200 µs after reset, but did not observe the expected behavior. However, after waiting for 300 µs, the IP responded as expected. This behavior is observed on 10CX150YF672E5G FGPA.

    However, on 10CX105YF672I5G FGPA after reset, here we wait for the busy signal to deassert before performing any further read or write operations. The same logic was used in the 10CX150YF672E5G FGPA as well. 

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

      As we haven't received a response to our previous notification, this thread will be transitioned to community support. We hope all your concerns have been addressed. If you have any new questions, please feel free to open a new thread to receive support from Intel experts. Otherwise, community users will continue to assist you here. Thank you.

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

      Hi Summath,


      Sorry for the delay as I was on leave. Could you please provide the SignalTap waveform?


      Regards,
      Fakhrul

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

    In the official Remote Update IP design example, the reset command waits for 0.6 seconds and then performs the read or write operations. Between each read or write operation, it waits for 0.6 seconds before proceeding with further read or write operations.

    Note: The official Remote Update IP functions correctly on both boards (10CX150YF672E5G and 10CX105YF672I5G).

    In my design, I wait for the busy signal to deassert before performing any further read or write operations.

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

      Hi Sumanth,

      Thanks for confirming. Since the example works on both devices, the IP is consistent. The difference I'm assuming seems related to timing in your design.
      Could you please try adding a short delay after reset or between operations and see if it helps.

      Let me know the result.

      Best regards,
      Fakhrul

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

    Thanks for the information. 

    In the remote update IP cyclone10Gx example design they have waited for 0.6 seconds after reset and between each write operation. 
    In my project I have taken care to check busy signal before the read and write commands. 

    I suspect there is change in remote update IP functionality between 10CX150YF672E5G & 10CX105YF672I5G. 

    For your information, If you try to trigger a reconfiguration from unprogrammed memory location of flash, it doesn't complete configuration or roll back to base image, FPGA stalls, Only way to comeout of this is programming through JTAG in 10CX105YF672I5G FPGA. 
    But if you try to trigger a reconfiguration from unprogrammed memory location of flash, it roll back to base image with boot status CRC error in 10CX150YF672E5G FPGA. 

    Could you please check with concern team and get back to me.

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

      Hi Sumanth,
       

      Thank you for sharing these observations. To help us narrow down the root cause, could you please clarify a few details:


      Quartus Settings

      - Are both designs using the same Remote Update IP version and Quartus Prime Pro settings?

      - Is the “Auto-restart configuration after error” option enabled in both cases?

       

      Flash Content and Address

      - When triggering reconfiguration from an unprogrammed location, is the start address set to 0x00 or another value?

      - Is the factory image correctly placed at 0x20 (as recommended in the user guide)?


      Error Handling Signals

      - On the device that stalls (10CX105YF672I5G), do you see nSTATUS or any error indication toggling before the stall?

      - Does the watchdog timer feature play any role in your design?


      Clock and Reset

      - Is the Remote Update IP clock stable during reset and reconfiguration?

      - Are you using the same reset sequence for both devices?
       

      These details will help us confirm whether this is a device-level difference or a configuration setting issue.

       

      Regards,
      Fakhrul

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

        Thank you for the questions. Below are my answers:

        - Are both designs using the same Remote Update IP version and Quartus Prime Pro settings?

        Yes. Remote update Ip version 19.1.0

         

        - Is the “Auto-restart configuration after error” option enabled in both cases?

        Yes.

         

        - When triggering reconfiguration from an unprogrammed location, is the start address set to 0x00 or another value?

        In the project I am working on, we are using the MT25QU512 flash. The application image address is set to 0x00C00000, and the base image address is set to 0x00010000 to align with the sector boundary. This configuration is the same on both boards, and it works fine.


        - Is the factory image correctly placed at 0x20 (as recommended in the user guide)?

        No. I have set it to 0x00010000 to align with the sector boundary.(MT25QU512 flash). We use a different mechanism for Image updates

         

        - On the device that stalls (10CX105YF672I5G), do you see nSTATUS or any error indication toggling before the stall?

        After reconfiguration, we observed that the conf_done signal was not yet asserted.

         

        - Does the watchdog timer feature play any role in your design?

        Yes, We have a logic to reset watchdog timer before it gets timeout.

        Clock and Reset

        - Is the Remote Update IP clock stable during reset and reconfiguration?

        Yes

         

        - Are you using the same reset sequence for both devices?

        Yes. To work properly on 10CX150YF672E5G FPGA we have currently modified reset sequence to wait for 300us.

         

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

    Thanks for the suggestions. 

    Related to the recommendation:
    In my code it is already taken care to check IP's busy signal before doing any read operation. 

    During the reset, whether remote update IP will assert busy signal until initialization is complete?

    Is there any other mechanism to know that remote update IP is ready?

    Thank you.

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

    Hi Sumanth,

    Thank you for your question. On the Cyclone 10 GX 10CX150YF672E5G, the Remote Update IP may not respond immediately after reset because the FPGA takes up to 830 µs to complete initialization and enter user mode (as specified in the datasheet). Accessing the IP before this time can cause issues.


    Recommendation:
    Wait at least 830 µs after reset, or use the INIT_DONE signal to confirm the device is ready, before interacting with the Remote Update IP. This timing can differ between device variants, so always follow the longer delay for compatibility.

     

    Let us know if you have any further questions.

    Regards,
    Fakhrul

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

      For your information: The reset of the remote update IP is controlled by the lock signal from the PLL IP and is initiated after FPGA initialization.

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

        In my design, I am giving reset for Remote Update IP based on lock signal from the PLL IP. Later trying to read the current configuration boot address.