summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/scala/chisel3/compatibility.scala13
-rw-r--r--src/main/scala/chisel3/package.scala58
-rw-r--r--src/main/scala/chisel3/util/BitPat.scala10
-rw-r--r--src/main/scala/chisel3/util/Decoupled.scala13
-rw-r--r--src/main/scala/chisel3/util/Enum.scala2
-rw-r--r--src/main/scala/chisel3/util/Math.scala7
-rw-r--r--src/main/scala/chisel3/util/Valid.scala5
7 files changed, 84 insertions, 24 deletions
diff --git a/src/main/scala/chisel3/compatibility.scala b/src/main/scala/chisel3/compatibility.scala
index f299a287..d80ff40b 100644
--- a/src/main/scala/chisel3/compatibility.scala
+++ b/src/main/scala/chisel3/compatibility.scala
@@ -263,14 +263,19 @@ package object Chisel { // scalastyle:ignore package.object.name
type SeqMem[T <: Data] = chisel3.core.SyncReadMem[T]
import chisel3.core.CompileOptions
- abstract class CompatibilityModule(
- override_clock: Option[Clock]=None, override_reset: Option[Bool]=None)
- (implicit moduleCompileOptions: CompileOptions)
- extends chisel3.core.LegacyModule(override_clock, override_reset) {
+ abstract class CompatibilityModule(implicit moduleCompileOptions: CompileOptions)
+ extends chisel3.core.LegacyModule {
// This class auto-wraps the Module IO with IO(...), allowing legacy code (where IO(...) wasn't
// required) to build.
// Also provides the clock / reset constructors, which were used before withClock happened.
+ // Provide a non-deprecated constructor
+ def this(override_clock: Option[Clock]=None, override_reset: Option[Bool]=None)
+ (implicit moduleCompileOptions: CompileOptions) = {
+ this()
+ this.override_clock = override_clock
+ this.override_reset = override_reset
+ }
def this(_clock: Clock)(implicit moduleCompileOptions: CompileOptions) =
this(Option(_clock), None)(moduleCompileOptions)
def this(_reset: Bool)(implicit moduleCompileOptions: CompileOptions) =
diff --git a/src/main/scala/chisel3/package.scala b/src/main/scala/chisel3/package.scala
index a502ef2d..973ad026 100644
--- a/src/main/scala/chisel3/package.scala
+++ b/src/main/scala/chisel3/package.scala
@@ -13,6 +13,7 @@ package object chisel3 { // scalastyle:ignore package.object.name
import util.BitPat
import chisel3.util._
+ import chisel3.internal.chiselRuntimeDeprecated
import chisel3.internal.firrtl.Port
import chisel3.core.CompileOptions
@@ -25,14 +26,17 @@ package object chisel3 { // scalastyle:ignore package.object.name
object Wire extends chisel3.core.WireFactory {
import chisel3.core.CompileOptions
+ @chiselRuntimeDeprecated
@deprecated("Wire(init=init) is deprecated, use WireInit(init) instead", "chisel3")
def apply[T <: Data](dummy: Int = 0, init: T)(implicit compileOptions: CompileOptions): T =
chisel3.core.WireInit(init)
+ @chiselRuntimeDeprecated
@deprecated("Wire(t, init) is deprecated, use WireInit(t, init) instead", "chisel3")
def apply[T <: Data](t: T, init: T)(implicit compileOptions: CompileOptions): T =
chisel3.core.WireInit(t, init)
+ @chiselRuntimeDeprecated
@deprecated("Wire(t, init) is deprecated, use WireInit(t, init) instead", "chisel3")
def apply[T <: Data](t: T, init: DontCare.type)(implicit compileOptions: CompileOptions): T =
chisel3.core.WireInit(t, init)
@@ -43,10 +47,15 @@ package object chisel3 { // scalastyle:ignore package.object.name
type Clock = chisel3.core.Clock
implicit class AddDirectionToData[T<:Data](val target: T) extends AnyVal {
+ @chiselRuntimeDeprecated
@deprecated("Input(Data) should be used over Data.asInput", "chisel3")
def asInput: T = Input(target)
+
+ @chiselRuntimeDeprecated
@deprecated("Output(Data) should be used over Data.asOutput", "chisel3")
def asOutput: T = Output(target)
+
+ @chiselRuntimeDeprecated
@deprecated("Flipped(Data) should be used over Data.flip", "chisel3")
def flip(): T = Flipped(target)
}
@@ -55,6 +64,7 @@ package object chisel3 { // scalastyle:ignore package.object.name
import chisel3.core.CompileOptions
import chisel3.internal.sourceinfo.SourceInfo
+ @chiselRuntimeDeprecated
@deprecated("fromBits is deprecated, use asTypeOf instead", "chisel3")
def fromBits(that: Bits)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): T = {
that.asTypeOf(data)
@@ -62,6 +72,7 @@ package object chisel3 { // scalastyle:ignore package.object.name
}
implicit class cloneTypeable[T <: Data](val target: T) extends AnyVal {
+ @chiselRuntimeDeprecated
@deprecated("chiselCloneType is deprecated, use chiselTypeOf(...) to get the Chisel Type of a hardware object", "chisel3")
def chiselCloneType: T = {
target.cloneTypeFull.asInstanceOf[T]
@@ -74,27 +85,32 @@ package object chisel3 { // scalastyle:ignore package.object.name
import chisel3.core.CompileOptions
import chisel3.internal.sourceinfo._
+ @chiselRuntimeDeprecated
@deprecated("Vec argument order should be size, t; this will be removed by the official release", "chisel3")
def apply[T <: Data](gen: T, n: Int)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Vec[T] =
apply(n, gen)
+ @chiselRuntimeDeprecated
@deprecated("Vec.fill(n)(gen) is deprecated, use VecInit(Seq.fill(n)(gen)) instead", "chisel3")
def fill[T <: Data](n: Int)(gen: => T)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Vec[T] =
apply(Seq.fill(n)(gen))
- @deprecated("Vec(elts) is deprecated, use VecInit(elts) instead", "chisel3")
def apply[T <: Data](elts: Seq[T]): Vec[T] = macro VecTransform.apply_elts
+ @chiselRuntimeDeprecated
+ @deprecated("Vec(elts) is deprecated, use VecInit(elts) instead", "chisel3")
def do_apply[T <: Data](elts: Seq[T])(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Vec[T] =
chisel3.core.VecInit(elts)
- @deprecated("Vec(elt0, ...) is deprecated, use VecInit(elt0, ...) instead", "chisel3")
def apply[T <: Data](elt0: T, elts: T*): Vec[T] = macro VecTransform.apply_elt0
+ @chiselRuntimeDeprecated
+ @deprecated("Vec(elt0, ...) is deprecated, use VecInit(elt0, ...) instead", "chisel3")
def do_apply[T <: Data](elt0: T, elts: T*)
(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Vec[T] =
chisel3.core.VecInit(elt0 +: elts.toSeq)
- @deprecated("Vec.tabulate(n)(gen) is deprecated, use VecInit.tabulate(n)(gen) instead", "chisel3")
def tabulate[T <: Data](n: Int)(gen: (Int) => T): Vec[T] = macro VecTransform.tabulate
+ @chiselRuntimeDeprecated
+ @deprecated("Vec.tabulate(n)(gen) is deprecated, use VecInit.tabulate(n)(gen) instead", "chisel3")
def do_tabulate[T <: Data](n: Int)(gen: (Int) => T)
(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Vec[T] =
chisel3.core.VecInit.tabulate(n)(gen)
@@ -132,29 +148,37 @@ package object chisel3 { // scalastyle:ignore package.object.name
*/
trait UIntFactory extends chisel3.core.UIntFactory {
/** Create a UInt literal with inferred width. */
+ @chiselRuntimeDeprecated
@deprecated("use n.U", "chisel3, will be removed by end of 2017")
def apply(n: String): UInt = n.asUInt
+
/** Create a UInt literal with fixed width. */
+ @chiselRuntimeDeprecated
@deprecated("use n.U(width.W)", "chisel3, will be removed by end of 2017")
def apply(n: String, width: Int): UInt = n.asUInt(width.W)
/** Create a UInt literal with specified width. */
+ @chiselRuntimeDeprecated
@deprecated("use value.U(width)", "chisel3, will be removed by end of 2017")
def apply(value: BigInt, width: Width): UInt = value.asUInt(width)
/** Create a UInt literal with fixed width. */
+ @chiselRuntimeDeprecated
@deprecated("use value.U(width.W)", "chisel3, will be removed by end of 2017")
def apply(value: BigInt, width: Int): UInt = value.asUInt(width.W)
/** Create a UInt literal with inferred width.- compatibility with Chisel2. */
+ @chiselRuntimeDeprecated
@deprecated("use value.U", "chisel3, will be removed by end of 2017")
def apply(value: BigInt): UInt = value.asUInt
/** Create a UInt with a specified width */
+ @chiselRuntimeDeprecated
@deprecated("use UInt(width.W)", "chisel3, will be removed by end of 2017")
def width(width: Int): UInt = apply(width.W)
/** Create a UInt port with specified width. */
+ @chiselRuntimeDeprecated
@deprecated("use UInt(width)", "chisel3, will be removed by end of 2017")
def width(width: Width): UInt = apply(width)
}
@@ -164,26 +188,35 @@ package object chisel3 { // scalastyle:ignore package.object.name
*/
trait SIntFactory extends chisel3.core.SIntFactory {
/** Create a SInt type or port with fixed width. */
+ @chiselRuntimeDeprecated
@deprecated("use SInt(width.W)", "chisel3, will be removed by end of 2017")
def width(width: Int): SInt = apply(width.W)
+
/** Create an SInt type with specified width. */
+ @chiselRuntimeDeprecated
@deprecated("use SInt(width)", "chisel3, will be removed by end of 2017")
def width(width: Width): SInt = apply(width)
/** Create an SInt literal with inferred width. */
+ @chiselRuntimeDeprecated
@deprecated("use value.S", "chisel3, will be removed by end of 2017")
def apply(value: BigInt): SInt = value.asSInt
+
/** Create an SInt literal with fixed width. */
+ @chiselRuntimeDeprecated
@deprecated("use value.S(width.W)", "chisel3, will be removed by end of 2017")
def apply(value: BigInt, width: Int): SInt = value.asSInt(width.W)
/** Create an SInt literal with specified width. */
+ @chiselRuntimeDeprecated
@deprecated("use value.S(width)", "chisel3, will be removed by end of 2017")
def apply(value: BigInt, width: Width): SInt = value.asSInt(width)
+ @chiselRuntimeDeprecated
@deprecated("use value.S", "chisel3, will be removed by end of 2017")
def Lit(value: BigInt): SInt = value.asSInt // scalastyle:ignore method.name
+ @chiselRuntimeDeprecated
@deprecated("use value.S(width)", "chisel3, will be removed by end of 2017")
def Lit(value: BigInt, width: Int): SInt = value.asSInt(width.W) // scalastyle:ignore method.name
}
@@ -194,6 +227,7 @@ package object chisel3 { // scalastyle:ignore package.object.name
trait BoolFactory extends chisel3.core.BoolFactory {
/** Creates Bool literal.
*/
+ @chiselRuntimeDeprecated
@deprecated("use x.B", "chisel3, will be removed by end of 2017")
def apply(x: Boolean): Bool = x.B
}
@@ -213,13 +247,14 @@ package object chisel3 { // scalastyle:ignore package.object.name
val Mem = chisel3.core.Mem
type MemBase[T <: Data] = chisel3.core.MemBase[T]
type Mem[T <: Data] = chisel3.core.Mem[T]
+ val SyncReadMem = chisel3.core.SyncReadMem
+ type SyncReadMem[T <: Data] = chisel3.core.SyncReadMem[T]
+
@deprecated("Use 'SyncReadMem'", "chisel3")
val SeqMem = chisel3.core.SyncReadMem
@deprecated("Use 'SyncReadMem'", "chisel3")
type SeqMem[T <: Data] = chisel3.core.SyncReadMem[T]
- val SyncReadMem = chisel3.core.SyncReadMem
- type SyncReadMem[T <: Data] = chisel3.core.SyncReadMem[T]
-
+
val Module = chisel3.core.Module
type Module = chisel3.core.LegacyModule
@@ -237,6 +272,7 @@ package object chisel3 { // scalastyle:ignore package.object.name
def apply[T <: Data](t: T)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): T =
chisel3.core.Reg(t)
+ @chiselRuntimeDeprecated
@deprecated("Use Reg(t), RegNext(next, [init]) or RegInit([t], init) instead", "chisel3")
def apply[T <: Data](t: T = null, next: T = null, init: T = null)
(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): T = {
@@ -333,16 +369,18 @@ package object chisel3 { // scalastyle:ignore package.object.name
import internal.sourceinfo.{SourceInfo, SourceInfoTransform}
final def === (that: BitPat): Bool = macro SourceInfoTransform.thatArg
- @deprecated("Use '=/=', which avoids potential precedence problems", "chisel3")
- final def != (that: BitPat): Bool = macro SourceInfoTransform.thatArg
final def =/= (that: BitPat): Bool = macro SourceInfoTransform.thatArg
def do_=== (that: BitPat) // scalastyle:ignore method.name
(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = that === x
- def do_!= (that: BitPat) // scalastyle:ignore method.name
- (implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = that != x
def do_=/= (that: BitPat) // scalastyle:ignore method.name
(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = that =/= x
+
+ final def != (that: BitPat): Bool = macro SourceInfoTransform.thatArg
+ @chiselRuntimeDeprecated
+ @deprecated("Use '=/=', which avoids potential precedence problems", "chisel3")
+ def do_!= (that: BitPat) // scalastyle:ignore method.name
+ (implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = that != x
}
diff --git a/src/main/scala/chisel3/util/BitPat.scala b/src/main/scala/chisel3/util/BitPat.scala
index c962813d..8d6565fb 100644
--- a/src/main/scala/chisel3/util/BitPat.scala
+++ b/src/main/scala/chisel3/util/BitPat.scala
@@ -5,6 +5,7 @@ package chisel3.util
import scala.language.experimental.macros
import chisel3._
import chisel3.core.CompileOptions
+import chisel3.internal.chiselRuntimeDeprecated
import chisel3.internal.sourceinfo.{SourceInfo, SourceInfoTransform}
object BitPat {
@@ -53,6 +54,7 @@ object BitPat {
*/
def dontCare(width: Int): BitPat = BitPat("b" + ("?" * width))
+ @chiselRuntimeDeprecated
@deprecated("Use BitPat.dontCare", "chisel3")
def DC(width: Int): BitPat = dontCare(width) // scalastyle:ignore method.name
@@ -91,9 +93,7 @@ sealed class BitPat(val value: BigInt, val mask: BigInt, width: Int) {
def getWidth: Int = width
def === (that: UInt): Bool = macro SourceInfoTransform.thatArg
def =/= (that: UInt): Bool = macro SourceInfoTransform.thatArg
- @deprecated("Use '=/=', which avoids potential precedence problems", "chisel3")
- def != (that: UInt): Bool = macro SourceInfoTransform.thatArg
-
+
def do_=== (that: UInt) // scalastyle:ignore method.name
(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = {
value.asUInt === (that & mask.asUInt)
@@ -102,6 +102,10 @@ sealed class BitPat(val value: BigInt, val mask: BigInt, width: Int) {
(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = {
!(this === that)
}
+
+ def != (that: UInt): Bool = macro SourceInfoTransform.thatArg
+ @chiselRuntimeDeprecated
+ @deprecated("Use '=/=', which avoids potential precedence problems", "chisel3")
def do_!= (that: UInt) // scalastyle:ignore method.name
(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = {
this =/= that
diff --git a/src/main/scala/chisel3/util/Decoupled.scala b/src/main/scala/chisel3/util/Decoupled.scala
index d35046af..bcd65a1b 100644
--- a/src/main/scala/chisel3/util/Decoupled.scala
+++ b/src/main/scala/chisel3/util/Decoupled.scala
@@ -19,9 +19,16 @@ import chisel3.internal.naming._ // can't use chisel3_ version because of compi
*/
abstract class ReadyValidIO[+T <: Data](gen: T) extends Bundle
{
+ // Compatibility hack for rocket-chip
+ private val genType = (DataMirror.internal.isSynthesizable(gen), chisel3.internal.Builder.currentModule) match {
+ case (true, Some(module: chisel3.core.ImplicitModule))
+ if !module.compileOptions.declaredTypeMustBeUnbound => chiselTypeOf(gen)
+ case _ => gen
+ }
+
val ready = Input(Bool())
val valid = Output(Bool())
- val bits = Output(gen.chiselCloneType)
+ val bits = Output(genType)
}
object ReadyValidIO {
@@ -200,7 +207,7 @@ class Queue[T <: Data](gen: T,
gen
} else {
if (DataMirror.internal.isSynthesizable(gen)) {
- gen.chiselCloneType
+ chiselTypeOf(gen)
} else {
gen
}
@@ -226,7 +233,7 @@ class Queue[T <: Data](gen: T,
when (do_deq) {
deq_ptr.inc()
}
- when (do_enq != do_deq) {
+ when (do_enq =/= do_deq) {
maybe_full := do_enq
}
diff --git a/src/main/scala/chisel3/util/Enum.scala b/src/main/scala/chisel3/util/Enum.scala
index 2fdd1a92..92de56ea 100644
--- a/src/main/scala/chisel3/util/Enum.scala
+++ b/src/main/scala/chisel3/util/Enum.scala
@@ -6,6 +6,7 @@
package chisel3.util
import chisel3._
+import chisel3.internal.chiselRuntimeDeprecated
/** Defines a set of unique UInt constants
*
@@ -39,6 +40,7 @@ trait Enum {
}
object Enum extends Enum {
+ @chiselRuntimeDeprecated
@deprecated("use Enum(n)", "chisel3, will be removed soon")
def apply[T <: Bits](nodeType: T, n: Int): List[T] = {
require(nodeType.isInstanceOf[UInt], "Only UInt supported for enums")
diff --git a/src/main/scala/chisel3/util/Math.scala b/src/main/scala/chisel3/util/Math.scala
index cf75e756..3884ea21 100644
--- a/src/main/scala/chisel3/util/Math.scala
+++ b/src/main/scala/chisel3/util/Math.scala
@@ -6,10 +6,12 @@
package chisel3.util
import chisel3._
+import chisel3.internal.chiselRuntimeDeprecated
/** Compute the log2 rounded up with min value of 1 */
-@deprecated("Use log2Ceil instead", "chisel3")
object log2Up {
+ @chiselRuntimeDeprecated
+ @deprecated("Use log2Ceil instead", "chisel3")
def apply(in: BigInt): Int = Chisel.log2Up(in)
}
@@ -23,8 +25,9 @@ object log2Ceil {
}
/** Compute the log2 rounded down with min value of 1 */
-@deprecated("Use log2Floor instead", "chisel3")
object log2Down {
+ @chiselRuntimeDeprecated
+ @deprecated("Use log2Floor instead", "chisel3")
def apply(in: BigInt): Int = Chisel.log2Down(in)
}
diff --git a/src/main/scala/chisel3/util/Valid.scala b/src/main/scala/chisel3/util/Valid.scala
index 95f0dcea..67a1a362 100644
--- a/src/main/scala/chisel3/util/Valid.scala
+++ b/src/main/scala/chisel3/util/Valid.scala
@@ -7,13 +7,14 @@ package chisel3.util
import chisel3._
import chisel3.core.CompileOptions
+import chisel3.experimental.DataMirror
import chisel3.internal.naming.chiselName // can't use chisel3_ version because of compile order
/** An Bundle containing data and a signal determining if it is valid */
class Valid[+T <: Data](gen: T) extends Bundle
{
val valid = Output(Bool())
- val bits = Output(gen.chiselCloneType)
+ val bits = Output(gen)
def fire(dummy: Int = 0): Bool = valid
override def cloneType: this.type = Valid(gen).asInstanceOf[this.type]
}
@@ -39,7 +40,7 @@ object Pipe
@chiselName
def apply[T <: Data](enqValid: Bool, enqBits: T, latency: Int)(implicit compileOptions: CompileOptions): Valid[T] = {
if (latency == 0) {
- val out = Wire(Valid(enqBits))
+ val out = Wire(Valid(chiselTypeOf(enqBits)))
out.valid := enqValid
out.bits := enqBits
out