diff options
| author | chick | 2016-06-06 15:32:33 -0700 |
|---|---|---|
| committer | chick | 2016-06-06 15:32:33 -0700 |
| commit | 43124af2f3eab9a3491dd2c83c1922b1b7e07c2a (patch) | |
| tree | 2f49304edeb9de95eaaec47599b812c042195ecb /chiselFrontend | |
| parent | e98f9656591925464c42db70641d3cfa501f108a (diff) | |
moved macro def for toUInt() int to Data and made do_asUInt (the macro target) there as an abstract method.
This left clock without a do_asUInt, that has been implemented as an exception at this time
Diffstat (limited to 'chiselFrontend')
| -rw-r--r-- | chiselFrontend/src/main/scala/Chisel/Aggregate.scala | 6 | ||||
| -rw-r--r-- | chiselFrontend/src/main/scala/Chisel/Bits.scala | 12 | ||||
| -rw-r--r-- | chiselFrontend/src/main/scala/Chisel/Data.scala | 15 |
3 files changed, 14 insertions, 19 deletions
diff --git a/chiselFrontend/src/main/scala/Chisel/Aggregate.scala b/chiselFrontend/src/main/scala/Chisel/Aggregate.scala index 8af4e9e9..f573592d 100644 --- a/chiselFrontend/src/main/scala/Chisel/Aggregate.scala +++ b/chiselFrontend/src/main/scala/Chisel/Aggregate.scala @@ -167,9 +167,6 @@ sealed class Vec[T <: Data] private (gen: => T, val length: Int) private[Chisel] lazy val flatten: IndexedSeq[Bits] = (0 until length).flatMap(i => this.apply(i).flatten) - /** Reinterpret cast to UInt. */ - def asUInt(): UInt = macro SourceInfoTransform.noArg - def do_asUInt(implicit sourceInfo: SourceInfo): UInt = SeqUtils.do_asUInt(this.flatten).asUInt() for ((elt, i) <- self zipWithIndex) @@ -347,9 +344,6 @@ class Bundle extends Aggregate(NO_DIR) { private[Chisel] def addElt(name: String, elt: Data): Unit = namedElts += name -> elt - /** Reinterpret cast to UInt. */ - def asUInt(): UInt = macro SourceInfoTransform.noArg - def do_asUInt(implicit sourceInfo: SourceInfo): UInt = SeqUtils.do_asUInt(this.flatten).asUInt() private[Chisel] override def _onModuleClose: Unit = // scalastyle:ignore method.name diff --git a/chiselFrontend/src/main/scala/Chisel/Bits.scala b/chiselFrontend/src/main/scala/Chisel/Bits.scala index bc8cc8e2..ee6b1dee 100644 --- a/chiselFrontend/src/main/scala/Chisel/Bits.scala +++ b/chiselFrontend/src/main/scala/Chisel/Bits.scala @@ -210,15 +210,6 @@ sealed abstract class Bits(dirArg: Direction, width: Width, override val litArg: def do_asSInt(implicit sourceInfo: SourceInfo): SInt - /** Reinterpret cast to an UInt. - * - * @note value not guaranteed to be preserved: for example, a SInt of width - * 3 and value -1 (0b111) would become an UInt with value 7 - */ - final def asUInt(): UInt = macro SourceInfoTransform.noArg - - def do_asUInt(implicit sourceInfo: SourceInfo): UInt - /** Reinterpret cast to Bits. */ final def asBits(): Bits = macro SourceInfoTransform.noArg @@ -250,9 +241,6 @@ sealed abstract class Bits(dirArg: Direction, width: Width, override val litArg: pushOp(DefPrim(sourceInfo, UInt(w), ConcatOp, this.ref, that.ref)) } - @deprecated("Use asBits, which makes the reinterpret cast more explicit and actually returns Bits", "chisel3") - override def toBits: UInt = do_asUInt(DeprecatedSourceInfo) - override def do_fromBits(that: Bits)(implicit sourceInfo: SourceInfo): this.type = { val res = Wire(this, null).asInstanceOf[this.type] res := that diff --git a/chiselFrontend/src/main/scala/Chisel/Data.scala b/chiselFrontend/src/main/scala/Chisel/Data.scala index adb4ff7b..b953df71 100644 --- a/chiselFrontend/src/main/scala/Chisel/Data.scala +++ b/chiselFrontend/src/main/scala/Chisel/Data.scala @@ -120,7 +120,15 @@ abstract class Data(dirArg: Direction) extends HasId { @deprecated("Best alternative, .toUInt() or if Bits really needed, .toUInt().toBits()", "chisel3") def toBits(): UInt = SeqUtils.do_asUInt(this.flatten)(DeprecatedSourceInfo) -// def asBits(): Bits + /** Reinterpret cast to a UInt. + * + * @note value not guaranteed to be preserved: for example, a SInt of width + * 3 and value -1 (0b111) would become an UInt with value 7 + */ + final def asUInt(): UInt = macro SourceInfoTransform.noArg + + def do_asUInt(implicit sourceInfo: SourceInfo): UInt + } object Wire { @@ -160,4 +168,9 @@ sealed class Clock(dirArg: Direction) extends Element(dirArg, Width(1)) { case _: Clock => this connect that case _ => this badConnect that } + + def do_asUInt(implicit sourceInfo: SourceInfo): UInt = { + throwException("clock cannot be interpreted as UInt") + } + } |
