diff options
| author | Andrew Waterman | 2016-07-06 19:57:47 -0700 |
|---|---|---|
| committer | Andrew Waterman | 2016-07-06 19:57:47 -0700 |
| commit | 0f39ba510f66c011be26d9a97d4bc52a8260fc75 (patch) | |
| tree | 174cc2c184336fda6b81ac5b54fa2b09b8d22952 /src | |
| parent | 2d9fa51eb1c3904b161612215734ceb7286ae942 (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.scala | 6 |
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 ) { |
