aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala')
-rw-r--r--src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala18
1 files changed, 5 insertions, 13 deletions
diff --git a/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala b/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala
index e132e369..d195ea55 100644
--- a/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala
+++ b/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala
@@ -8,15 +8,9 @@ import AnalysisUtils.eqMems
import firrtl.Mappers._
import firrtl.annotations._
-/** A component, e.g. register etc. Must be declared only once under the TopAnnotation
- */
-object NoDedupMemAnnotation {
- def apply(target: ComponentName): Annotation = Annotation(target, classOf[ResolveMemoryReference], s"nodedupmem!")
-
- def unapply(a: Annotation): Option[ComponentName] = a match {
- case Annotation(ComponentName(n, mn), _, "nodedupmem!") => Some(ComponentName(n, mn))
- case _ => None
- }
+/** A component, e.g. register etc. Must be declared only once under the TopAnnotation */
+case class NoDedupMemAnnotation(target: ComponentName) extends SingleTargetAnnotation[ComponentName] {
+ def duplicate(n: ComponentName) = NoDedupMemAnnotation(n)
}
/** Resolves annotation ref to memories that exactly match (except name) another memory
@@ -46,10 +40,8 @@ class ResolveMemoryReference extends Transform {
c copy (modules = c.modules map (m => m map updateMemStmts(m.name, uniqueMems, noDeDupeMems)))
}
def execute(state: CircuitState): CircuitState = {
- val noDedups = getMyAnnotations(state) match {
- case Nil => Seq.empty
- case annos =>
- annos.collect { case NoDedupMemAnnotation(ComponentName(cn, _)) => cn }
+ val noDedups = state.annotations.collect {
+ case NoDedupMemAnnotation(ComponentName(cn, _)) => cn
}
state.copy(circuit=run(state.circuit, noDedups))
}