| AI Engine API User Guide (AIE-API) 2026.1

Loading...
Searching...
No Matches
Interoperability with Adaptive Data Flow (ADF) Graph Abstractions

## Overview

ADF graphs use data flow abstractions to read input data and write output data.

AIE API extends such abstractions to work with its aie::vector and aie::accum data types.

Note
  ADF abstractions related to accumulator types require that the accumulator tags are natively supported on the target architecture as the graph does not support non-native accumulator types. See Valid Accumulator Parameters for natively supported accum tags.

## Concepts
concept | aie::aie::TLast
| Concept for tlast objects passed to << and >> operators with streams.

## Classes
struct | aie::tlast< T, Bool >
| Type used to wrap objects read/written from/to streams that also encapsulates TLAST information. More...

## Functions
template<aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::begin (adf::io_buffer< T, Dir, Config > &port)
| Returns a foward iterator over given io buffer.
template<aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::begin (const adf::io_buffer< T, Dir, Config > &port)
| Returns a foward const iterator over given io buffer.
template<aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::begin_circular (adf::io_buffer< T, Dir, Config > &port)
| Returns a foward circular iterator over given io buffer.
template<aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::begin_circular (const adf::io_buffer< T, Dir, Config > &port)
| Returns a const foward circular iterator over given io buffer.
template<aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::begin_random_circular (adf::io_buffer< T, Dir, Config > &port)
| Returns a random iterator over given io buffer.
template<aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::begin_random_circular (const adf::io_buffer< T, Dir, Config > &port)
| Returns a random const iterator over given io buffer.
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::begin_restrict_vector (adf::io_buffer< T, Dir, Config > &port)
| Returns a restrict vector iterator over given io buffer.
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::begin_restrict_vector (const adf::io_buffer< T, Dir, Config > &port)
| Returns a const restrict vector iterator over given io buffer.
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::begin_vector (adf::io_buffer< T, Dir, Config > &port)
| Returns a vector iterator over given io buffer.
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::begin_vector (const adf::io_buffer< T, Dir, Config > &port)
| Returns a const vector iterator over given io buffer.
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::begin_vector_circular (adf::io_buffer< T, Dir, Config > &port)
| Returns a vector circular iterator over given io buffer.
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::begin_vector_circular (const adf::io_buffer< T, Dir, Config > &port)
| Returns a const vector circular iterator over given io buffer.
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::begin_vector_input_buffer_stream (const adf::io_buffer< T, Dir, Config > &port)
| Returns a const vector input stream over given io buffer.
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::begin_vector_output_buffer_stream (adf::io_buffer< T, Dir, Config > &port)
| Returns a vector output stream over given io buffer.
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::begin_vector_random_circular (adf::io_buffer< T, Dir, Config > &port)
| Returns a vector random circular iterator over given io buffer.
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::begin_vector_random_circular (const adf::io_buffer< T, Dir, Config > &port)
| Returns a const vector random circular iterator over given io buffer.
template<aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::cbegin (const adf::io_buffer< T, Dir, Config > &port)
| Returns a foward const iterator over given io buffer.
template<aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::cbegin_circular (const adf::io_buffer< T, Dir, Config > &port)
| Returns a const foward iterator over given io buffer.
template<aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::cbegin_random_circular (const adf::io_buffer< T, Dir, Config > &port)
| Returns a random const iterator over given io buffer.
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::cbegin_restrict_vector (const adf::io_buffer< T, Dir, Config > &port)
| Returns a const restrict vector iterator over given io buffer.
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::cbegin_vector (const adf::io_buffer< T, Dir, Config > &port)
| Returns a const vector iterator over given io buffer.
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::cbegin_vector_circular (const adf::io_buffer< T, Dir, Config > &port)
| Returns a const vector circular iterator over given io buffer.
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::cbegin_vector_input_buffer_stream (const adf::io_buffer< T, Dir, Config > &port)
| Returns a const vector input stream over given io buffer.
template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>
constexpr auto | aie::cbegin_vector_random_circular (const adf::io_buffer< T, Dir, Config > &port)
| Returns a const vector random circular iterator over given io buffer.
template<aie_dm_resource Resource = aie_dm_resource::none, aie::tbs_mode Mode = aie::tbs_mode::default_mode, IOBuffer T, typename TensorDescriptor>
constexpr auto | aie::make_restrict_tensor_buffer_stream (T &port, const TensorDescriptor &tensor_desc)
| Creates a restrict tensor buffer stream for accessing multidimensional data from an ADF I/O buffer port.
template<aie_dm_resource Resource = aie_dm_resource::none, aie::tbs_mode Mode = aie::tbs_mode::default_mode, IOBuffer T, typename TensorDescriptor>
constexpr auto | aie::make_tensor_buffer_stream (const T &port, const TensorDescriptor &tensor_desc)
| Creates a constant tensor buffer stream for accessing multidimensional data from an ADF I/O buffer port.
template<aie_dm_resource Resource = aie_dm_resource::none, aie::tbs_mode Mode = aie::tbs_mode::default_mode, IOBuffer T, typename TensorDescriptor>
constexpr auto | aie::make_tensor_buffer_stream (T &port, const TensorDescriptor &tensor_desc)
| Creates a tensor buffer stream for accessing multidimensional data from an ADF I/O buffer port.
template<aie_dm_resource Resource = aie_dm_resource::none, aie::tbs_mode Mode = aie::tbs_mode::default_mode, IOBuffer T, typename TensorDescriptor>
constexpr auto | aie::make_unaligned_tensor_buffer_stream (const T &port, const TensorDescriptor &tensor_desc)
| Creates a constant tensor buffer stream for accessing unaligned multidimensional data from an ADF I/O buffer port.
template<aie_dm_resource Resource = aie_dm_resource::none, aie::tbs_mode Mode = aie::tbs_mode::default_mode, IOBuffer T, typename TensorDescriptor>
constexpr auto | aie::make_unaligned_tensor_buffer_stream (T &port, const TensorDescriptor &tensor_desc)
| Creates a tensor buffer stream for accessing unaligned multidimensional data from an ADF I/O buffer port.
template<aie::AccumElemBaseType T, unsigned N>
constexpr output_cascade< T > & | operator<< (output_cascade< T > &w, const aie::accum< T, N > &acc)
| Writes an accumulator into the output cascade stream.
template<aie::ElemBaseType T, unsigned N>
constexpr output_cascade< T > & | operator<< (output_cascade< T > &w, const aie::vector< T, N > &v)
| Writes a vector into the output cascade stream.
template<aie::AccumElemBaseType T, unsigned N>
constexpr output_cascade< T > * | operator<< (output_cascade< T > *w, const aie::accum< T, N > &acc)
| Writes an accumulator into the output cascade stream.
template<aie::ElemBaseType T, unsigned N>
constexpr output_cascade< T > * | operator<< (output_cascade< T > *w, const aie::vector< T, N > &v)
| Writes a vector into the output cascade stream.
template<aie::AccumElemBaseType T, unsigned N>
constexpr output_stream< T > & | operator<< (output_stream< T > &w, const aie::accum< T, N > &acc)
| Writes an accumulator into the output cascade stream.
template<typename T, unsigned N>
constexpr output_stream< T > & | operator<< (output_stream< T > &w, const aie::vector< T, N > &v)
| Writes a vector into the output AXI stream.
template<typename T>
constexpr output_stream< T > & | operator<< (output_stream< T > &w, const T &v)
| Writes a value into the output AXI stream.
template<typename T, aie::TLast< T > TL>
constexpr output_stream< T > & | operator<< (output_stream< T > &w, const TL &tl)
| Writes a value or vector into the output AXI stream.
template<aie::AccumElemBaseType T, unsigned N>
constexpr output_stream< T > * | operator<< (output_stream< T > *w, const aie::accum< T, N > &acc)
| Writes an accumulator into the output cascade stream.
template<typename T, unsigned N>
constexpr output_stream< T > * | operator<< (output_stream< T > *w, const aie::vector< T, N > &v)
| Writes a vector into the output AXI stream.
template<typename T>
constexpr output_stream< T > & | operator<< (output_stream< T > *w, const T &v)
| Writes a value into the output AXI stream.
template<typename T, aie::TLast< T > TL>
constexpr output_stream< T > * | operator<< (output_stream< T > *w, const TL &tl)
| Writes a value into the output AXI stream.
template<unsigned N, aie::AccumElemBaseType T>
constexpr input_cascade< T > & | operator>> (input_cascade< T > &w, aie::accum< T, N > &acc)
| Reads an accumulator from the input cascade stream.
template<unsigned N, aie::ElemBaseType T>
constexpr input_cascade< T > & | operator>> (input_cascade< T > &w, aie::vector< T, N > &v)
| Reads a vector from the input cascade stream.
template<unsigned N, aie::AccumElemBaseType T>
constexpr input_cascade< T > * | operator>> (input_cascade< T > *w, aie::accum< T, N > &acc)
| Reads an accumulator from the input cascade stream.
template<unsigned N, aie::ElemBaseType T>
constexpr input_cascade< T > * | operator>> (input_cascade< T > *w, aie::vector< T, N > &v)
| Reads a vector from the input cascade stream.
template<unsigned N, aie::AccumElemBaseType T>
constexpr input_stream< T > & | operator>> (input_stream< T > &w, aie::accum< T, N > &acc)
| Reads an accumulator from the input cascade stream.
template<unsigned N, typename T>
constexpr input_stream< T > & | operator>> (input_stream< T > &w, aie::vector< T, N > &v)
| Reads a vector from the input AXI stream.
template<typename T, aie::TLast< T > TL>
constexpr input_stream< T > & | operator>> (input_stream< T > &w, const TL &tl)
| Reads a value or vector from the input AXI stream.
template<typename T>
constexpr input_stream< T > & | operator>> (input_stream< T > &w, T &v)
| Reads a value from the input AXI stream.
template<unsigned N, aie::AccumElemBaseType T>
constexpr input_stream< T > * | operator>> (input_stream< T > *w, aie::accum< T, N > &acc)
| Reads an accumulator from the input cascade stream.
template<unsigned N, typename T>
constexpr input_stream< T > * | operator>> (input_stream< T > *w, aie::vector< T, N > &v)
| Reads a vector from the input AXI stream.
template<typename T, aie::TLast< T > TL>
constexpr input_stream< T > * | operator>> (input_stream< T > *w, const TL &tl)
| Reads a value or vector from the input AXI stream.
template<typename T>
constexpr input_stream< T > & | operator>> (input_stream< T > *w, T &v)
| Reads a value from the input AXI stream.
template<unsigned N, aie::ElemBaseType T>
aie::vector< T, N > | readincr_v (input_cascade< T > *w)
| Reads a vector from the input cascade stream.
template<unsigned N, aie::AccumElemBaseType T>
aie::accum< T, N > | readincr_v (input_stream< T > *w)
| Reads an accumulator from the input cascade stream.
template<unsigned N, aie_stream_resource_in Resource = aie_stream_resource_in::none, typename T>
aie::vector< T, N > | readincr_v (input_stream< T > *w)
| Reads a vector from the input AXI stream.
template<unsigned N, aie_stream_resource_in Resource = aie_stream_resource_in::none, typename T>
aie::vector< T, N > | readincr_v (input_stream< T > *w, bool &tlast)
| Reads a vector from the input AXI stream and returns whether TLAST has been asserted.
template<unsigned N, aie_dm_resource Resource = aie_dm_resource::none, typename T>
aie::vector< T, N > | window_read_v (input_window< T > *w)
| Read a vector from an input window.
template<unsigned N, aie_dm_resource Resource = aie_dm_resource::none, typename T>
void | window_read_v (input_window< T > *w, aie::vector< T, N > &value)
| Read a vector from an input window.
template<unsigned N, aie_dm_resource Resource = aie_dm_resource::none, typename T>
aie::vector< T, N > | window_readdecr_v (input_window< T > *w)
| Read a vector from an input window and decrement the window pointer.
template<unsigned N, aie_dm_resource Resource = aie_dm_resource::none, typename T>
void | window_readdecr_v (input_window< T > *w, aie::vector< T, N > &value)
| Read a vector from an input window and decrement the window pointer.
template<unsigned N, aie_dm_resource Resource = aie_dm_resource::none, typename T>
aie::vector< T, N > | window_readincr_v (input_window< T > *w)
| Read a vector from an input window and increment the window pointer.
template<unsigned N, aie_dm_resource Resource = aie_dm_resource::none, typename T>
void | window_readincr_v (input_window< T > *w, aie::vector< T, N > &value)
| Read a vector from an input window and increment the window pointer.
template<aie_dm_resource Resource = aie_dm_resource::none, typename T, unsigned N>
void | window_write (output_window< T > *w, const aie::vector< T, N > &value)
| Write a vector into an output window.
template<aie_dm_resource Resource = aie_dm_resource::none, typename T, unsigned N>
void | window_writeincr (output_window< T > *w, const aie::vector< T, N > &value)
| Write a vector into an output window and increment the window pointer.
template<aie::AccumElemBaseType T, unsigned N>
void | writeincr (output_cascade< T > *w, const aie::accum< T, N > &value)
| Writes an accumulator into the output cascade stream.
template<aie::ElemBaseType T, unsigned N>
void | writeincr (output_cascade< T > *w, const aie::vector< T, N > &value)
| Writes a vector into the output cascade stream.
template<aie::AccumElemBaseType T, unsigned N>
void | writeincr (output_stream< T > *w, const aie::accum< T, N > &value)
| Writes an accumulator into the output cascade stream.
template<aie_stream_resource_out Resource = aie_stream_resource_out::none, typename T, unsigned N>
void | writeincr (output_stream< T > *w, const aie::vector< T, N > &value)
| Writes a vector into the output AXI stream.
template<aie_stream_resource_out Resource = aie_stream_resource_out::none, typename T, unsigned N>
void | writeincr (output_stream< T > *w, const aie::vector< T, N > &value, bool tlast)
| Writes a vector into the output AXI stream.

