Creating User-Managed RTL Kernels - 2022.2 English

Vitis Unified Software Platform Documentation: Application Acceleration Development (UG1393)

Document ID
Release Date
2022.2 English

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 Working with Auto-Restarting Kernels in the Vitis HLS User Guide (UG1399)
Important: One limitation of implementing a control register in an 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.