此约束用于将 FIFO 约束至特定 tile(拼块),此拼块位于阵列内特定的列和行。此拼块可以是 AI 引擎拼块、存储器拼块或接口拼块。bankId 为可选;如果省略,则编译器会选择最优化 bank。
FIFO 约束可使用以下任一方式来指定:
-
Column(列)、row(行)、bankID、offset(偏移)和 size(大小),其中,拼块按 column、row、bankID 来指定,偏移地址则与 bankID 相关,size 从 0 开始,最大值为每个 bank 8188 个 32 位字。
-
Column、row 和 bankId,其中 bank ID 与拼块相关,可取下列值:0、1、2 或 3。注释: 硬件视图是位宽为 128 位的 8 个 bank,但软件视图是位宽为 256 位的 4 个 bank。
以下代码块显示了语法。
"PortConstraints": [<fifo list>]
<fifo list> ::= <fifo type>[, <fifo type>...]
<fifo type> ::= <dma_fifos> | <stream_fifos>
<dma_fifos> ::= <aie_tile>
<aie_tile> ::= {
"fifo_id": string,
"tile_type": "core",
"column": integer,
"row": integer,
"size": integer,
"offset": integer,
"bankId":integer (optional)
}
<stream_fifos> ::= {
"fifo_id": string,
"tile_type": "shim",
"column": integer,
"row": integer,
"channel": integer
}
以下代码显示了示例。
{
"PortConstraints": {
"fifo_locations_records": {
"dma_fifos": {
"r1": {
"tile_type": "core",
"row": 0,
"column": 0,
"size": 16,
"offset": 8,
"bankId": 2
},
"r2": {
"tile_type": "core",
"row": 0,
"column": 1,
"size": 16,
"offset": 9
},
"r4": {
"tile_type": "mem",
"row": 2,
"column": 4,
"size": 16,
"offset": 6,
"bankId": 2
}
},
"stream_fifos": {
"r3": {
"tile_type": "shim",
"row": 1,
"column": 3,
"channel": 1
}
}
},
"mygraph.k2.in[0]": {
"not_colocated_nodes": ["mygraph.k1"],
"fifo_locations": ["r1", "r2", "r3"]
},
"mygraph.k4.in[0]": {
"fifo_locations": ["r1", "r2", "r4"]
}
}
}