2016-09-28 16 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

由於你不能真正谷歌的符號字符,如#,你需要另一種方式找到##方法的文檔。最簡單的方法是將鼠標懸停在IDE中的##上,並讓它顯示API文檔。如果這不可能,因爲你的IDE沒有這樣做,或者你還沒有下載API文檔,你可以找到這個方法被調用的類的文檔,然後在那裏查找它。

在這種情況下,您在din(1)上致電##。由於dinBits的載體,因此din(1)Bits的對象。因此,我們可以看一下Bits類鑿子API文檔並找到##如下:

def ##(other: Bits): UInt 

返回該線與other連接在一起,其中該線形成最顯著的部分和other形式至少顯著部分。

輸出的寬度是輸入的總和。

+1

考慮到'##'也是Scala標準庫(在['Any']上定義的方法(http://scala-lang.org/api/current/index.html#[email protected]##( ):詮釋),不會更少),這似乎是一個非常不幸的名字選擇。我的意思是,真的,你用一串隨機運算符字符命名一個方法,甚至不能使它具有唯一性? :-D –

相關問題