Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
20638 Discussions

Read CHIP ID from JTAG

Altera_Forum
Honored Contributor II
3,606 Views

Is there a JTAG IR code that reads back the unique chip ID? I'm hoping to read the chip ID back with a code like this: 

 

device_ir_shift -ir_value <CHIP-ID-IR> -no_captured_ir_value 

device_dr_shift -length 64 -value_in_hex 

 

Cheers,
0 Kudos
5 Replies
Altera_Forum
Honored Contributor II
2,118 Views

 

--- Quote Start ---  

Is there a JTAG IR code that reads back the unique chip ID? I'm hoping to read the chip ID back with a code like this: 

 

device_ir_shift -ir_value <CHIP-ID-IR> -no_captured_ir_value 

device_dr_shift -length 64 -value_in_hex 

 

Cheers, 

--- Quote End ---  

 

 

You mean the silicon-specific IDCODE value, like this: 

 

****************************************************************************** * Altera Chain Interrogation Version 5.0 * * Copyright (c) 1999-2007 Altera Corporation. All Rights Reserved. * ****************************************************************************** Chain Continuity Checker Chain Continuity during IR is not stuck at zero or one ****************************************************************************** Chain Length -- Load IR of all ones then count DR length Number of Devices is 22 ****************************************************************************** IR Length Calculator Instruction Register Length is 157 ****************************************************************************** IDCODE Reader ------ | ---------- | ---- ------------------- ------------- - | Device | IDCODE | Rev DeviceCode Manufacturer 1 | ------ | ---------- | ---- ------------------- ------------- - | ID 001 | 0x7A363013 | 0111 1010 0011 0110 0011 0000 0001 001 1 | ID 002 | 0x85101013 | 1000 0101 0001 0000 0001 0000 0001 001 1 | ID 003 | 0x95100013 | 1001 0101 0001 0000 0000 0000 0001 001 1 | ID 004 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 | ID 005 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 | ID 006 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 | ID 007 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 | ID 008 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 | ID 009 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 | ID 010 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 | ID 011 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 | ID 012 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 | ID 013 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 | ID 014 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 | ID 015 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 | ID 016 | 0x1874839B | 0001 1000 0111 0100 1000 0011 1001 101 1 | ID 017 | 0x00000000 | .... .... .... .... .... .... .... ... 0 | ID 018 | 0x00000000 | .... .... .... .... .... .... .... ... 0 | ID 019 | 0x175D014B | 0001 0111 0101 1101 0000 0001 0100 101 1 | ID 020 | 0x4403D093 | 0100 0100 0000 0011 1101 0000 1001 001 1 | ID 021 | 0xD5059093 | 1101 0101 0000 0101 1001 0000 1001 001 1 | ID 022 | 0x2402E093 | 0010 0100 0000 0010 1110 0000 1001 001 1 | ------ | ---------- | ---- ------------------- ------------- - | ****************************************************************************** Exit code = 0... Success  

 

I did this using the Altera JAM STAPL player using an Altera USB Blaster connected to a board with lots of devices (22) in the JTAG chain. 

 

For a simple example of how to toggle the JTAG lines to read the IDCODE register in devices see: http://www.fpga4fun.com/jtag3.html 

 

This page assumes you have a simple way (via GPIO port, for example) of controlling the JTAG lines.
0 Kudos
Altera_Forum
Honored Contributor II
2,118 Views

Thank you for the response. Unfortunately that’s not a chip serial number it’s only a 32-bit identifier that gives only the family and stuff. It’s not unique across devices of the same family as you can see in your example.  

 

Altera has a chip id IP that provides a unique 64-bit id but I’d like to read that ID from jtag without instantiating the ip in the design.  

 

Cheers,
0 Kudos
Altera_Forum
Honored Contributor II
2,118 Views

 

--- Quote Start ---  

Thank you for the response. Unfortunately that’s not a chip serial number it’s only a 32-bit identifier that gives only the family and stuff. It’s not unique across devices of the same family as you can see in your example.  

 

Altera has a chip id IP that provides a unique 64-bit id but I’d like to read that ID from jtag without instantiating the ip in the design.  

 

Cheers, 

--- Quote End ---  

 

 

So this is something only a few of the newer devices support: https://www.altera.com/en_us/pdfs/literature/ug/altchipid.pdf 

 

There is a note that the ID is accessible thru JTAG for the Arria 10 and Cyclone 10 GX, but it appears you still need to instantiate the IP block.
0 Kudos
Altera_Forum
Honored Contributor II
2,118 Views

 

--- Quote Start ---  

So this is something only a few of the newer devices support: https://www.altera.com/en_us/pdfs/literature/ug/altchipid.pdf 

 

There is a note that the ID is accessible thru JTAG for the Arria 10 and Cyclone 10 GX, but it appears you still need to instantiate the IP block. 

--- Quote End ---  

 

 

That note is a bit vague, but I believe it means you cannot have a pending master transaction over JTAG while CHIP ID is being read. Which leads me to believe that CHIPID IP, underneath, is actually using JTAG to retrieve the unique 64-bit number. So I believe there must be a way to read the number from JTAG directly. Unless it's deliberately closed off. 

 

You are correct however, CHIPID is not available for all devices. 

 

cheers,
0 Kudos
MAdel
Beginner
2,118 Views

I'd like to know the answer to this as well. The other FPGA vendor supports their equivalent of the unique ID in their equivalent of the JTAG programming GUI

0 Kudos
Reply