A few people have asked us how to deal with differential pins when writing XJEase tests. They see them change value on an oscilloscope during the Connection Test, but aren’t sure how to deal with them explicitly in .xje files.

A BSDL file lists a differential pair as a ‘grouped port’, which effectively means that the pins can only be accessed as a pair. In this scenario you cannot directly access the -ve leg of the pair, so you must write to or read from the pair as a group by accessing the +ve pin. When the pins output, as you might expect, the +ve pin is driven normally whilst the -ve pin is driven to the opposite value of the +ve pin.  XJEase reflects the underlying JTAG in this case, so when writing XJEase tests you must set and/or read the +ve leg of the differential pair.

When driving outputs, this is the end of the story. However, there is a potential gotcha in reading differential pair signals, and this is a limitation in the testing possible with 1149.1. Reading the correct value back on the pair does not mean that the differential pair is definitely 100% fault-free. Reading a ‘1’ on the pair means that the +ve pin is at a higher voltage than the -ve pin. It doesn’t mean that the +ve leg is properly high or the -ve leg is properly low, and it is therefore common  to observe the correct read-values even when one leg of the differential signal is open circuit. This is part of the reason that the 1149.6 extension to the JTAG standard was written – it allows much better testing of differential signals. However, because this requires 1149.6-capable devices at both ends of the signal, it has to be done in the Connection Test, not in the XJEase language.