前回の続き。
Chipyardのリファレンスは比較的詳しく書いてあると思うので、この資料を読みながらDiplomacyの勉強をしていこうと思う。
Diplomacyコネクタ
Diplomacyのグラフは互いにエッジを使って接続されている。Diplomacyのライブラリは4つの演算子を使ってノードを接続している。
:=
基本的な演算子である。Chiselの単方向の接続コネクタと同じ記法であるが、意味が異なる。この演算子はDiplomacyノードを接続するための演算子であり、バンドルを接続する演算子ではない。
基本的な接続演算子は、2つのノードを接続するための1つのエッジを生成する。
:=*
「クエリ」タイプの接続演算子である。ノード間の複数のエッジにおいて、クライアントノード(演算子の右側)によりエッジの数が決められている場合に、エッジの接続する。
:*=
「スター」タイプの接続演算子である。複数のエッジを作成するが、エッジの数はクライアントではなくマネージャ(演算子の左側)により決めらる。複数エッジのマネージャノードに対してネクサスノードを接続する場合に有益である。
:*=*
「フレックス」タイプの接続演算子である。 演算子のどちらの側に既知の数のエッジがあるかに基づいて、複数のエッジを作成する。 これは、どちらかの側のノードのタイプが実行時までわからないジェネレーターで使用できる。