If your RTL IP does not satisfy the AXI interface requirements for the
Vitis compiler as outlined in Kernel Interface Requirements, you must modify the IP to implement
the required interfaces. However, if your RTL IP does not satisfy the XRT control
protocols of ap_ctrl_hs
or ap_ctrl_chain
, you can define it as a user-managed kernel rather than
having to rewrite your IP.
A user-managed kernel does not need to satisfy the control requirements of XRT, and can implement any of a variety of execution mechanisms. User-managed kernels are meant to let you take advantage of the system building capabilities of the Vitis compiler, while letting your kernel implement your own control scheme. There is no prescribed method of starting or stopping, or otherwise controlling your kernel. This is largely up to you, and the specific requirements of your application or system. Some of the available control schemes include:
- Accessing registers through an
s_axilite
control interface, similar to the method used by XRT though open to your own implementation - Accessing the hardware through software drivers, such as UIO drivers, implemented in your host application
- Triggering the start or stop response of your kernel from a signal provided by a separate component, or from another kernel
- Providing a data-driven approach, as described in the topic Auto-Restarting Mode in the Vitis HLS User Guide (UG1399).
s_axilite
interface for a user-managed kernel is that the control register cannot be named CTRL.
That name is specifically reserved for XRT-managed kernels, and returns a Critical
Warning when found on a user-managed kernel, or ap_ctrl_none
kernel.