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

XC4000 JTAG Programmer - Registers never released from initial state


Keywords: C2, C3, DONE, alignment, 4000EX, 4000XL, 4000XLA, 4000XV, 4000, 4000E, Spartan, 4000L, SpartanXL, 5200, JTAG, register, tck, startup

Urgency: Hot

General Description:
Upon downloading a bitstream, all combinational logic is functioning correctly, but the registers do not function, i.e. they are never released from their initial state. The DONE pin has gone high, indicating successful configuration.


This behavior is a consequence of the tap controller on 4k-based parts
- including the entire 4k family, plus Spartan and SpartanXL - having dual-purpose I/O pins.

The problem is that once DONE goes high, TCK may revert to a user I/O pin if it has been configured as such in the user's design. When this happens, the GSR (global set/reset) net fails to release because the connection between TCK - now a user I/O - and the STARTUP block has been lost. Consequently, registers are never released from their initial state.

There are two ways to get around this behavior:

1. The BSCAN block should be instantiated in a design with registers to ensure that TCK remains connected to the STARTUP block. This will allow the registers to initialize properly.

2. The default startup sequence is (a) DONE goes high, (b) I/Os go active, and (c) GSR is released. This can be changed so that DONE going high is the last step in the sequence, thus alleviating the problem of TCK losing its connection to the STARTUP block prior to GSR being released.

While in the Flow Engine, the startup sequence can be changed through Setup -> Options -> Configuration Options -> Startup -> Output Events.

AR# 6136
Date 09/30/2005
Status Archive
Type ??????