开发者分享 | EFuse AES 密钥验证步骤

本文转载自: XILINX技术社区微信公众号

EFuse 具备一次性可编程特性,即只要使用特定密钥将“熔丝 (FUSE)”熔断,就无法再使用任何其他密钥对其进行编程。

EFuse 广泛适用于各种量产器件,在本文中我们将为大家演示一个典型情境,即客户希望向第三方供应商提供采用 AES 编程的 FPGA 的情境。

曾经出现过这样的问题,用户以错误方式对错误的 EFuse 密钥进行编程,导致加密比特流编程失败。在此情境中,我们无法将 EFuse 复原,因为它已发生熔断。

在下文中,我们将探讨有关 AES 密钥验证步骤的内容,当您在器件上以物理方式对 EFuse 密钥进行编程时应遵循这些验证步骤进行操作。

1. 使用 EFUSE_TEST_MODE 对 AES 密钥进行测试性编程。

这将把 EFuse 编程软件命令发送到器件,但并不会实际对任何熔丝进行编程。

2. 要启用 EFUSE_TEST_MODE,请右键单击“Hardware Manager”上的“Hardware Server Properties”,然后选中“EFUSE_TEST_MODE”选项,如下图所示:

3. 启用 EFUSE_TEST_MODE 并对 EFuse 密钥编程后,就会在 Vivado 安装目录中创建一个 .nkz 文件。

请检查该 .nkz 文件,确认其中是否已正确显示 AES 密钥。

4. 如果此操作成功,请取消勾选“EFUSE_TEST_MODE”框,然后以真正物理方式仅将此 AES 密钥编程到器件中。

请勿对任何其他控制寄存器、安全寄存器或 RSA 进行编程。操作完成后将重新写入 .nkz 文件,但其中所含内容应不变。

请验证两个 .nkz 文件的内容是否相同。

5. 如果两个 .nkz 文件内容相同,那么请对加密比特流文件进行编程。

6. 运行以下命令以验证 .nky 和加密比特流:

create_hw_bitstream -hw_device [current_hw_device ] -nky mtl1_c1.nky mtl1_c1.bit

verify_hw_devices -key efuse

注释:特此澄清,在第 3 步中,除非您已在 EFuse 向导中更改 .nkz 文件的文件名,否则,将覆盖同一个输出 .nkz 文件。因此,您应该将第 1 个 .nkz 复制到其他文件或者在向导中更改此 .nkz 文件的文件名以便后续对两个文件进行比较。

EFUSE_TEST_MODE 仅用于验证目的。如果编程测试成功,并且您取消勾选 EFUSE_TEST_MODE 并遵循与测试过程相同的编程步骤进行操作,那么就能将正确的 AES 密钥编程到器件中。

遵循上述步骤进行操作时,请勿对控制寄存器或安全寄存器进行编程。

成功完成验证后即可进行各项详细设置。

最新文章

最新文章