面积位置约束向编译器发出指令,将节点约束于阵列中的定制位置。下表中描述了用于指定面积分组的属性。
属性 | 描述 |
---|---|
group
|
指定分组的集合。每个分组均可包含:
|
contain_routing
|
此布尔值如果指定为 true,则可确保所有布线(包括 nodeGroup 中包含的节点之间的信号线)均约束在面积分组内。默认:false。 |
exclusive_routing
|
此布尔值如果指定为 true,则可确保所有布线(不包括 nodeGroup 的节点之间的信号线)均排除在面积分组外。默认:false。 |
exclusive_placement
|
此布尔值如果指定为 true,则可防止将 nodeGroup 内不包含的所有节点都布局到面积分组边界框范围内。默认:false。 |
以下示例演示了如何在计算图文件中应用面积位置约束。
using namespace adf;
class testGraph1: public adf::graph {
private:
kernel first;
kernel second;
public:
testGraph1() {
first = kernel::create(simple1);
second = kernel::create(simple2);
connect(first.out[0], second.in[0]);
source(first) = "src/kernels/kernels.cc";
source(second) = "src/kernels/kernels.cc";
runtime<ratio>(first) = 0.1;
runtime<ratio>(second) = 0.1;
// Create area group with some valid ranges.
location<graph>(*this) = area_group({{aie_tile, 0, 0, 1, 7}, {shim_tile, 0, 0, 1, 0}});
}
};
using namespace adf;
class testGraph2: public adf::graph {
private:
kernel first;
kernel second;
public:
testGraph2() {
first = kernel::create(simple1);
second = kernel::create(simple2);
connect(first.out[0], second.in[0]);
source(first) = "src/kernels/kernels.cc";
source(second) = "src/kernels/kernels.cc";
runtime<ratio>(first) = 0.1;
runtime<ratio>(second) = 0.1;
// Explicitly specify contain_routing, exclusive_routing, exclusive_placement.
location<graph>(*this) = area_group({{aie_tile, 0, 0, 1, 7}, {shim_tile, 0, 0, 1, 0}}, true, false, true);
}
};
下表根据各种标志组合澄清了节点和信号线能否访问面积分组中的资源。表中所示的用例在紧随其后的图中以列方式呈现。根据下表应用规则时,有两个要点需要注意。
- 从单一节点驱动到多个目标节点的广播信号线被视为点对点信号线
- 任一信号线上的任意 FIFO 都遵循与信号线相同的条件。例如,如果某一条信号线完全包含在某个面积分组内(驱动程序和接收器都包含在该面积分组内)并且使用 contain_routing 标志,那么下表表明该信号线布线必须完全包含在该面积分组中。同样,该信号线上的任意 FIFO 都必须布局在该面积分组的边界范围内。
contain_routing | exclusive_routing | exclusive_placement | 包含在面积分组内的节点的布局 (1) | 位于面积分组外部的节点的布局 (2) | 完全包含在面积分组内的节点间的布线 (3) | 遍布整个面积分组的节点间的布线 (4) | 完全位于面积分组外部的节点间的布线 (5) |
---|---|---|---|---|---|---|---|
False | False | False | 必须 | 允许 | 允许 | 允许 | 允许 |
False | False | True | 必须 | 禁止 | 允许 | 允许 | 允许 |
False | True | False | 必须 | 允许 | 允许 | 允许 | 禁止 |
False | True | True | 必须 | 禁止 | 允许 | 允许 | 禁止 |
True | False | False | 必须 | 允许 | 必须 | 允许 | 允许 |
True | False | True | 必须 | 禁止 | 必须 | 允许 | 允许 |
True | True | False | 必须 | 允许 | 必须 | 允许 | 禁止 |
True | True | True | 必须 | 禁止 | 必须 | 允许 | 禁止 |
用例图示如下图所示。
图 1. 用例