diff --git a/.gitignore b/.gitignore index b4fc65d..9cc0d18 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ generated/ .idea target/ *.iml +*.swp diff --git a/chiselFrontend/src/main/scala/chisel3/core/.Data.scala.swp b/chiselFrontend/src/main/scala/chisel3/core/.Data.scala.swp deleted file mode 100644 index 493ab02..0000000 Binary files a/chiselFrontend/src/main/scala/chisel3/core/.Data.scala.swp and /dev/null differ diff --git a/chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala b/chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala index 049e90a..1413fcd 100644 --- a/chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala +++ b/chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala @@ -265,7 +265,7 @@ sealed class Vec[T <: Data] private (gen: => T, val length: Int) } override def _onModuleClose: Unit = { - sample_element.setRef(this, 0) + sample_element.setRefBinder(this) } } @@ -584,6 +584,7 @@ trait BitsLevelNamer { case ax: Index => argIsTemp(ax.imm) || strTmp(ax.name) case ax: Node => !ax.id.refSet || strTmp(ax.name) case ax: LitArg => false + case ax: BindIndex => argIsTemp(ax.imm) } diff --git a/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala b/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala index b0b8913..5878d4e 100644 --- a/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala +++ b/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala @@ -106,6 +106,7 @@ private[chisel3] trait HasId extends InstanceId { private[chisel3] def setRef(parent: HasId, name: String): Unit = setRef(Slot(Node(parent), name)) private[chisel3] def setRef(parent: HasId, index: Int): Unit = setRef(Index(Node(parent), ILit(index))) private[chisel3] def setRef(parent: HasId, index: UInt): Unit = setRef(Index(Node(parent), index.ref)) + private[chisel3] def setRefBinder(parent: HasId): Unit = setRef(BindIndex(Node(parent))) // private[chisel3] def setRef(parent: HasId, names: Seq[String]): Unit = { // var newRef = Node(parent) // for(name <- names) { diff --git a/chiselFrontend/src/main/scala/chisel3/internal/firrtl/IR.scala b/chiselFrontend/src/main/scala/chisel3/internal/firrtl/IR.scala index 9446be0..47926bd 100644 --- a/chiselFrontend/src/main/scala/chisel3/internal/firrtl/IR.scala +++ b/chiselFrontend/src/main/scala/chisel3/internal/firrtl/IR.scala @@ -120,6 +120,11 @@ case class Index(imm: Arg, value: Arg) extends Arg { override def fullName(ctx: Component): String = s"${imm.fullName(ctx)}[${value.fullName(ctx)}]" def pprint = s"Index(${imm.name}, ${value.name})" } +case class BindIndex(imm: Arg) extends Arg { + def name: String = s"[_]" + override def fullName(ctx: Component): String = s"${imm.fullName(ctx)}[_]" + def pprint = s"Index(${imm.name}, _)" +} sealed trait Bound sealed trait NumericBound[T] extends Bound { diff --git a/src/main/scala/chisel3/util/.Decoupled.scala.swp b/src/main/scala/chisel3/util/.Decoupled.scala.swp deleted file mode 100644 index 68066bb..0000000 Binary files a/src/main/scala/chisel3/util/.Decoupled.scala.swp and /dev/null differ diff --git a/src/main/scala/chisel3/util/Arbiter.scala b/src/main/scala/chisel3/util/Arbiter.scala index 20d9c54..3cf7d26 100644 --- a/src/main/scala/chisel3/util/Arbiter.scala +++ b/src/main/scala/chisel3/util/Arbiter.scala @@ -24,7 +24,7 @@ class ArbiterIO[T <: Data](gen: T, out_gen: T, n: Int, inl: Label, outl: Label) /** Arbiter Control determining which producer has access */ -private object ArbiterCtrl { +object ArbiterCtrl { def apply(request: Seq[Bool]): Seq[Bool] = request.length match { case 0 => Seq() case 1 => Seq(true.B)