This constrains a data buffer to a specific address on a specific tile. The data buffer can be attached to an input, output, or inout port of a kernel or param (e.g., a lookup table). The address can be specified in one of three different ways:
- Column, row, and offset, where the tile is specified by column and row and the offset address is relative to the tile, starting at zero with a maximum value of 32768 (32k).
- Column, row, and bankId, where the bank ID is relative to the tile and can take values 0, 1, 2, 3.
- Offset, that can be between zero and 32768 (32k) and is relative to the tile allocated by the compiler.
Note: One or two buffers
can be constrained for a port.
Syntax
"buffers": [<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": {
"mygraph.k2.out[0]": {
"buffers": [{
"column": 2,
"row": 2,
"offset": 5632
}, {
"column": 2,
"row": 2,
"offset": 4608
}]
},
"mygraph.k1.out[0]": {
"buffers": [{
"column": 2,
"row": 3,
"bankId": 2
}, {
"column": 2,
"row": 3,
"bankId": 3
}]
},
"mygraph.p1": {
"buffers": [{
"offset": 512
}]
}
}
}