aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDonggyu2016-10-20 12:51:51 -0700
committerAngie Wang2016-10-20 12:51:51 -0700
commitbcf73fb70969e5629a693c18f1f2ee7b37f14a76 (patch)
tree8b48cd871e43f9e746ff23ca9559ded79c0d7791 /src
parentdd5756adbecb942d5c448041e31cbc5931a730f6 (diff)
fix resolve memory reference (#341)
duplcate memory detection should be in circuit-level, not in module-level
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/firrtl/passes/memlib/ResolveMaskGranularity.scala3
-rw-r--r--src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala6
2 files changed, 4 insertions, 5 deletions
diff --git a/src/main/scala/firrtl/passes/memlib/ResolveMaskGranularity.scala b/src/main/scala/firrtl/passes/memlib/ResolveMaskGranularity.scala
index a8ff9fe3..53d7234f 100644
--- a/src/main/scala/firrtl/passes/memlib/ResolveMaskGranularity.scala
+++ b/src/main/scala/firrtl/passes/memlib/ResolveMaskGranularity.scala
@@ -77,7 +77,8 @@ object AnalysisUtils {
/** Checks whether the two memories are equivalent in all respects except name
*/
- def eqMems(a: DefAnnotatedMemory, b: DefAnnotatedMemory) = a == b.copy(name = a.name)
+ def eqMems(a: DefAnnotatedMemory, b: DefAnnotatedMemory) =
+ a == b.copy(info = a.info, name = a.name, memRef = a.memRef)
}
/** Determines if a write mask is needed (wmode/en and wmask are equivalent).
diff --git a/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala b/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala
index 783c179f..108f6fd4 100644
--- a/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala
+++ b/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala
@@ -29,10 +29,8 @@ object ResolveMemoryReference extends Pass {
case s => s map updateMemStmts(uniqueMems)
}
- def updateMemMods(m: DefModule) = {
+ def run(c: Circuit) = {
val uniqueMems = new AnnotatedMemories
- (m map updateMemStmts(uniqueMems))
+ c copy (modules = c.modules map (_ map updateMemStmts(uniqueMems)))
}
-
- def run(c: Circuit) = c copy (modules = c.modules map updateMemMods)
}