summaryrefslogtreecommitdiff
path: root/src/main/scala/chisel3/Driver.scala
diff options
context:
space:
mode:
authorSchuyler Eldridge2019-08-15 19:52:36 -0400
committerGitHub2019-08-15 19:52:36 -0400
commit8407cbafe37406301fe7437a7a0cb8bf283ada09 (patch)
tree80262cf5cb17b8f0b4b044925bb9b6d19823263f /src/main/scala/chisel3/Driver.scala
parent24dddea6dccea5a570cece78324a5db624c7303a (diff)
parente254fabacb003549038f38f8209b66bf65a7f789 (diff)
Merge pull request #1155 from freechipsproject/dependency-api
Dependency API (take 2)
Diffstat (limited to 'src/main/scala/chisel3/Driver.scala')
-rw-r--r--src/main/scala/chisel3/Driver.scala38
1 files changed, 22 insertions, 16 deletions
diff --git a/src/main/scala/chisel3/Driver.scala b/src/main/scala/chisel3/Driver.scala
index 66146755..a78cc92f 100644
--- a/src/main/scala/chisel3/Driver.scala
+++ b/src/main/scala/chisel3/Driver.scala
@@ -6,7 +6,8 @@ import chisel3.internal.ErrorLog
import chisel3.experimental.RawModule
import internal.firrtl._
import firrtl._
-import firrtl.options.Phase
+import firrtl.options.{Phase, PhaseManager}
+import firrtl.options.phases.DeletedWrapper
import firrtl.options.Viewer.view
import firrtl.annotations.JsonProtocol
import firrtl.util.{BackendCompilationUtilities => FirrtlBackendCompilationUtilities}
@@ -200,22 +201,27 @@ object Driver extends BackendCompilationUtilities {
optionsManager: ExecutionOptionsManager with HasChiselExecutionOptions with HasFirrtlOptions,
dut: () => RawModule): ChiselExecutionResult = {
- val annos = ChiselGeneratorAnnotation(dut) +:
- (optionsManager.chiselOptions.toAnnotations ++
- optionsManager.firrtlOptions.toAnnotations ++
- optionsManager.commonOptions.toAnnotations)
+ val annos: AnnotationSeq =
+ Seq(DriverCompatibility.OptionsManagerAnnotation(optionsManager), ChiselGeneratorAnnotation(dut)) ++
+ optionsManager.chiselOptions.toAnnotations ++
+ optionsManager.firrtlOptions.toAnnotations ++
+ optionsManager.commonOptions.toAnnotations
- val phases: Seq[Phase] =
- Seq( new DriverCompatibility.AddImplicitOutputFile,
- new DriverCompatibility.AddImplicitOutputAnnotationFile,
- new DriverCompatibility.DisableFirrtlStage,
- new ChiselStage,
- new DriverCompatibility.MutateOptionsManager(optionsManager),
- new DriverCompatibility.ReEnableFirrtlStage,
- new firrtl.stage.phases.DriverCompatibility.AddImplicitOutputFile,
- new firrtl.stage.phases.DriverCompatibility.AddImplicitEmitter,
- new chisel3.stage.phases.MaybeFirrtlStage )
- .map(firrtl.options.phases.DeletedWrapper(_))
+ 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] )
+ val currentState =
+ Seq( classOf[firrtl.stage.phases.DriverCompatibility.AddImplicitFirrtlFile] )
+
+ val phases: Seq[Phase] = new PhaseManager(targets, currentState) {
+ override val wrappers = Seq( DeletedWrapper(_: Phase) )
+ }.transformOrder
val annosx = try {
phases.foldLeft(annos)( (a, p) => p.transform(a) )