aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/annotations/Named.scala
diff options
context:
space:
mode:
authorAdam Izraelevitz2018-10-27 22:44:00 -0700
committerGitHub2018-10-27 22:44:00 -0700
commit223bad6d9ddd93e48678da7c3ab50b6656809157 (patch)
treebf9efdcd7e1c8fb50175686810531be07747e8a9 /src/main/scala/firrtl/annotations/Named.scala
parent7e2f787e125227dc389d5cf1d09717748ecfed2e (diff)
Revert "Instance Annotations (#865)" (#925)
This reverts commit 7e2f787e125227dc389d5cf1d09717748ecfed2e.
Diffstat (limited to 'src/main/scala/firrtl/annotations/Named.scala')
-rw-r--r--src/main/scala/firrtl/annotations/Named.scala30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/main/scala/firrtl/annotations/Named.scala b/src/main/scala/firrtl/annotations/Named.scala
new file mode 100644
index 00000000..3da75884
--- /dev/null
+++ b/src/main/scala/firrtl/annotations/Named.scala
@@ -0,0 +1,30 @@
+// See LICENSE for license details.
+
+package firrtl
+package annotations
+
+import firrtl.ir.Expression
+import AnnotationUtils.{validModuleName, validComponentName, toExp}
+
+/**
+ * Named classes associate an annotation with a component in a Firrtl circuit
+ */
+sealed trait Named {
+ def serialize: String
+}
+
+final case class CircuitName(name: String) extends Named {
+ if(!validModuleName(name)) throw AnnotationException(s"Illegal circuit name: $name")
+ def serialize: String = name
+}
+
+final case class ModuleName(name: String, circuit: CircuitName) extends Named {
+ if(!validModuleName(name)) throw AnnotationException(s"Illegal module name: $name")
+ def serialize: String = circuit.serialize + "." + name
+}
+
+final case class ComponentName(name: String, module: ModuleName) extends Named {
+ if(!validComponentName(name)) throw AnnotationException(s"Illegal component name: $name")
+ def expr: Expression = toExp(name)
+ def serialize: String = module.serialize + "." + name
+}