diff options
Diffstat (limited to 'core/src/main/scala/chisel3/Data.scala')
| -rw-r--r-- | core/src/main/scala/chisel3/Data.scala | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/core/src/main/scala/chisel3/Data.scala b/core/src/main/scala/chisel3/Data.scala index 0b05eb69..0beaa3ef 100644 --- a/core/src/main/scala/chisel3/Data.scala +++ b/core/src/main/scala/chisel3/Data.scala @@ -824,6 +824,25 @@ abstract class Data extends HasId with NamedComponent { /** Default pretty printing */ def toPrintable: Printable + + implicit class AsReadOnly[T <: Data](self: T) { + + /** Returns a read-only view of this Data + * + * It is illegal to connect to the return value of this method. + * This Data this method is called on must be a hardware type. + */ + def readOnly: T = { + val alreadyReadOnly = self.isLit || self.topBindingOpt.exists(_.isInstanceOf[ReadOnlyBinding]) + if (alreadyReadOnly) { + self + } else { + self + // todo fix when adding dataview + // self.viewAsReadOnly(_ => "Cannot connect to read-only value") + } + } + } } object Data { |
