Fixed runtime error
This commit is contained in:
@@ -13,8 +13,9 @@ import freechips.rocketchip.rocket._
|
|||||||
import freechips.rocketchip.tile._
|
import freechips.rocketchip.tile._
|
||||||
|
|
||||||
import ariane.{ArianeTile, ArianeTilesKey, ArianeCrossingKey, ArianeTileParams}
|
import ariane.{ArianeTile, ArianeTilesKey, ArianeCrossingKey, ArianeTileParams}
|
||||||
|
import chipsalliance.rocketchip.config.Parameters
|
||||||
|
|
||||||
// Third-party core entries
|
// Base trait for all third-party core entries
|
||||||
sealed trait CoreEntryBase {
|
sealed trait CoreEntryBase {
|
||||||
def tileParamsLookup(implicit p: Parameters): Seq[TileParams]
|
def tileParamsLookup(implicit p: Parameters): Seq[TileParams]
|
||||||
def updateWithFilter(view: View, p: Any => Boolean): PartialFunction[Any, Map[String, Any] => Any]
|
def updateWithFilter(view: View, p: Any => Boolean): PartialFunction[Any, Map[String, Any] => Any]
|
||||||
@@ -22,6 +23,7 @@ sealed trait CoreEntryBase {
|
|||||||
(implicit p: Parameters, valName: ValName): Seq[(TileParams, RocketCrossingParams, BaseTile)]
|
(implicit p: Parameters, valName: ValName): Seq[(TileParams, RocketCrossingParams, BaseTile)]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Implementation of third-party core entries
|
||||||
class CoreEntry[TileParamsT <: TileParams with Product: TypeTag, TileT <: BaseTile : TypeTag](
|
class CoreEntry[TileParamsT <: TileParams with Product: TypeTag, TileT <: BaseTile : TypeTag](
|
||||||
tk: Field[Seq[TileParamsT]],
|
tk: Field[Seq[TileParamsT]],
|
||||||
ck: Field[Seq[RocketCrossingParams]]
|
ck: Field[Seq[RocketCrossingParams]]
|
||||||
@@ -32,9 +34,9 @@ class CoreEntry[TileParamsT <: TileParams with Product: TypeTag, TileT <: BaseTi
|
|||||||
private val paramCtr = paramClass.getConstructors.head
|
private val paramCtr = paramClass.getConstructors.head
|
||||||
|
|
||||||
private val tileClass = mirror.runtimeClass(typeOf[TileT].typeSymbol.asClass)
|
private val tileClass = mirror.runtimeClass(typeOf[TileT].typeSymbol.asClass)
|
||||||
private val tileCtr = paramClass.getConstructors.head
|
private val tileCtr = tileClass.getConstructors.head
|
||||||
|
|
||||||
// copy() function in
|
// Reflective version of copy()
|
||||||
def copyTileParam(tileParam: TileParamsT, properties: Map[String, Any]) = {
|
def copyTileParam(tileParam: TileParamsT, properties: Map[String, Any]) = {
|
||||||
val values = tileParam.productIterator.toList
|
val values = tileParam.productIterator.toList
|
||||||
val indexedProperties = properties map { case (key, value) => (paramNames(key), value) }
|
val indexedProperties = properties map { case (key, value) => (paramNames(key), value) }
|
||||||
@@ -58,7 +60,7 @@ class CoreEntry[TileParamsT <: TileParams with Product: TypeTag, TileT <: BaseTi
|
|||||||
case (param, crossing) => (
|
case (param, crossing) => (
|
||||||
param,
|
param,
|
||||||
crossing,
|
crossing,
|
||||||
LazyModule(tileCtr.newInstance(param, crossing, PriorityMuxHartIdFromSeq(tileParams), logicalTreeNode).asInstanceOf[TileT])
|
LazyModule(tileCtr.newInstance(param, crossing, PriorityMuxHartIdFromSeq(tileParams), logicalTreeNode, p.asInstanceOf[Parameters]).asInstanceOf[TileT])
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user