FIFO 约束 - 2023.2 简体中文

AI 引擎内核与计算图编程指南 (UG1079)

Document ID
UG1079
Release Date
2023-12-04
Version
2023.2 简体中文

此约束用于将 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"]
    }
  }
}