diff options
| author | Donggyu | 2016-10-26 16:38:28 -0700 |
|---|---|---|
| committer | GitHub | 2016-10-26 16:38:28 -0700 |
| commit | 1c61a0e7102983891d99d8e9c49e331c8a2178a6 (patch) | |
| tree | 038ad4dae9f0d17ba4a5a7bdf582cbe75ccdd2e5 /src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala | |
| parent | 4c3b4f4dc10c380a101df75cb561e3f79f1a6abe (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.scala | 14 |
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))) } } |
