eFUSE Export NKZ File - 2023.2 English

Vivado Design Suite User Guide: Programming and Debugging (UG908)

Document ID
Release Date
2023.2 English

Because you are advised to program eFUSE settings in multiple passes, eFUSE settings are always exported to an externally visible NKZ file which is updated during each eFUSE operation. The intent of this file is to accumulate all eFUSE settings applied to a device, even if they are applied over multiple eFUSE operations. This file is tracked by Vivado so that there is always a single eFUSE export file containing the cumulative eFUSE settings for a device in NKZ format.

If no options are specified, the default name of this file is as follows, where <FUSE_DNA> is the FUSE_DNA register value of the device.


This default file is located in the launch directory of the Vivado IDE. You can change this file by using the -efuse_export_file option on the program_hw_devices Tcl command, as in the following example:

program_hw_devices -user_efuse {1} -efuse_export_file {my_settings.nkz}

The Vivado IDE starts using the specified NKZ file for exported eFUSE settings without having to repeatedly specify this file in the Tcl options. Any previously created eFUSE export file is not removed; it contains all the eFUSE settings applied before changing the eFUSE export file name. After all eFUSE operations are performed, all eFUSE settings are stored in the current eFUSE export file.

There is also an option to only export eFUSE settings instead of actually programming the device. This can be useful for creating an NKZ file containing all the desired eFUSE settings without affecting the device. Any eFUSE programming mistakes made in this mode can easily be corrected by removing the eFUSE export file and starting over. This export-only mode can be used with the following Tcl command:

program_hw_devices -user_efuse {1} -only_export_efuse

This option applies only to each individual command, so the option must be used in every eFUSE operation to keep the device from being programmed. Because eFUSE settings are always exported to an NKZ file regardless of whether or not programming occurs, it is recommended not to intermix the programming flow with the export-only flow. Otherwise, the resulting eFUSE export file might contain a mix of eFUSE settings actually programmed into the device and those only exported to the NKZ file, which makes the true state of the eFUSE registers in the device unclear. Using this export-only mode, the same exact eFUSE export file in NKZ format is created as in the programming case, but no programming is performed on the device.

It is also possible to skip programming the encryption keys that are specified in the NKZ file by using the -skip_program_keys option on the program-hw_devices Tcl command.
  • For 7 series devices, if -skip_program_keys is specified, the programming of FUSE_AES is skipped, no check to validate AES keys in the encryption file is performed, and the programming continues.
  • For 7 series devices, -skip_program_keys must not be used if the NKZ also contains a non-zero FUSE_USER setting because FUSE_AES and FUSE_USER values must be programmed together in the 7 series device.
  • For UltraScale and UltraScale+ devices, the setting of FUSE_SEC[6] is skipped if -skip_program_keys is used when programming obfuscated keys.