πŸ”§ DFT Blog

Part 10 of 11

JTAG (IEEE 1149.1)

The universal debug and test interface

By Praveen Kumar Vagala

1,167 views

What is JTAG?

JTAG = Joint Test Action Group

A standard 5-wire interface for testing and debugging chips. Found on nearly every modern chip.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ TDI ─────────────────────────────────►│ β”‚ (Test Data In) β”‚ β”‚ β”‚ β”‚ TDO ◄─────────────────────────────────│ β”‚ (Test Data Out) β”‚ β”‚ β”‚ β”‚ TCK ─────────────────────────────────►│ β”‚ (Test Clock) β”‚ β”‚ β”‚ β”‚ TMS ─────────────────────────────────►│ β”‚ (Test Mode Select) β”‚ β”‚ β”‚ β”‚ TRST ────────────────────────────────►│ β”‚ (Test Reset - optional) β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

The 5 JTAG Signals

SignalDirectionPurpose
TDIInputSerial data into chip
TDOOutputSerial data out of chip
TCKInputTest clock
TMSInputControls TAP state machine
TRSTInputAsync reset (optional)

Key insight: Only 5 pins to access the entire chip!

TAP Controller

TAP = Test Access Port

A state machine that controls JTAG operations.

TMS=1 (stay in reset) β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β–Ό β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”Œβ”€β”€β”€β”€β”€β”€β–Ίβ”‚Test-Logicβ”‚β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ Reset β”‚ β”‚ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ TMS=0 β”‚ β–Ό β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”Œβ”€β”€β”€β”‚Run-Test/ │◄──┐ β”‚ β”‚ β”‚ Idle β”‚ β”‚ TMS=0 β”‚ β”‚ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜β”€β”€β”€β”˜ β”‚ β”‚ β”‚ TMS=1 β”‚ β”‚ β–Ό β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚Select-DR │──TMS=1─►│Select-IR β”‚ β”‚ β”‚ β”‚ Scan β”‚ β”‚ Scan β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ TMS=0 β”‚ TMS=0 β”‚ β”‚ β–Ό β–Ό β”‚ β”‚ (DR Path) (IR Path) β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ (from Update-DR/IR)

Main Paths

JTAG Instructions

Common instructions loaded via IR path:

InstructionOpcodePurpose
BYPASSAll 1sPass data through (1-bit register)
EXTESTVariesTest external connections
SAMPLEVariesSample I/O pins
INTESTVariesTest internal logic
IDCODEVariesRead chip ID
USERCODEVariesUser-defined code

JTAG Scan Operations

1. Load Instruction

1. Go to Shift-IR state
2. Shift instruction into IR
3. Go to Update-IR
4. Instruction takes effect

2. Shift Data

1. Go to Shift-DR state
2. Shift data in/out through selected register
3. Go to Update-DR
4. New data takes effect

Boundary Scan

JTAG's original purpose: test connections between chips on a board.

Chip A Chip B β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ ○─────│────────────────│─────○ β”‚ β”‚ ○─────│────────────────│─────○ β”‚ β”‚ ○─────│────────────────│─────○ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↑ ↑ Boundary Boundary Scan Cells Scan Cells

Boundary Scan Cell

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” From Core ──────►│ │──────► To Pin β”‚ Boundary Cell β”‚ From Pin ──────►│ │──────► To Core β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” Shift Update Mode (TDI/TDO) Reg Control

Each I/O pin has a boundary scan cell that can:

Daisy Chaining

Multiple chips share one JTAG interface:

TDI ──►[Chip1]──►[Chip2]──►[Chip3]──► TDO ↑ ↑ ↑ └─────────┴─────────┴── TCK, TMS (shared)

Addressing Specific Chip

To access Chip2 only:
1. Put Chip1 in BYPASS (1-bit delay)
2. Put Chip2 in target mode (EXTEST, etc.)
3. Put Chip3 in BYPASS (1-bit delay)
4. Shift data: [Chip1 bypass][Chip2 data][Chip3 bypass]

JTAG Use Cases

1. Board-Level Testing

2. Chip Debugging

3. Programming

4. In-System Test

JTAG Tools

ToolPurpose
BSDL fileDescribes chip's JTAG interface
SVF filePortable test vectors
JTAG debuggerHardware interface (SEGGER, etc.)
OpenOCDOpen-source JTAG software

Summary

ConceptKey Point
JTAG5-wire standard test interface
TAPState machine controller
TDI/TDOSerial data path
Boundary ScanTest board connections
InstructionsBYPASS, EXTEST, IDCODE, etc.
Daisy chainMultiple chips, one interface