We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 64178

How can I read the device-DNA from my FPGA using Vivado?


How can I read the device-DNA from my FPGA using Vivado?


Note: Use of Vivado 2015.3 or newer is recommended.


Open the Vivado hardware manager.

Click on the device.

Open the properties window -> properties tab, and expand the EFUSE property.

FUSE_DNA is the device-DNA of the FPGA:


Batch Mode:

For batch mode, the following Tcl commands can be used:

# set default hw_server connection
set HW_SERVER <server name>:<port number>

if {[llength [get_hw_servers]] == 0 } then {
  connect_hw_server -quiet -url $HW_SERVER
  set disconnect_en 1

# update list of targets
refresh_hw_server -quiet

# close open targets
foreach TARGET [get_hw_targets] {
  if { [get_property IS_OPENED $TARGET] } then {
    close_hw_target -quiet $TARGET

# loop for all open targets and get DNA values for all programmable FPGAs
foreach TARGET [get_hw_targets] {
  open_hw_target -quiet $TARGET
  refresh_hw_target -quiet $TARGET
  foreach DEVICE [get_hw_devices] {
    refresh_hw_device -quiet $DEVICE
    if { [get_property PROGRAM.IS_SUPPORTED $DEVICE] } then {
      set DNA_HEX [get_property REGISTER.EFUSE.FUSE_DNA $DEVICE]
      puts "FPGA DNA: $TARGET=>$DEVICE = DNA(hex)=$DNA_HEX"
  close_hw_target -quiet $TARGET

if {$disconnect_en == 1 } {
  disconnect_hw_server -quiet

AR# 64178
Date 07/01/2016
Status Active
Type General Article
  • Vivado Design Suite