如何使用 bundle/vec 输入测试模块?

How to test modules with bundle/vec input?

如何测试带有 Vec、Bundle 或这些类型组合的 IO 输入端口的模块?

换句话说,使用 PeekPokeTester,你如何正确地 poke() 类型为 Vec、Bundle 或这两种类型的更复杂组合的端口?谢谢!

你总是可以编写特殊的辅助函数来指定要戳的每个单独的字段,但这不是很通用。

更好的解决方案是使用更新的 chisel 单元测试库 ChiselTest. It has support for poking, peeking and expecting Bundle literals. Specifically check out the examples in ChiselTest unittest BundleLiteralsSpec

VectorLiterals 在 Chisel 中仍在进行中,但它们比 bundle 更容易为其编写更通用的辅助函数。

PeekPokeTesterBundleVec 提供了 poke 方法,但我认为它们没有处理嵌套版本。

来自ScalaDoc (all Chisel-related ScalaDoc can be found at https://www.chisel-lang.org/):

def poke(signal: Aggregate, value: IndexedSeq[BigInt]): Unit
def poke(signal: Bundle, map: Map[String, BigInt]): Unit

这些接受类似于 BundleVec 的类型,但不幸的是它似乎不是嵌套的,这并不理想。