diff options
| author | Albert Magyar | 2019-09-11 18:16:20 -0700 |
|---|---|---|
| committer | Albert Magyar | 2019-09-30 16:22:01 -0700 |
| commit | a10084fbba0ba88a1f0517b826ef8de44d8760d1 (patch) | |
| tree | 8a1ac0098409dbb95a45d3b7107a4f6d59d8e166 /src/main/scala/firrtl/ir | |
| parent | 4ca2b859473e0a88723463eac2821cfbd3249c43 (diff) | |
Improve read-under-write parameter support
* Make the read-under-write (RUW) parameter typesafe
* Add RUW support to the FIRRTL proto and CHIRRTL grammar
Diffstat (limited to 'src/main/scala/firrtl/ir')
| -rw-r--r-- | src/main/scala/firrtl/ir/IR.scala | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/main/scala/firrtl/ir/IR.scala b/src/main/scala/firrtl/ir/IR.scala index 9268865b..b4631473 100644 --- a/src/main/scala/firrtl/ir/IR.scala +++ b/src/main/scala/firrtl/ir/IR.scala @@ -285,6 +285,13 @@ case class DefInstance(info: Info, name: String, module: String) extends Stateme def foreachString(f: String => Unit): Unit = f(name) def foreachInfo(f: Info => Unit): Unit = f(info) } + +object ReadUnderWrite extends Enumeration { + val Undefined = Value("undefined") + val Old = Value("old") + val New = Value("new") +} + case class DefMemory( info: Info, name: String, @@ -296,7 +303,7 @@ case class DefMemory( writers: Seq[String], readwriters: Seq[String], // TODO: handle read-under-write - readUnderWrite: Option[String] = None) extends Statement with IsDeclaration { + readUnderWrite: ReadUnderWrite.Value = ReadUnderWrite.Undefined) extends Statement with IsDeclaration { def serialize: String = s"mem $name :" + info.serialize + indent( @@ -307,7 +314,7 @@ case class DefMemory( (readers map ("reader => " + _)) ++ (writers map ("writer => " + _)) ++ (readwriters map ("readwriter => " + _)) ++ - Seq("read-under-write => undefined")) mkString "\n") + Seq(s"read-under-write => ${readUnderWrite}")) mkString "\n") def mapStmt(f: Statement => Statement): Statement = this def mapExpr(f: Expression => Expression): Statement = this def mapType(f: Type => Type): Statement = this.copy(dataType = f(dataType)) |
