JTAG is JTAG is JTAG............
.......as long as you can avoid the vendor supplied programming utility.
It seems that every chip vendor requires you to use 'their own' - expensive - JTAG programmer to program the chips they produce. While this may be pocket change for some folks, some of us prefer to save a dollar or ten where ever possible.
While a hobbyist may not want to spend money on yet another programming device, other reasons exist for not wanting to use the vendors programming software/tool. You might have several devices, all from different vendors, and all sitting on the same JTAG chain. Programming each device with it's vendors software and associated JTAG programmer can become a real pain.
Myself, I don't like the artificial limits that chip companies impose on their customers. The first (only) programmer I bought was an Altera USB Blaster (likely some kind of clone actually), this was great for the large Altera CPLD I was playing with but I also had a small Xilinx device as well.
Open Source to the rescue with UrJTAG.
Link:
http://urjtag.org/UrJTAG allows you to use most JTAG programmers with a variety of devices from different vendors.
The key to this is to export your design as an .svf file, most vendors have this as an option in their software.
This is an example of programing a 'Xilinx' xc3s500e FPGA with an 'Altera' USB Blaster.
CrazyApe ~ # jtag
UrJTAG 0.10 #2039
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors
UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.
warning: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.
jtag> cable UsbBlaster
Connected to libftdi driver.
jtag> detect
IR length: 14
Chain length: 2
Device Id: 11010101000001000110000010010011 (0xD5046093)
Manufacturer: Xilinx (0x093)
Part(0): xcf04s (0x5046)
Stepping: 13
Filename: /usr/share/urjtag/xilinx/xcf04s/xcf04s
Device Id: 01000001110000100010000010010011 (0x41C22093)
Manufacturer: Xilinx (0x093)
Part(1): xc3s500e_fg320 (0x1C22)
Stepping: 4
Filename: /usr/share/urjtag/xilinx/xc3s500e_fg320/xc3s500e_fg320
jtag> svf /mnt/EDA-Drive/Work/FPGA/xilinx/RotoFractal/default.svf
warning: USB-Blaster frequency is fixed to 12000000 Hz
jtag> quit
CrazyApe ~ #