4. HLS Programming#

  • As discussed in Section 3.2 and Section 3.4, the HLS development of a DSP kernel amounts to constructing a data flow graph with connected task functions.

  • Further understanding of what constitute good HLS coding practices requires us to learn about the default behaviors of Vitis HLS when synthesizing common C/C++ constructs, such as functions, loops, arrays, and various data types, into RTL code, as well as, how to use HLS directives and pragmas to instruct Vitis HLS to perform task- and instruction-level optimization in the synthesis process following the way that we want it to.

  • This more detailed knowledge of HLS programming techniques would be helpful for us in the development of C/C++ specifications of DSP task functions that allow Vitis HLS to generate an efficient hardware design meeting specific performance goals.

  • In this section, we summarize some standard HLS programming considerations and techniques from [AMD-Xilinx24c] that are useful for developing DSP kernels.