Generally, there are two methods to transfer data between kernels–buffer or stream. When using the buffer, data transfers can be realized as ping-pong buffers or optionally, using a single buffer. AI Engine-ML tools will take care of buffer synchronization between the kernels. Designers need to decide the buffer size and location between kernels through their partition of the application. If an overlap is needed between different buffers of the data, AI Engine-ML tools provide options for setting a margin for the buffer, that is, to copy the overlap of data automatically.
When using the stream, the data movement involves one input as well as one output stream port, along with one dedicated cascade stream input port (selectable between north and west) and output port (selectable between east and south). Stream ports can move 32 bits per cycle. Stream interfaces are bidirectional and can read or write neighboring or non-neighboring AI Engines by stream ports. However, cascade stream ports are unidirectional and only provide a one-way access between the neighboring AI Engines.