In XJTAG 3.12 we have expanded the capabilities of our Signal Integrity testing. Rather than simply reporting any errors found in the attempted scans, it will now inspect those errors and suggest possible causes.

This has been achieved by taking our extensive experience manually analysing errors in signal integrity scan data for our clients, and utilising that to define a set of algorithms which can be applied within the XJTAG software package.

As any errors are detected during the scans, in addition to displaying the bit stream scanned out and back in, any recognised pattern in the differences will be detailed below.

This example shows one of the error conditions that XJTAG will look for. The data returned from the chain is consistently offset from the data that was scanned into it – here the data is 15 bits ahead. This indicates that the JTAG chain was 15 bits shorter than was expected.

Upon completion of the Signal Integrity scan, a summary will be displayed, detailing any potential causes that the system could identify.

The example given here shows the possible cause of the 15-bit misalignment indicated in the error above. To determine this, XJTAG has examined the BSDL files provided as part of the JTAG chain setup, and the selected Signal Integrity scan mode, to figure out if there is any possible register swap that would match the misalignment. In the example project used here, the middle device in the chain has an Instruction Register 15 bits shorter than the Boundary Scan Register used in the Signal Integrity scan.

XJTAG will also consider the possibility that multiple devices in the chain scanned through a different register than expected – taking this example, the first and last device have Instruction Registers 5 and 10 bits shorter than their respective Boundary Scan Registers, also giving a combined difference of 15 bits.

This sort of error is likely to be caused either by something triggering a device reset – for example a glitch on an asynchronous reset such as nTRST – or by a glitch on TCK causing the device(s) to select the wrong register.