summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSchuyler Eldridge2019-12-09 21:27:32 -0500
committerSchuyler Eldridge2020-02-19 20:52:33 -0500
commit9f20d7d4e29c7a864d81f15607b65d2b887fc828 (patch)
treed6b8b05c834ac68fb3962b481279b0143ad77c16 /src
parentaac6e175645960b65eace70d16d0e4df523e0327 (diff)
Migrate to Dependency Wrapper
This changes Phase dependency specification to use the new Dependency wrapper. Previously, dependencies were specified as classes. Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/chisel3/Driver.scala20
-rw-r--r--src/main/scala/chisel3/stage/ChiselStage.scala20
-rw-r--r--src/main/scala/chisel3/stage/phases/AddImplicitOutputAnnotationFile.scala4
-rw-r--r--src/main/scala/chisel3/stage/phases/AddImplicitOutputFile.scala4
-rw-r--r--src/main/scala/chisel3/stage/phases/AspectPhase.scala1
-rw-r--r--src/main/scala/chisel3/stage/phases/Checks.scala4
-rw-r--r--src/main/scala/chisel3/stage/phases/Convert.scala5
-rw-r--r--src/main/scala/chisel3/stage/phases/DriverCompatibility.scala18
-rw-r--r--src/main/scala/chisel3/stage/phases/Emitter.scala10
-rw-r--r--src/main/scala/chisel3/stage/phases/MaybeAspectPhase.scala4
-rw-r--r--src/main/scala/chisel3/stage/phases/MaybeFirrtlStage.scala4
11 files changed, 46 insertions, 48 deletions
diff --git a/src/main/scala/chisel3/Driver.scala b/src/main/scala/chisel3/Driver.scala
index 1caccfc4..28ed49ed 100644
--- a/src/main/scala/chisel3/Driver.scala
+++ b/src/main/scala/chisel3/Driver.scala
@@ -5,7 +5,7 @@ package chisel3
import chisel3.internal.ErrorLog
import internal.firrtl._
import firrtl._
-import firrtl.options.{Phase, PhaseManager, StageError}
+import firrtl.options.{Dependency, Phase, PhaseManager, StageError}
import firrtl.options.phases.DeletedWrapper
import firrtl.options.Viewer.view
import firrtl.annotations.JsonProtocol
@@ -207,16 +207,16 @@ object Driver extends BackendCompilationUtilities {
optionsManager.commonOptions.toAnnotations
val targets =
- Seq( classOf[DriverCompatibility.AddImplicitOutputFile],
- classOf[DriverCompatibility.AddImplicitOutputAnnotationFile],
- classOf[DriverCompatibility.DisableFirrtlStage],
- classOf[ChiselStage],
- classOf[DriverCompatibility.MutateOptionsManager],
- classOf[DriverCompatibility.ReEnableFirrtlStage],
- classOf[DriverCompatibility.FirrtlPreprocessing],
- classOf[chisel3.stage.phases.MaybeFirrtlStage] )
+ Seq( Dependency[DriverCompatibility.AddImplicitOutputFile],
+ Dependency[DriverCompatibility.AddImplicitOutputAnnotationFile],
+ Dependency[DriverCompatibility.DisableFirrtlStage],
+ Dependency[ChiselStage],
+ Dependency[DriverCompatibility.MutateOptionsManager],
+ Dependency[DriverCompatibility.ReEnableFirrtlStage],
+ Dependency[DriverCompatibility.FirrtlPreprocessing],
+ Dependency[chisel3.stage.phases.MaybeFirrtlStage] )
val currentState =
- Seq( classOf[firrtl.stage.phases.DriverCompatibility.AddImplicitFirrtlFile] )
+ Seq( Dependency[firrtl.stage.phases.DriverCompatibility.AddImplicitFirrtlFile] )
val phases: Seq[Phase] = new PhaseManager(targets, currentState) {
override val wrappers = Seq( DeletedWrapper(_: Phase) )
diff --git a/src/main/scala/chisel3/stage/ChiselStage.scala b/src/main/scala/chisel3/stage/ChiselStage.scala
index df23f97d..99484425 100644
--- a/src/main/scala/chisel3/stage/ChiselStage.scala
+++ b/src/main/scala/chisel3/stage/ChiselStage.scala
@@ -3,7 +3,7 @@
package chisel3.stage
import firrtl.AnnotationSeq
-import firrtl.options.{Phase, PhaseManager, PreservesAll, Shell, Stage, StageError, StageMain}
+import firrtl.options.{Dependency, Phase, PhaseManager, PreservesAll, Shell, Stage, StageError, StageMain}
import firrtl.options.phases.DeletedWrapper
import firrtl.stage.FirrtlCli
import firrtl.options.Viewer.view
@@ -16,15 +16,15 @@ import java.io.{StringWriter, PrintWriter}
class ChiselStage extends Stage with PreservesAll[Phase] {
val shell: Shell = new Shell("chisel") with ChiselCli with FirrtlCli
- val targets: Seq[PhaseManager.PhaseDependency] =
- Seq( classOf[chisel3.stage.phases.Checks],
- classOf[chisel3.stage.phases.Elaborate],
- classOf[chisel3.stage.phases.AddImplicitOutputFile],
- classOf[chisel3.stage.phases.AddImplicitOutputAnnotationFile],
- classOf[chisel3.stage.phases.MaybeAspectPhase],
- classOf[chisel3.stage.phases.Emitter],
- classOf[chisel3.stage.phases.Convert],
- classOf[chisel3.stage.phases.MaybeFirrtlStage] )
+ val targets: Seq[Dependency[Phase]] =
+ Seq( Dependency[chisel3.stage.phases.Checks],
+ Dependency[chisel3.stage.phases.Elaborate],
+ Dependency[chisel3.stage.phases.AddImplicitOutputFile],
+ Dependency[chisel3.stage.phases.AddImplicitOutputAnnotationFile],
+ Dependency[chisel3.stage.phases.MaybeAspectPhase],
+ Dependency[chisel3.stage.phases.Emitter],
+ Dependency[chisel3.stage.phases.Convert],
+ Dependency[chisel3.stage.phases.MaybeFirrtlStage] )
def run(annotations: AnnotationSeq): AnnotationSeq = try {
new PhaseManager(targets) { override val wrappers = Seq( (a: Phase) => DeletedWrapper(a) ) }
diff --git a/src/main/scala/chisel3/stage/phases/AddImplicitOutputAnnotationFile.scala b/src/main/scala/chisel3/stage/phases/AddImplicitOutputAnnotationFile.scala
index c7761d24..3c90e551 100644
--- a/src/main/scala/chisel3/stage/phases/AddImplicitOutputAnnotationFile.scala
+++ b/src/main/scala/chisel3/stage/phases/AddImplicitOutputAnnotationFile.scala
@@ -4,14 +4,14 @@ package chisel3.stage.phases
import chisel3.stage.ChiselCircuitAnnotation
import firrtl.AnnotationSeq
-import firrtl.options.{OutputAnnotationFileAnnotation, Phase, PreservesAll}
+import firrtl.options.{Dependency, OutputAnnotationFileAnnotation, Phase, PreservesAll}
/** Adds an [[firrtl.options.OutputAnnotationFileAnnotation]] if one does not exist. This replicates old behavior where
* an output annotation file was always written.
*/
class AddImplicitOutputAnnotationFile extends Phase with PreservesAll[Phase] {
- override val prerequisites = Seq(classOf[Elaborate])
+ override val prerequisites = Seq(Dependency[Elaborate])
def transform(annotations: AnnotationSeq): AnnotationSeq = annotations
.collectFirst{ case _: OutputAnnotationFileAnnotation => annotations }
diff --git a/src/main/scala/chisel3/stage/phases/AddImplicitOutputFile.scala b/src/main/scala/chisel3/stage/phases/AddImplicitOutputFile.scala
index cf808d26..56cc5147 100644
--- a/src/main/scala/chisel3/stage/phases/AddImplicitOutputFile.scala
+++ b/src/main/scala/chisel3/stage/phases/AddImplicitOutputFile.scala
@@ -3,7 +3,7 @@
package chisel3.stage.phases
import firrtl.AnnotationSeq
-import firrtl.options.{Phase, PreservesAll}
+import firrtl.options.{Dependency, Phase, PreservesAll}
import chisel3.stage.{ChiselCircuitAnnotation, ChiselOutputFileAnnotation}
@@ -12,7 +12,7 @@ import chisel3.stage.{ChiselCircuitAnnotation, ChiselOutputFileAnnotation}
*/
class AddImplicitOutputFile extends Phase with PreservesAll[Phase] {
- override val prerequisites = Seq(classOf[Elaborate])
+ override val prerequisites = Seq(Dependency[Elaborate])
def transform(annotations: AnnotationSeq): AnnotationSeq =
annotations.collectFirst{ case _: ChiselOutputFileAnnotation => annotations }.getOrElse{
diff --git a/src/main/scala/chisel3/stage/phases/AspectPhase.scala b/src/main/scala/chisel3/stage/phases/AspectPhase.scala
index 8d48e338..6b6ebefe 100644
--- a/src/main/scala/chisel3/stage/phases/AspectPhase.scala
+++ b/src/main/scala/chisel3/stage/phases/AspectPhase.scala
@@ -34,4 +34,3 @@ class AspectPhase extends Phase {
} else annotations
}
}
-
diff --git a/src/main/scala/chisel3/stage/phases/Checks.scala b/src/main/scala/chisel3/stage/phases/Checks.scala
index 879379ce..e2563e06 100644
--- a/src/main/scala/chisel3/stage/phases/Checks.scala
+++ b/src/main/scala/chisel3/stage/phases/Checks.scala
@@ -6,14 +6,14 @@ import chisel3.stage.{ChiselOutputFileAnnotation, NoRunFirrtlCompilerAnnotation,
import firrtl.AnnotationSeq
import firrtl.annotations.Annotation
-import firrtl.options.{OptionsException, Phase, PreservesAll}
+import firrtl.options.{Dependency, OptionsException, Phase, PreservesAll}
/** Sanity checks an [[firrtl.AnnotationSeq]] before running the main [[firrtl.options.Phase]]s of
* [[chisel3.stage.ChiselStage]].
*/
class Checks extends Phase with PreservesAll[Phase] {
- override val dependents = Seq(classOf[Elaborate])
+ override val dependents = Seq(Dependency[Elaborate])
def transform(annotations: AnnotationSeq): AnnotationSeq = {
val noF, st, outF = collection.mutable.ListBuffer[Annotation]()
diff --git a/src/main/scala/chisel3/stage/phases/Convert.scala b/src/main/scala/chisel3/stage/phases/Convert.scala
index ac477330..54ea6963 100644
--- a/src/main/scala/chisel3/stage/phases/Convert.scala
+++ b/src/main/scala/chisel3/stage/phases/Convert.scala
@@ -6,7 +6,7 @@ import chisel3.experimental.RunFirrtlTransform
import chisel3.internal.firrtl.Converter
import chisel3.stage.ChiselCircuitAnnotation
import firrtl.{AnnotationSeq, Transform}
-import firrtl.options.{Phase, PreservesAll}
+import firrtl.options.{Dependency, Phase, PreservesAll}
import firrtl.stage.{FirrtlCircuitAnnotation, RunFirrtlTransformAnnotation}
/** This prepares a [[ChiselCircuitAnnotation]] for compilation with FIRRTL. This does three things:
@@ -16,7 +16,7 @@ import firrtl.stage.{FirrtlCircuitAnnotation, RunFirrtlTransformAnnotation}
*/
class Convert extends Phase with PreservesAll[Phase] {
- override val prerequisites = Seq(classOf[Elaborate])
+ override val prerequisites = Seq(Dependency[Elaborate])
def transform(annotations: AnnotationSeq): AnnotationSeq = annotations.flatMap {
case a: ChiselCircuitAnnotation =>
@@ -34,7 +34,6 @@ class Convert extends Phase with PreservesAll[Phase] {
case anno: RunFirrtlTransform => anno.transformClass
}
.distinct
- .filterNot(_ == classOf[firrtl.Transform])
.map { c: Class[_ <: Transform] => RunFirrtlTransformAnnotation(c.newInstance()) }
case a => Some(a)
}
diff --git a/src/main/scala/chisel3/stage/phases/DriverCompatibility.scala b/src/main/scala/chisel3/stage/phases/DriverCompatibility.scala
index 11264ece..776e39b3 100644
--- a/src/main/scala/chisel3/stage/phases/DriverCompatibility.scala
+++ b/src/main/scala/chisel3/stage/phases/DriverCompatibility.scala
@@ -4,7 +4,7 @@ package chisel3.stage.phases
import firrtl.{AnnotationSeq, ExecutionOptionsManager, HasFirrtlOptions}
import firrtl.annotations.NoTargetAnnotation
-import firrtl.options.{OptionsException, OutputAnnotationFileAnnotation, Phase, PreservesAll, Unserializable}
+import firrtl.options.{Dependency, OptionsException, OutputAnnotationFileAnnotation, Phase, PreservesAll, Unserializable}
import firrtl.stage.{FirrtlCircuitAnnotation, RunFirrtlTransformAnnotation}
import firrtl.stage.phases.DriverCompatibility.TopNameAnnotation
@@ -27,7 +27,7 @@ object DriverCompatibility {
*/
private [chisel3] class AddImplicitOutputFile extends Phase with PreservesAll[Phase] {
- override val dependents = Seq(classOf[chisel3.stage.ChiselStage])
+ override val dependents = Seq(Dependency[chisel3.stage.ChiselStage])
def transform(annotations: AnnotationSeq): AnnotationSeq = {
val hasOutputFile = annotations
@@ -51,7 +51,7 @@ object DriverCompatibility {
*/
private[chisel3] class AddImplicitOutputAnnotationFile extends Phase with PreservesAll[Phase] {
- override val dependents = Seq(classOf[chisel3.stage.ChiselStage])
+ override val dependents = Seq(Dependency[chisel3.stage.ChiselStage])
def transform(annotations: AnnotationSeq): AnnotationSeq =
annotations
@@ -75,7 +75,7 @@ object DriverCompatibility {
*/
private[chisel3] class DisableFirrtlStage extends Phase with PreservesAll[Phase] {
- override val dependents = Seq(classOf[ChiselStage])
+ override val dependents = Seq(Dependency[ChiselStage])
def transform(annotations: AnnotationSeq): AnnotationSeq = annotations
.collectFirst { case NoRunFirrtlCompilerAnnotation => annotations }
@@ -84,7 +84,7 @@ object DriverCompatibility {
private[chisel3] class ReEnableFirrtlStage extends Phase with PreservesAll[Phase] {
- override val prerequisites = Seq(classOf[DisableFirrtlStage], classOf[ChiselStage])
+ override val prerequisites = Seq(Dependency[DisableFirrtlStage], Dependency[ChiselStage])
def transform(annotations: AnnotationSeq): AnnotationSeq = annotations
.collectFirst { case RunFirrtlCompilerAnnotation =>
@@ -108,9 +108,9 @@ object DriverCompatibility {
*/
private[chisel3] class MutateOptionsManager extends Phase with PreservesAll[Phase] {
- override val prerequisites = Seq(classOf[chisel3.stage.ChiselStage])
+ override val prerequisites = Seq(Dependency[chisel3.stage.ChiselStage])
- override val dependents = Seq(classOf[ReEnableFirrtlStage])
+ override val dependents = Seq(Dependency[ReEnableFirrtlStage])
def transform(annotations: AnnotationSeq): AnnotationSeq = {
@@ -137,9 +137,9 @@ object DriverCompatibility {
*/
private [chisel3] class FirrtlPreprocessing extends Phase with PreservesAll[Phase] {
- override val prerequisites = Seq(classOf[ChiselStage], classOf[MutateOptionsManager], classOf[ReEnableFirrtlStage])
+ override val prerequisites = Seq(Dependency[ChiselStage], Dependency[MutateOptionsManager], Dependency[ReEnableFirrtlStage])
- override val dependents = Seq(classOf[MaybeFirrtlStage])
+ override val dependents = Seq(Dependency[MaybeFirrtlStage])
private val phases =
Seq( new firrtl.stage.phases.DriverCompatibility.AddImplicitOutputFile,
diff --git a/src/main/scala/chisel3/stage/phases/Emitter.scala b/src/main/scala/chisel3/stage/phases/Emitter.scala
index a0530bd2..31e21542 100644
--- a/src/main/scala/chisel3/stage/phases/Emitter.scala
+++ b/src/main/scala/chisel3/stage/phases/Emitter.scala
@@ -4,7 +4,7 @@ package chisel3.stage.phases
import firrtl.{AnnotationSeq, EmittedFirrtlCircuit, EmittedFirrtlCircuitAnnotation}
import firrtl.annotations.DeletedAnnotation
-import firrtl.options.{Phase, StageOptions}
+import firrtl.options.{Dependency, Phase, StageOptions}
import firrtl.options.Viewer.view
import chisel3.internal.firrtl.{Emitter => OldEmitter}
@@ -25,10 +25,10 @@ import java.io.{File, FileWriter}
class Emitter extends Phase {
override val prerequisites =
- Seq( classOf[Elaborate],
- classOf[AddImplicitOutputFile],
- classOf[AddImplicitOutputAnnotationFile],
- classOf[MaybeAspectPhase] )
+ Seq( Dependency[Elaborate],
+ Dependency[AddImplicitOutputFile],
+ Dependency[AddImplicitOutputAnnotationFile],
+ Dependency[MaybeAspectPhase] )
override def invalidates(phase: Phase): Boolean = phase match {
case _: Elaborate => true
diff --git a/src/main/scala/chisel3/stage/phases/MaybeAspectPhase.scala b/src/main/scala/chisel3/stage/phases/MaybeAspectPhase.scala
index a69bc352..7c1bb423 100644
--- a/src/main/scala/chisel3/stage/phases/MaybeAspectPhase.scala
+++ b/src/main/scala/chisel3/stage/phases/MaybeAspectPhase.scala
@@ -4,13 +4,13 @@ package chisel3.stage.phases
import chisel3.aop.Aspect
import firrtl.AnnotationSeq
-import firrtl.options.{Phase, PreservesAll}
+import firrtl.options.{Dependency, Phase, PreservesAll}
/** Run [[AspectPhase]] if a [[chisel3.aop.Aspect]] is present.
*/
class MaybeAspectPhase extends Phase with PreservesAll[Phase] {
- override val prerequisites = Seq(classOf[Elaborate])
+ override val prerequisites = Seq(Dependency[Elaborate])
def transform(annotations: AnnotationSeq): AnnotationSeq = {
if(annotations.collectFirst { case a: Aspect[_] => annotations }.isDefined) {
diff --git a/src/main/scala/chisel3/stage/phases/MaybeFirrtlStage.scala b/src/main/scala/chisel3/stage/phases/MaybeFirrtlStage.scala
index 838b6819..4dd9669a 100644
--- a/src/main/scala/chisel3/stage/phases/MaybeFirrtlStage.scala
+++ b/src/main/scala/chisel3/stage/phases/MaybeFirrtlStage.scala
@@ -5,14 +5,14 @@ package chisel3.stage.phases
import chisel3.stage.NoRunFirrtlCompilerAnnotation
import firrtl.AnnotationSeq
-import firrtl.options.{Phase, PreservesAll}
+import firrtl.options.{Dependency, Phase, PreservesAll}
import firrtl.stage.FirrtlStage
/** Run [[firrtl.stage.FirrtlStage]] if a [[chisel3.stage.NoRunFirrtlCompilerAnnotation]] is not present.
*/
class MaybeFirrtlStage extends Phase with PreservesAll[Phase] {
- override val prerequisites = Seq(classOf[Convert])
+ override val prerequisites = Seq(Dependency[Convert])
def transform(annotations: AnnotationSeq): AnnotationSeq = annotations
.collectFirst { case NoRunFirrtlCompilerAnnotation => annotations }