Software controllable kernels expose a programmable register interface, allowing a host software application to interact with kernels through register reads and write. These are the most common and widely applicable types of kernels. There are two types of SW controllable kernels: user-managed and XRT-managed.
The primary difference between user-managed and XRT-managed kernels is related
to the kernel execution mode. Because XRT relies on the
protocols generated by Vitis HLS, XRT-managed
kernels are better for C++ developers as described in C/C++ Kernels and in Compiling Kernels with Vitis HLS. Alternatively, user-managed kernels can support many different user-defined
execution protocols as found in existing Vivado RTL
IP, and so are a better fit for RTL designers working with RTL Kernels.
The Vitis application acceleration development flow supports host programs written using the XRT native C/C++ API, which supports both user-managed kernels and XRT-managed kernels, as well as some advanced designs such as never-ending kernels. It also supports host applications using the OpenCL API for XRT-managed kernels. The next sections briefly describe the programming API and the different hardware interfaces required for XRT-managed or user-managed kernels.
|XRT-Managed Kernels||User-Managed Kernels|