These kernels require the ap_ctrl_chain
or ap_ctrl_hs
protocol
specified by Vitis HLS, where ap_ctrl_chain
is the recommended protocol.
- The kernel should specify the
mode=ap_ctrl_chain
INTERFACE pragma on the function return. - The kernel supports streaming interfaces (
axis
). - The kernel also both scalar arguments (
s_axilite
) and memory mapped (m_axi
) arguments which can be both read and written.
Auto-restart kernels can be used in a couple of different scenarios:
-
Scenario 1: Auto-Restarting Kernel with Streaming Interface: Auto-restart
kernel with streaming interfaces (
axis
) only, that does not require the kernel to interact with the host application at all. Examples of this would be a Fast-Fourier Transform (FFT) with configuration data compiled into the kernel, or FIR filters with coefficients compiled into the kernel. - Auto-restart kernel using scalars and memory mapped (
m_axi
) arguments, either withaxis
interfaces or without. The scalar and memory mapped arguments require the mailbox to update the kernel parameters when needed. Examples of this would include a simple rule-based firewall with rules written by the host application at reset, with a counter of dropped packets that can be read by the host code but where all values must come from a single kernel execution. Or, a load balancer that uses a hash map to send data to a server, must update the server list, server map, and corresponding IP addresses simultaneously.