2016-02-04 68 views
1

我正在一個叫做「bank」的相當通用的模塊中包裝一塊Mem,並在Vec中實例化它,如下所示:no cloneType for Mem?

val rams = Vec.fill(100){Module(new bank).io}

到目前爲止這麼好。當我連接信號時遇到問題。如果我模塊的信號的矢量直接連接到信號的矢量,就像這樣:

rams(i).in := io.ins(i) 
io.outs(i) := rams(i).out 

...等等,我沒有得到任何錯誤。

如果我把它們連接在一個不平凡的模式,然而,如縱橫,我開始越來越這似乎指紀念品包裝我稱之爲「銀行」一個奇怪的錯誤:

「參數包class ascenium.bank $$ anon $ 1 needs cloneType method。「

此錯誤特別是鑿子錯誤。任何人都可以告訴我它的含義以及如何解決它?

如果需要,我可以提供源代碼。

+0

我試圖取代紀念品()與VEC(註冊()),並沒有得到快樂。同樣的錯誤。 – Mykland

回答

1

象這樣的錯誤通常可以通過添加cloneType方法類解決您定義:

class MyModule extends Module 
{ 
    // Your class definition here 
    override def cloneType = new MyModule.asInstanceOf[this.type] 
} 
+0

這會導致錯誤「not found:value MyModule」。顯然你不能在其內部引用一個類。 – Mykland

+0

看着我看到的鑿子源代碼:1)這個語法是錯誤的,應該是這樣的:覆蓋def cloneType:this.type = new MyModule.asInstanceOf [this.type]; 2)cloneTypes似乎與Bundles相關,而不是Modules,所以無論如何,將它放在Module中都是錯誤的。 – Mykland