From 07c29fe8bf7e96bcace390bbe177aface736416c Mon Sep 17 00:00:00 2001 From: Jack Koenig Date: Wed, 12 Jan 2022 10:52:20 -0800 Subject: [PATCH 1/2] Support using Treadle for 'sbt test' Treadle will be used as the "defaultBackend" when the environment variable CHISEL3_CI_USE_TREADLE is set. The intent is to set this variable during CI for pre-merge CI (aka on pull requests). (cherry picked from commit 7d39b7bd2b6f38dac90fe25064744ffc0ada0fe4) --- .github/workflows/test.yml | 2 +- src/test/scala/chiselTests/ChiselSpec.scala | 5 ++++- src/test/scala/chiselTests/Vec.scala | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9ace173eec4..5469e1e0e2c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -51,7 +51,7 @@ jobs: if: startsWith(matrix.scala, '2.12') run: sbt ++${{ matrix.scala }} docs/mdoc unidoc - name: Test - run: sbt ++${{ matrix.scala }} test + run: sbt ++${{ matrix.scala }} "testOnly * -- -oD" - name: Binary compatibility run: sbt ++${{ matrix.scala }} mimaReportBinaryIssues diff --git a/src/test/scala/chiselTests/ChiselSpec.scala b/src/test/scala/chiselTests/ChiselSpec.scala index 6f560b94ff1..e00afcf6df1 100644 --- a/src/test/scala/chiselTests/ChiselSpec.scala +++ b/src/test/scala/chiselTests/ChiselSpec.scala @@ -38,7 +38,10 @@ trait ChiselRunners extends Assertions with BackendCompilationUtilities { annotations: AnnotationSeq = Seq() ): Boolean = { // Change this to enable Treadle as a backend - val defaultBackend = chisel3.testers.TesterDriver.defaultBackend + val defaultBackend = { + val useTreadle = sys.env.get("CHISEL3_CI_USE_TREADLE").isDefined + if (useTreadle) chisel3.testers.TreadleBackend else chisel3.testers.TesterDriver.defaultBackend + } val hasBackend = TestUtils.containsBackend(annotations) val annos: Seq[Annotation] = if (hasBackend) annotations else defaultBackend +: annotations TesterDriver.execute(() => t, additionalVResources, annos) diff --git a/src/test/scala/chiselTests/Vec.scala b/src/test/scala/chiselTests/Vec.scala index 02743187127..4a871890f83 100644 --- a/src/test/scala/chiselTests/Vec.scala +++ b/src/test/scala/chiselTests/Vec.scala @@ -6,7 +6,7 @@ import org.scalacheck._ import chisel3._ import chisel3.stage.ChiselStage -import chisel3.testers.BasicTester +import chisel3.testers.{BasicTester, TesterDriver} import chisel3.util._ import org.scalacheck.Shrink import scala.annotation.tailrec @@ -456,7 +456,7 @@ class VecSpec extends ChiselPropSpec with Utils { } property("Infering widths on huge Vecs should not cause a stack overflow") { - assertTesterPasses { new HugeVecTester(10000) } + assertTesterPasses(new HugeVecTester(10000), annotations = TesterDriver.verilatorOnly) } property("A Reg of a Vec of a single 1 bit element should compile and work") { From 43aadb4657932cdfc6e49463f28f07f78a10476e Mon Sep 17 00:00:00 2001 From: Jack Koenig Date: Tue, 27 Sep 2022 11:31:46 -0700 Subject: [PATCH 2/2] Use Treadle for CI on pull requests (cherry picked from commit 82660673e56a816e68fcc068e3e04e127f076faf) --- .github/workflows/test.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5469e1e0e2c..139d59081b8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -50,8 +50,11 @@ jobs: - name: Documentation (Scala 2.12 only) if: startsWith(matrix.scala, '2.12') run: sbt ++${{ matrix.scala }} docs/mdoc unidoc + - name: Use Treadle for Pull Requests + if: github.event_name == 'pull_request' + run: echo "CHISEL3_CI_USE_TREADLE=1" >> $GITHUB_ENV - name: Test - run: sbt ++${{ matrix.scala }} "testOnly * -- -oD" + run: sbt ++${{ matrix.scala }} test - name: Binary compatibility run: sbt ++${{ matrix.scala }} mimaReportBinaryIssues