如何在 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").
这增加了对 fork
、join
和 parallel
构造的支持。一个简洁的例子是通过 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
。
我想在 chisel3 中为我的设计编写一个总线监视器(实际上是一个 mdio bus),我想知道是否可以与 "main" 测试平台并行执行此监视器功能。 就像我们在 cocotb 中使用 cocotb.fork() coroutine ?
chisel3.iotesters
("Chisel Testers") 不支持并行测试。但是,新测试框架支持并行测试:chisel3.testers
("Chisel Testers2").
这增加了对 fork
、join
和 parallel
构造的支持。一个简洁的例子是通过 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
。