Electronics > FPGA

Xilinx, JTAG, and TCF


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...


[0] Message Index

There was an error while thanking
Go to full version