aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChick Markley2018-03-19 16:57:07 -0700
committerAdam Izraelevitz2018-03-19 16:57:07 -0700
commit64ddd10c5b9c24dc9f74e545397dd548017febca (patch)
tree6d89022141383e2127637c720c431fa0fbf27950
parent9e32fd0ddfe3510d02ac4f5c2a118b631d4d3d6b (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
-rw-r--r--src/main/scala/firrtl/Driver.scala2
-rw-r--r--src/main/scala/firrtl/ExecutionOptionsManager.scala18
-rw-r--r--src/test/scala/firrtlTests/DriverSpec.scala7
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)