aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/passes/memlib/ResolveMaskGranularity.scala
diff options
context:
space:
mode:
authorColin Schmidt2017-02-21 11:48:04 -0800
committerJack Koenig2017-02-21 11:48:04 -0800
commita02750f379b266b76febc58ef0351b56d21e9fcf (patch)
treec7ad03dfbe8415e3f061cfa1fecd2f5ea2ba960a /src/main/scala/firrtl/passes/memlib/ResolveMaskGranularity.scala
parentb69e787c0a698b7fb703ccd8d24003f83207e296 (diff)
Implementation of nodedupe mem (#447)
This allows the replseqmem transform to not deduplicate some memories, based on their name.
Diffstat (limited to 'src/main/scala/firrtl/passes/memlib/ResolveMaskGranularity.scala')
-rw-r--r--src/main/scala/firrtl/passes/memlib/ResolveMaskGranularity.scala5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/main/scala/firrtl/passes/memlib/ResolveMaskGranularity.scala b/src/main/scala/firrtl/passes/memlib/ResolveMaskGranularity.scala
index 53d7234f..956bdd3c 100644
--- a/src/main/scala/firrtl/passes/memlib/ResolveMaskGranularity.scala
+++ b/src/main/scala/firrtl/passes/memlib/ResolveMaskGranularity.scala
@@ -77,8 +77,9 @@ object AnalysisUtils {
/** Checks whether the two memories are equivalent in all respects except name
*/
- def eqMems(a: DefAnnotatedMemory, b: DefAnnotatedMemory) =
- a == b.copy(info = a.info, name = a.name, memRef = a.memRef)
+ def eqMems(a: DefAnnotatedMemory, b: DefAnnotatedMemory, noDeDupeMems: Seq[String]) =
+ a == b.copy(info = a.info, name = a.name, memRef = a.memRef) &&
+ !(noDeDupeMems.contains(a.name) || noDeDupeMems.contains(b.name))
}
/** Determines if a write mask is needed (wmode/en and wmask are equivalent).