aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/scala/firrtl/Driver.scala12
-rw-r--r--src/main/scala/firrtl/ExecutionOptionsManager.scala14
2 files changed, 24 insertions, 2 deletions
diff --git a/src/main/scala/firrtl/Driver.scala b/src/main/scala/firrtl/Driver.scala
index 1f0741fd..76a2e4f8 100644
--- a/src/main/scala/firrtl/Driver.scala
+++ b/src/main/scala/firrtl/Driver.scala
@@ -202,6 +202,18 @@ object Driver {
"" // Should we return something different here?
}
+ // If set, emit final annotations to a file
+ optionsManager.firrtlOptions.outputAnnotationFileName match {
+ case "" =>
+ case file =>
+ val filename = optionsManager.getBuildFileName("anno", file)
+ val outputFile = new java.io.PrintWriter(filename)
+ finalState.annotations.map {
+ case annos => outputFile.write(annos.annotations.mkString("\n"))
+ }
+ outputFile.close()
+ }
+
FirrtlExecutionSuccess(firrtlConfig.compilerName, emittedRes)
}
}
diff --git a/src/main/scala/firrtl/ExecutionOptionsManager.scala b/src/main/scala/firrtl/ExecutionOptionsManager.scala
index 8aa23f70..e0bd1975 100644
--- a/src/main/scala/firrtl/ExecutionOptionsManager.scala
+++ b/src/main/scala/firrtl/ExecutionOptionsManager.scala
@@ -155,6 +155,7 @@ case class FirrtlExecutionOptions(
customTransforms: Seq[Transform] = List.empty,
annotations: List[Annotation] = List.empty,
annotationFileNameOverride: String = "",
+ outputAnnotationFileName: String = "",
forceAppendAnnoFile: Boolean = false,
emitOneFilePerModule: Boolean = false,
dontCheckCombLoops: Boolean = false,
@@ -283,8 +284,8 @@ trait HasFirrtlOptions {
parser.opt[String]("annotation-file")
.abbr("faf")
- .valueName ("<output>").
- foreach { x =>
+ .valueName ("<input-anno-file>")
+ .foreach { x =>
firrtlOptions = firrtlOptions.copy(annotationFileNameOverride = x)
}.text {
"use this to override the default annotation file name, default is empty"
@@ -298,6 +299,15 @@ trait HasFirrtlOptions {
"use this to force appending annotation file to annotations being passed in through optionsManager"
}
+ parser.opt[String]("output-annotation-file")
+ .abbr("foaf")
+ .valueName ("<output-anno-file>")
+ .foreach { x =>
+ firrtlOptions = firrtlOptions.copy(outputAnnotationFileName = x)
+ }.text {
+ "use this to set the annotation output file"
+ }
+
parser.opt[String]("compiler")
.abbr("X")
.valueName ("<high|middle|low|verilog>")