So I recently picked up a Zynq dev board (MicroZed) with the intention of finally teaching myself an HDL and learning synthesis and simulation tools. Belatedly I realized that it doesn't come with on-board USB-JTAG. This being Zynq you can do a certain amount just by booting Linux with your FPGA bit file on the SD card, but eventually I'll want a proper JTAG adapter. Especially as the kit came with a Vivado Design Edition voucher which includes Chipscope (now called Vivado Logic Analyzer).
Looking at my options, there are the $$$ Xilinx "platform cables," cheap Ebay clones of the Xilinx cables, and Digilent cables. The latter are actually quite reasonable ($60), except that they're a single-use item---only for use with Xilinx FPGAs---which I find somewhat annoying. In this age of fast PCs and USB, why is it that we still can't buy a single "do it all" JTAG thingie that works with any FPGA or MCU with suitable adapters and a universal software interface? The rebel in me hates subsidizing these anti-competitive practices.
It turns out that in their new toolset (Vivado), Xilinx has embraced an open standard called the Target Communication Framework:
http://www.eclipse.org/tcf/. The drivers for the Xilinx and Digilent cables are encapsulated in an agent called
hw_server which speaks TCF to the rest of the toolset using JSON over TCP/IP. (This has the nice side-effect of allowing remote debugging.) The
hw_server is probably based on this open-source template:
http://git.eclipse.org/c/tcf/org.eclipse.tcf.git/plain/docs/TCF%20Linux%20Agent%20Prototype.html. Which has me wondering... How much effort would it take to write a replacement agent that talks to some cheap FTDI JTAG, or better yet, a modified version of the Black Magic Debug Probe:
https://github.com/gsmcmullin/blackmagic?
I'll probably pick up one of the cheap Xilinx-only cables and do some packet sniffing to see how complicated the protocol appears. Xilinx used to support something called "virtual cable" which turned out to be very simple indeed (
http://debugmo.de/2012/02/xvcd-the-xilinx-virtual-cable-daemon/), so I'm hopeful this will also turn out to be raw data encapsulated in a simple way. Unless they are performing some sort of authentication between agent and tools...