By default, Vitis HLS generates a kernel with synchronization controlled by the host application. The host controls and monitors the start and end of the kernel. Auto-restarting kernels can run continuously after being started once by the host application. They can run until reset and restarted, or they can be programmed to run for a predetermined number of iterations without the host explicitly calling them multiple times.
The main advantage of auto-restarting kernels is that they run
semi-autonomously operating as data-driven kernels without the need for frequent
interaction with the host application and for software control. But they also offer
semi-synchronization, which is the ability to exchange data with the host application in
an asynchronous, non-blocking, and safe way. These kernels use the
auto_restart
signal of the ap_ctrl_chain
block
protocol, and the mailbox
feature as described in
Auto-Restarting Kernels.