如何在 chisel3 中使用 peekpoketester 进行并行测试?

How to do parallel testing with peekpoketester in chisel3?

我想在 chisel3 中为我的设计编写一个总线监视器(实际上是一个 mdio bus),我想知道是否可以与 "main" 测试平台并行执行此监视器功能。 就像我们在 cocotb 中使用 cocotb.fork() coroutine ?

chisel3.iotesters ("Chisel Testers") 不支持并行测试。但是,新测试框架支持并行测试:chisel3.testers ("Chisel Testers2").

这增加了对 forkjoinparallel 构造的支持。一个简洁的例子是通过 forking both the enqueueing and dequeueing 测试队列:

it should "work with a combinational queue" in {
  test(new PassthroughQueue(UInt(8.W))) { c =>
    c.in.initSource()
    c.in.setSourceClock(c.clock)
    c.out.initSink()
    c.out.setSinkClock(c.clock)

    fork {
      c.in.enqueueSeq(Seq(42.U, 43.U, 44.U))
    }.fork {
      c.out.expectDequeueSeq(Seq(42.U, 43.U, 44.U))
    }.join()
  }
}

有关其他示例,请参阅 chisel-template 文件 GcdTesters2.scala