使用 ChiselTest 框架生成波形
Generating waveforms with ChiselTest framework
我有一个 ChiselTest 测试器,编写如下:
class EccTester extends FlatSpec with ChiselScalatestTester with Matchers {
behavior of "Testers2"
it should "send data without errors" in {
test(new EccPair(width=8)) {
c => {
val rnd = new Random()
for (i <- 0 to 20) {
val testVal = rnd.nextInt(1 << c.getWidthParam)
c.io.dataIn.poke(testVal.U)
c.io.errorLocation.poke(0.U)
c.io.injectError.poke(false.B)
c.io.injectSecondError.poke(false.B)
c.clock.step(1)
c.io.dataOut.expect(testVal.U)
c.io.outputNotEqual.expect(false.B)
}
}
}
}
}
我能够 运行 shell 中的测试
仅测试chisel.lib.ecc.EccTester
但是当我尝试根据 ChiselTest 文档生成波形时,
testOnly chisel.lib.ecc.EccTester -- -DvwriteVcd=1
测试执行正常但没有转储波形。
我参考的文档是 https://github.com/ucb-bar/chisel-testers2, and the full source code is at https://github.com/hutch31/ip-contributions/blob/ecc/src/test/scala/chisel/lib/ecc/EccTester.scala
我认为目前还没有正式的答案,但这就是我所做的。首先我添加以下两个导入。
import chiseltest.experimental.TestOptionBuilder._
import chiseltest.internal.WriteVcdAnnotation
然后像这样将注释添加到测试中
it should "send data without errors" in {
test(new EccPair(width=8)).withAnnotations(Seq(WriteVcdAnnotation)) {
c => {
注意:WriteVcdAnnotation有两种定义,一种在treadle包中
另一个在包 chiseltest.internal 中。使用后者,因为它会起作用
对于踏板和验证器后端。
我有一个 ChiselTest 测试器,编写如下:
class EccTester extends FlatSpec with ChiselScalatestTester with Matchers {
behavior of "Testers2"
it should "send data without errors" in {
test(new EccPair(width=8)) {
c => {
val rnd = new Random()
for (i <- 0 to 20) {
val testVal = rnd.nextInt(1 << c.getWidthParam)
c.io.dataIn.poke(testVal.U)
c.io.errorLocation.poke(0.U)
c.io.injectError.poke(false.B)
c.io.injectSecondError.poke(false.B)
c.clock.step(1)
c.io.dataOut.expect(testVal.U)
c.io.outputNotEqual.expect(false.B)
}
}
}
}
}
我能够 运行 shell 中的测试
仅测试chisel.lib.ecc.EccTester
但是当我尝试根据 ChiselTest 文档生成波形时,
testOnly chisel.lib.ecc.EccTester -- -DvwriteVcd=1
测试执行正常但没有转储波形。
我参考的文档是 https://github.com/ucb-bar/chisel-testers2, and the full source code is at https://github.com/hutch31/ip-contributions/blob/ecc/src/test/scala/chisel/lib/ecc/EccTester.scala
我认为目前还没有正式的答案,但这就是我所做的。首先我添加以下两个导入。
import chiseltest.experimental.TestOptionBuilder._
import chiseltest.internal.WriteVcdAnnotation
然后像这样将注释添加到测试中
it should "send data without errors" in {
test(new EccPair(width=8)).withAnnotations(Seq(WriteVcdAnnotation)) {
c => {
注意:WriteVcdAnnotation有两种定义,一种在treadle包中 另一个在包 chiseltest.internal 中。使用后者,因为它会起作用 对于踏板和验证器后端。