I've been working on a Python version of the XSTOOLs software for a while now, but I finally got around to making it into a package. Distributing it as a ZIP file was becoming too much of a hassle.
Now all you have to do to install it is type:
pip install xstools
This installs the package and a few helpful scripts:
This script will download a XILINX bitstream into the FPGA on a XuLA or XuLA2 board.
This script will download new firmware into the user portion of the microcontroller memory on a XuLA or XuLA2 board.
Just use the
--help option with any of these commands to get some information on how to use them. These scripts don't have all the features of the official XSTOOLs, yet, but I'm getting there.
If you want to see the details of how the various classes in the package interact, then I suggest running doxygen on the source directory. But here's a synopsis of what the package files are for:
Implements the basic USB interface to the XESS board.
Builds an interface to the FPGA's JTAG port on top of xsusb.py.
Creates an interface for performing basic I/O between the host PC and the FPGA via the FPGA's JTAG port.
Adds the ability to apply test vectors to a device-under-test (DUT) in the FPGA and read back the results.
Adds the ability to read and write RAM or registers implemented in the FPGA.
Adds the ability to send and receive data over an I2C link between the FPGA and an external chip.
A class that provides methods for programming the PIC microcontroller on the XESS board.
A class that provides methods for programming the FPGA on the XESS board.
A set of classes for various types of XESS boards. Each one includes an instantiation of the PIC microcontroller class and the FPGA class.
A class for storing bit strings.
A class for storing XILINX bitstreams read from files as bit strings.
A class for providing consistent error messages.
Now all I have to do is re-write some portions of "FPGAs!? Now What?" to use the new package.