Comparison between Buffer Ports and Windows - 2024.1 English

AI Engine Kernel and Graph Programming Guide (UG1079)

Document ID
UG1079
Release Date
2024-06-05
Version
2024.1 English

In AMD Vitis™ tools, version 2022.1 and previous versions, the memory interface between kernels was called window. Buffer ports are similar to window ports, but differ as outlined below. Buffer ports provide a way for a kernel to operate on a block of core memory.

Table 1. Window and Buffer Differences
Windows Buffers
Sizes and margins are in bytes. Sizes and margins are in samples.
Sizes can be defined only in graph using the connect statement. Sizes can be defined either in graph using dimensions statement, or in kernel signature as compile time constant.
Margins can be defined only in graph using the connect statement. Margins can be defined only in kernel signature as compile time constant.
Locking mechanism is specified in graph using connect construct. Locking mechanism is specified in kernel signature.
C++14 is enough. Buffer ports use C++17 fold expressions.
Support of circular addressing only. Default addressing is linear. It can be set to circular.
For data access, the iteration operation is tied directly with the action reading or writing API, such as window_readincr(), and window_writeincr(). A reference pointer or an iterator are supported to perform read or write operations.
One-dimensional only Multi-dimensional. If buffer dimension is omitted in the kernel signature, it will be supposed one-dimensional.
Note: Limitations on buffer port size, window size and margin size depend on hardware constraints, hence, there is no difference between buffer port and window in terms of minimum size.