From bcf73fb70969e5629a693c18f1f2ee7b37f14a76 Mon Sep 17 00:00:00 2001 From: Donggyu Date: Thu, 20 Oct 2016 12:51:51 -0700 Subject: fix resolve memory reference (#341) duplcate memory detection should be in circuit-level, not in module-level--- src/main/scala/firrtl/passes/memlib/ResolveMaskGranularity.scala | 3 ++- src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala | 6 ++---- 2 files changed, 4 insertions(+), 5 deletions(-) (limited to 'src') 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) } -- cgit v1.2.3