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)"]
},
您必须在约束文件中声明 isomorphic graph group
,以指定参考 graph 和盖戳的 graph。例如:
"isomorphicGraphGroup": {
"name": "isoGroup",
"referenceGraph": "tx_chain0",
"stampedGraphs": ["tx_chain1", "tx_chain2"]
}
,
在此例中,tx_chain0
graph 用作为参考,其对象将首先布局到 tx_chain1
和 tx_chain2
graph 中,并在这两个 graph 中为这些对象盖戳。面积分组必须遵循如下有关行数的规则:所有相同的 graph(参考 graph 和可盖戳的 graph)的行号必须相同,并且必须以相同的行奇偶性开始和结束,这表示参考 graph 的tileGroup始于偶数行且止于奇数行,那么所有盖戳的 graph 也必须遵循相同的规范。存在此限制的原因是因为 AI 引擎阵列中存在镜像拼块 (mirrored tile)。在一行中,AI 引擎后接存储器组,在下一行中,该存储器组后接 AI 引擎,且两者位于同一拼块内。