When I attempt to configure or acquire an IDCODE from a device, iMPACT reports one of the following errors:
"ERROR:iMPACT:583 - '1' The IDCODE read from the device does not match the IDCODE in the BSDL file."
For more iMPACT Error Articles and other Configuration Related Articles, see (Xilinx Answer 34104).
JTAG access to the board is the typical entry point to board bring-up and test. Typical JTAG problems are often related to poor signal integrity or power supply issues.
Signal integrity can be an issue and often occurs when the JTAG signals were auto routed on a board.
- To determine if there are signal integrity issues, scope the TCK, TMS, and TDI pins when iMPACT operations are run. TCK is the best place to start as reflections on the clock can double clock data and cause the JTAG tap controller to become mis-aligned.
- Slowing down the cable speed is another way to test to see if signal integrity is causing a problem. A slower TCK rate will allow more time for TMS and TDI to settle before being clocked into the device. The slower rates will still toggle TCK with the same drive strength and will not resolve reflections on the TCK lin.
Power supplies can also be an issue during board bring-up. Each device has power supply requirements and the most commonly violated specification is the requirement of a monotonic ramp rate on all power supplies.
- Scope shots of the ramp rates of all the power supplies will easily point out if there are any sections of negative slope or dips during the ramp of each Vcc rail.
- Overshoot and undershoot can also occur and cause a device to not initialize properly. Guaranteeing the power supplies are within the recommended operating conditions can resolve these issues.
The IDCODE error is second to problems with initializing the chain. The unique operation during an IDCODE check is the use of TDI to shift in the IDCODE instruction.
- If Initialize Chain is showing the full JTAG chain and Get Device IDCODE fails, monitor the TDI signal into the JTAG chain.
- If both Initialize Chain and Get Device IDCODE fail, monitor power supplies and signal integrity of the JTAG signals.
This error can also occur if a project is opened or if the devices were added manually. Ensure the Initialize Chain operation will show all of the devices in the chain before moving on to programming.
There are other scenarios with CPLD Families which can cause this issue
1. Older CoolRunner devices could have a Philips IDCODE instead of a Xilinx IDCODE (Xilinx acquired the CoolRunner line from Philips). If iMPACT reports this error message for a CoolRunner device, a slight modification to the IDCODE register in the BSDL file is required. In the IDCODE Register, "X" out the Manufacturer bits of the IDCODE:
"0000" & -- Version
"0100100010001011" & -- Part Number
"XXXXXXXXXXX" & -- Manufacturer
"1"; -- Mandatory
a. The part number in this example might differ from the part number in the BSDL file for your device.
b. The BSDL file that requires this modification is the "generic" xcr*xl.bsd file located at $xilinx\xpla3\data. iMPACT does not use the package-specific BSDL file.
c. Restart iMPACT to ensure that the modified BSDL file is loaded.
Device..................................Generic BSDL file
In most cases, this error message is indicative of a board problem. To debug JTAG chain hardware, Xilinx recommends that you use a third-party Boundary Scan tester such as Goepel, JTAG Technologies, Asset-Intertech, or Corelis. These testers provide very specific information on the nature of any JTAG chain problems.