Contact Sales & After-Sales Service

Contact & Quotation

  • 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.
Drag & Drop Files, Choose Files to Upload You can upload up to 3 files.

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.

Xilinx JTAG Programming: Complete Hardware Setup & Debug Tutorial

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.

Understanding Xilinx Programming Tools and Cables

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 ModelPart NumberKey FeaturesBest For
Platform Cable USB IIHW-USB-II-GHi-Speed USB 2.0, 24 MHz max TCKProduction & Development
SmartLynq+HW-SMARTLYNQ+Ethernet & USB, high-speed debugVersal & UltraScale+
SmartLynq Data CableHW-SMARTLYNQ-DATABasic Ethernet/USB JTAGGeneral debugging
JTAG Flying Wire AdapterHW-USB-FLYLEADS-GFlying lead connectionsPrototype 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.

Read more Xilinx FPGA Series:

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 NumberSignalDirectionDescription
1TMSInputTest Mode Select
2TDIInputTest Data In
3TDOOutputTest Data Out
4TCKInputTest Clock
5GNDPowerGround Reference
6VREFPowerTarget 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

PinSignalPinSignal
1VREF/VCC2GND
3GND4TMS
5GND6TCK
7GND8TDO
9GND10TDI
11GND12NC
13GND14NC/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:

  1. VREF connects to the correct I/O bank voltage (typically VCCO_0)
  2. At least one GND wire connects to board ground
  3. TDI, TDO, TMS, and TCK connect to the correct FPGA pins
  4. No shorts exist between JTAG signals
  5. 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 ColorMeaning
OffNo USB connection
YellowUSB connected, no target voltage
GreenUSB connected, valid target voltage detected
RedProgramming/communication in progress
BlinkingFirmware 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:

  1. Go to Output → Cable Setup
  2. Select your cable type (Platform Cable USB II, DLC9, etc.)
  3. Set appropriate TCK frequency (start at 6 MHz for troubleshooting)
  4. 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:

  1. Right-click the device and select Program
  2. Verify the programming options match your requirements
  3. Click OK to begin programming
  4. 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.

Read more Xilinx Products:

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:

  1. Open the Hardware Manager in Vivado
  2. Connect to your target board
  3. Program the device with both the .bit and .ltx files
  4. 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

ResourceDescriptionLink
Platform Cable USB II DatasheetOfficial hardware specificationsAMD Technical Documentation
Vivado Programming Guide (UG908)Comprehensive programming referenceAMD Documentation Portal
ISE iMPACT User GuideLegacy programming tool documentationAMD Archive
Digilent Adept SoftwareAlternative programming softwareDigilent Downloads
libusb-driver for LinuxOpen-source JTAG driverrmdir.de/~michael/xilinx
xc3sprogOpen-source programming utilityGitHub

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.

Leave a Reply

Your email address will not be published. Required fields are marked *

Contact Sales & After-Sales Service

Contact & Quotation

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

Drag & Drop Files, Choose Files to Upload You can upload up to 3 files.

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.