UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 25469

Virtex-4 RocketIO Wizard - GT11_INIT State Machine startup failure

Description

The GT11_INIT State Machine that is included in the Virtex-4 RocketIO Wizard example design can fail in certain situations. This Answer Record describes fixes for these issues.

Solution

The Virtex-4 RocketIO Wizard v1.4 and earlier contains two modules that control MGT resets. The GT11_INIT_TX and GT11_INIT_RX modules are one-hot encoded state machines that are synchronous to DCLK. Both of these modules look at the MGT PLL lock detect ports and the DCM lock detect port to move between states.

The MGT PLL lock detect signal (called LOCK) is registered by DCLK before being sent to the state machine. The problem is that the DCM lock signal (called USRCLK_STABLE) does not get registered by DCLK before being sent to the state machine.

To fix this issue, register USRCLK_STABLE before it is ANDed with the lock_r signal.

GT11_INIT_TX Example

------------------------------------------------------------------------------

-- Synchronize LOCK

------------------------------------------------------------------------------

process(CLK)

begin

if(CLK'event and CLK = '1') then

if (reset_r(0) = '1') then

lock_r <= '0';

usrclk_stable_r <= '0';

else

lock_r <= LOCK;

usrclk_stable_r <= USRCLK_STABLE; -- Synchronize DCM Lock

end if;

end if;

end process;

...

init_fsm_wait_lock_check <= lock_r and usrclk_stable_r;

GT11_INIT_RX Example

------------------------------------------------------------------------------

-- Synchronize LOCK

------------------------------------------------------------------------------

process(CLK)

begin

if(CLK'event and CLK = '1') then

if (reset_r(0) = '1') then

lock_r <= '0';

usrclk_stable_r <= '0';

else

lock_r <= LOCK;

usrclk_stable_r <= USRCLK_STABLE; -- Synchronize DCM Lock

end if;

end if;

end process;

...

init_fsm_wait_lock_check <= lock_r and usrclk_stable_r and lockupdate_ready_i;

Virtex-4 RocketIO Wizard v1.5 fixes this issue.

Issue first published December 7, 2007

When using Synplify to synthesize the GT11_INIT state machines, the tool might change the GT11_INIT FSM encoding from one-hot to binary. When this occurs, the MGT reset outputs from this state machine are no longer registered. In rare cases, this can cause glitching on the MGT reset ports and the state machine to lock up.

To work around this issue, turn off the "FSM compiler" option in Synplify when synthesizing the GT11_INIT_TX and GT11_INIT_RX files.

This issue does not affect XST. To fix this problem, the GT11_INIT State Machines will be rewritten in Virtex-4 RocketIO Wizard v1.6 with instantiated registers on all inputs and outputs.

AR# 25469
Date Created 09/04/2007
Last Updated 12/15/2012
Status Active
Type General Article