Inquire: Call 0086-755-23203480, or reach out via the form below/your sales contact to discuss our design, manufacturing, and assembly capabilities.
Quote: Email your PCB files to Sales@pcbsync.com (Preferred for large files) or submit online. We will contact you promptly. Please ensure your email is correct.
Notes: For PCB fabrication, we require PCB design file in Gerber RS-274X format (most preferred), *.PCB/DDB (Protel, inform your program version) format or *.BRD (Eagle) format. For PCB assembly, we require PCB design file in above mentioned format, drilling file and BOM. Click to download BOM template To avoid file missing, please include all files into one folder and compress it into .zip or .rar format.
Getting your JTAG programming hardware set up correctly is half the battle when working with Xilinx FPGAs. I’ve spent more hours than I care to admit troubleshooting connection issues that turned out to be simple wiring mistakes or driver problems. This guide walks through everything from choosing the right Xilinx programming tools to debugging complex JTAG chains using ChipScope and iMPACT.
Before you connect anything, you need to understand what hardware is available and which one fits your project. The Xilinx ecosystem includes several programming cables, each with different capabilities and price points.
Official AMD/Xilinx Programming Cables
The official cables from AMD (formerly Xilinx) are the gold standard for reliability and compatibility with all Xilinx programming tools.
Cable Model
Part Number
Key Features
Best For
Platform Cable USB II
HW-USB-II-G
Hi-Speed USB 2.0, 24 MHz max TCK
Production & Development
SmartLynq+
HW-SMARTLYNQ+
Ethernet & USB, high-speed debug
Versal & UltraScale+
SmartLynq Data Cable
HW-SMARTLYNQ-DATA
Basic Ethernet/USB JTAG
General debugging
JTAG Flying Wire Adapter
HW-USB-FLYLEADS-G
Flying lead connections
Prototype boards
The Platform Cable USB II (HW-USB-II-G) remains the workhorse for most FPGA development. It supports all Xilinx device families from Spartan-3 through UltraScale+, handles JTAG, Slave-Serial, and SPI programming modes, and works with both ISE and Vivado tool suites.
The Xilinx DLC9LP and DLC9G Cables
If you’ve searched for affordable programming options, you’ve probably encountered the Xilinx DLC9LP and similar cables. These are typically third-party clones of the original Platform Cable USB, built around the CY7C68013A USB controller paired with an XC2C256 CPLD.
The DLC9LP specification typically includes:
Support for all Xilinx device families (Spartan, Virtex, Artix, Kintex, Zynq)
JTAG, Slave-Serial, and SPI programming modes
I/O voltage compatibility from 1.5V to 5V
TCK frequencies from 750 kHz to 24 MHz
Compatibility with ISE 8.x through 14.7 and Vivado
These cables work well for hobbyist projects and prototype development, though you might encounter occasional compatibility quirks with newer Vivado versions. For production programming or critical projects, the official HW-USB-II-G is worth the investment.
HW-USB-FLYLEADS-G: When Standard Headers Won’t Work
Not every board has a nice 14-pin JTAG header waiting for you. When you’re working with space-constrained designs or prototype boards with distributed test points, the HW-USB-FLYLEADS-G flying wire adapter becomes essential.
This adapter plugs into the 14-pin connector on your Platform Cable USB II and provides individual flying leads for each signal. The flying lead pinout follows this arrangement:
Lead Number
Signal
Direction
Description
1
TMS
Input
Test Mode Select
2
TDI
Input
Test Data In
3
TDO
Output
Test Data Out
4
TCK
Input
Test Clock
5
GND
Power
Ground Reference
6
VREF
Power
Target Voltage Reference
The VREF connection is critical. Your programming cable uses this pin to sense the target’s I/O voltage and adjust its output buffers accordingly. Without proper VREF, you’ll get communication errors or potentially damage voltage-sensitive devices.
JTAG Header Pinout and PCB Design Considerations
When designing your PCB, getting the JTAG header right the first time saves hours of debugging later. The standard Xilinx 14-pin header uses 2mm pitch and follows this pinout:
Standard 14-Pin Xilinx JTAG Header Pinout
Pin
Signal
Pin
Signal
1
VREF/VCC
2
GND
3
GND
4
TMS
5
GND
6
TCK
7
GND
8
TDO
9
GND
10
TDI
11
GND
12
NC
13
GND
14
NC/INIT
Notice that odd pins (except pin 1) are all ground connections. This ground-signal-ground pattern provides signal integrity at higher TCK frequencies. Pin 14 can optionally connect to the FPGA’s INIT_B pin for certain configuration modes or to SRST_B on Zynq devices for processor reset during debugging.
PCB Layout Tips for JTAG Headers
From years of debugging marginal JTAG connections, here are the layout practices that actually matter:
Keep the JTAG header within 3 inches of the FPGA if possible. Longer traces need more attention to impedance matching. Place 100-ohm series termination resistors on TDI, TDO, TMS, and TCK as close to the FPGA pins as possible. This reduces ringing and improves signal integrity at speeds above 10 MHz.
Add 4.7k pull-up resistors on TDI, TMS, and TCK to prevent floating states when the cable isn’t connected. The FPGA’s internal pull-ups aren’t always sufficient, especially on boards with multiple power domains.
If you’re using flying leads instead of a header, maintain at least 0.1″ spacing between pads and keep lead runs as short as practical. Flying wire connections are inherently less reliable than proper IDC connectors.
Setting Up Your JTAG Hardware Connection
Before powering up and attempting to program, verify your physical connections systematically. JTAG issues almost always trace back to one of three problems: power, ground, or signal integrity.
Pre-Power Checklist
Verify these points before applying power:
VREF connects to the correct I/O bank voltage (typically VCCO_0)
At least one GND wire connects to board ground
TDI, TDO, TMS, and TCK connect to the correct FPGA pins
No shorts exist between JTAG signals
Target board power supply is adequate (JTAG operations increase transient current)
Power Sequencing for JTAG Operations
The programming cable derives its operating power from the host USB port but senses target voltage through VREF. Power your target board before connecting USB, or ensure your cable handles hot-plug correctly (the official HW-USB-II-G does; some clones don’t).
The Platform Cable USB II LED indicates connection status:
LED Color
Meaning
Off
No USB connection
Yellow
USB connected, no target voltage
Green
USB connected, valid target voltage detected
Red
Programming/communication in progress
Blinking
Firmware update in progress
If you see yellow when your target is powered, check your VREF connection. This is the most common gotcha with new board bring-up.
Using iMPACT for Device Programming
iMPACT remains the primary programming interface for ISE-based workflows and is still supported in newer Vivado installations. Understanding its quirks saves significant debugging time.
Initializing the JTAG Chain
Launch iMPACT and select “Boundary Scan” mode. Before doing anything else, verify your cable is detected:
Go to Output → Cable Setup
Select your cable type (Platform Cable USB II, DLC9, etc.)
Set appropriate TCK frequency (start at 6 MHz for troubleshooting)
Click OK to initialize
If the cable isn’t detected, check your USB drivers. On Windows, the drivers should install automatically with ISE/Vivado. On Linux, you may need to configure udev rules and possibly install the alternative libusb-based driver.
Performing Boundary Scan Detection
Click Initialize Chain or press Ctrl+I. iMPACT will shift data through the JTAG chain and identify all connected devices by reading their IDCODE registers.
Common issues at this stage:
“No devices detected” – Check VREF, verify TCK/TMS/TDI/TDO connections, try reducing TCK frequency to 750 kHz.
“Cable communication error” – USB driver issue or defective cable. Try a different USB port, preferably directly connected to the motherboard.
“Unable to identify device” – BSDL file missing or corrupted. Download the appropriate BSDL file from the Xilinx website.
Programming Device Configuration
Once the chain is detected, right-click on your target device and select Assign New Configuration File. Navigate to your generated .bit file (for FPGAs) or .jed file (for CPLDs).
For FPGA configuration:
Right-click the device and select Program
Verify the programming options match your requirements
Click OK to begin programming
Verify successful completion (green checkmark)
For PROM programming, the process adds an extra verification step. Always verify after programming PROMs – I’ve seen too many boards fail in the field due to unverified PROM programming.
Debugging with ChipScope and Integrated Logic Analyzer
When your design doesn’t behave as expected, you need visibility into what’s happening inside the FPGA. ChipScope (in ISE) and the Integrated Logic Analyzer (ILA in Vivado) provide that visibility through the same JTAG connection used for programming.
Understanding ChipScope Architecture
ChipScope inserts debug cores directly into your synthesized design. These cores capture signals based on trigger conditions you define and store them in internal BRAM. When triggered, the captured data streams back to your PC through JTAG for analysis.
Key ChipScope components:
ILA (Integrated Logic Analyzer) – Captures internal signals
VIO (Virtual I/O) – Provides real-time control of test signals
ICON (Integrated Controller) – Manages JTAG communication
In Vivado, the ILA core handles most debugging scenarios, with the Debug Hub managing JTAG communication automatically.
Setting Up ILA Probes
The critical decision is which signals to probe. You can’t monitor everything (BRAM is limited), so choose signals that reveal the behavior you’re debugging.
For protocol debugging, probe:
State machine current states
Handshake signals (valid, ready, acknowledge)
Error flags and status registers
For timing issues, probe:
Clock enables and domain crossing signals
Reset sequences
Counter values at key transitions
Capturing and Analyzing Data
After programming your design with embedded debug cores:
Open the Hardware Manager in Vivado
Connect to your target board
Program the device with both the .bit and .ltx files
Navigate to the ILA dashboard
Set your trigger conditions to capture the behavior of interest. For simple debugging, trigger on a specific signal edge. For complex scenarios, use multiple match conditions with appropriate logic (AND, OR, sequential).
The waveform viewer displays captured data similar to a traditional logic analyzer. Use the radix settings to view data in the most useful format (hex for addresses, unsigned for counters, ASCII for character data).
Troubleshooting Common JTAG Programming Issues
After years of FPGA development, these are the issues I see most frequently and their solutions.
Cable Not Detected
Check USB enumeration first. On Windows, open Device Manager and look for “Xilinx USB Cable” under “Universal Serial Bus devices.” If you see a yellow warning icon, reinstall the drivers.
On Linux, run lsusb and look for vendor ID 03fd. If present but not functional, your udev rules may need updating. Create /etc/udev/rules.d/99-xilinx.rules with appropriate permissions.
Programming Fails Midway
This usually indicates power supply issues or signal integrity problems at higher TCK frequencies. Try reducing TCK to 750 kHz or 1 MHz. If that works, your signal path has too much capacitance or inadequate termination for high-speed operation.
Also verify your power supply can handle the transient current during programming. FPGA configuration involves significant internal switching and can cause voltage droop on marginal supplies.
ChipScope Shows No Debug Cores
Verify you programmed both the bitstream and the debug probes file (.ltx). In Vivado Hardware Manager, both files must be selected during programming. If using command-line programming, ensure your script includes both files.
Also check that your design actually synthesized with debug cores. Open the schematic view and verify ILA instances are present in the elaborated design.
Useful Resources and Downloads
Resource
Description
Link
Platform Cable USB II Datasheet
Official hardware specifications
AMD Technical Documentation
Vivado Programming Guide (UG908)
Comprehensive programming reference
AMD Documentation Portal
ISE iMPACT User Guide
Legacy programming tool documentation
AMD Archive
Digilent Adept Software
Alternative programming software
Digilent Downloads
libusb-driver for Linux
Open-source JTAG driver
rmdir.de/~michael/xilinx
xc3sprog
Open-source programming utility
GitHub
Frequently Asked Questions About Xilinx JTAG Programming
What’s the difference between the DLC9LP and HW-USB-II-G cables?
The HW-USB-II-G is the official AMD/Xilinx Platform Cable USB II, while the DLC9LP is typically a third-party clone. Both support the same device families and programming modes. The official cable offers guaranteed compatibility, firmware updates, and support. The DLC9LP costs significantly less but may have compatibility issues with newer Vivado versions and lacks official support.
Can I use the HW-USB-FLYLEADS-G with any programming cable?
The HW-USB-FLYLEADS-G adapter is designed specifically for the Platform Cable USB II (HW-USB-II-G). It converts the 14-pin IDC connector to individual flying wires. Third-party cables with the same 14-pin interface may work, but verify the pinout matches before connecting. Incorrect connections can damage both the cable and your target board.
Why does my JTAG chain detection fail intermittently?
Intermittent detection usually indicates marginal signal integrity. Common causes include: inadequate grounding (use multiple ground connections), missing termination resistors on long traces, cable positioned too close to switching power supplies or motor drivers, or loose connections at the header. Also check that VREF is stable – fluctuating VREF causes the cable to continuously re-adapt its I/O levels.
What TCK frequency should I use for reliable programming?
Start at 6 MHz for initial bring-up. This provides a good balance between speed and reliability. Once your JTAG connection is stable, you can increase to 12 or 24 MHz for faster programming. If you experience errors, reduce the frequency. Long cable runs, prototype wiring, or designs with many devices in the JTAG chain may require slower speeds.
Can I debug Zynq processors through the same JTAG connection used for FPGA programming?
Yes. On Zynq devices, the JTAG chain includes both the programmable logic (PL) and the ARM processor cores (PS). The Vivado Hardware Manager and SDK debugger both access the Zynq through this shared JTAG interface. The Platform Cable USB II and compatible cables include an optional reset signal (pin 14) specifically for resetting the processor during debug operations.
Wrapping Up
Setting up Xilinx programming tools and JTAG hardware correctly from the start prevents hours of frustrating debugging later. Whether you’re using an official HW-USB-II-G, a budget-friendly DLC9LP, or flying leads through the HW-USB-FLYLEADS-G adapter, the fundamentals remain the same: verify your connections, understand your signal integrity requirements, and know how to systematically troubleshoot when things don’t work.
The combination of reliable JTAG programming and ChipScope/ILA debugging gives you complete visibility into your FPGA designs. Master these tools, and you’ll spend more time developing interesting designs and less time wondering why your board won’t program.
Inquire: Call 0086-755-23203480, or reach out via the form below/your sales contact to discuss our design, manufacturing, and assembly capabilities.
Quote: Email your PCB files to Sales@pcbsync.com (Preferred for large files) or submit online. We will contact you promptly. Please ensure your email is correct.
Notes: For PCB fabrication, we require PCB design file in Gerber RS-274X format (most preferred), *.PCB/DDB (Protel, inform your program version) format or *.BRD (Eagle) format. For PCB assembly, we require PCB design file in above mentioned format, drilling file and BOM. Click to download BOM template To avoid file missing, please include all files into one folder and compress it into .zip or .rar format.