When I initialize JTAG chain which contains a Virtex-4 FX40 device, I receive an error such as the following:
ERROR:iMPACT:583 - '<position number>': The idcode read from the device does not match the idcode in the bsdl File.
INFO:iMPACT:1578 - '<position number>': Device IDCODE : XXXX0001111010001100000010010011
INFO:iMPACT:1579 - '<position number>': Expected IDCODE: XXXX0001111010010100000010010011
i.e., the expected IDCODE is X1E94093(HEX), but the read back IDCODE is X1E8C093 (HEX).
The expected IDCODE comes from the BSDL files.
But the BSDL files of FX40 have incorrect IDCODE.
The correct IDCODE should be XXXX0001111010001100000010010011, or X1E8C093 in HEX.
Open the xc4vfx40.bsd file with a text editor, replace below statement
"010010100" & -- array size
"010001100" & -- array size
If other .bsd files, such as xc4vfx40_ff1152.bsd, are needed, you should modify them in this way as well.