This constrains a data buffer to a specific address on a specific tile. You can attach the data buffer to an input, output, or inout port of a kernel or param (for example, a lookup table). 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 65536 (64k).
- Column, row, and bankId
- the bank ID is relative to the tile and can take values 0, 1, 2, 3.
- Offset
- Can be between zero and 65536 (64k) 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
}]
}
}
}