The ICAP interface can be use used to monitor the configuration process when it is used as the port for delivering bitstreams. The "O" port of the ICAP block is a 32-bit bus, but only the lowest byte is used. The mapping of the lower byte is as follows:
|ICAP “O” Port Bits||Status Bit||Meaning|
Configuration error (active-Low)
0 = A configuration error has occurred.
1 = No configuration error.
Sync word received (active-High)
0 = No sync word received.
1 = Sync word received by interface logic.
Readback in progress (active-High)
0 = No readback in progress.
1 = A readback is in progress.
ABORT in progress (active-Low)
0 = Abort is in progress.
1 = No abort in progress.
The most significant nibble of this byte reports the status. These Status bits indicate whether the Sync word been received and whether a configuration error has occurred. The following table displays the values for these conditions.
|9||No Sync||No CFGERR|
Configuration Debugging shows a completed full configuration, followed by a partial reconfiguration with a CRC error, and finally a successful partial reconfiguration. Using the table above, and the description below, you can see how the “O” port of the ICAP can be used to monitor the configuration process. If a CRC error occurs, these signals can be used by a configuration state machine to recover from the error. These signals can also be used by Vivado Logic Analyzer to capture a configuration failure for debug purposes. With this information Vivado Logic Analyzer can also be used to capture the various points of a partial reconfiguration.
The markers in the Vivado Logic Analyzer display indicate the following:
- This marker indicates the completion of the initial full bitstream
configuration. The DONE pin (
done_padin this waveform) goes HIGH.
- This marker indicates a CRC error is detected while loading partial bitstream.
The status can be observed through O[31:0] (
icap_o_top[31:0]in the waveform).
Icap_o_top[31:0]starts at 0x9F
- After seen SYNC word,
Icap_o_top[31:0]change to 0xDF
- After detect CRC error,
Icap_o_top[31:0]change to 0x5F for one cycle, and then switches to 0x1F
- INIT_B pin is pulled Low (
init_padin the waveform)
- This marker indicates when the partial bitstream is loaded
again. The RCRC command resets the
cfgerrstatus, and removes the pull-down on the INIT_B pin (
init_padin this waveform).
Icap_o_top[31:0]change from 0x1F to 0x5F when the SYNC word is seen
Icap_o_top[31:0]change from 0x5F to 0xDF when RCRC command is received
- This marker indicates a successful partial reconfiguration.
Icap_o_top[31:0]change from 0xDF to 0x9F when the DESYNC command is received and no configuration error is detected.
In addition to the techniques described above, the UltraScale architecture introduced two new dedicated ports on the ICAP to aid in Dynamic Function eXchange:
- The PRDONE pin is intended to echo the external DONE pin. However, it should only be used for
- Monolithic devices
- SSI devices when the RP is on the master SLR
- When the ICAP used is on the same SLR as the RP.
Any partial bitstream that configures a slave SLR from the master ICAP will see multiple PRDONE events due to the construction of these partial bitstreams. Instead, use the EOS pin on the STARTUP block on the master SLR as a reliable indication of the completion of partial reconfiguration.
- The PRERROR pin echoes the external INIT_B pin. It drops LOW when a CRC error occurs, either with the standard full CRC value at the end of the bit file, or with any per-frame CRC value.