aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjackkoenig2016-04-27 00:29:05 -0700
committerjackkoenig2016-05-24 09:46:40 -0700
commitb9bf7ad196a203526977c0e299b60948be6b29c6 (patch)
tree3612671ee7ed057c2a56b098438723afebfa06d1 /src
parent44e079a0510f14abf6191b08f3082bd194d9fa60 (diff)
Remove nested AND in creation of readwrite ports for mems.
Fixes #147
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/firrtl/Emitter.scala8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/Emitter.scala b/src/main/scala/firrtl/Emitter.scala
index 5414053a..17cb9d50 100644
--- a/src/main/scala/firrtl/Emitter.scala
+++ b/src/main/scala/firrtl/Emitter.scala
@@ -554,7 +554,13 @@ class VerilogEmitter extends Emitter {
val rmem_port = WSubAccess(mem,raddrx,s.data_type,UNKNOWNGENDER)
assign(rdata,rmem_port)
val wmem_port = WSubAccess(mem,waddrx,s.data_type,UNKNOWNGENDER)
- update(wmem_port,datax,clk,AND(AND(enx,maskx),wmode))
+
+ val tempName = namespace.newTemp
+ val tempExp = AND(enx,maskx)
+ declare("wire", tempName, tpe(tempExp))
+ val tempWRef = wref(tempName, tpe(tempExp))
+ assign(tempWRef, tempExp)
+ update(wmem_port,datax,clk,AND(tempWRef,wmode))
}
}
case (s:Begin) => s map (build_streams)