summaryrefslogtreecommitdiff
path: root/chiselFrontend/src/main/scala/chisel3/internal/firrtl
diff options
context:
space:
mode:
authorJim Lawson2018-07-31 14:11:33 -0700
committerJack Koenig2018-07-31 14:11:33 -0700
commit64a8f52c48905e9bf28e709cde2de89215a35c80 (patch)
tree0ce0f63a3891fed71810f81866ca5b7ee957b3c2 /chiselFrontend/src/main/scala/chisel3/internal/firrtl
parentfea4f3a80d2ed5d4735ef33558bebbab290290fb (diff)
Ensure names work for bundles and literals. (#853)
Fixes #852
Diffstat (limited to 'chiselFrontend/src/main/scala/chisel3/internal/firrtl')
-rw-r--r--chiselFrontend/src/main/scala/chisel3/internal/firrtl/IR.scala17
1 files changed, 15 insertions, 2 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/internal/firrtl/IR.scala b/chiselFrontend/src/main/scala/chisel3/internal/firrtl/IR.scala
index 6b555a82..b6630f7f 100644
--- a/chiselFrontend/src/main/scala/chisel3/internal/firrtl/IR.scala
+++ b/chiselFrontend/src/main/scala/chisel3/internal/firrtl/IR.scala
@@ -53,13 +53,26 @@ abstract class Arg {
}
case class Node(id: HasId) extends Arg {
- override def fullName(ctx: Component): String = id.getRef.fullName(ctx)
- def name: String = id.getRef.name
+ override def fullName(ctx: Component): String = id.getOptionRef match {
+ case Some(arg) => arg.fullName(ctx)
+ case None => id.suggestedName.getOrElse("??")
+ }
+ def name: String = id.getOptionRef match {
+ case Some(arg) => arg.name
+ case None => id.suggestedName.getOrElse("??")
+ }
}
abstract class LitArg(val num: BigInt, widthArg: Width) extends Arg {
private[chisel3] def forcedWidth = widthArg.known
private[chisel3] def width: Width = if (forcedWidth) widthArg else Width(minWidth)
+ override def fullName(ctx: Component): String = name
+ // Ensure the node representing this LitArg has a ref to it and a literal binding.
+ def bindLitArg[T <: Bits](bits: T): T = {
+ bits.bind(ElementLitBinding(this))
+ bits.setRef(this)
+ bits
+ }
protected def minWidth: Int
if (forcedWidth) {