summaryrefslogtreecommitdiff
path: root/src/test/scala/chisel3
diff options
context:
space:
mode:
authorSchuyler Eldridge2019-01-14 12:35:02 -0500
committerSchuyler Eldridge2019-05-22 16:17:17 -0400
commit41482912bd2216d4f95043414798120536398e54 (patch)
tree7dfb52badee925ddbba41db0e5e28aaddbed2e6d /src/test/scala/chisel3
parent1abb84497315cff795e24afda0e4790fe535132f (diff)
Add Driver Compatibility Layer
This includes phases necessary to provide backwards compatibility with the old Chisel3 Driver. These are placed in a DriverCompatibility object inside chisel3.stage.phases. The following four phases are included: - AddImplicitOutputFile (from a TopNameAnnotation) - AddImplicitOutputAnnotationFile phase - DisableFirrtlStage (to disable ChiselStage running FirrtlStage) - MutateOptionsManager (to update options after ChiselStage) - ReEnableFirrtlStage (to renable FirrtlStage if needed) Additionally, this adds a view of a ChiselExecutionResult for providing the legacy return type of the Chisel Driver. Co-Authored-By: Schuyler Eldridge <schuyler.eldridge@ibm.com> Co-Authored-By: chick <chick@qrhino.com> Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Diffstat (limited to 'src/test/scala/chisel3')
-rw-r--r--src/test/scala/chisel3/stage/phases/DriverCompatibilitySpec.scala70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/test/scala/chisel3/stage/phases/DriverCompatibilitySpec.scala b/src/test/scala/chisel3/stage/phases/DriverCompatibilitySpec.scala
new file mode 100644
index 00000000..c478db27
--- /dev/null
+++ b/src/test/scala/chisel3/stage/phases/DriverCompatibilitySpec.scala
@@ -0,0 +1,70 @@
+// See LICENSE for license details.
+
+package chisel3.stage.phases
+
+import org.scalatest.{FlatSpec, Matchers}
+
+import chisel3.stage.{NoRunFirrtlCompilerAnnotation, ChiselOutputFileAnnotation}
+
+import firrtl.options.{OutputAnnotationFileAnnotation, StageOptions}
+import firrtl.options.Viewer.view
+import firrtl.stage.phases.DriverCompatibility.TopNameAnnotation
+
+class DriverCompatibilitySpec extends FlatSpec 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)
+ }
+
+}