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.
export_<FUSE_DNA>.nkz
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 then 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 will not be removed; it will contain all the eFUSE settings applied prior to 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.
-skip_program_keys
option on the
program-hw_devices
Tcl command. - For 7 series devices, if
-skip_program_keys
is specified, the programming ofFUSE_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-zeroFUSE_USER
setting becauseFUSE_AES
andFUSE_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.