Shared Buffers Constraint - Shared Buffers Constraint - 2026.1 English - UG1603

AI Engine-ML Kernel and Graph Programming Guide (UG1603)

Document ID
UG1603
Release Date
2026-07-08
Version
2026.1 English

This constrains a shared buffer to a specific address on a specific memory tile. You can specify the address can be specified in one of three ways:

Column, row, and offset
The tile is specified by column and row. The offset address is relative to the tile, starting at zero with a maximum value of 524288 (512k).
Column, row, and bankId
The bank ID is relative to the memory tile and can take a value between 0 and 15.
Offset
Can be between zero and 524288 (512k) and is relative to the memory tile allocated by the compiler.
Number of columns
Same as number of columns of the AI Engine-ML array. Rows (1 or 2) is different from device to device.
Note: One, or more shared buffers can be constrained for a port.

Syntax

"memTileBufferInfo": [<address>, <(optional) address>]
<address> ::= <offset_address> | <bank_address> | <offset_address>
<tile_address> ::= {
  "column": integer,
  "row": integer,
  "offset": integer
}
<bank_address> ::= {
  "column": integer,
  "row": integer,
  "bankId": integer
}
<offset_address> ::= {
  "offset": integer
}

Example:

{
  "PortConstraints": {
  "GMatMult.MMult.mtxA_ns.out[0]": {
    "buffers": [{
      "column": 6,
       "row": 0,
      "bankId": 2,
      "offset": 0
    }, {
      "column": 6,
      "row": 0,
      "bankId": 3,
      "offset": 0
    }]
  },
  "GMatMult.MMult.mtxC_ns.in[0]": {
    "buffers": [{
      "column": 7,
      "row": 1,
      "bankId": 1,
      "offset": 0
    }, {
      "column": 7,
      "row": 1,
      "bankId": 0,
      "offset": 0
    }]
  }
  }
}