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# 68163

High Speed SelectIO Wizard - Logic might reset while waiting for DLY_RDY or VTC_RDY during the reset sequence

Description

Version Found: 2016.2 and older

When using High Speed SelectIO Wizard (HSSIO), the state machine can restart while waiting for DLY_RDY or VTC_RDY to go high. 

The state machine has a timer to reset the state machine when the reset state machine is idle. When combining multiple HSSIO cores, there might be occasions when the timers incorrectly time-out.

Note: this Answer Record should not be viewed in isolation. For all other known issues and to see what version of Vivado / High Speed SelectIO Wizard these issues have been resolved in, please refer to (Xilinx Answer 64216)

Solution

This issue is resolved in the 2016.3 version of the High Speed SelectIO Wizard.

For designs in Vivado 2016.2 and earlier versions, the reset state machine can be fixed by editing the Verilog RTL for the reset state machine. 

The reset state machine RTL that causes the reset sequence to restart is defined in rst_scheme.v.

           WAIT_FOR_BSC_DLY_RDY:
           begin
              if (!pll0_locked_sync || (USE_PLL1 == 1'b1 && !pll1_locked_sync))
                 hssio_state        <= `pTCQ ASSERT_ALL_RESETS;
              else if(all_bsc_dly_rdy) begin
                 timeout_cntr_rst   <= `pTCQ 1'b1;
                 hssio_state        <= `pTCQ ASSERT_BSC_EN_VTC;
              end
              else if (wait_bsc_dly_rdy_timeout)
                 hssio_state        <= `pTCQ ASSERT_ALL_RESETS;
              else
                 hssio_state        <= `pTCQ WAIT_FOR_BSC_DLY_RDY;
           end
 
           WAIT_FOR_BSC_VTC_RDY:
           begin
              if (!pll0_locked_sync || (USE_PLL1 == 1'b1 && !pll1_locked_sync )|| !all_bsc_dly_rdy)
                 hssio_state        <= `pTCQ ASSERT_ALL_RESETS;
              else if(all_bsc_vtc_rdy) begin
                 timeout_cntr_rst   <= `pTCQ 1'b1;
                 hssio_state        <=  `pTCQ RESET_SEQ_DONE;
              end
              else if (wait_bsc_vtc_rdy_timeout)
                 hssio_state        <= `pTCQ ASSERT_ALL_RESETS;
              else
                 hssio_state        <= `pTCQ WAIT_FOR_BSC_VTC_RDY;
           end

For designs that require a time-out, we recommend this be done externally to the High Speed SelectIO Wizard, so that the specific timing can be adjusted for each application as needed.

AR# 68163
Date Created 11/02/2016
Last Updated 11/09/2016
Status Active
Type General Article
Devices
  • Kintex UltraScale
  • Kintex UltraScale+
  • Virtex UltraScale
  • More
  • Virtex UltraScale+
  • Zynq UltraScale+ MPSoC
  • Less