Forum Discussion

david850128's avatar
david850128
Icon for New Contributor rankNew Contributor
1 hour ago

Subject: Hitless Update Implementation Guidelines (AN904)

Target Devices: 10M08SAU324I7G / 10M25SAU324I7G

Reference Document: 

 

 

Problem Description:

Hi Altera Team,

Thank you for the detailed explanation. I apologize for the delayed response, as I took some time to run experiments based on your feedback. After completing my implementation testing, I would like to clarify a few points:

1. Clarification on Section 1.5 in AN904

Section 1.5 of AN904 is titled "1.5. Hitless Update using Intel Quartus Prime Programmer". However, since your response indicates that the Quartus Prime Programmer GUI itself cannot achieve a true hitless update during reconfiguration without logic/IO interruption, the section title seems misleading. Could you confirm if Section 1.5 is actually intended to describe using the Quartus Prime Programmer to generate .jbc, .jam files for external hitless execution, rather than executing the update directly via the Programmer GUI?

2. JBC Hitless Update Issue Following KDB 000080468

I generated a .jbc file by strictly following the workflow outlined in KDB 000080468:

During execution, hitless update still fails (I/O states drop/reset during reconfiguration). However, after rebooting/power-cycling the CPLD, the new FW/image runs successfully.

Could you help verify:

• Is there any step missing in my .jbc generation flow based on KDB 000080468?

 

• If the generation sequence is correct, which part of the execution flow (e.g., Jam Player ACTION parameter, TAP Reset timing, or clamp release sequence) could cause the I/O clamping to fail prematurely?

3. Support for Partial / CFM0-Only Hitless Update Is it supported to perform a Hitless Update when programming only CFM0 (ROM0) instead of the full flash image? Does the ISP Clamp and Boundary-Scan mechanism function the same way during a partial image update?

Thanks and best regards,

1 Reply

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

    I'll address each of your three questions in turn.

    1. Section 1.5 of AN904 — Quartus Prime Programmer for Hitless Update



    Your interpretation is correct. AN 904 describes implementing the hitless update through the Quartus Prime Programmer or the Jam STAPL Byte-Code Player. AN 904: MAX 10 Hitless Update Implementation Guidelines The Quartus Prime Programmer path in that section is primarily a file generation and orchestration path, not a guarantee of glitch-free I/O during the update itself when used directly from the GUI.



    To implement the hitless update through the Quartus Prime Programmer, you must create and execute a pin state information (.ips) file. AN 904: MAX 10 Hitless Update Implementation Guidelines The key point is that the MAX 10 hitless update in AN904 must be performed through external JTAG pins, AN 904: MAX 10 Hitless Update Implementation Guidelines and the MAX 10 device must be in user mode before performing the hitless update. AN 904: MAX 10 Hitless Update Implementation Guidelines If the device is not already in user mode (e.g., it is blank or freshly erased), the real-time ISP / hitless clamp mechanism will not engage correctly — which is a common source of confusion between "programming via Programmer GUI" and "true hitless update."



    So yes — Section 1.5 is best understood as describing how to use the Programmer to generate the .pof + .ips → .jbc/.jam files that carry the hitless algorithm, not as a claim that clicking "Program" in the GUI alone achieves a hardware-glitch-free update.






    2. JBC Hitless Update Failure — Generation and Execution Checklist



    Here are the critical checkpoints based on the documented flow:



    File generation:




    Known software version issue:




    Execution — ISP clamp and TAP sequencing:




    Blank device edge case:



    • When a MAX 10 FPGA is blank (new device, or UFM and CFM erased), the JAM player cannot program it successfully because the real-time ISP feature is turned on when the device is not in user mode. To fix this, use the JAM player command to disable the real-time ISP feature and program it again. Why Intel® MAX® 10 FPGA cannot be programmed with Jam player if it is blank? Since you mention the new image runs after a power cycle, this suggests the flash write itself succeeds but the clamp/reconfiguration handoff is failing — pointing to the TAP sequence or clamp release timing rather than the file content.



    Jam Player execution command:


    For real-time ISP with the .jbc and Jam STAPL Byte-Code Player, use: jbi_22 -aprogram -ddo_real_time_isp=1 file_name.jbc AN 630: Real-Time ISP and ISP Clamp for Intel MAX Series Devices Confirm this flag is being passed; omitting it will cause the player to fall back to normal ISP (tri-state, no clamp).






    3. CFM0-Only (Partial) Hitless Update



    All CFM in MAX 10 devices consist of three sectors — CFM0, CFM1, and CFM2 — except for the 10M02. MAX® 10 FPGA Configuration User Guide Your 10M08 and 10M25 both have all three CFM sectors.



    The ISP clamp and boundary-scan mechanism itself is independent of which CFM sectors are being written — the clamp operates at the JTAG TAP level and holds I/Os stable regardless of the flash write scope. MAX 10 devices offer the hitless update feature, which provides the capability and flexibility to control the state of the I/O pins during the internal flash image update and reconfiguration. AN 904: MAX 10 Hitless Update Implementation Guidelines All I/O pins can remain stable without any disruption throughout the hitless update process. AN 904: MAX 10 Hitless Update Implementation Guidelines



    However, the critical constraint is the reconfiguration trigger: after the flash write completes, the device must reconfigure from the updated image. In a typical Hitless Update setup, you must first perform a Remote System Update (RSU), which involves updating the agent device's Configuration Flash Memory (CFM) with either the factory image or an application image. This step must be completed before initiating the JTAG instructions required for the Hitless Update procedure. AN 963: MAX 10 Hitless Update Implementation Guidelines Using Internal JTAG Interface If you are writing only CFM0 and the device is configured to boot from CFM0, the reconfiguration after the write should pick up the new CFM0 image — but you need to ensure the boot source selection in your POF matches your intent.



    For the internal JTAG approach (which avoids the external JTAG pin dependency), when the host controls the agent to perform a Hitless Update, a challenge arises after the CLAMP instruction is executed: the agent's I/O pins are clamped, preventing the host from driving further reconfiguration since access to the I/O pins is restricted. To overcome this, the agent MAX 10 device should include an RTL design module within its core that initiates the reconfiguration internally once the CLAMP instruction has been executed. AN 963: MAX 10 Hitless Update Implementation Guidelines Using Internal JTAG Interface



    In summary: CFM0-only programming is supported within the hitless update framework, but verify your boot image selection and ensure the reconfiguration source is correctly set to CFM0 in your design.