summaryrefslogtreecommitdiff
path: root/chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala
diff options
context:
space:
mode:
authorRichard Lin2019-01-22 15:06:08 -0800
committerGitHub2019-01-22 15:06:08 -0800
commitb39bc25ff76762d93300975e533ec3bd4f119d1c (patch)
tree38a8219d1c8ef6c61fd667a3f46a189091e2ea20 /chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala
parent40f4d3edf93cf48294bd6555a1deaa07571b2d3d (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.scala23
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