diff --git a/chisel3 b/chisel3 index e2765711..97871178 160000 --- a/chisel3 +++ b/chisel3 @@ -1 +1 @@ -Subproject commit e27657118ff5915b96f8e3a467d464245fe09769 +Subproject commit 97871178cb511063965f971b768f91c289c4776f diff --git a/firrtl b/firrtl index 57025111..b90fc784 160000 --- a/firrtl +++ b/firrtl @@ -1 +1 @@ -Subproject commit 57025111d3bc872da726e31e3e9a1e4895593266 +Subproject commit b90fc784a1819c1d7905910130a7da022214bc22 diff --git a/project/build.properties b/project/build.properties index 394cb75c..31334bbd 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.0.4 +sbt.version=1.1.1 diff --git a/sbt-launch.jar b/sbt-launch.jar index 09dec757..de00d065 100644 Binary files a/sbt-launch.jar and b/sbt-launch.jar differ diff --git a/src/main/scala/rocket/Frontend.scala b/src/main/scala/rocket/Frontend.scala index 4eae78ca..8a0fce7f 100644 --- a/src/main/scala/rocket/Frontend.scala +++ b/src/main/scala/rocket/Frontend.scala @@ -62,7 +62,7 @@ class Frontend(val icacheParams: ICacheParams, hartid: Int)(implicit p: Paramete val slaveNode = icache.slaveNode } -class FrontendBundle(outer: Frontend) extends CoreBundle()(outer.p) +class FrontendBundle(val outer: Frontend) extends CoreBundle()(outer.p) with HasExternallyDrivenTileConstants { val cpu = new FrontendIO().flip val ptw = new TLBPTWIO() diff --git a/src/main/scala/rocket/HellaCache.scala b/src/main/scala/rocket/HellaCache.scala index 17b53b73..dfd0a616 100644 --- a/src/main/scala/rocket/HellaCache.scala +++ b/src/main/scala/rocket/HellaCache.scala @@ -173,7 +173,7 @@ abstract class HellaCache(hartid: Int)(implicit p: Parameters) extends LazyModul val module: HellaCacheModule } -class HellaCacheBundle(outer: HellaCache)(implicit p: Parameters) extends CoreBundle()(p) { +class HellaCacheBundle(val outer: HellaCache)(implicit p: Parameters) extends CoreBundle()(p) { val hartid = UInt(INPUT, hartIdLen) val cpu = (new HellaCacheIO).flip val ptw = new TLBPTWIO() diff --git a/src/main/scala/rocket/ICache.scala b/src/main/scala/rocket/ICache.scala index ac2219e1..2b5b1e65 100644 --- a/src/main/scala/rocket/ICache.scala +++ b/src/main/scala/rocket/ICache.scala @@ -81,7 +81,7 @@ class ICachePerfEvents extends Bundle { val acquire = Bool() } -class ICacheBundle(outer: ICache) extends CoreBundle()(outer.p) { +class ICacheBundle(val outer: ICache) extends CoreBundle()(outer.p) { val hartid = UInt(INPUT, hartIdLen) val req = Decoupled(new ICacheReq).flip val s1_paddr = UInt(INPUT, paddrBits) // delayed one cycle w.r.t. req diff --git a/src/main/scala/tilelink/RegisterRouter.scala b/src/main/scala/tilelink/RegisterRouter.scala index 6b14adc1..c4b4d42c 100644 --- a/src/main/scala/tilelink/RegisterRouter.scala +++ b/src/main/scala/tilelink/RegisterRouter.scala @@ -143,7 +143,7 @@ class TLRegBundleBase(arg: TLRegBundleArg) extends Bundle implicit val p = arg.p } -class TLRegBundle[P](val params: P, arg: TLRegBundleArg)(implicit p: Parameters) extends TLRegBundleBase(arg) +class TLRegBundle[P](val params: P, val arg: TLRegBundleArg) extends TLRegBundleBase(arg) class TLRegModule[P, B <: TLRegBundleBase](val params: P, bundleBuilder: => B, router: TLRegisterRouterBase) extends LazyModuleImp(router) with HasRegMap diff --git a/src/main/scala/util/HeterogeneousBag.scala b/src/main/scala/util/HeterogeneousBag.scala index a48743ea..3f95928d 100644 --- a/src/main/scala/util/HeterogeneousBag.scala +++ b/src/main/scala/util/HeterogeneousBag.scala @@ -11,7 +11,7 @@ final case class HeterogeneousBag[T <: Data](elts: Seq[T]) extends Record with c def length = elts.length val elements = ListMap(elts.zipWithIndex.map { case (n,i) => (i.toString, n) }:_*) - override def cloneType: this.type = (new HeterogeneousBag(elts.map(_.cloneType))).asInstanceOf[this.type] + override def cloneType: this.type = (new HeterogeneousBag(elts.map(_.chiselCloneType))).asInstanceOf[this.type] // IndexedSeq has its own hashCode/equals that we must not use override def hashCode: Int = super[Record].hashCode diff --git a/src/main/scala/util/Misc.scala b/src/main/scala/util/Misc.scala index 0025f187..163a3013 100644 --- a/src/main/scala/util/Misc.scala +++ b/src/main/scala/util/Misc.scala @@ -8,19 +8,7 @@ import chisel3.experimental.{ChiselAnnotation, RawModule} import freechips.rocketchip.config.Parameters import scala.math._ -class ParameterizedBundle(implicit p: Parameters) extends Bundle { - override def cloneType = { - try { - this.getClass.getConstructors.head.newInstance(p).asInstanceOf[this.type] - } catch { - case e: java.lang.IllegalArgumentException => - throwException("Unable to use ParamaterizedBundle.cloneType on " + - this.getClass + ", probably because " + this.getClass + - "() takes more than one argument. Consider overriding " + - "cloneType() on " + this.getClass, e) - } - } -} +class ParameterizedBundle(implicit p: Parameters) extends Bundle // TODO: replace this with an implicit class when @chisel unprotects dontTouchPorts trait DontTouch { @@ -101,7 +89,7 @@ object ValidMux { apply(v1 +: v2.toSeq) } def apply[T <: Data](valids: Seq[ValidIO[T]]): ValidIO[T] = { - val out = Wire(Valid(valids.head.bits)) + val out = Wire(Valid(valids.head.bits.cloneType)) out.valid := valids.map(_.valid).reduce(_ || _) out.bits := MuxCase(valids.head.bits, valids.map(v => (v.valid -> v.bits)))