## Class Documentation

## ◆ aie::tlast

struct aie::tlast

template<typename T, typename Bool>
struct aie::tlast< T, Bool >

Type used to wrap objects read/written from/to streams that also encapsulates TLAST information.

When passed into output AXI streams, this object will say whether TLAST is asserted after the write operation. When read from input AXI streams, the object will say whether TLAST was asserted by the writer.

### Public Types
using | value_type = T
### Public Member Functions
| tlast (const tlast &)=delete
constexpr | tlast (T value, Bool t_last)
| Constructor used to initialize the object.
tlast & | operator= (const tlast &)=delete
### Public Attributes
Bool | t_last
T | value

#### Member Typedef Documentation

## ◆ value_type

template<typename T, typename Bool>

using aie::tlast< T, Bool >::value_type = T

#### Constructor & Destructor Documentation

## ◆ tlast() [1/2]

template<typename T, typename Bool>

aie::tlast< T, Bool >::tlast | ( | const tlast< T, Bool > & |  | ) |
| delete

## ◆ tlast() [2/2]

template<typename T, typename Bool>

aie::tlast< T, Bool >::tlast | ( | T | value,
|  | Bool | t_last )
| inline constexpr

Constructor used to initialize the object.

For input AXI streams, both arguments are references to the variables where to store the read value and TLAST. For output AXI streams, these are the value and TLAST to be written.

