Lib(X)SVF – A library for implementing SVF and XSVF JTAG players

JTAG (IEEE 1149.1, aka „Boundary Scan“[1] [2]) is a standard IC testing, debugging and programming port.

SVF (Serial Vector Format[3] [4]) is a file format for storing the patterns that should be sent to the JTAG interface, as well as the expected response. It is used as an exchange format between programms that generate the JTAG input/output patterns and devices that can physically talk to a JTAG interface.

XSVF (Xilinx Serial Vector Format[5]) is a binary variant of the SVF file format, optimized but not limited to programming Xilinx FPGA and CPLD devices.

Often one wants to use an embedded host processor or microcontroller to access the JTAG interface on an embedded device instead of using an external JTAG probe. This library can be used to implement such a solution. In addition to playing SVF and XSVF files this library is also capable of scanning the devices in the JTAG chain.

The libraries API can be used in a simple synchronous mode (perfect for register mapped GPIOs) or in a bit more complex asynchronous mode (for high speed interfaces with some roundtrip time).

Lib(X)SVF is free software licensed under the ISC license[6] (a GPL compatible licence that is similar in terms to the MIT license or the 2-clause BSD license).

[1] http://en.wikipedia.org/wiki/JTAG
[2] http://www.fpga4fun.com/JTAG.html
[3] http://en.wikipedia.org/wiki/Serial_Vector_Format
[4] http://www.asset-intertech.com/support/svf.pdf
[5] http://www.xilinx.com/bvdocs/appnotes/xapp503.pdf
[6] http://en.wikipedia.org/wiki/ISC_license

Documentation (README file):
http://svn.clifford.at/libxsvf/trunk/README

Example program (simple synchronous interface):
http://svn.clifford.at/libxsvf/trunk/xsvftool-gpio.c

Example program (asynchronous interface to the FTDI FT232H/FT2232H/FT4232H USB chips):
http://svn.clifford.at/libxsvf/trunk/xsvftool-ft232h.c

Example program (interface to the Xilinx Platform Cable USB):
http://svn.clifford.at/libxsvf/trunk/xsvftool-xpcu.src/

Link to the sources (subversion repository):
http://svn.clifford.at/libxsvf/trunk/

Projects using Lib(X)SVF

The following is a small excerpt of projects using Lib(X)SVF:

Please drop me a line if you are using Lib(X)SVF for something interesting and agree to be listed here with your project.

In papers and reports, please refer to Lib(X)SVF as follows: Clifford Wolf. Lib(X)SVF: A library for implementing SVF and XSVF JTAG players. http://www.clifford.at/libxsvf/, e.g. using the following BibTeX code:

@MISC{LibXSVF,
        author = {Clifford Wolf},
        title = {Lib(X)SVF: A library for implementing SVF and XSVF JTAG players},
        howpublished = "\url{http://www.clifford.at/libxsvf/}"
}