Circular Output Buffer - 2024.2 English

AI Engine Kernel and Graph Programming Guide (UG1079)

Document ID
UG1079
Release Date
2024-11-28
Version
2024.2 English

Declare kernel function k1 with input stream operates on data type int32 that is named in0 and circular 1d output buffer operates on data type int32 that is named out0.

void k1(input_stream<int32> *in0, output_circular_buffer<int32, adf::extents<OUTPUT_SAMPLE_SIZE>> & out0)
{
    auto out0Iter = aie::begin_circular(out0);
    for (int ind = 0; ind < OUTPUT_SAMPLE_SIZE; ++ind)
    {
        *out0Iter++ = readincr(in0);
    }
}
Important: When kernels are located on the same tile in the AI Engine, memory addressing optimizations become possible. However, it is important to note that some restrictions might arise due to this optimization. For instance, if K1 and K2 are situated in the same tile and are connected through an output-to-input buffer, they must use the same type of addressing. This means they can either opt for linear or circular addressing, but they cannot have a mixture of both. However, it is worth noting that this limitation will not be identified during X86 simulation because it only emulates functional aspects of AI Engine tiles and memory. For more details on X86 simulation models, see Limitations in AI Engine Tools and Flows User Guide (UG1076).