diff options
| author | Chick Markley | 2018-03-19 16:57:07 -0700 |
|---|---|---|
| committer | Adam Izraelevitz | 2018-03-19 16:57:07 -0700 |
| commit | 64ddd10c5b9c24dc9f74e545397dd548017febca (patch) | |
| tree | 6d89022141383e2127637c720c431fa0fbf27950 /src | |
| parent | 9e32fd0ddfe3510d02ac4f5c2a118b631d4d3d6b (diff) | |
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
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/firrtl/Driver.scala | 2 | ||||
| -rw-r--r-- | src/main/scala/firrtl/ExecutionOptionsManager.scala | 18 | ||||
| -rw-r--r-- | src/test/scala/firrtlTests/DriverSpec.scala | 7 |
3 files changed, 24 insertions, 3 deletions
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) |
