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 PL 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 ap_ctrl_chain
and ap_ctrl_hs
execution
protocols generated by the HLS compiler, XRT-managed kernels are better for C++
developers as described in
Developing PL
Kernels using C++ in the Data Center Acceleration using
Vitis (UG1700). 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 described in
Packaging RTL Kernels.
The Vitis development flow supports software applications written for use with PL kernels using the XRT native C/C++ API, which supports both user-managed kernels and XRT-managed kernels, in addition to some advanced designs as discussed in Execution Modes. 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 |
---|---|
|
|