rocketchip: include an socBus between l1tol2 and periphery (#415)
Sometimes we have high performance devices that go inbetween.
This commit is contained in:
		
				
					committed by
					
						
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							a5ac106bb8
						
					
				
				
					commit
					7dc97674d6
				
			@@ -31,9 +31,10 @@ abstract class BaseTop(q: Parameters) extends LazyModule {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  TLImp.emitMonitors = q(TLEmitMonitors)
 | 
					  TLImp.emitMonitors = q(TLEmitMonitors)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Add a peripheral bus
 | 
					  // Add a SoC and peripheral bus
 | 
				
			||||||
 | 
					  val socBus = LazyModule(new TLXbar)
 | 
				
			||||||
  val peripheryBus = LazyModule(new TLXbar)
 | 
					  val peripheryBus = LazyModule(new TLXbar)
 | 
				
			||||||
  lazy val peripheryManagers = peripheryBus.node.edgesIn(0).manager.managers
 | 
					  lazy val peripheryManagers = socBus.node.edgesIn(0).manager.managers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  lazy val c = CoreplexConfig(
 | 
					  lazy val c = CoreplexConfig(
 | 
				
			||||||
    nTiles = q(NTiles),
 | 
					    nTiles = q(NTiles),
 | 
				
			||||||
@@ -54,11 +55,15 @@ abstract class BaseTop(q: Parameters) extends LazyModule {
 | 
				
			|||||||
  val legacy = LazyModule(new TLLegacy()(p.alterPartial({ case TLId => "L2toMMIO" })))
 | 
					  val legacy = LazyModule(new TLLegacy()(p.alterPartial({ case TLId => "L2toMMIO" })))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  peripheryBus.node :=
 | 
					  peripheryBus.node :=
 | 
				
			||||||
    TLWidthWidget(legacy.tlDataBytes)(
 | 
					    TLWidthWidget(p(SOCBusKey).beatBytes)(
 | 
				
			||||||
    TLBuffer()(
 | 
					    TLBuffer()(
 | 
				
			||||||
    TLAtomicAutomata(arithmetic = p(PeripheryBusKey).arithAMO)(
 | 
					    TLAtomicAutomata(arithmetic = p(PeripheryBusKey).arithAMO)(
 | 
				
			||||||
 | 
					    socBus.node)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  socBus.node :=
 | 
				
			||||||
 | 
					    TLWidthWidget(legacy.tlDataBytes)(
 | 
				
			||||||
    TLHintHandler()(
 | 
					    TLHintHandler()(
 | 
				
			||||||
    legacy.node))))
 | 
					    legacy.node))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  TopModule.contents = Some(this)
 | 
					  TopModule.contents = Some(this)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,6 +43,7 @@ class BasePlatformConfig extends Config(
 | 
				
			|||||||
        case BuildCoreplex =>
 | 
					        case BuildCoreplex =>
 | 
				
			||||||
          (c: CoreplexConfig, p: Parameters) => LazyModule(new DefaultCoreplex(c)(p)).module
 | 
					          (c: CoreplexConfig, p: Parameters) => LazyModule(new DefaultCoreplex(c)(p)).module
 | 
				
			||||||
        case NExtTopInterrupts => 2
 | 
					        case NExtTopInterrupts => 2
 | 
				
			||||||
 | 
					        case SOCBusKey => SOCBusConfig(beatBytes = site(TLKey("L2toMMIO")).dataBitsPerBeat/8)
 | 
				
			||||||
        case PeripheryBusKey => PeripheryBusConfig(arithAMO = true, beatBytes = 4)
 | 
					        case PeripheryBusKey => PeripheryBusConfig(arithAMO = true, beatBytes = 4)
 | 
				
			||||||
        // Note that PLIC asserts that this is > 0.
 | 
					        // Note that PLIC asserts that this is > 0.
 | 
				
			||||||
        case AsyncDebugBus => false
 | 
					        case AsyncDebugBus => false
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,6 +51,9 @@ 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 class PeripheryBusConfig(arithAMO: Boolean, beatBytes: Int = 4)
 | 
				
			||||||
case object PeripheryBusKey extends Field[PeripheryBusConfig]
 | 
					case object PeripheryBusKey extends Field[PeripheryBusConfig]
 | 
				
			||||||
 | 
					/* Specifies the SOC-bus configuration */
 | 
				
			||||||
 | 
					case class SOCBusConfig(beatBytes: Int = 4)
 | 
				
			||||||
 | 
					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]
 | 
				
			||||||
@@ -91,6 +94,7 @@ trait HasPeripheryParameters {
 | 
				
			|||||||
  lazy val edgeMemParams = p.alterPartial({ case TLId => "MCtoEdge" })
 | 
					  lazy val edgeMemParams = p.alterPartial({ case TLId => "MCtoEdge" })
 | 
				
			||||||
  lazy val edgeMMIOParams = p.alterPartial({ case TLId => "MMIOtoEdge" })
 | 
					  lazy val edgeMMIOParams = p.alterPartial({ case TLId => "MMIOtoEdge" })
 | 
				
			||||||
  lazy val peripheryBusConfig = p(PeripheryBusKey)
 | 
					  lazy val peripheryBusConfig = p(PeripheryBusKey)
 | 
				
			||||||
 | 
					  lazy val socBusConfig = p(SOCBusKey)
 | 
				
			||||||
  lazy val cacheBlockBytes = p(CacheBlockBytes)
 | 
					  lazy val cacheBlockBytes = p(CacheBlockBytes)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user