aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/proto/ToProto.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/firrtl/proto/ToProto.scala')
-rw-r--r--src/main/scala/firrtl/proto/ToProto.scala13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/main/scala/firrtl/proto/ToProto.scala b/src/main/scala/firrtl/proto/ToProto.scala
index 17adb698..70de3ccd 100644
--- a/src/main/scala/firrtl/proto/ToProto.scala
+++ b/src/main/scala/firrtl/proto/ToProto.scala
@@ -6,6 +6,7 @@ package proto
import java.io.OutputStream
import FirrtlProtos._
+import Firrtl.Statement.ReadUnderWrite
import Firrtl.Expression.PrimOp.Op
import com.google.protobuf.{CodedOutputStream, WireFormat}
import firrtl.PrimOps._
@@ -103,6 +104,12 @@ object ToProto {
BPSet -> Op.OP_SET_BINARY_POINT
)
+ def convert(ruw: ir.ReadUnderWrite.Value): ReadUnderWrite = ruw match {
+ case ir.ReadUnderWrite.Undefined => ReadUnderWrite.UNDEFINED
+ case ir.ReadUnderWrite.Old => ReadUnderWrite.OLD
+ case ir.ReadUnderWrite.New => ReadUnderWrite.NEW
+ }
+
def convertToIntegerLiteral(value: BigInt): Firrtl.Expression.IntegerLiteral.Builder = {
Firrtl.Expression.IntegerLiteral.newBuilder()
.setValue(value.toString)
@@ -260,22 +267,24 @@ object ToProto {
val ib = Firrtl.Statement.IsInvalid.newBuilder()
.setExpression(convert(expr))
sb.setIsInvalid(ib)
- case ir.DefMemory(_, name, dtype, depth, wlat, rlat, rs, ws, rws, _) =>
+ case ir.DefMemory(_, name, dtype, depth, wlat, rlat, rs, ws, rws, ruw) =>
val mem = Firrtl.Statement.Memory.newBuilder()
.setId(name)
.setType(convert(dtype))
.setBigintDepth(convertToBigInt(depth))
.setWriteLatency(wlat)
.setReadLatency(rlat)
+ .setReadUnderWrite(convert(ruw))
mem.addAllReaderId(rs.asJava)
mem.addAllWriterId(ws.asJava)
mem.addAllReadwriterId(rws.asJava)
sb.setMemory(mem)
- case CDefMemory(_, name, tpe, size, seq) =>
+ case CDefMemory(_, name, tpe, size, seq, ruw) =>
val mb = Firrtl.Statement.CMemory.newBuilder()
.setId(name)
.setTypeAndDepth(convert(tpe, size))
.setSyncRead(seq)
+ .setReadUnderWrite(convert(ruw))
sb.setCmemory(mb)
case CDefMPort(_, name, _, mem, exprs, dir) =>
val pb = Firrtl.Statement.MemoryPort.newBuilder()