2.7 I/O Recalibration

The PF_INIT_MONITOR IP and PFSOC_INIT_MONITOR IP are used to control I/O recalibration and monitor the initial I/O calibration. The I/O recalibration feature can be used to re-run calibration to account for VT impact on I/O performance, late bank power-up or re-powering of a bank. Recalibration capability is only available when auto calibration is enabled in the device. The use of the System Controller Suspend mode does not impact the ability to use the recalibration feature.

When I/O recalibration is enabled, the following ports are exposed in PF_INIT_MONITOR and PFSOC_INIT_MONITOR IPs:

  • BANK_#_CALIB_STATUS: The user logic uses CALIB_STATUS to determine if the calibration is completed for each I/O bank. CALIB_STATUS is 1 when the codes are locked. For the first run after reset, this is asserted by one cycle after IOCALIB_INTRPT.
  • BANK_#_CALIB_INTERRUPT: The interrupt is generated when the calibration is completed. For the calibration after reset, this is followed by locking the codes directly.
  • BANK_#_CALIB_LOCK: This is used as an override to lock the codes during intermediate runs.
  • BANK_#_CALIB_LOAD: This reloads the initial values from MUX.
  • BANK_#_CALIB_START: This indicates that the calibration of state machine must be re-run.

The following figure shows the recalibration operation.

Figure 2-29. Recalibration Operation

The following steps describe the recalibration operation:

  • Start a new calibration.
    • User activation of "bank#_calib_start"=1.
    • This initiates the calibration sequence.
  • The calibration engine indicates that it has a new code.
    • Calibration engine activates the signal "bank#_calib_interrupt"=1.
    • At this point the new calibration code is ready, but it has not been released to the I/Os. It is being held ready for when the user requires it.
  • The user indicates that the engine must send out the new code to the I/Os.
    • User activates the "bank#_calib_lock"=1.
    • This latches the new codes and distributes to the I/Os.
  • The calibration engine indicates the latching of the new codes is complete.
    • Calibration engine activates the "bank#_calib_status"=1.
    • This indicates the calibration is complete to the user and I/Os.
Important: bank#_calib_load must be tied high.

Recalibration must only be run when a bank’s VDDI/VDDAUX are at the stabilized operating levels. Running recalibration when VDDI/VDDAUX are still ramping up or not completely stabilized can result in an inaccurate bank calibration.