複数のサブグラフ クラス、または同じサブグラフ クラスの複数のインスタンスを含む複雑なグラフを作成する際は、サブグラフのインスタンシエーション時に、各カーネル インスタンスまたはカーネル ポート インスタンスに定義の代わりに前述のロケーション制約を設定できます。この場合、次の例に示すように、カーネル インスタンスまたはカーネル ポート インスタンスのグラフ修飾子付き名前を指定する必要があります。また、制約するカーネルまたはそのポートがサブグラフの公開メンバーとして定義されていることを確認してください。
class ToplevelGraph : public graph {
public:
indep_nodes_graph1<1,2,3,2> mygraph;
port<input> datain[2] ;
port<output> dataout[2] ;
ToplevelGraph() {
for (int i = 0; i < 2; i++) {
connect(datain[i], mygraph.datain[i]);
connect(mygraph.dataout[i], dataout[i]);
// hierarchical constraints
location<stack>(mygraph.kr[i]) = bank(3, 2+i, 2);
location<buffer>(mygraph.kr[i].out[0]) = location<kernel>(mygraph.kr[i]);
}
};
};
注記: 前回のデザイン配置は、次回のコンパイルで再利用できます。これにより、マップの実行時間が短縮されます。コンパイラを実行すると、Work ディレクトリに配置制約ファイルが生成されます。この制約ファイルは、次回の実行時にコマンド ラインで指定できます。
aiecompiler --constraints Work/temp/graph_aie_mapped.aiecst src/graph.cpp
FIFO ロケーション制約を再利用するには、aie_routed.aiecst
ファイルを使用します。
aiecompiler --constraints Work/temp/graph_aie_routed.aiecst src/graph.cpp