The boot header is used by BootROM in Spartan UltraScale+. Based on the attributes set in the boot header, it validates the platform loader and manager (PLM) and loads it to the PMC RAM. The initial 16 bytes are meant for SelectMAP bus width detection. BootROM/PLM ignores this data, so Bootgen should not include this data in any of its operations like checksum, SHA, and encryption. The boot header is always in plain text.
Offset | Size (Byte) | Name | Description |
---|---|---|---|
0x0 | 16 | SelectMAP Bus Width Words |
Used to determine if the SelectMAP bus width is x8, x16, or x32. |
0x10 | 4 | Width Detection | QSPI bus width description. This is required to identify the QSPI flash in single or dual stacked mode. 0xAA995566 in little endian format. |
0x14 | 4 | Image Identification | Boot image identification string. Contains four bytes (X, N, L, and X) in byte order, which is 0x584c4e58 in the little endian format. |
0x18 | 4 | Encryption Key Source | AES key source and type :
|
0x1C | 4 | Source Offset | Source offset of PLM in PDI |
0x20 | 4 | PL Data Load Address | Data partition start address to load |
0x24 | 4 | PL Data Length | Data partition size |
0x28 | 4 | Total PL Data Length | Data partition size including auth and enc overhead |
0x2C | 4 | PLM Length | PLM size |
0x30 | 4 | Total PLM Length | PLM image size including auth and enc overhead |
0x34 | 4 | Boot Header Attributes | Refer to the table in Spartan UltraScale+ Boot Header Attributes |
0x38 | 32 | Grey/Black Key | Boot header black/grey key storage |
0x58 | 12 | Grey/Black IV | Boot header black/grey IV storage |
0x64 | 12 | Secure Header IV for Hash Block | Secure header IV |
0x70 | 4 | Encryption Revocation ID | Encryption revocation ID |
0x74 | 4 | Authentication Header - 1 | Hash algorithm selection, authentication algorithm is explained in Spartan UltraScale+ Authentication Certificate. |
0x78 | 4 | HASH Block Size - 1 | HASH block size filled with zeros (for optional block) |
0x7C | 4 | Total PPK Size - 1 | PPK Size with padding to make it aligned |
0x80 | 4 | Actual PPK Size - 1 | Actual PPK 1 size |
0x84 | 4 | Total PDI Signature Size - 1 | Signature size with padding to make it aligned |
0x88 | 4 | Actual PDI Signature Size - 1 | Actual PDI signature size 1 |
0x8C | 4 | PUF Image Id | PUF PDI identification string |
0x90 | 4 | PUF Shutter Value | PUF shutter value |
0x94 | 4 | Ring Oscillator Config Value | Ring oscillator value, default is zero |
0x98 | 4 | PUF HD Length | PUF helper data size |
0x9C | 60 | ROM Reserved | Reserved, fill with zeroes |
0xD8 | 4 | User Defined Component Revision | User defined component revision |
0xDC | 96 | PLM Reserved | Reserved, used by PLM |
0x13C | 512 | Reg Init | Register initialization |
0x33C | 4 | Check Sum | Checksum is calculated at 0x338 |