aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala
diff options
context:
space:
mode:
authorDonggyu2016-10-26 16:38:28 -0700
committerGitHub2016-10-26 16:38:28 -0700
commit1c61a0e7102983891d99d8e9c49e331c8a2178a6 (patch)
tree038ad4dae9f0d17ba4a5a7bdf582cbe75ccdd2e5 /src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala
parent4c3b4f4dc10c380a101df75cb561e3f79f1a6abe (diff)
Improve reference & name resolution in ReplSeqMem (#352)
* fix imports in InferReadWrite * improve reference & name resolution in ReplSeqMem * add comments
Diffstat (limited to 'src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala')
-rw-r--r--src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala b/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala
index 108f6fd4..2112ca27 100644
--- a/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala
+++ b/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala
@@ -13,24 +13,24 @@ object ResolveMemoryReference extends Pass {
def name = "Resolve Memory Reference"
- type AnnotatedMemories = collection.mutable.ArrayBuffer[DefAnnotatedMemory]
+ type AnnotatedMemories = collection.mutable.ArrayBuffer[(String, DefAnnotatedMemory)]
/** If a candidate memory is identical except for name to another, add an
* annotation that references the name of the other memory.
*/
- def updateMemStmts(uniqueMems: AnnotatedMemories)(s: Statement): Statement = s match {
+ def updateMemStmts(mname: String, uniqueMems: AnnotatedMemories)(s: Statement): Statement = s match {
case m: DefAnnotatedMemory =>
- uniqueMems find (x => eqMems(x, m)) match {
+ uniqueMems find (x => eqMems(x._2, m)) match {
case None =>
- uniqueMems += m
+ uniqueMems += (mname -> m)
m
- case Some(proto) => m copy (memRef = Some(proto.name))
+ case Some((module, proto)) => m copy (memRef = Some(module -> proto.name))
}
- case s => s map updateMemStmts(uniqueMems)
+ case s => s map updateMemStmts(mname, uniqueMems)
}
def run(c: Circuit) = {
val uniqueMems = new AnnotatedMemories
- c copy (modules = c.modules map (_ map updateMemStmts(uniqueMems)))
+ c copy (modules = c.modules map (m => m map updateMemStmts(m.name, uniqueMems)))
}
}