Auto-restarting HLS design require the ap_ctrl_chain or ap_ctrl_hs protocol
specified by Vitis HLS, where ap_ctrl_chain is the recommended protocol.
- The design should specify the
mode=ap_ctrl_chainon the INTERFACE pragma or directive. - Auto-restarting designs support streaming interfaces (
axis) and both scalar arguments (s_axilite) and memory mapped (m_axi) arguments which can be both read and written.
Auto-restart designs can be used in a couple of different scenarios:
- 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 withaxisinterfaces 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.