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. 
