1

我将一个 Mem 块包装在一个名为“bank”的相当通用的模块中,并在 Vec 中实例化它,如下所示:

val rams = Vec.fill(100){模块(新银行).io}

到目前为止,一切都很好。连接信号时遇到问题。如果我将模块信号的向量直接连接到信号向量,如下所示:

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

...等等,我没有错误。

但是,如果我以非平凡的模式将它们连接起来,例如连接到交叉开关,我会开始收到一个奇怪的错误,它似乎是指我称之为“bank”的 Mem 包装器:

“参数化 Bundle 类 ascenium.bank$$anon$1 需要 cloneType 方法。”

此错误具体为 Chisel 错误。谁能告诉我这意味着什么以及如何解决它?

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

4

1 回答 1

1

此类错误通常可以通过向您定义的类添加 cloneType 方法来解决:

class MyModule extends Module
{
  // Your class definition here
  override def cloneType = new MyModule.asInstanceOf[this.type]
}
于 2016-02-18T01:42:14.973 回答