Digest Check Service

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.

Table 1. Digest Check Service Request
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.

Table 2. 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.
Table 3. OPTIONS[31:0]
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.

Table 4. DIGESTERR[31:0]
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