You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Aug 19, 2024. It is now read-only.
When I try to retrieve a line coverage report, chiseltest fails when I use the VerilatorBackend, but not when using the default backend. Here is a minimal example to reproduce the error:
import chisel3._
import chisel3.util._
import chiseltest._
import chiseltest.coverage._
import org.scalatest.flatspec.AnyFlatSpec
import firrtl2._
class LineCoverageTest extends AnyFlatSpec with ChiselScalatestTester {
behavior of "LineCoverage"
it should "report line coverage default" in {
line_coverage(Seq())
}
it should "report line coverage verilator" in {
line_coverage(Seq(VerilatorBackendAnnotation))
}
def line_coverage(annos: AnnotationSeq): Unit = {
val data = LineCoverage.processCoverage(test_run(LineCoverage.annotations ++ annos).getAnnotationSeq)
// print to console
val code = new CodeBase()
for (d <- data.files) {
try {
val report = LineCoverage.textReport(code, d).toVector
println(report.mkString("\n"))
} catch {
case e: RuntimeException => println(f"${d.name} could not be found. Skipping...")
case e: Throwable => throw(e)
}
}
}
def test_run(annos: AnnotationSeq): TestResult =
test(new Queue(gen=UInt(5.W), entries=4))
.withAnnotations(annos) { dut => dut.clock.step() }
}
...
src/main/scala/chisel3/util/Counter.scala could not be found. Skipping...
src/main/scala/chisel3/util/Decoupled.scala could not be found. Skipping...
[info] LineCoverageTest:
[info] LineCoverage
[info] - should report line coverage default
[info] - should report line coverage verilator *** FAILED ***
[info] java.lang.AssertionError: assertion failed: [] Missing or too many entries! 5 cover statements vs. 4 coverage entries.
[info] l_4, l_0, l_1, l_2, l_3
[info] CoverageEntry(Queue4_UInt5.sv,130,,2), CoverageEntry(Queue4_UInt5.sv,134,,0), CoverageEntry(Queue4_UInt5.sv,138,,0), CoverageEntry(Queue4_UInt5.sv,142,,0)
[info] at scala.Predef$.assert(Predef.scala:279)
[info] at chiseltest.simulator.VerilatorCoverage$.processInstanceCoverage(VerilatorCoverage.scala:77)
[info] at chiseltest.simulator.VerilatorCoverage$.$anonfun$verilatorCoverageToCoverageMap$2(VerilatorCoverage.scala:56)
[info] at scala.collection.immutable.List.flatMap(List.scala:293)
[info] at chiseltest.simulator.VerilatorCoverage$.verilatorCoverageToCoverageMap(VerilatorCoverage.scala:51)
[info] at chiseltest.simulator.VerilatorCoverage$.loadCoverage(VerilatorCoverage.scala:37)
[info] at chiseltest.simulator.VerilatorSimulator$.readCoverage$2(VerilatorSimulator.scala:155)
[info] at chiseltest.simulator.VerilatorSimulator$.$anonfun$createContextFromScratch$3(VerilatorSimulator.scala:160)
[info] at chiseltest.simulator.jna.JNASimulatorContext.getCoverage(JNASimulatorContext.scala:145)
[info] at chiseltest.internal.SimController.generateTestCoverageAnnotation(SimController.scala:140)
[info] ...
[info] Run completed in 6 seconds, 925 milliseconds.
[info] Total number of tests run: 2
[info] Suites: completed 1, aborted 0
[info] Tests: succeeded 1, failed 1, canceled 0, ignored 0, pending 0
...
Whenever I tried this, it seems like one coverage entry is missing.
The text was updated successfully, but these errors were encountered:
When I try to retrieve a line coverage report, chiseltest fails when I use the VerilatorBackend, but not when using the default backend. Here is a minimal example to reproduce the error:
build.sbt
Verilator: 4.028
The console output is:
Whenever I tried this, it seems like one coverage entry is missing.
The text was updated successfully, but these errors were encountered: