diff options
Diffstat (limited to 'src/main/scala/firrtl/passes/memlib/CreateMemoryAnnotations.scala')
| -rw-r--r-- | src/main/scala/firrtl/passes/memlib/CreateMemoryAnnotations.scala | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/main/scala/firrtl/passes/memlib/CreateMemoryAnnotations.scala b/src/main/scala/firrtl/passes/memlib/CreateMemoryAnnotations.scala new file mode 100644 index 00000000..ce7eea5e --- /dev/null +++ b/src/main/scala/firrtl/passes/memlib/CreateMemoryAnnotations.scala @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: Apache-2.0 + +package firrtl +package passes +package memlib + +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 { + + 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) + } +} |
