Step 1: Build the AI Engine Design in Vitis Model Composer - 2022.1 English

Vitis Model Composer Tutorial (UG1498)

Document ID
UG1498
Release Date
2022-07-25
Version
2022.1 English
In this step, you will import three kernel functions using the AIE Kernel block available in the Vitis Model Composer AI Engine library and build a design.
  1. In the MATLAB Current Folder, navigate to AIEngine_Library/Lab1/.
  2. Use the subsequent steps to import the kernel function fir_27t_sym_hb_2i into the design. This is an interpolating-by-two filter fir symmetric filter. Because it is interpolating, the output of the filter is twice the size of the input. Open the source code hb_27_2i.cpp from kernels/src/hb_27_2i.cpp, and notice this kernel has a Window input and a Window output.
    void fir_27t_sym_hb_2i
    (
    	input_window_cint16 * cb_input,
    	output_window_cint16 * cb_output)
    {
  3. Double-click import_kernel.slx to open the model. This is a model with only sources and sinks. You will fill the design in-between.
  4. From the Library Browser, select the AIE Kernel block from under the User-Defined functions of the AI Engine library. Drag the block into the import_kernel.slx file.

  5. Double-click the block. The following Block Parameters dialog box displays.

  6. Update the block parameters as follows:
    Kernel header file
    Either browse to locate the hb_27_2i.h file or enter kernels/inc/hb_27_2i.h as the parameter.
    Kernel function
    fir_27t_sym_hb_2i
    Kernel init function
    Leave empty
    Kernel source file
    Either browse to locate hb_27_2i.cpp file or enter kernels/src/hb_27_2i.cpp as the parameter.
    Kernel search path
    Leave empty
    Preprocessor options
    Leave empty
  7. Click Import. The tool parses the function signature in the header file and updates the AIE Kernel block GUI interface. The Function tab is displayed as shown in the following figure.

  8. Update the parameter values as indicated in the following figure.

    Important: All parameters are in samples (not bytes).
    Important: The tool does not parse the kernel function and it does not have any knowledge about the input or output window sizes, nor the input window margin size.
  9. After applying, click OK to close the window and connect the block to the input as shown in the following figure.

  10. Next import the polar_clip function. Unlike the previous kernel, the polar clip has a stream in port and a stream out port. The function signature is as follows.

  11. Drag the new AIE Kernel block from AI Engine library and update the parameters as follows:
    Kernel header file
    kernels/inc/polar_clip.h
    Kernel function
    polar_clip
    Kernel init function
    Leave empty
    Kernel source file
    kernels/src/polar_clip.cpp
    Kernel search paths
    Leave empty
    Preprocessor options
    Leave empty
  12. Click Import. The tool parses the header file and creates the block. Update the parameter value as shown in the following figure.

    Important: Here, the Window size and Window margin fields are only applicable for window type signals.
    Important: The Signal size parameter is the maximum size of the output signal.
  13. Connect this block to the existing design and it should now look as follows.

    You have connected a block with a window output to a block with a stream input.

  14. Use the subsequent steps to import the final kernel function fir_27t_symm_hb_dec2 into the design. This is a decimation by two filter and the signature to this function is as follows.
    void fir_27taps_symm_hb_dec2
    (
    	input_window_cint16 * inputw,
    	output_window_cint16 * outputw
    ){
  15. Drag the new AIE Kernel block from the AI Engine library and update the parameters as follows:
    Kernel header file
    kernels/inc/hb_27_2d.h
    Kernel function
    fir_27taps_symm_hb_dec2
    Kernel init function
    Leave empty
    Kernel source file
    kernels/src/hb_27_2d.cpp
    Kernel search paths
    Leave empty
    Preprocessor options
    Leave empty
  16. After applying, click OK to close the window. A new Function tab opens. Set the parameters for this kernel as follows.

  17. Connect the block to the existing design as follows.