#### Member Function Documentation

## ◆ operator=()

template<typename T, typename Bool>

tlast & aie::tlast< T, Bool >::operator= | ( | const tlast< T, Bool > & |  | ) |
| delete

#### Member Data Documentation

## ◆ t_last

template<typename T, typename Bool>

Bool aie::tlast< T, Bool >::t_last

## ◆ value

template<typename T, typename Bool>

T aie::tlast< T, Bool >::value

## Function Documentation

## ◆ begin() [1/2]

template<aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::begin | ( | adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a foward iterator over given io buffer.

Requires given io buffer to have linear addressing mode.

Template Parameters

  Resource |

Parameters

  port | The io buffer

## ◆ begin() [2/2]

template<aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::begin | ( | const adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a foward const iterator over given io buffer.

Requires given buffer port to have linear addressing mode.

Template Parameters

  Resource |

Parameters

  port | The io buffer

## ◆ begin_circular() [1/2]

template<aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::begin_circular | ( | adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a foward circular iterator over given io buffer.

Template Parameters

  Resource |

Parameters

  port | The io buffer

## ◆ begin_circular() [2/2]

template<aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::begin_circular | ( | const adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a const foward circular iterator over given io buffer.

Template Parameters

  Resource |

Parameters

  port | The io buffer

## ◆ begin_random_circular() [1/2]

template<aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::begin_random_circular | ( | adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a random iterator over given io buffer.

If the port has circular addressing the iterator is a circular random iterator.

Template Parameters

  Resource |

Parameters

  port | The io buffer

## ◆ begin_random_circular() [2/2]

template<aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::begin_random_circular | ( | const adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a random const iterator over given io buffer.

If the port has circular addressing the iterator is a circular random const iterator.

Template Parameters

  Resource |

Parameters

  port | The io buffer

## ◆ begin_restrict_vector() [1/2]

template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::begin_restrict_vector | ( | adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a restrict vector iterator over given io buffer.

Requires given io buffer to have linear addressing mode.

Template Parameters

  Elems | The size of the vector
  Resource | Bank annotation

Parameters

  port | The io buffer

## ◆ begin_restrict_vector() [2/2]

template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::begin_restrict_vector | ( | const adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a const restrict vector iterator over given io buffer.

Requires given buffer port to have linear addressing mode.

Template Parameters

  Elems | The size of the vector
  Resource | Bank annotation

Parameters

  port | The io buffer

## ◆ begin_vector() [1/2]

template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::begin_vector | ( | adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a vector iterator over given io buffer.

Requires given io buffer to have linear addressing mode.

Template Parameters

  Elems | The size of the vector
  Resource | Bank annotation

Parameters

  port | The io buffer

## ◆ begin_vector() [2/2]

template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::begin_vector | ( | const adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a const vector iterator over given io buffer.

Requires given buffer port to have linear addressing mode.

Template Parameters

  Elems | The size of the vector
  Resource | Bank annotation

Parameters

  port | The io buffer

## ◆ begin_vector_circular() [1/2]

template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::begin_vector_circular | ( | adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a vector circular iterator over given io buffer.

Template Parameters

  Elems | The size of the vector
  Resource | Bank annotation

Parameters

  port | The io buffer

## ◆ begin_vector_circular() [2/2]

template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::begin_vector_circular | ( | const adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a const vector circular iterator over given io buffer.

Template Parameters

  Elems | The size of the vector
  Resource | Bank annotation

Parameters

  port | The io buffer

## ◆ begin_vector_input_buffer_stream()

template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::begin_vector_input_buffer_stream | ( | const adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a const vector input stream over given io buffer.

Template Parameters

  Elems | The size of the vector
  Resource | Bank annotation

Parameters

  port | The io buffer

## ◆ begin_vector_output_buffer_stream()

template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::begin_vector_output_buffer_stream | ( | adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a vector output stream over given io buffer.

Template Parameters

  Elems | The size of the vector
  Resource | Bank annotation

Parameters

  port | The io buffer

## ◆ begin_vector_random_circular() [1/2]

template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::begin_vector_random_circular | ( | adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a vector random circular iterator over given io buffer.

Template Parameters

  Elems | The size of the vector
  Resource | Bank annotation

Parameters

  port | The io buffer

## ◆ begin_vector_random_circular() [2/2]

template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::begin_vector_random_circular | ( | const adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a const vector random circular iterator over given io buffer.

Template Parameters

  Elems | The size of the vector
  Resource | Bank annotation

Parameters

  port | The io buffer

## ◆ cbegin()

template<aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::cbegin | ( | const adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a foward const iterator over given io buffer.

Requires given buffer port to have linear addressing mode.

Template Parameters

  Resource |

Parameters

  port | The io buffer

## ◆ cbegin_circular()

template<aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::cbegin_circular | ( | const adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a const foward iterator over given io buffer.

Template Parameters

  Resource |

Parameters

  port | The io buffer

## ◆ cbegin_random_circular()

template<aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::cbegin_random_circular | ( | const adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a random const iterator over given io buffer.

If the port has circular addressing the iterator is a circular random const iterator.

Template Parameters

  Resource |

Parameters

  port | The io buffer

## ◆ cbegin_restrict_vector()

template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::cbegin_restrict_vector | ( | const adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a const restrict vector iterator over given io buffer.

Requires given buffer port to have linear addressing mode.

Template Parameters

  Elems | The size of the vector
  Resource | Bank annotation

Parameters

  port | The io buffer

## ◆ cbegin_vector()

template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::cbegin_vector | ( | const adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a const vector iterator over given io buffer.

Requires given buffer port to have linear addressing mode.

Template Parameters

  Elems | The size of the vector
  Resource | Bank annotation

Parameters

  port | The io buffer

## ◆ cbegin_vector_circular()

template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::cbegin_vector_circular | ( | const adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a const vector circular iterator over given io buffer.

Template Parameters

  Elems | The size of the vector
  Resource | Bank annotation

Parameters

  port | The io buffer

## ◆ cbegin_vector_input_buffer_stream()

template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::cbegin_vector_input_buffer_stream | ( | const adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a const vector input stream over given io buffer.

Template Parameters

  Elems | The size of the vector
  Resource | Bank annotation

Parameters

  port | The io buffer

## ◆ cbegin_vector_random_circular()

template<unsigned Elems, aie_dm_resource Resource = aie_dm_resource::none, typename T, typename Dir, typename Config>

auto aie::cbegin_vector_random_circular | ( | const adf::io_buffer< T, Dir, Config > & | port | ) |
| constexpr

Returns a const vector random circular iterator over given io buffer.

Template Parameters

  Elems | The size of the vector
  Resource | Bank annotation

Parameters

  port | The io buffer

## ◆ make_restrict_tensor_buffer_stream()

template<aie_dm_resource Resource = aie_dm_resource::none, aie::tbs_mode Mode = aie::tbs_mode::default_mode, IOBuffer T, typename TensorDescriptor>

auto aie::make_restrict_tensor_buffer_stream | ( | T & | port,
|  | const TensorDescriptor & | tensor_desc )
| constexpr

Creates a restrict tensor buffer stream for accessing multidimensional data from an ADF I/O buffer port.

This function creates a tensor buffer stream with restrict semantics, indicating to the compiler that the I/O buffer is the only way to access the underlying data during the lifetime of the stream. This allows for more aggressive optimizations by removing potential aliasing concerns.

Template Parameters

  Resource | Data Memory resource to be used for the access. Defaults to none.
  Mode | Tensor buffer stream mode. Defaults to default_mode.
  T | Type of the I/O buffer (must satisfy IOBuffer concept).
  TensorDescriptor | Type of the tensor descriptor (automatically deduced).

Parameters

  port | Reference to the I/O buffer port to wrap.
  tensor_desc | Tensor descriptor created with make_tensor_descriptor that describes the shape and stride of the multidimensional tensor.

Returns
  A restrict tensor buffer stream object with additional optimization opportunities due to restrict semantics.

See also
  make_tensor_descriptor
  make_tensor_buffer_stream
  input_buffer
  output_buffer

## ◆ make_tensor_buffer_stream() [1/2]

template<aie_dm_resource Resource = aie_dm_resource::none, aie::tbs_mode Mode = aie::tbs_mode::default_mode, IOBuffer T, typename TensorDescriptor>

auto aie::make_tensor_buffer_stream | ( | const T & | port,
|  | const TensorDescriptor & | tensor_desc )
| constexpr

Creates a constant tensor buffer stream for accessing multidimensional data from an ADF I/O buffer port.

This overload accepts a const reference to an I/O buffer port and creates a read-only tensor buffer stream. The returned stream can only be used for reading data from the buffer, preventing accidental modifications.

Template Parameters

  Resource | Data Memory resource to be used for the access. Defaults to none.
  Mode | Tensor buffer stream mode. Defaults to default_mode.
  T | Type of the I/O buffer (must satisfy IOBuffer concept).
  TensorDescriptor | Type of the tensor descriptor (automatically deduced).

Parameters

  port | Const reference to the I/O buffer port to wrap.
  tensor_desc | Tensor descriptor created with make_tensor_descriptor that describes the shape and stride of the multidimensional tensor.

Returns
  A constant tensor buffer stream object that can be used to read from the I/O buffer.

See also
  make_tensor_descriptor
  make_restrict_tensor_buffer_stream
  input_buffer
  output_buffer

## ◆ make_tensor_buffer_stream() [2/2]

template<aie_dm_resource Resource = aie_dm_resource::none, aie::tbs_mode Mode = aie::tbs_mode::default_mode, IOBuffer T, typename TensorDescriptor>

auto aie::make_tensor_buffer_stream | ( | T & | port,
|  | const TensorDescriptor & | tensor_desc )
| constexpr

Creates a tensor buffer stream for accessing multidimensional data from an ADF I/O buffer port.

This function wraps an ADF I/O buffer port (input_buffer or output_buffer) with tensor buffer stream semantics, enabling hardware-accelerated multidimensional memory access patterns. The stream accesses data using the addressing pattern defined by the tensor descriptor.

Template Parameters

  Resource | Data Memory resource to be used for the access. Defaults to none.
  Mode | Tensor buffer stream mode. Defaults to default_mode.
  T | Type of the I/O buffer (must satisfy IOBuffer concept).
  TensorDescriptor | Type of the tensor descriptor (automatically deduced).

Parameters

  port | Reference to the I/O buffer port to wrap.
  tensor_desc | Tensor descriptor created with make_tensor_descriptor that describes the shape and stride of the multidimensional tensor.

Returns
  A tensor buffer stream object that accesses the I/O buffer according to the tensor descriptor.

See also
  make_tensor_descriptor
  make_restrict_tensor_buffer_stream
  input_buffer
  output_buffer

## ◆ make_unaligned_tensor_buffer_stream() [1/2]

template<aie_dm_resource Resource = aie_dm_resource::none, aie::tbs_mode Mode = aie::tbs_mode::default_mode, IOBuffer T, typename TensorDescriptor>

auto aie::make_unaligned_tensor_buffer_stream | ( | const T & | port,
|  | const TensorDescriptor & | tensor_desc )
| constexpr

Creates a constant tensor buffer stream for accessing unaligned multidimensional data from an ADF I/O buffer port.

This overload accepts a const reference to an I/O buffer port and creates a read-only tensor buffer stream. The returned stream can only be used for reading data from the buffer, preventing accidental modifications.

Template Parameters

  Resource | Data Memory resource to be used for the access. Defaults to none.
  Mode | Tensor buffer stream mode. Defaults to default_mode.
  T | Type of the I/O buffer (must satisfy IOBuffer concept).
  TensorDescriptor | Type of the tensor descriptor (automatically deduced).

Parameters

  port | Const reference to the I/O buffer port to wrap.
  tensor_desc | Tensor descriptor created with make_tensor_descriptor that describes the shape and stride of the multidimensional tensor.

Returns
  A constant tensor buffer stream object that can be used to read from the I/O buffer.

See also
  make_tensor_descriptor
  make_restrict_tensor_buffer_stream
  input_buffer
  output_buffer

## ◆ make_unaligned_tensor_buffer_stream() [2/2]

template<aie_dm_resource Resource = aie_dm_resource::none, aie::tbs_mode Mode = aie::tbs_mode::default_mode, IOBuffer T, typename TensorDescriptor>

auto aie::make_unaligned_tensor_buffer_stream | ( | T & | port,
|  | const TensorDescriptor & | tensor_desc )
| constexpr

Creates a tensor buffer stream for accessing unaligned multidimensional data from an ADF I/O buffer port.

This function wraps an ADF I/O buffer port (input_buffer or output_buffer) with tensor buffer stream semantics, enabling hardware-accelerated multidimensional memory access patterns. The stream accesses data using the addressing pattern defined by the tensor descriptor.

Template Parameters

  Resource | Data Memory resource to be used for the access. Defaults to none.
  Mode | Tensor buffer stream mode. Defaults to default_mode.
  T | Type of the I/O buffer (must satisfy IOBuffer concept).
  TensorDescriptor | Type of the tensor descriptor (automatically deduced).

Parameters

  port | Reference to the I/O buffer port to wrap.
  tensor_desc | Tensor descriptor created with make_tensor_descriptor that describes the shape and stride of the multidimensional tensor.

Returns
  A tensor buffer stream object that accesses the I/O buffer according to the tensor descriptor.

See also
  make_tensor_descriptor
  make_restrict_tensor_buffer_stream
  input_buffer
  output_buffer

## ◆ operator<<() [1/12]

template<aie::AccumElemBaseType T, unsigned N>

output_cascade< T > & operator<< | ( | output_cascade< T > & | w,
|  | const aie::accum< T, N > & | acc )
| constexpr

Writes an accumulator into the output cascade stream.

Parameters

  w | Output cascade stream
  acc | Accumulator to be written

## ◆ operator<<() [2/12]

template<aie::ElemBaseType T, unsigned N>

output_cascade< T > & operator<< | ( | output_cascade< T > & | w,
|  | const aie::vector< T, N > & | v )
| constexpr

Writes a vector into the output cascade stream.

Parameters

  w | Output cascade stream
  v | Vector to be written

## ◆ operator<<() [3/12]

template<aie::AccumElemBaseType T, unsigned N>

output_cascade< T > * operator<< | ( | output_cascade< T > * | w,
|  | const aie::accum< T, N > & | acc )
| constexpr

Writes an accumulator into the output cascade stream.

Parameters

  w | Output cascade stream
  acc | Accumulator to be written

## ◆ operator<<() [4/12]

template<aie::ElemBaseType T, unsigned N>

output_cascade< T > * operator<< | ( | output_cascade< T > * | w,
|  | const aie::vector< T, N > & | v )
| constexpr

Writes a vector into the output cascade stream.

Parameters

  w | Output cascade stream
  v | Vector to be written

## ◆ operator<<() [5/12]

template<aie::AccumElemBaseType T, unsigned N>

output_stream< T > & operator<< | ( | output_stream< T > & | w,
|  | const aie::accum< T, N > & | acc )
| constexpr

Writes an accumulator into the output cascade stream.

Parameters

  w | Output stream
  acc | Accumulator to be written

## ◆ operator<<() [6/12]

template<typename T, unsigned N>

output_stream< T > & operator<< | ( | output_stream< T > & | w,
|  | const aie::vector< T, N > & | v )
| constexpr

Writes a vector into the output AXI stream.

TLAST is not asserted.

Parameters

  w | Output stream
  v | Vector to be written

## ◆ operator<<() [7/12]

template<typename T>

output_stream< T > & operator<< | ( | output_stream< T > & | w,
|  | const T & | v )
| constexpr

Writes a value into the output AXI stream.

TLAST is not asserted.

Parameters

  w | Output stream
  v | Value to be written

## ◆ operator<<() [8/12]

template<typename T, aie::TLast< T > TL>

output_stream< T > & operator<< | ( | output_stream< T > & | w,
|  | const TL & | tl )
| constexpr

Writes a value or vector into the output AXI stream.

The tlast object says whether TLAST is asserted.

Parameters

  w | Output stream
  tl | Object that contains the value or vector to be written and whether TLAST is asserted.

## ◆ operator<<() [9/12]

template<aie::AccumElemBaseType T, unsigned N>

output_stream< T > * operator<< | ( | output_stream< T > * | w,
|  | const aie::accum< T, N > & | acc )
| constexpr

Writes an accumulator into the output cascade stream.

Parameters

  w | Output stream
  acc | Accumulator to be written

## ◆ operator<<() [10/12]

template<typename T, unsigned N>

output_stream< T > * operator<< | ( | output_stream< T > * | w,
|  | const aie::vector< T, N > & | v )
| constexpr

Writes a vector into the output AXI stream.

TLAST is not asserted.

Parameters

  w | Output stream
  v | Vector to be written

## ◆ operator<<() [11/12]

template<typename T>

output_stream< T > & operator<< | ( | output_stream< T > * | w,
|  | const T & | v )
| constexpr

Writes a value into the output AXI stream.

TLAST is not asserted.

Parameters

  w | Output stream
  v | Value to be written

## ◆ operator<<() [12/12]

template<typename T, aie::TLast< T > TL>

output_stream< T > * operator<< | ( | output_stream< T > * | w,
|  | const TL & | tl )
| constexpr

Writes a value into the output AXI stream.

The tlast object says whether TLAST is asserted.

Parameters

  w | Output stream
  tl | Object that contains the value to be written and whether TLAST is asserted.

## ◆ operator>>() [1/12]

template<unsigned N, aie::AccumElemBaseType T>

input_cascade< T > & operator>> | ( | input_cascade< T > & | w,
|  | aie::accum< T, N > & | acc )
| constexpr

Reads an accumulator from the input cascade stream.

Parameters

  w | Input cascade stream
  acc | Accumulator read from stream. Output argument.

## ◆ operator>>() [2/12]

template<unsigned N, aie::ElemBaseType T>

input_cascade< T > & operator>> | ( | input_cascade< T > & | w,
|  | aie::vector< T, N > & | v )
| constexpr

Reads a vector from the input cascade stream.

Parameters

  w | Input cascade stream
  v | Vector read from stream. Output argument.

## ◆ operator>>() [3/12]

template<unsigned N, aie::AccumElemBaseType T>

input_cascade< T > * operator>> | ( | input_cascade< T > * | w,
|  | aie::accum< T, N > & | acc )
| constexpr

Reads an accumulator from the input cascade stream.

Parameters

  w | Input cascade stream
  acc | Accumulator read from stream. Output argument.

## ◆ operator>>() [4/12]

template<unsigned N, aie::ElemBaseType T>

input_cascade< T > * operator>> | ( | input_cascade< T > * | w,
|  | aie::vector< T, N > & | v )
| constexpr

Reads a vector from the input cascade stream.

Parameters

  w | Input cascade stream
  v | Vector read from stream. Output argument.

## ◆ operator>>() [5/12]

template<unsigned N, aie::AccumElemBaseType T>

input_stream< T > & operator>> | ( | input_stream< T > & | w,
|  | aie::accum< T, N > & | acc )
| constexpr

Reads an accumulator from the input cascade stream.

Parameters

  w | Input stream
  acc | Accumulator read from stream. Output argument.

## ◆ operator>>() [6/12]

template<unsigned N, typename T>

input_stream< T > & operator>> | ( | input_stream< T > & | w,
|  | aie::vector< T, N > & | v )
| constexpr

Reads a vector from the input AXI stream.

Parameters

  w | Input stream
  v | Vector read from stream. Output argument.

## ◆ operator>>() [7/12]

template<typename T, aie::TLast< T > TL>

input_stream< T > & operator>> | ( | input_stream< T > & | w,
|  | const TL & | tl )
| constexpr

Reads a value or vector from the input AXI stream.

The tlast object says whether TLAST is asserted.

Parameters

  w | Input stream
  tl | Object that contains the value or vector read from stream. Output argument.

## ◆ operator>>() [8/12]

template<typename T>

input_stream< T > & operator>> | ( | input_stream< T > & | w,
|  | T & | v )
| constexpr

Reads a value from the input AXI stream.

Parameters

  w | Input stream
  v | Value read from stream. Output argument.

## ◆ operator>>() [9/12]

template<unsigned N, aie::AccumElemBaseType T>

input_stream< T > * operator>> | ( | input_stream< T > * | w,
|  | aie::accum< T, N > & | acc )
| constexpr

Reads an accumulator from the input cascade stream.

Parameters

  w | Input stream
  acc | Accumulator read from stream. Output argument.

## ◆ operator>>() [10/12]

template<unsigned N, typename T>

input_stream< T > * operator>> | ( | input_stream< T > * | w,
|  | aie::vector< T, N > & | v )
| constexpr

Reads a vector from the input AXI stream.

Parameters

  w | Input stream
  v | Vector read from stream. Output argument.

## ◆ operator>>() [11/12]

template<typename T, aie::TLast< T > TL>

input_stream< T > * operator>> | ( | input_stream< T > * | w,
|  | const TL & | tl )
| constexpr

Reads a value or vector from the input AXI stream.

The tlast object says whether TLAST is asserted.

Parameters

  w | Input stream
  tl | Object that contains the value or vector read from stream. Output argument.

## ◆ operator>>() [12/12]

template<typename T>

input_stream< T > & operator>> | ( | input_stream< T > * | w,
|  | T & | v )
| constexpr

Reads a value from the input AXI stream.

Parameters

  w | Input stream
  v | Value read from stream. Output argument.

## ◆ readincr_v() [1/4]

template<unsigned N, aie::ElemBaseType T>

aie::vector< T, N > readincr_v | ( | input_cascade< T > * | w | ) |

Reads a vector from the input cascade stream.

Parameters

  w | Input cascade stream

## ◆ readincr_v() [2/4]

template<unsigned N, aie::AccumElemBaseType T>

aie::accum< T, N > readincr_v | ( | input_stream< T > * | w | ) |

Reads an accumulator from the input cascade stream.

Parameters

  w | Input stream

## ◆ readincr_v() [3/4]

template<unsigned N, aie_stream_resource_in Resource = aie_stream_resource_in::none, typename T>

aie::vector< T, N > readincr_v | ( | input_stream< T > * | w | ) |

Reads a vector from the input AXI stream.

Template Parameters

  N | Size of the vector to be read
  Resource | Stream in resource. This information can be leveraged by the compiler to schedule stream reads in parallel when possible

Parameters

  w | Input stream

## ◆ readincr_v() [4/4]

template<unsigned N, aie_stream_resource_in Resource = aie_stream_resource_in::none, typename T>

aie::vector< T, N > readincr_v | ( | input_stream< T > * | w,
|  | bool & | tlast )

Reads a vector from the input AXI stream and returns whether TLAST has been asserted.

Template Parameters

  N | Size of the vector to be read
  Resource | Stream in resource. This information can be leveraged by the compiler to schedule stream reads in parallel when possible

Parameters

  w | Input stream
  tlast | Output argument that tells whether TLAST has been asserted.

## ◆ window_read_v() [1/2]

template<unsigned N, aie_dm_resource Resource = aie_dm_resource::none, typename T>

aie::vector< T, N > window_read_v | ( | input_window< T > * | w | ) |

Read a vector from an input window.

Template Parameters

  N | Size of the vector to be read

Parameters

  w | Input window

## ◆ window_read_v() [2/2]

template<unsigned N, aie_dm_resource Resource = aie_dm_resource::none, typename T>

void window_read_v | ( | input_window< T > * | w,
|  | aie::vector< T, N > & | value )

Read a vector from an input window.

Parameters

  w | Input window
  value | Output parameter that contains the read vector

## ◆ window_readdecr_v() [1/2]

template<unsigned N, aie_dm_resource Resource = aie_dm_resource::none, typename T>

aie::vector< T, N > window_readdecr_v | ( | input_window< T > * | w | ) |

Read a vector from an input window and decrement the window pointer.

Template Parameters

  N | Size of the vector to be read

Parameters

  w | Input window

## ◆ window_readdecr_v() [2/2]

template<unsigned N, aie_dm_resource Resource = aie_dm_resource::none, typename T>

void window_readdecr_v | ( | input_window< T > * | w,
|  | aie::vector< T, N > & | value )

Read a vector from an input window and decrement the window pointer.

Parameters

  w | Input window
  value | Output parameter that contains the read vector

## ◆ window_readincr_v() [1/2]

template<unsigned N, aie_dm_resource Resource = aie_dm_resource::none, typename T>

aie::vector< T, N > window_readincr_v | ( | input_window< T > * | w | ) |

Read a vector from an input window and increment the window pointer.

Template Parameters

  N | Size of the vector to be read

Parameters

  w | Input window

## ◆ window_readincr_v() [2/2]

template<unsigned N, aie_dm_resource Resource = aie_dm_resource::none, typename T>

void window_readincr_v | ( | input_window< T > * | w,
|  | aie::vector< T, N > & | value )

Read a vector from an input window and increment the window pointer.

Parameters

  w | Input window
  value | Output parameter that contains the read vector

## ◆ window_write()

template<aie_dm_resource Resource = aie_dm_resource::none, typename T, unsigned N>

void window_write | ( | output_window< T > * | w,
|  | const aie::vector< T, N > & | value )

Write a vector into an output window.

Parameters

  w | Output window
  value | Vector to be written

## ◆ window_writeincr()

template<aie_dm_resource Resource = aie_dm_resource::none, typename T, unsigned N>

void window_writeincr | ( | output_window< T > * | w,
|  | const aie::vector< T, N > & | value )

Write a vector into an output window and increment the window pointer.

Parameters

  w | Output window
  value | Vector to be written

## ◆ writeincr() [1/5]

template<aie::AccumElemBaseType T, unsigned N>

void writeincr | ( | output_cascade< T > * | w,
|  | const aie::accum< T, N > & | value )

Writes an accumulator into the output cascade stream.

Parameters

  w | Output cascade stream
  value | Accumulator to be written

## ◆ writeincr() [2/5]

template<aie::ElemBaseType T, unsigned N>

void writeincr | ( | output_cascade< T > * | w,
|  | const aie::vector< T, N > & | value )

Writes a vector into the output cascade stream.

Parameters

  w | Output cascade stream
  value | Vector to be written

## ◆ writeincr() [3/5]

template<aie::AccumElemBaseType T, unsigned N>

void writeincr | ( | output_stream< T > * | w,
|  | const aie::accum< T, N > & | value )

Writes an accumulator into the output cascade stream.

Parameters

  w | Output stream
  value | Accumulator to be written

## ◆ writeincr() [4/5]

template<aie_stream_resource_out Resource = aie_stream_resource_out::none, typename T, unsigned N>

void writeincr | ( | output_stream< T > * | w,
|  | const aie::vector< T, N > & | value )

Writes a vector into the output AXI stream.

TLAST is not asserted.

Template Parameters

  Resource | Stream out resource. This information can be leveraged by the compiler to schedule stream writes in parallel when possible

Parameters

  w | Output stream
  value | Vector to be written

## ◆ writeincr() [5/5]

template<aie_stream_resource_out Resource = aie_stream_resource_out::none, typename T, unsigned N>

void writeincr | ( | output_stream< T > * | w,
|  | const aie::vector< T, N > & | value,
|  | bool | tlast )

Writes a vector into the output AXI stream.

An additional argument says whether TLAST is asserted.

Template Parameters

  Resource | Stream out resource. This information can be leveraged by the compiler to schedule stream writes in parallel when possible

Parameters

  w | Output stream
  value | Vector to be written
  tlast | TLAST is asserted if true