How does iMPACT perform an "Initialize Chain" command without knowing what devices are in the chain and the IR lengths of the devices?
For more iMPACT Release Notes and other Configuration Related Articles, see (Xilinx Answer 34104).
When the TAP (Test Access Port) of a JTAG-compliant device is reset, the default instruction (either "Bypass" or "IDCODE") is pushed into the data register. By moving the TAP of all devices in the chain to SDR and clocking "0's" on TMS, iMPACT reads in a long string that consists of all of the IDCODES in a chain. Xilinx recommends holding TDI High during this operation.
Each Xilinx device has a manufacturer ID in the first 8 bits of the IDCODE and each IDCODE is 32 bits long. This is the data iMPACT is using to determine the devices in the chain.
Non-Xilinx devices can be added into a chain and may appear as unknown devices after an "Initialize Chain". The software will also allow Non-Xilinx to be added into the chain manually. It is best to run this operation by specifying the Instruction Register Length for the device as opposed to adding a third party BSDL file. The instruction register length is all that is required to add another device into a JTAG chain.
For Debugging it is good to know that TDI is not used to shift in any instructions during this operation. So, if Initialize Chain passes but other operations fail it may be an issue with the TDI input connection.