以下の内容はhttps://msyksphinz.hatenablog.com/entry/2020/03/10/040000より取得しました。


Diplomacyを使ってOCPバスを作成する(15. Xbarの理解2)

TileLinkのXbarの仕組みを引き続き解析している。requestAIOの解析の続き。縦方向がマスター側、横方向がスレーブ側である。下記の図において、A(n, m)=1の場合はマスターnがマスターmにリクエスト要求を出していることを意味する。

f:id:msyksphinz:20200305233351p:plain
A(n,m) = 1 : マスターnがスレーブmにリクエスト要求を出している。

これに対してどのように処理を行うかというと、まずはアウトプット側に信号をコピーする。この時点でサポートしていないチャネルの信号線を除去する。例えばTL-ULはチャネルBやCをサポートしていないので、そのような信号はこの時点で除去している。

f:id:msyksphinz:20200305233439p:plain
validかつ当該slaveにリクエストを出している場合は1となる

フィルタをかけた信号に対してTransposeを行い、入力側の信号と出力側の信号のマトリックスの向きを逆にする。

各行に対してTLArbiterを適用することで、各出力ポートの信号をアービトレーションするというわけである。

val portsAOI = transpose((in  zip requestAIO) map { case (i, r) => TLXbar.fanout(i.a, r, edgesOut.map(_.params(ForceFanoutKey).a)) })
f:id:msyksphinz:20200305233507p:plain:w800



以上の内容はhttps://msyksphinz.hatenablog.com/entry/2020/03/10/040000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14