Sometimes it is necessary to stop a running execution of the system and start over. To restart the system and start again, there is a flow to follow. These steps can be performed any number of times in the host application.
1. Quiesce PL kernels (that is to say, stop PL<->AIE data paths)
As a prerequisite, the PL kernels should have the ability to be quiesced by the host application. All the examples shown in this design have this feature by way of the start register (that is, all PL kernels are AXI-MM slaves to the PS). The PS communicates with the PL kernels to hold them in an idle state before the reset/load of the AI Engine.
2. Reset AI Engine
Reset the AI Engine using the xrtResetAIEArray
function. Make sure to verify the return value and proceed if it is SUCCESSFUL
. Otherwise, reboot the system.
3. Load AI Engine with the XCLBIN
Reload the AI Engine with the XCLBIN using the xclloadxclbin()
function. Verify the return value and proceed if it is SUCCESSFUL
. Otherwise, reboot the system.
4. Re-start PL kernels
Lastly, restart the PL kernels to send/receive PL traffic to/from the AI Engine.