summaryrefslogtreecommitdiff
path: root/src/test/scala/chisel3
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/scala/chisel3')
-rw-r--r--src/test/scala/chisel3/stage/phases/DriverCompatibilitySpec.scala71
-rw-r--r--src/test/scala/chisel3/testers/TestUtils.scala12
2 files changed, 12 insertions, 71 deletions
diff --git a/src/test/scala/chisel3/stage/phases/DriverCompatibilitySpec.scala b/src/test/scala/chisel3/stage/phases/DriverCompatibilitySpec.scala
deleted file mode 100644
index b80d5298..00000000
--- a/src/test/scala/chisel3/stage/phases/DriverCompatibilitySpec.scala
+++ /dev/null
@@ -1,71 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-
-package chisel3.stage.phases
-
-
-import chisel3.stage.{NoRunFirrtlCompilerAnnotation, ChiselOutputFileAnnotation}
-
-import firrtl.options.{OutputAnnotationFileAnnotation, StageOptions}
-import firrtl.options.Viewer.view
-import firrtl.stage.phases.DriverCompatibility.TopNameAnnotation
-import org.scalatest.flatspec.AnyFlatSpec
-import org.scalatest.matchers.should.Matchers
-
-class DriverCompatibilitySpec extends AnyFlatSpec with Matchers {
-
- behavior of classOf[DriverCompatibility.AddImplicitOutputFile].toString
-
- it should "do nothing if a ChiselOutputFileAnnotation is present" in {
- val annotations = Seq(
- ChiselOutputFileAnnotation("Foo"),
- TopNameAnnotation("Bar") )
- (new DriverCompatibility.AddImplicitOutputFile).transform(annotations).toSeq should be (annotations)
- }
-
- it should "add a ChiselOutputFileAnnotation derived from a TopNameAnnotation" in {
- val annotations = Seq( TopNameAnnotation("Bar") )
- val expected = ChiselOutputFileAnnotation("Bar") +: annotations
- (new DriverCompatibility.AddImplicitOutputFile).transform(annotations).toSeq should be (expected)
- }
-
- behavior of classOf[DriverCompatibility.AddImplicitOutputAnnotationFile].toString
-
- it should "do nothing if an OutputAnnotationFileAnnotation is present" in {
- val annotations = Seq(
- OutputAnnotationFileAnnotation("Foo"),
- TopNameAnnotation("Bar") )
- (new DriverCompatibility.AddImplicitOutputAnnotationFile).transform(annotations).toSeq should be (annotations)
- }
-
- it should "add an OutputAnnotationFileAnnotation derived from a TopNameAnnotation" in {
- val annotations = Seq( TopNameAnnotation("Bar") )
- val expected = OutputAnnotationFileAnnotation("Bar") +: annotations
- (new DriverCompatibility.AddImplicitOutputAnnotationFile).transform(annotations).toSeq should be (expected)
- }
-
- behavior of classOf[DriverCompatibility.DisableFirrtlStage].toString
-
- it should "add a NoRunFirrtlCompilerAnnotation if one does not exist" in {
- val annos = Seq(NoRunFirrtlCompilerAnnotation)
- val expected = DriverCompatibility.RunFirrtlCompilerAnnotation +: annos
- (new DriverCompatibility.DisableFirrtlStage).transform(Seq.empty).toSeq should be (expected)
- }
-
- it should "NOT add a NoRunFirrtlCompilerAnnotation if one already exists" in {
- val annos = Seq(NoRunFirrtlCompilerAnnotation)
- (new DriverCompatibility.DisableFirrtlStage).transform(annos).toSeq should be (annos)
- }
-
- behavior of classOf[DriverCompatibility.ReEnableFirrtlStage].toString
-
- it should "NOT strip a NoRunFirrtlCompilerAnnotation if NO RunFirrtlCompilerAnnotation is present" in {
- val annos = Seq(NoRunFirrtlCompilerAnnotation, DriverCompatibility.RunFirrtlCompilerAnnotation)
- (new DriverCompatibility.ReEnableFirrtlStage).transform(annos).toSeq should be (Seq.empty)
- }
-
- it should "strip a NoRunFirrtlCompilerAnnotation if a RunFirrtlCompilerAnnotation is present" in {
- val annos = Seq(NoRunFirrtlCompilerAnnotation)
- (new DriverCompatibility.ReEnableFirrtlStage).transform(annos).toSeq should be (annos)
- }
-
-}
diff --git a/src/test/scala/chisel3/testers/TestUtils.scala b/src/test/scala/chisel3/testers/TestUtils.scala
index 12712bf7..c72c779a 100644
--- a/src/test/scala/chisel3/testers/TestUtils.scala
+++ b/src/test/scala/chisel3/testers/TestUtils.scala
@@ -3,10 +3,22 @@
package chisel3.testers
import TesterDriver.Backend
+import chisel3.{Bundle, RawModule}
+import chisel3.internal.firrtl.Circuit
+import chisel3.stage.ChiselStage
import firrtl.AnnotationSeq
object TestUtils {
// Useful because TesterDriver.Backend is chisel3 package private
def containsBackend(annos: AnnotationSeq): Boolean =
annos.collectFirst { case b: Backend => b }.isDefined
+
+ // Allows us to check that the compiler plugin cloneType is actually working
+ val usingPlugin: Boolean = (new Bundle { def check = _usingPlugin }).check
+ def elaborateNoReflectiveAutoCloneType(f: => RawModule): Circuit = {
+ ChiselStage.elaborate {
+ chisel3.internal.Builder.allowReflectiveAutoCloneType = !usingPlugin
+ f
+ }
+ }
}