JTAG IDCODE Decoder
Decode a 32-bit JTAG identification code into its version, device part number, JEDEC manufacturer identity and mandatory least-significant IDCODE bit. Use it for boundary-scan debugging, FPGA and MCU identification, scan-chain analysis and hardware bring-up.
[31:28]
[27:12]
[11:1]
[0]
IDCODE[31:28] is the 4-bit version,
IDCODE[27:12] is the 16-bit part number,
IDCODE[11:1] is the 11-bit manufacturer identity, and
IDCODE[0] must be logic 1 for an IDCODE register value.
—
—
What Is a JTAG IDCODE?
A JTAG IDCODE is a 32-bit identification value associated with the Identification Code Register defined by IEEE 1149.1 boundary-scan architecture. It allows test equipment, debuggers and scan-chain software to obtain basic identification information from a device.
The register provides a version field, device-specific part number and a manufacturer identity derived from the JEDEC manufacturer identification scheme.
JTAG IDCODE Bit Layout
31 28 27 12 11 1 0
+----------------+----------------------+----------------+---+
| Version | Part Number | Manufacturer | 1 |
+----------------+----------------------+----------------+---+
Version:
4 bits
Part Number:
16 bits
Manufacturer Identity:
11 bits
Bit 0:
Always 1 for IDCODEJTAG IDCODE Version Field
Bits 31 through 28 contain the four-bit version field. A manufacturer can use this value to distinguish revisions of a device while retaining the same basic part-number identity.
IDCODE:
0x12345679
Version =
(IDCODE >> 28) & 0xF
= 0x1The exact meaning assigned to individual version values is device-specific.
JTAG Part Number Field
Bits 27 through 12 provide a 16-bit part-number field assigned by the device manufacturer.
Part Number =
(IDCODE >> 12)
&
0xFFFFThis number is not necessarily the same as the commercial product name printed on a chip package. Vendor documentation or a device database is normally needed to map the raw part field to a specific product.
JTAG Manufacturer Identity
Bits 11 through 1 contain an 11-bit manufacturer identity based on the JEDEC manufacturer identification scheme.
Manufacturer Identity =
(IDCODE >> 1)
&
0x7FFThis tool reports the full 11-bit value as hexadecimal, decimal and binary so it can be compared with a vendor or JEP106 identification table.
JEDEC Continuation and Identity Fields
The 11-bit manufacturer field can be separated into a four-bit continuation portion and a seven-bit identity portion.
Manufacturer[10:7]:
Continuation code
Manufacturer[6:0]:
Identity codeThe raw values are shown separately because manufacturer-name lookup depends on the current JEDEC/JEP106 manufacturer table.
Why JTAG IDCODE Bit 0 Is Always 1
The least significant IDCODE bit is defined as logic one. This characteristic also helps JTAG scan software distinguish an IDCODE value from certain other scan-chain conditions.
Valid IDCODE:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1
Bit 0 = 1If bit 0 is zero, the supplied 32-bit value does not conform to the standard IDCODE register format, even though its other fields can still be extracted for debugging.
JTAG IDCODE Example
Consider this synthetic IDCODE value:
0x12345679
Binary:
0001 0010 0011 0100
0101 0110 0111 1001The decoder separates the value into its four standard fields rather than treating the entire 32-bit word as a single device number.
IDCODE Field Masks
| Field | Bits | Width | Extraction |
|---|---|---|---|
| Version | 31:28 | 4 | (IDCODE >> 28) & 0xF |
| Part Number | 27:12 | 16 | (IDCODE >> 12) & 0xFFFF |
| Manufacturer | 11:1 | 11 | (IDCODE >> 1) & 0x7FF |
| Required LSB | 0 | 1 | IDCODE & 1 |
JTAG IDCODE vs Device ID
A JTAG IDCODE should not automatically be treated as the same value as a microcontroller’s internal device ID, PCI device ID, USB product ID or chip serial number. Those identification mechanisms use different register formats and namespaces.
The JTAG IDCODE specifically follows the boundary-scan identification register format.
JTAG IDCODE vs Serial Number
The 16-bit part field identifies a device design or family according to the manufacturer’s assignment. It does not uniquely identify one physical chip.
If a device provides a unique silicon serial number, that value normally comes from a separate device-specific register or protocol.
IDCODE in a JTAG Scan Chain
Multiple JTAG devices can be connected in a daisy chain. During identification, debug software can shift register data through the chain and inspect the 32-bit values associated with devices that expose IDCODE.
The number, order and instruction state of devices must be understood to correctly associate each shifted value with the corresponding physical device.
IDCODE Instruction
IEEE 1149.1 devices that implement an Identification Code Register provide mechanisms for selecting that register through the JTAG instruction path. Specific reset and default-instruction behavior can depend on the implemented standard requirements and device design.
A raw 32-bit value captured from TDO should therefore be interpreted only after confirming that the scan chain is actually shifting an IDCODE register.
Why a JTAG IDCODE Can Appear Reversed
JTAG shifts data serially, and logic analyzers or debugging software may display shift order differently from the conventional hexadecimal register value. A bit-reversed or byte-reversed capture can therefore look like an invalid IDCODE.
If bit 0 appears incorrect or the fields look unreasonable, verify how the capture tool orders TDI/TDO bits before assuming the device ID is wrong.
JTAG IDCODE Decoder Uses
A decoded IDCODE is useful during FPGA board bring-up, microcontroller debugging, boundary-scan manufacturing tests, OpenOCD configuration, JTAG chain enumeration, BSDL verification, debugger development and reverse engineering of hardware interfaces.
The raw part and manufacturer fields can then be compared with authoritative vendor documentation or JEDEC manufacturer information.
JTAG IDCODE Decoder FAQs
How many bits are in a JTAG IDCODE?
Which bits contain the JTAG version?
Where is the JTAG part number?
Where is the manufacturer ID in JTAG IDCODE?
What should JTAG IDCODE bit 0 contain?
How do I extract the JTAG part number?
How do I extract the manufacturer field?
Does the part number identify the exact commercial chip name?
Why does my captured IDCODE have bit 0 equal to zero?
Can this tool automatically identify every chip manufacturer?
Decode JTAG Device Identification Codes
Extract the standard IEEE 1149.1 version, part number and JEDEC manufacturer identity from raw JTAG IDCODE values used in boundary-scan, FPGA, MCU and embedded hardware debugging.