2016-09-28 11 views
1

私はウェブ全体を見て、式##がチゼルで何を意味するのかを知ることができましたが、どこでも見つけることはできません。チゼルで式##は何を意味していますか?

このコードスニペット例えば:

val ways = Module(new BRAM(log2Up(conf.lines), conf.ways * line_size)) 
val din = Vec.fill(conf.ways) { Bits(width=line_size) } 
if(conf.ways == 2) { 
    ways.io.din := din(1) ## din(0) 
} 

##式を使ってやってif文の行は何ですか? ありがとう!

+1

これは、他のメソッド呼び出しと同じように単なるメソッド呼び出しです。どのような型のdinでもドキュメントの '##'メソッドを調べることができます。 –

答えて

6

#などの象徴的な文字については、Googleで実際にはGoogleを使用できないため、別の方法で##のドキュメントを探す必要があります。最も簡単な方法は、IDEの##にカーソルを置いて、APIドキュメントを表示させることです。 IDEがそれをしないためにこれができない場合、またはAPIドキュメントをダウンロードしていない場合は、そのメソッドが呼び出されているクラスのドキュメントを見つけて、そこを参照することができます。

この場合、din(1)##と電話しています。 dinBitsのベクトルであるので、din(1)Bitsオブジェクトです。このワイヤは、最も重要な部分と最下位otherフォームを形成返しotherと連結このワイヤーを、

def ##(other: Bits): UInt 

を:だから我々はチゼルのAPIドキュメントにBitsクラスを検索し、##で次を見つけることができます部。

出力の幅は入力の合計です。

+1

'##'もScala標準ライブラリ(['Any''で定義されている)(http://scala-lang.org/api/current/index.html#[email protected]## ):Int)、これ以下ではありませんが、これは非常に残念な名前の選択です。つまり、実際には、ランダムな演算子文字列を持つメソッドの名前を付け、それをユニークにすることはできません。 :-D –

関連する問題