aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Waterman2016-07-06 19:57:47 -0700
committerAndrew Waterman2016-07-06 19:57:47 -0700
commit0f39ba510f66c011be26d9a97d4bc52a8260fc75 (patch)
tree174cc2c184336fda6b81ac5b54fa2b09b8d22952 /src
parent2d9fa51eb1c3904b161612215734ceb7286ae942 (diff)
Only assign garbage to Mem reads for non-power-of-2 depths
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/firrtl/Emitter.scala6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/Emitter.scala b/src/main/scala/firrtl/Emitter.scala
index 693122e0..6b54e367 100644
--- a/src/main/scala/firrtl/Emitter.scala
+++ b/src/main/scala/firrtl/Emitter.scala
@@ -515,7 +515,11 @@ class VerilogEmitter extends Emitter {
val mem_port = WSubAccess(mem,addrx,s.dataType,UNKNOWNGENDER)
val depthValue = UIntLiteral(s.depth, IntWidth(BigInt(s.depth).bitLength))
val garbageGuard = DoPrim(Geq, Seq(addrx, depthValue), Seq(), UnknownType)
- garbageAssign(data, mem_port, garbageGuard)
+
+ if ((s.depth & (s.depth - 1)) == 0)
+ assign(data, mem_port)
+ else
+ garbageAssign(data, mem_port, garbageGuard)
}
for (w <- s.writers ) {