From 64ddd10c5b9c24dc9f74e545397dd548017febca Mon Sep 17 00:00:00 2001 From: Chick Markley Date: Mon, 19 Mar 2018 16:57:07 -0700 Subject: Pass up annotations in return value from Driver.execute (#760) * Pass up annotations in return value from Driver.execute Backward compatible with existing usage. Adds CircuitState to FirrtlExecutionSuccess, but that member is not part of the unapply. "To a single file per module if OneFilePerModule is specified" test shows example of getting access to annotations * As experiment return created files in annotations Fix line missed in last push --- src/main/scala/firrtl/Driver.scala | 2 +- src/main/scala/firrtl/ExecutionOptionsManager.scala | 18 +++++++++++++++++- src/test/scala/firrtlTests/DriverSpec.scala | 7 ++++++- 3 files changed, 24 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/main/scala/firrtl/Driver.scala b/src/main/scala/firrtl/Driver.scala index 77412a0e..3ff465e2 100644 --- a/src/main/scala/firrtl/Driver.scala +++ b/src/main/scala/firrtl/Driver.scala @@ -248,7 +248,7 @@ object Driver { outputFile.close() } - FirrtlExecutionSuccess(firrtlConfig.compilerName, emittedRes) + FirrtlExecutionSuccess(firrtlConfig.compilerName, emittedRes, finalState) } } diff --git a/src/main/scala/firrtl/ExecutionOptionsManager.scala b/src/main/scala/firrtl/ExecutionOptionsManager.scala index 1aac0ad6..3ee91da0 100644 --- a/src/main/scala/firrtl/ExecutionOptionsManager.scala +++ b/src/main/scala/firrtl/ExecutionOptionsManager.scala @@ -473,6 +473,18 @@ trait HasFirrtlOptions { sealed trait FirrtlExecutionResult +object FirrtlExecutionSuccess { + def apply( + emitType : String, + emitted : String, + circuitState: CircuitState + ): FirrtlExecutionSuccess = new FirrtlExecutionSuccess(emitType, emitted, circuitState) + + + def unapply(arg: FirrtlExecutionSuccess): Option[(String, String)] = { + Some((arg.emitType, arg.emitted)) + } +} /** * Indicates a successful execution of the firrtl compiler, returning the compiled result and * the type of compile @@ -480,7 +492,11 @@ sealed trait FirrtlExecutionResult * @param emitType The name of the compiler used, currently "high", "middle", "low", "verilog", or "sverilog" * @param emitted The emitted result of compilation */ -case class FirrtlExecutionSuccess(emitType: String, emitted: String) extends FirrtlExecutionResult +class FirrtlExecutionSuccess( + val emitType: String, + val emitted : String, + val circuitState: CircuitState +) extends FirrtlExecutionResult /** * The firrtl compilation failed. diff --git a/src/test/scala/firrtlTests/DriverSpec.scala b/src/test/scala/firrtlTests/DriverSpec.scala index 406e5f42..b0ce0af9 100644 --- a/src/test/scala/firrtlTests/DriverSpec.scala +++ b/src/test/scala/firrtlTests/DriverSpec.scala @@ -355,7 +355,12 @@ class DriverSpec extends FreeSpec with Matchers with BackendCompilationUtilities emitOneFilePerModule = true) } - firrtl.Driver.execute(manager) + firrtl.Driver.execute(manager) match { + case success: FirrtlExecutionSuccess => + success.circuitState.annotations.length should be > (0) + case _ => + + } for (name <- expectedOutputFileNames) { val file = new File(name) -- cgit v1.2.3