aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJack Koenig2017-03-30 00:23:47 -0700
committerGitHub2017-03-30 00:23:47 -0700
commitbda2bd363fbe66de9425bba12d96f5f9816a43ce (patch)
tree30b94551191ac1ebcf7891a33932dc5ea6f8614a /src
parent2dca19685c5e622304114f4370ed15012403dca0 (diff)
Make force-append-anno-file work. Fixes #515 (#516)
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/firrtl/Driver.scala2
-rw-r--r--src/test/scala/firrtlTests/DriverSpec.scala25
2 files changed, 26 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/Driver.scala b/src/main/scala/firrtl/Driver.scala
index 94cfface..fb74c5f3 100644
--- a/src/main/scala/firrtl/Driver.scala
+++ b/src/main/scala/firrtl/Driver.scala
@@ -92,7 +92,7 @@ object Driver {
*/
def firrtlConfig = optionsManager.firrtlOptions
- if(firrtlConfig.annotations.isEmpty) {
+ if (firrtlConfig.annotations.isEmpty || firrtlConfig.forceAppendAnnoFile) {
val annotationFileName = firrtlConfig.getAnnotationFileName(optionsManager)
val annotationFile = new File(annotationFileName)
if (annotationFile.exists) {
diff --git a/src/test/scala/firrtlTests/DriverSpec.scala b/src/test/scala/firrtlTests/DriverSpec.scala
index 9cbeb6f9..377353dc 100644
--- a/src/test/scala/firrtlTests/DriverSpec.scala
+++ b/src/test/scala/firrtlTests/DriverSpec.scala
@@ -7,6 +7,7 @@ import org.scalatest.{FreeSpec, Matchers}
import firrtl.passes.InlineInstances
import firrtl.passes.memlib.{InferReadWrite, ReplSeqMem}
+import firrtl.transforms.BlackBoxSourceHelper
import firrtl._
import firrtl.util.BackendCompilationUtilities
@@ -142,6 +143,30 @@ class DriverSpec extends FreeSpec with Matchers with BackendCompilationUtilities
annotationsTestFile.delete()
}
+ "Annotations can be created from the command line and read from a file at the same time" in {
+ val optionsManager = new ExecutionOptionsManager("test") with HasFirrtlOptions
+ val targetDir = new File(optionsManager.commonOptions.targetDirName)
+ val annoFile = new File(targetDir, "annotations.anno")
+
+ optionsManager.parse(
+ Array("--infer-rw", "circuit", "-faf", annoFile.toString, "-ffaaf")
+ ) should be (true)
+
+ copyResourceToFile("/annotations/SampleAnnotations.anno", annoFile)
+
+ val firrtlOptions = optionsManager.firrtlOptions
+ firrtlOptions.annotations.length should be (1) // infer-rw
+
+ Driver.loadAnnotations(optionsManager)
+
+ val anns = optionsManager.firrtlOptions.annotations.groupBy(_.transform)
+ anns(classOf[BlackBoxSourceHelper]).length should be (1) // built in to loadAnnotations
+ anns(classOf[InferReadWrite]).length should be (1) // --infer-rw
+ anns(classOf[InlineInstances]).length should be (9) // annotations file
+
+ annoFile.delete()
+ }
+
"Circuits are emitted on properly" - {
val input =
"""|circuit Top :