rocketchip: remove GlobalAddrMap completely
This commit is contained in:
parent
5fe107bb07
commit
e8be365b5d
@ -104,6 +104,19 @@ trait CoreplexNetworkModule extends HasCoreplexParameters {
|
||||
val io: CoreplexNetworkBundle
|
||||
|
||||
implicit val p = outer.p
|
||||
|
||||
{
|
||||
println("\nGenerated Address Map")
|
||||
for (manager <- outer.l1tol2.node.edgesIn(0).manager.managers) {
|
||||
val prot = (if (manager.supportsGet) "R" else "") +
|
||||
(if (manager.supportsPutFull) "W" else "") +
|
||||
(if (manager.executable) "X" else "") +
|
||||
(if (manager.supportsAcquire) " [C]" else "")
|
||||
manager.address.foreach { a =>
|
||||
println(f"\t${manager.name}%s ${a.base}%x - ${a.base+a.mask+1}%x, $prot")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
trait BankedL2CoherenceManagers extends CoreplexNetwork {
|
||||
|
@ -48,25 +48,14 @@ trait CoreplexRISCVPlatformModule extends CoreplexNetworkModule {
|
||||
val rtcLast = Reg(init = Bool(false), next=rtcSync)
|
||||
outer.clint.module.io.rtcTick := Reg(init = Bool(false), next=(rtcSync & (~rtcLast)))
|
||||
|
||||
println("\nGenerated Address Map")
|
||||
for (entry <- p(rocketchip.GlobalAddrMap).flatten) {
|
||||
val name = entry.name
|
||||
val start = entry.region.start
|
||||
val end = entry.region.start + entry.region.size - 1
|
||||
val prot = entry.region.attr.prot
|
||||
val protStr = (if ((prot & AddrMapProt.R) > 0) "R" else "") +
|
||||
(if ((prot & AddrMapProt.W) > 0) "W" else "") +
|
||||
(if ((prot & AddrMapProt.X) > 0) "X" else "")
|
||||
val cacheable = if (entry.region.attr.cacheable) " [C]" else ""
|
||||
println(f"\t$name%s $start%x - $end%x, $protStr$cacheable")
|
||||
}
|
||||
{
|
||||
val managers = outer.l1tol2.node.edgesIn(0).manager.managers
|
||||
|
||||
// Create and export the ConfigString
|
||||
val managers = outer.l1tol2.node.edgesIn(0).manager.managers
|
||||
val configString = rocketchip.GenerateConfigString(p, outer.clint, outer.plic, managers)
|
||||
// Allow something else to have override the config string
|
||||
if (!ConfigStringOutput.contents.isDefined) {
|
||||
ConfigStringOutput.contents = Some(configString)
|
||||
// Allow something else to have override the config string
|
||||
if (!ConfigStringOutput.contents.isDefined) {
|
||||
ConfigStringOutput.contents = Some(rocketchip.GenerateConfigString(p, outer.clint, outer.plic, managers))
|
||||
}
|
||||
|
||||
println(s"\nGenerated Configuration String\n${ConfigStringOutput.contents.get}")
|
||||
}
|
||||
println(s"\nGenerated Configuration String\n${ConfigStringOutput.contents.get}")
|
||||
}
|
||||
|
@ -8,13 +8,6 @@ import scala.collection.mutable.HashMap
|
||||
|
||||
case object PAddrBits extends Field[Int]
|
||||
|
||||
trait HasAddrMapParameters {
|
||||
implicit val p: Parameters
|
||||
|
||||
val paddrBits = p(PAddrBits)
|
||||
def addrMap = p(rocketchip.GlobalAddrMap)
|
||||
}
|
||||
|
||||
case class MemAttr(prot: Int, cacheable: Boolean = false)
|
||||
|
||||
sealed abstract class MemRegion {
|
||||
|
@ -13,18 +13,11 @@ import util._
|
||||
import rocket._
|
||||
import coreplex._
|
||||
|
||||
// the following parameters will be refactored properly with TL2
|
||||
case object GlobalAddrMap extends Field[AddrMap]
|
||||
/** Enable or disable monitoring of Diplomatic buses */
|
||||
case object TLEmitMonitors extends Field[Boolean]
|
||||
|
||||
abstract class BareTop[+C <: BaseCoreplex](_coreplex: Parameters => C)(implicit val p: Parameters) extends LazyModule {
|
||||
// Fill in the TL1 legacy parameters; remove these once rocket/groundtest/unittest are TL2
|
||||
lazy val legacyAddrMap = GenerateGlobalAddrMap(p, coreplex.l1tol2.node.edgesIn(0).manager.managers)
|
||||
val coreplex : C = LazyModule(_coreplex(p.alterPartial {
|
||||
case GlobalAddrMap => legacyAddrMap
|
||||
}))
|
||||
|
||||
val coreplex = LazyModule(_coreplex(p))
|
||||
TopModule.contents = Some(this)
|
||||
}
|
||||
|
||||
|
@ -52,36 +52,6 @@ class GlobalVariable[T] {
|
||||
def get: T = { require(assigned); variable }
|
||||
}
|
||||
|
||||
object GenerateGlobalAddrMap {
|
||||
def apply(p: Parameters, peripheryManagers: Seq[TLManagerParameters]) = {
|
||||
val tl2Devices = peripheryManagers.map { manager =>
|
||||
val cacheable = manager.regionType match {
|
||||
case RegionType.CACHED => true
|
||||
case RegionType.TRACKED => true
|
||||
case _ => false
|
||||
}
|
||||
val attr = MemAttr(
|
||||
(if (manager.supportsGet) AddrMapProt.R else 0) |
|
||||
(if (manager.supportsPutFull) AddrMapProt.W else 0) |
|
||||
(if (manager.executable) AddrMapProt.X else 0), cacheable)
|
||||
val multi = manager.address.size > 1
|
||||
manager.address.zipWithIndex.map { case (address, i) =>
|
||||
require (address.contiguous) // TL1 needs this
|
||||
val name = manager.name + (if (multi) ".%d".format(i) else "")
|
||||
AddrMapEntry(name, MemRange(address.base, address.mask+1, attr))
|
||||
}
|
||||
}.flatten
|
||||
|
||||
val uniquelyNamedTL2Devices =
|
||||
tl2Devices.groupBy(_.name).values.map(_.zipWithIndex.map {
|
||||
case (e, i) => if (i == 0) e else e.copy(name = e.name + "_" + i)
|
||||
}).flatten.toList
|
||||
|
||||
val tl2 = AddrMapEntry("TL2", new AddrMap(uniquelyNamedTL2Devices, collapse = true))
|
||||
AddrMap(tl2)
|
||||
}
|
||||
}
|
||||
|
||||
object GenerateConfigString {
|
||||
def apply(p: Parameters, clint: CoreplexLocalInterrupter, plic: TLPLIC, peripheryManagers: Seq[TLManagerParameters]) = {
|
||||
val c = CoreplexParameters()(p)
|
||||
|
Loading…
Reference in New Issue
Block a user