エリア ロケーション制約は、配列内のカスタム位置にノードが含まれるように指定します。次の表に、エリア グループに指定するプロパティを示します。
プロパティ | 説明 |
---|---|
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);
}
};
次の表に、フラグのさまざまな組み合わせに応じて、ノードとネットがエリア グループのリソースにアクセスできるかどうかを示します。その下の図に、ユース ケースを示します。次の表の規則を適用する際、重要な考慮事項が 2 つあります。
- 1 つのノードから複数のデスティネーション ノードに駆動されるブロードキャスト ネットは、個々のポイントツーポイント ネットと見なされます。
- ネット上の 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. ユース ケース