如何创建模块数组?使用数组还是 Vec?

How to create array of the module? Use Array or Vec?

我在 https://github.com/ucb-bar/chisel-tutorial/blob/release/src/main/scala/examples/Adder.scala 中找到了类似的例子。

不过,我对使用Array或Vec方法还是一头雾水,对第15~18行的注释也不是很清楚

谁能详细解释一下? 如果我想创建模块数组,什么时候正确使用 Array 和 Vec?

来自Chisel API doc

In general Vec only needs to be used when there is a need to express the hardware collection in a Reg or IO Bundle or when access to elements of the array is indexed via a hardware signal.

普通 Scala 集合配备了多种方法,可以保存对硬件的引用,但它们实际上不能代表硬件。例如,当使用 Chisel 节点索引模块向量时,需要 Vec

Chisel style guide.

中提供了 Scala 集合与 Vec 优缺点的简要说明。