2017-01-03 22 views
2

若干IO接口的構造實現其自己的克隆方法。我研究了Scala中克隆方法的用法,但仍然無法弄清楚爲什麼這樣做。 (我無法找到這些方法的任何明確的使用中隨處設計)使用克隆方法的Sodor處理器集合

回答

2

Sodor仍然是目前仍然在打鑽2 clone在鑿3更名爲cloneType在Java和Scala從clone區分開來。 cloneType爲了實例化的參數化Bundles新的實例,通常需要通過鑿。例如:

class MyBundle extends Bundle { 
    val foo = UInt(32.W) 
} 
class MyParameterizedBundle(width: Int) extends Bundle { 
    val bar = UInt(width.W) 
} 

鑿子通常需要從該類的另一個實例創建給定Bundle類的實例。鑿子使用Java反射來做到這一點。如果沒有參數給構造函數,那麼它可以從默認的構造函數實例化對象。但是,它不能從經由反射MyParameterizedBundle的實例確定的width的值,因此它不能提供給構造的合適參數。這是cloneType函數的用途。它告訴Chisel如何從一個給定的對象創建一個Bundle的新實例。

我們希望能解決這個疣在未來,但還沒有實現它的時間。最有希望的方式是自動生成通過Scala macro annotationscloneType