diff options
| author | Schuyler Eldridge | 2019-08-15 19:52:36 -0400 |
|---|---|---|
| committer | GitHub | 2019-08-15 19:52:36 -0400 |
| commit | 8407cbafe37406301fe7437a7a0cb8bf283ada09 (patch) | |
| tree | 80262cf5cb17b8f0b4b044925bb9b6d19823263f /src/main/scala/chisel3/Driver.scala | |
| parent | 24dddea6dccea5a570cece78324a5db624c7303a (diff) | |
| parent | e254fabacb003549038f38f8209b66bf65a7f789 (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.scala | 38 |
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) ) |
