tilelink2: do not depend on obsolete TL1 configuration
This commit is contained in:
		| @@ -14,6 +14,11 @@ import uncore.converters._ | |||||||
| import rocket._ | import rocket._ | ||||||
| import util._ | import util._ | ||||||
|  |  | ||||||
|  | /** Widths of various points in the SoC */ | ||||||
|  | case class TLBusConfig(beatBytes: Int) | ||||||
|  | case object CBusConfig extends Field[TLBusConfig] | ||||||
|  | case object L1toL2Config extends Field[TLBusConfig] | ||||||
|  |  | ||||||
| /** Number of memory channels */ | /** Number of memory channels */ | ||||||
| case object NMemoryChannels extends Field[Int] | case object NMemoryChannels extends Field[Int] | ||||||
| /** Number of banks per memory channel */ | /** Number of banks per memory channel */ | ||||||
| @@ -25,6 +30,8 @@ case object BootROMFile extends Field[String] | |||||||
|  |  | ||||||
| trait HasCoreplexParameters { | trait HasCoreplexParameters { | ||||||
|   implicit val p: Parameters |   implicit val p: Parameters | ||||||
|  |   lazy val cbusConfig = p(CBusConfig) | ||||||
|  |   lazy val l1tol2Config = p(L1toL2Config) | ||||||
|   lazy val nBanksPerMemChannel = p(NBanksPerMemoryChannel) |   lazy val nBanksPerMemChannel = p(NBanksPerMemoryChannel) | ||||||
|   lazy val innerParams = p.alterPartial({ case TLId => "L1toL2" }) |   lazy val innerParams = p.alterPartial({ case TLId => "L1toL2" }) | ||||||
|   lazy val outerMemParams = p.alterPartial({ case TLId => "L2toMC" }) |   lazy val outerMemParams = p.alterPartial({ case TLId => "L2toMC" }) | ||||||
| @@ -51,11 +58,11 @@ trait CoreplexNetwork extends HasCoreplexParameters { | |||||||
|   val module: CoreplexNetworkModule |   val module: CoreplexNetworkModule | ||||||
|  |  | ||||||
|   val l1tol2 = LazyModule(new TLXbar) |   val l1tol2 = LazyModule(new TLXbar) | ||||||
|   val l1tol2_beatBytes = p(TLKey("L2toMMIO")).dataBitsPerBeat/8 |   val l1tol2_beatBytes = l1tol2Config.beatBytes | ||||||
|   val l1tol2_lineBytes = p(CacheBlockBytes) |   val l1tol2_lineBytes = p(CacheBlockBytes) | ||||||
|  |  | ||||||
|   val cbus = LazyModule(new TLXbar) |   val cbus = LazyModule(new TLXbar) | ||||||
|   val cbus_beatBytes = p(XLen)/8 |   val cbus_beatBytes = cbusConfig.beatBytes | ||||||
|   val cbus_lineBytes = l1tol2_lineBytes |   val cbus_lineBytes = l1tol2_lineBytes | ||||||
|  |  | ||||||
|   val intBar = LazyModule(new IntXbar) |   val intBar = LazyModule(new IntXbar) | ||||||
|   | |||||||
| @@ -92,6 +92,8 @@ class BaseCoreplexConfig extends Config ( | |||||||
|       case LNEndpoints => site(TLKey(site(TLId))).nManagers + site(TLKey(site(TLId))).nClients |       case LNEndpoints => site(TLKey(site(TLId))).nManagers + site(TLKey(site(TLId))).nClients | ||||||
|       case LNHeaderBits => log2Ceil(site(TLKey(site(TLId))).nManagers) + |       case LNHeaderBits => log2Ceil(site(TLKey(site(TLId))).nManagers) + | ||||||
|                              log2Up(site(TLKey(site(TLId))).nClients) |                              log2Up(site(TLKey(site(TLId))).nClients) | ||||||
|  |       case CBusConfig => TLBusConfig(beatBytes = site(XLen)/8) | ||||||
|  |       case L1toL2Config => TLBusConfig(beatBytes = site(XLen)/8) // increase for more PCIe bandwidth | ||||||
|       case TLKey("L1toL2") => { |       case TLKey("L1toL2") => { | ||||||
|         val useMEI = site(NTiles) <= 1 |         val useMEI = site(NTiles) <= 1 | ||||||
|         TileLinkParameters( |         TileLinkParameters( | ||||||
|   | |||||||
| @@ -49,8 +49,8 @@ trait TopNetwork extends HasPeripheryParameters { | |||||||
|   val intBus = LazyModule(new IntXbar) |   val intBus = LazyModule(new IntXbar) | ||||||
|  |  | ||||||
|   peripheryBus.node := |   peripheryBus.node := | ||||||
|     TLWidthWidget(p(SOCBusKey).beatBytes)( |     TLWidthWidget(socBusConfig.beatBytes)( | ||||||
|     TLAtomicAutomata(arithmetic = p(PeripheryBusKey).arithAMO)( |     TLAtomicAutomata(arithmetic = peripheryBusArithmetic)( | ||||||
|     socBus.node)) |     socBus.node)) | ||||||
|  |  | ||||||
|   var coreplexMem = Seq[TLOutwardNode]() |   var coreplexMem = Seq[TLOutwardNode]() | ||||||
|   | |||||||
| @@ -41,8 +41,9 @@ class BasePlatformConfig extends Config( | |||||||
|         case TLKey("MMIOtoEdge") => |         case TLKey("MMIOtoEdge") => | ||||||
|           site(TLKey("L2toMMIO")).copy(dataBeats = edgeDataBeats) |           site(TLKey("L2toMMIO")).copy(dataBeats = edgeDataBeats) | ||||||
|         case NExtTopInterrupts => 2 |         case NExtTopInterrupts => 2 | ||||||
|         case SOCBusKey => SOCBusConfig(beatBytes = site(TLKey("L2toMMIO")).dataBitsPerBeat/8) |         case SOCBusConfig => site(L1toL2Config) | ||||||
|         case PeripheryBusKey => PeripheryBusConfig(arithAMO = true, beatBytes = 4) |         case PeripheryBusConfig => TLBusConfig(beatBytes = 4) | ||||||
|  |         case PeripheryBusArithmetic => true | ||||||
|         // Note that PLIC asserts that this is > 0. |         // Note that PLIC asserts that this is > 0. | ||||||
|         case AsyncDebugBus => false |         case AsyncDebugBus => false | ||||||
|         case IncludeJtagDTM => false |         case IncludeJtagDTM => false | ||||||
| @@ -177,13 +178,13 @@ class WithJtagDTM extends Config ( | |||||||
|  |  | ||||||
| class WithNoPeripheryArithAMO extends Config ( | class WithNoPeripheryArithAMO extends Config ( | ||||||
|   (pname, site, here) => pname match { |   (pname, site, here) => pname match { | ||||||
|     case PeripheryBusKey => PeripheryBusConfig(arithAMO = false, beatBytes = 4) |     case PeripheryBusArithmetic => false | ||||||
|   } |   } | ||||||
| ) | ) | ||||||
|  |  | ||||||
| class With64BitPeriphery extends Config ( | class With64BitPeriphery extends Config ( | ||||||
|   (pname, site, here) => pname match { |   (pname, site, here) => pname match { | ||||||
|     case PeripheryBusKey => PeripheryBusConfig(arithAMO = true, beatBytes = 8) |     case PeripheryBusConfig => TLBusConfig(beatBytes = 8) | ||||||
|   } |   } | ||||||
| ) | ) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -46,11 +46,10 @@ case object NExtTopInterrupts extends Field[Int] | |||||||
| /** Source of RTC. First bundle is TopIO.extra, Second bundle is periphery.io.extra  **/ | /** Source of RTC. First bundle is TopIO.extra, Second bundle is periphery.io.extra  **/ | ||||||
| case object RTCPeriod extends Field[Int] | case object RTCPeriod extends Field[Int] | ||||||
| /* Specifies the periphery bus configuration */ | /* Specifies the periphery bus configuration */ | ||||||
| case class PeripheryBusConfig(arithAMO: Boolean, beatBytes: Int = 4) | case object PeripheryBusConfig extends Field[TLBusConfig] | ||||||
| case object PeripheryBusKey extends Field[PeripheryBusConfig] | case object PeripheryBusArithmetic extends Field[Boolean] | ||||||
| /* Specifies the SOC-bus configuration */ | /* Specifies the SOC-bus configuration */ | ||||||
| case class SOCBusConfig(beatBytes: Int = 4) | case object SOCBusConfig extends Field[TLBusConfig] | ||||||
| case object SOCBusKey extends Field[SOCBusConfig] |  | ||||||
|  |  | ||||||
| /* Specifies the data and id width at the chip boundary */ | /* Specifies the data and id width at the chip boundary */ | ||||||
| case object EdgeDataBits extends Field[Int] | case object EdgeDataBits extends Field[Int] | ||||||
| @@ -88,9 +87,10 @@ trait HasPeripheryParameters { | |||||||
|   lazy val nMemTLChannels  = if (tMemChannels == BusType.TL)  nMemChannels else 0 |   lazy val nMemTLChannels  = if (tMemChannels == BusType.TL)  nMemChannels else 0 | ||||||
|   lazy val edgeSlaveParams = p.alterPartial({ case TLId => "EdgetoSlave" }) |   lazy val edgeSlaveParams = p.alterPartial({ case TLId => "EdgetoSlave" }) | ||||||
|   lazy val edgeMemParams = p.alterPartial({ case TLId => "MCtoEdge" }) |   lazy val edgeMemParams = p.alterPartial({ case TLId => "MCtoEdge" }) | ||||||
|   lazy val peripheryBusConfig = p(PeripheryBusKey) |   lazy val peripheryBusConfig = p(PeripheryBusConfig) | ||||||
|   lazy val socBusConfig = p(SOCBusKey) |   lazy val socBusConfig = p(SOCBusConfig) | ||||||
|   lazy val cacheBlockBytes = p(CacheBlockBytes) |   lazy val cacheBlockBytes = p(CacheBlockBytes) | ||||||
|  |   lazy val peripheryBusArithmetic = p(PeripheryBusArithmetic) | ||||||
| } | } | ||||||
|  |  | ||||||
| ///// | ///// | ||||||
|   | |||||||
| @@ -55,6 +55,7 @@ class TLXbar(policy: TLArbiter.Policy = TLArbiter.lowestIndexFirst) extends Lazy | |||||||
|         minLatency = seq.map(_.minLatency).min, |         minLatency = seq.map(_.minLatency).min, | ||||||
|         endSinkId = outputIdRanges.map(_.end).max, |         endSinkId = outputIdRanges.map(_.end).max, | ||||||
|         managers = ManagerUnification(seq.flatMap { port => |         managers = ManagerUnification(seq.flatMap { port => | ||||||
|  |           // println(s"${port.managers.map(_.name)} ${port.beatBytes} vs ${seq(0).managers.map(_.name)} ${seq(0).beatBytes}") | ||||||
|           require (port.beatBytes == seq(0).beatBytes) |           require (port.beatBytes == seq(0).beatBytes) | ||||||
|           val fifoIdMapper = fifoIdFactory() |           val fifoIdMapper = fifoIdFactory() | ||||||
|           port.managers map { manager => manager.copy( |           port.managers map { manager => manager.copy( | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user