aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/passes/memlib/CreateMemoryAnnotations.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/firrtl/passes/memlib/CreateMemoryAnnotations.scala')
-rw-r--r--src/main/scala/firrtl/passes/memlib/CreateMemoryAnnotations.scala29
1 files changed, 16 insertions, 13 deletions
diff --git a/src/main/scala/firrtl/passes/memlib/CreateMemoryAnnotations.scala b/src/main/scala/firrtl/passes/memlib/CreateMemoryAnnotations.scala
index ce7eea5e..240c2c9a 100644
--- a/src/main/scala/firrtl/passes/memlib/CreateMemoryAnnotations.scala
+++ b/src/main/scala/firrtl/passes/memlib/CreateMemoryAnnotations.scala
@@ -4,26 +4,29 @@ package firrtl
package passes
package memlib
+import firrtl.Utils.error
import firrtl.stage.Forms
-@deprecated("CreateMemoryAnnotations will not take reader: Option[YamlFileReader] as argument since 1.5.", "FIRRTL 1.4")
-class CreateMemoryAnnotations(reader: Option[YamlFileReader]) extends Transform with DependencyAPIMigration {
+import java.io.File
+
+class CreateMemoryAnnotations extends Transform with DependencyAPIMigration {
override def prerequisites = Forms.MidForm
override def optionalPrerequisites = Seq.empty
override def optionalPrerequisiteOf = Forms.MidEmitters
override def invalidates(a: Transform) = false
- def execute(state: CircuitState): CircuitState = reader match {
- case None => state
- case Some(r) =>
- import CustomYAMLProtocol._
- val configs = r.parse[Config]
- val oldAnnos = state.annotations
- val (as, pins) = configs.foldLeft((oldAnnos, Seq.empty[String])) {
- case ((annos, pins), config) =>
- (annos, pins :+ config.pin.name)
- }
- state.copy(annotations = PinAnnotation(pins.toSeq) +: as)
+ def execute(state: CircuitState): CircuitState = {
+ state.copy(annotations = state.annotations.flatMap {
+ case ReplSeqMemAnnotation(inputFileName, outputConfig) =>
+ Seq(MemLibOutConfigFileAnnotation(outputConfig, Nil)) ++ {
+ if (inputFileName.isEmpty) None
+ else if (new File(inputFileName).exists) {
+ import CustomYAMLProtocol._
+ Some(PinAnnotation(new YamlFileReader(inputFileName).parse[Config].map(_.pin.name)))
+ } else error("Input configuration file does not exist!")
+ }
+ case a => Seq(a)
+ })
}
}