Hard Processor System Technical Reference Manual: Agilex™ 5 SoCs

ID 814346
Date 4/01/2024
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

5.5.7.2. DLL Lock Debugging

The DLL PHY module includes a debug feature to observe the increment and decrement profile of the DLL lock logic over an 8 sample running window. The lock_dec_dbg and lock_inc_dbg fields of the phy_dll_obs_reg_0 register hold the last 8 results of the primary DLL phase testing. The bit 0 in the fields corresponds to the latest sample, bit 1 corresponds to the previous sample, and bit 7 holds the 8th previous sample of the increment and decrement procession of the primary DLL locking function. The following table describes these bits in detail.

Table 230.  DLL Lock Debugging
lock_dec_dbg lock_inc_dbg Description
0 0 The primary DLL did not change the tap setting of the delay line for this sample period.
0 1 The primary DLL added one tap setting to the delay line for this sample period.
1 0 The primary DLL subtracted one tap setting from the delay line for this sample period.
1 1 Error condition. This combination should never occur.

The primary DLL functions with the most accuracy when the phase detect window is just large enough to cause the locking mechanism to respond with a “00” setting indicating no change in the tap setting. If the phase detect window is too small, the increment/decrement debug fields never respond with a “00” in the same cycle. As elements are added to the phase detect logic, the param_phase_detect_sel field of the phy_dll_master_ctrl_reg register increases and the increment/decrement debug fields respond with “00”.

The DLL PHY also includes another debug feature that provides visibility into the magnitude of the local drift of the primary DLL once it is locked. The same increment/decrement debug fields can be sampled to detect N consecutive increments or decrements in an 8 sample window. The value of N is determined by the setting of the param_dll_lock_num field of the phy_dll_master_ctrl_reg register. Each time the increment/decrement debug fields detect N consecutive increment or decrement functions, the value of the dll_unlock_cnt field of the phy_dll_obs_reg_0 register is incremented. The dll_unlock_cnt value is reset to 0x00 by asserting and de-asserting the PHY reset. The dll_unlock_cnt value saturates at a value of 0x1f. Any time the dll_unlock_cnt field is triggered to increment, the value of the lock_inc_dbg and lock_dec_dbg fields is updated accordingly.