Recalculates digests of selected non-volatile memories and compares against stored values. The OPTIONS parameter passed in the digest check service indicates the area for which the digest check must be performed.
System Service Descriptor Bit Field | Value | Description |
---|---|---|
15:7 | MBOXADDR[10:2] | Mailbox address. See Table 2. |
6:0 | 47H | Digest Check service command |
The following table lists the Digest Check Service mailbox format.
Offset | Length (bytes) | Parameter | Direction | Description |
---|---|---|---|---|
0 | 2 (For PolarFire® FPGA only) | OPTIONS | Input | Digest options. See Table 3. |
4 (For PolarFire SoC FPGA only) | ||||
4 | 4 | DIGESTERR | Output | See Table 4. |
OPTIONS | Name | Description |
---|---|---|
0 | CHECK FABRIC | Enables fabric design digest |
1 | CC | Enables digest of fabric configuration parameters such as cycle count, design version, and back level protection value. |
2 | sNVM | Enables digest of sNVM pages marked as ROM |
3 | UL | Enables digest of user security segment |
4 | UKDIGEST0 | Enables digest of user key segment containing SRAM-PUF data |
5 | UKDIGEST1 | Enables digest of user key segment containing KUP (User EC key) |
6 | UKDIGEST2 | Enables digest of user key segment containing UPK1 |
7 | UKDIGEST3 | Enables digest of user key segment containing UEK1 |
8 | UKDIGEST4 | Enables digest of user key segment containing DPK |
9 | UKDIGEST5 | Enables digest of user key segment containing UPK2 |
10 | UKDIGEST6 | Enables digest of user key segment containing UEK2 |
11 | UPERM | Enables digest of permanent lock security segments |
12 | SYS | Enables digest of factory lock segment, factory key segment in pNVM, and System Controller ROM. |
13 | UKDIGEST7 | UKDIGEST7 in User Key segment (HWM) (For PolarFire® SoC FPGA only) |
14 | ENVM | ENVMDIGEST (For PolarFire SoC FPGA only) |
15 | UKDIGEST8 | UKDIGEST8 for MSS Boot Information (For PolarFire SoC FPGA only) |
16 | UKDIGEST9 | SNVM_RW_ACCESS_MAP Digest (For PolarFire SoC FPGA only) |
17 | UKDIGEST10 | Secure Boot Image Certificate (SBIC) revocation digest (For PolarFire SoC FPGA only) |
[31:18] | Reserved | Reserved |
In PolarFire FPGA, if CHECK FABRIC is '1', the FPGA fabric is placed in suspend state and I/Os behave in same way as programming mode. Upon completion of the fabric digest, the suspend state is automatically exited. LSRAMs does not retain the user data after performing digest check on FPGA fabric. The state of the flip-flops and uSRAMs is retained. Hence, the status of the fabric digest check must be monitored by a state machine (for example, CoreABC core) implemented in the fabric. After checking the status of the fabric digest check, the state machine can issue a design reset if LSRAMs are not initialized at power-up by the System Controller. If LSRAMs are initialized at power-up by the System Controller, a device reset is need to reinitialize the LSRAMs. If design does not use any LSRAMs, no need of any reset. Use RESET_DEVICE tamper response signal for device reset.
In PolarFire SoC FPGA, if CHECK FABRIC is '1', the FPGA fabric is placed in suspend state and I/Os behave in same way as programming mode. Upon completion of the fabric digest, the suspend state is automatically exited. LSRAMs do not retain the user data after performing digest check on FPGA fabric. The status of the fabric digest check must be monitored by MSS. After checking the status of the fabric digest check, the MSS needs to issue a design reset or device reset depending on the design requirements. Use RESET_DEVICE tamper response signal for device reset.
If CHECK FABRIC is '0', the fabric continues to operate as normal during the requested digest calculations.
If a digest mismatch occurs, DIGESTERR indicates the selected digests are in error as listed in Table 4. A failure of any digest results in the DIGEST tamper flag being triggered. The DIGESTERR indicates zero when it is successful.
DIGESTERR Bit Field | Name | Description |
---|---|---|
0 | FABRICERR | Fabric digest error (0 if CHECK FABRIC is '0') |
1 | CCERR | Fabric configuration digest error |
2 | SNVMERR | sNVM (ROM pages) digest error (0 if CHECKSNVM is '0') |
3 | ULERR | User security segment digest error |
4 | UK0ERR | Digest error in user security segment containing SRAM-PUF data |
5 | UK0ERR | Digest error in user security segment containing KUP (User EC key) |
6 | UK2ERR | Digest error in user security segment containing UPK1 |
7 | UK3ERR | Digest error in user security segment containing UEK1 |
8 | UK4ERR | Digest error in user security segment containing DPK |
9 | UK5ERR | Digest error in user security segment containing UPK2 |
10 | UK6ERR | Digest error in user security segment containing UEK2 |
11 | UPERR | Digest error in permanent security lock segments |
12 | SYSERR | Digest error in factory key segment, factory lock segment, or System Controller ROM. |
13 | UK7ERR | UKDIGEST7 in User Key segment (HWM) (For PolarFire® SoC FPGA only) |
14 | ENVMERR | ENVMDIGEST (For PolarFire SoC FPGA only) |
15 | UK8ERR | UKDIGEST8 for MSS Boot Info (For PolarFire SoC FPGA only) |
16 | UK9ERR | SNVM_RW_ACCESS_MAP Digest (For PolarFire SoC FPGA only) |
17 | UK10ERR | SBIC revocation digest (For PolarFire SoC FPGA only) |
[31:18] | Reserved | Reserved |