FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

TileLinkの勉強 (3. Chipyardのリファレンスを読む)

前回の続き。

Chipyardのリファレンスは比較的詳しく書いてあると思うので、この資料を読みながらDiplomacyの勉強をしていこうと思う。

chipyard.readthedocs.io

Diplomacyコネクタ

Diplomacyのグラフは互いにエッジを使って接続されている。Diplomacyのライブラリは4つの演算子を使ってノードを接続している。

  • :=

基本的な演算子である。Chiselの単方向の接続コネクタと同じ記法であるが、意味が異なる。この演算子はDiplomacyノードを接続するための演算子であり、バンドルを接続する演算子ではない。

基本的な接続演算子は、2つのノードを接続するための1つのエッジを生成する。

  • :=*

「クエリ」タイプの接続演算子である。ノード間の複数のエッジにおいて、クライアントノード(演算子の右側)によりエッジの数が決められている場合に、エッジの接続する。

  • :*=

「スター」タイプの接続演算子である。複数のエッジを作成するが、エッジの数はクライアントではなくマネージャ(演算子の左側)により決めらる。複数エッジのマネージャノードに対してネクサスノードを接続する場合に有益である。

  • :*=*

「フレックス」タイプの接続演算子である。 演算子のどちらの側に既知の数のエッジがあるかに基づいて、複数のエッジを作成する。 これは、どちらかの側のノードのタイプが実行時までわからないジェネレーターで使用できる。