2016-02-04 29 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