diff options
| author | Richard Lin | 2019-01-22 15:06:08 -0800 |
|---|---|---|
| committer | GitHub | 2019-01-22 15:06:08 -0800 |
| commit | b39bc25ff76762d93300975e533ec3bd4f119d1c (patch) | |
| tree | 38a8219d1c8ef6c61fd667a3f46a189091e2ea20 /chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala | |
| parent | 40f4d3edf93cf48294bd6555a1deaa07571b2d3d (diff) | |
Define Data .toString (#985)
toString on Data subtypes will now print the type and optionally binding information including literals and IO names as feasible.
Diffstat (limited to 'chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala')
| -rw-r--r-- | chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala b/chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala index 5563092e..e85b7158 100644 --- a/chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala +++ b/chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala @@ -150,6 +150,10 @@ object Vec extends VecFactory */ sealed class Vec[T <: Data] private[core] (gen: => T, val length: Int) extends Aggregate with VecLike[T] { + override def toString: String = { + s"$sample_element[$length]$bindingToString" + } + private[core] override def typeEquivalent(that: Data): Boolean = that match { case that: Vec[T] => this.length == that.length && @@ -448,6 +452,18 @@ abstract class Record(private[chisel3] implicit val compileOptions: CompileOptio * assert(uint === "hbeefdead".U) // This will pass * }}} */ + override def toString: String = { + val bindingString = topBindingOpt match { + case Some(BundleLitBinding(_)) => + val contents = elements.toList.reverse.map { case (name, data) => + s"$name=$data" + }.mkString(", ") + s"($contents)" + case _ => bindingToString + } + s"$className$bindingString" + } + val elements: ListMap[String, Data] /** Name for Pretty Printing */ @@ -543,8 +559,11 @@ class AutoClonetypeException(message: String) extends ChiselException(message) * }}} */ abstract class Bundle(implicit compileOptions: CompileOptions) extends Record { - override def className = "Bundle" - + override def className: String = this.getClass.getSimpleName match { + case name if name.startsWith("$anon$") => "AnonymousBundle" // fallback for anonymous Bundle case + case "" => "AnonymousBundle" // ditto, but on other platforms + case name => name + } /** The collection of [[Data]] * * Elements defined earlier in the Bundle are higher order upon |
