我将一个Mem块包装在一个名为“bank”的相当通用的模块中,并在Vec中实例化它,如下所示:
val rams = Vec.fill(100){Module(new bank).io}
到目前为止一切顺利。当我连接信号时,我遇到了问题。如果我将模块信号的矢量直接连接到信号矢量,如下所示:
rams(i).in := io.ins(i)
io.outs(i) := rams(i).out
......等等,我没有错误。
如果我以非平凡的模式连接它们,例如交叉开关,我开始得到一个奇怪的错误,似乎是指我称之为“bank”的Mem包装器:
“参数化Bundle类ascenium.bank $$ anon $ 1需要cloneType方法。”
此错误特别是Chisel错误。任何人都能告诉我它意味着什么以及如何解决它?
如果需要,我可以提供源代码。
答案 0 :(得分:1)
这样的错误通常可以通过向您定义的类添加cloneType方法来解决:
class MyModule extends Module
{
// Your class definition here
override def cloneType = new MyModule.asInstanceOf[this.type]
}