Execution Requirements

RTL kernels are modeled in software as functions with a void return value similar to the software interface model used in OpenCL™ and C/C++ kernels. This means that RTL kernels can only be passed scalars for input arguments and memory pointer addresses for data to be exchanged with the host application.

In the host application, the RTL kernel is invoked in a similar manner as HLS kernels with a function signature such as:

void mmult(int *a, int *b, int *output)
void mmult(unsigned int length, int *a, int *b, int *output)

This implies that the RTL design must have an execution model similar to that of a software function or kernel: start, execute, and end.

  • It must be capable of starting when called to do so.
  • It must compute all data values.
  • It must return the data and then end the operation.

If the RTL design has a different execution model then logic must be added to ensure that the design can be executed in this manner. The RTL Kernel Wizard provides a flow that allows such changes to be performed.