IsomorphicGraphGroup 约束 - 2022.1 简体中文

Versal ACAP AI 引擎编程环境 用户指南 (UG1076)

Document ID
UG1076
Release Date
2022-05-25
Version
2022.1 简体中文

isomorphicGraphGroup 约束用于指定在盖戳和重复流程中使用的同构 graph。

语法

"isomorphicGraphGroup": {
  "name": string,
   "referenceGraph": <reference graph name>,
   "stampedGraphs": [<stamped graph name list>]
}

示例

  "isomorphicGraphGroup": {
  "name": "isoGroup",
   "referenceGraph": "tx_chain0",
   "stampedGraphs": ["tx_chain1", "tx_chain2", "tx_chain3"]
}

通用描述

如果同一个 graph 具有多个实例,并且可约束到 AI 引擎中的相同几何体内,那么即可利用 AI 引擎编译器的盖戳和重复功能特性。多次例化相同 graph 时,使用该功能部件具有两大主要优势。

性能中的细微差异
所有 graph 都将具有十分类似的吞吐量,因为缓冲器和内核彼此以相同方式映射。由于布线差异,吞吐量可能不完全相同。但不使用盖戳时,吞吐量非常接近。
AI 引擎编译器运行时间更短
由于 AI 引擎编译器仅解决参考 graph,而不是整个设计,因此所需运行时间并不会显著小于默认流程。

功能和限制

您可以按需对多个不同 graph 进行盖戳。例如,如果设计包含名为 tx_chain 的 graph 的 4 个实例和名为 rx_chain 的 graph 的 4 个实例,那么这两组 graph 均可独立盖戳。仅当设计具有一组或多组同构 graph 且各组同构 graph 之间无交互时,才支持此功能特性。所有参考 graph 和盖戳的 graph 都必须具有面积分组约束。您必须为需盖戳的 graph 的每个实例声明相同大小的面积分组。所有面积分组都不得重叠。例如:

"areaGroup": {
   "name": "ant0_cores",
   "nodeGroup": ["tx_chain0*"],
   "tileGroup": ["(0,0):(3,3)"]
},
"areaGroup": {
   "name": "ant1_cores",
   "nodeGroup": ["tx_chain1*"],
   "tileGroup": ["(0,4):(3,7)"]
},
注释: 节点分组必须包含要盖戳的 graph 中的所有节点实例。可使用模式匹配,如前述示例所示。

您必须在约束文件中声明 isomorphic graph group,以指定参考 graph 和盖戳的 graph。例如:

"isomorphicGraphGroup": {
  "name": "isoGroup",
   "referenceGraph": "tx_chain0",
   "stampedGraphs": ["tx_chain1", "tx_chain2"]
}
,

在此例中,tx_chain0 graph 用作为参考,其对象将首先布局到 tx_chain1tx_chain2 graph 中,并在这两个 graph 中为这些对象盖戳。面积分组必须遵循如下有关行数的规则:所有相同的 graph(参考 graph 和可盖戳的 graph)的行号必须相同,并且必须以相同的行奇偶性开始和结束,这表示参考 graph 的tileGroup始于偶数行且止于奇数行,那么所有盖戳的 graph 也必须遵循相同的规范。存在此限制的原因是因为 AI 引擎阵列中存在镜像拼块 (mirrored tile)。在一行中,AI 引擎后接存储器组,在下一行中,该存储器组后接 AI 引擎,且两者位于同一拼块内。

重要: 仅限顶层 graph 才能盖戳。不支持在顶层例化单个 graph,而后在低层级对 graph 进行盖戳。