Do you have a great low-level function that you want to reuse in a high-level synthesis project? Custom RTL code can replace a C function within an HLS project, much like you can write assembly functions to augment instructions to a C or C++ compiler. Your low-level RTL function then becomes callable in C, with bindings defined via JSON and using the ap_ctrl_chain protocol to manage data transactions between the RTL and the C code.
Interested in learning more? Check out the example referenced in the video here:
https://github.com/Xilinx/HLS-Tiny-Tutorials/tree/master/misc_rtl_as_blackbox
Additional information is available in the Vitis HLS user guide:
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2020_2/ug1399-vitis-hls.pdf
And, as always, check out our full selection of comprehensive Vitis tutorials!
https://github.com/Xilinx/Vitis-Tutorials