diff options
Diffstat (limited to 'src/main/scala/firrtl/annotations/AnnotationUtils.scala')
| -rw-r--r-- | src/main/scala/firrtl/annotations/AnnotationUtils.scala | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/main/scala/firrtl/annotations/AnnotationUtils.scala b/src/main/scala/firrtl/annotations/AnnotationUtils.scala index 6e6af81d..8f55c13e 100644 --- a/src/main/scala/firrtl/annotations/AnnotationUtils.scala +++ b/src/main/scala/firrtl/annotations/AnnotationUtils.scala @@ -3,9 +3,15 @@ package firrtl package annotations +import net.jcazevedo.moultingyaml._ +import firrtl.annotations.AnnotationYamlProtocol._ + import firrtl.ir._ object AnnotationUtils { + def toYaml(a: Annotation): String = a.toYaml.prettyPrint + def fromYaml(s: String): Annotation = s.parseYaml.convertTo[Annotation] + /** Returns true if a valid Module name */ val SerializedModuleName = """([a-zA-Z_][a-zA-Z_0-9~!@#$%^*\-+=?/]*)""".r def validModuleName(s: String): Boolean = s match { @@ -34,6 +40,13 @@ object AnnotationUtils { case None => Seq(s) } + def toNamed(s: String): Named = tokenize(s) match { + case Seq(n) => CircuitName(n) + case Seq(c, m) => ModuleName(m, CircuitName(c)) + case Seq(c, m) => ModuleName(m, CircuitName(c)) + case Seq(c, m, x) => ComponentName(x, ModuleName(m, CircuitName(c))) + } + /** Given a serialized component/subcomponent reference, subindex, subaccess, * or subfield, return the corresponding IR expression. * E.g. "foo.bar" becomes SubField(Reference("foo", UnknownType), "bar", UnknownType) |
