This is a common question during the development of a test system. The problem generally occurs when a board is first run, and stems from a slight misunderstanding of what Checkchain is designed to do. This article therefore attempts to explain the difference between the Checkchain function and all other tests, in order to explain how this situation can happen.
The Checkchain function is designed to:
- Verify that data can get from the circuit TDI to the circuit TDO.
- Count the number of JTAG devices in the chain.
- Verify the IDCODES for the devices are as expected and in the correct order.
To achieve this only the BYPASS and IDCODE JTAG registers are used. The JTAG devices never go into boundary scan test mode (EXTEST) so the circuit under test will be operating normally, whether that is running code or in it’s idle power up state. This is exactly what you want Checkchain to do because if the wrong board is connected to the XJLink then it would be unwise to try to issue EXTEST instructions.
In a typical test setup Checkchain will be the first test to be executed and the Connection test will be the second. This means that before the Connection test can start one of the first things it must do is apply the Safe bitstream and put the JTAG devices into EXTEST. It is at this point that a broken JTAG chain often occurs, as it is the first time that XJTAG takes control of the circuit. If a reset pin has not been properly disabled or a power enable signal has not driven correctly then the board will either reset or power down, breaking the JTAG chain.
The blog entries “Debugging the Connection Test” deal with how to investigate these issues.