AreaGroup Constraint - 2020.2 English

Versal ACAP AI Engine Programming Environment User Guide (UG1076)

Document ID
UG1076
Release Date
2020-11-24
Version
2020.2 English

The areaGroup constraint specifies a range of tile and/or shim locations that a group of one or more nodes can be mapped. The areaGroup constraint can be specified with up to five properties:

nodeGroup
An array of one or more node names (e.g., kernel names)
tileGroup
An array of one or more tile ranges
shimGroup
An array of one or more shim ranges
exclude
A boolean value that when true causes the compiler to not map any resources to the tile and/or shim ranges
issoft
A boolean value that when true allows the router to use routing resources within the tile and/or shim ranges

A tile range is in the form of (column,row):(column,row), where the first tile is the bottom left corner and the second tile the upper right corner. The column and row values are zero based, where the zeroth row is counted from the bottom-most compute processor and the zeroth column is counted from the left-most column.

A shim range is in the form of (column):(column), where the first value is the left-most column and the second value the right-most column. The column is zero based, where the zeroth row is counted from the bottom-most compute processor and the zeroth column is counted from the left-most column. The shim range also allows an optional channel to be specified, e.g., (column,channel):(column,channel).

The AreaGroup is used to exclude a range on the device from being used by the compiler for mapping and optionally routing:

  • To exclude a range from both mapper and router, omit nodeGroup and set exclude to true.
  • To exclude a range from mapper, but not router, omit nodeGroup and set exclude to true and issoft to true.
Note: There can be any number of areaGroup constraints in the GlobalConstraints section, as long as each constraint has a unique name.

Syntax

"areaGroup": {
  "name": string,
  "exclude": bool, (*optional)
  "issoft": bool, (*optional)
  "nodeGroup": [<node list>], (*optional)
  "tileGroup": [<tile list>], (*optional)
  "shimGroup": [<shim list>] (*optional)
}

<node list> ::= <node name>[,<node name>...]

<tile array> ::= <tile value>[,<tile value>...]
<tile value> ::= <tile range> | <tile address>
<tile range> ::= "<tile address>[:<tile address>]"
<tile address> ::= (<column>, <row>)

<shim array> ::= <shim value>[,<shim value>...]
<shim value> ::= <shim range> | <shim address>
<shim range> ::= "<shim address>[:<shim address>]"
<shim address> ::= (<column>[,<channel>])

<node name> ::= string
<column> ::= integer
<row> ::= integer
<channel> ::= integer

Example

{
  "GlobalConstraints": {
    "areaGroup": {
      "name": "mygraph_area_group",
      "nodeGroup": ["mygraph.k1", "mygraph.k2"],
      "tileGroup": ["(2,0):(2,3)"],
      "shimGroup": ["0:3"]
    }
  }
}

Example of Exclude

{
  "GlobalConstraints": {
    "areaGroup": {
      "name": "mygraph_excluded_area_group",
      "exclude": true,
      "tileGroup": ["(3,0):(4,3)"],
      "shimGroup": ["3:4"]
    }
  }
}