Update doc; move code out of copypaste block
This commit is contained in:
@@ -314,7 +314,8 @@ class RadianceTile private (
|
|||||||
case None => dmemAggregateNode
|
case None => dmemAggregateNode
|
||||||
}
|
}
|
||||||
|
|
||||||
// Conditionally instantiate L1 cache
|
// these are the nodes that the tile egress node (tlMasterXbar) sees at the
|
||||||
|
// upstream core/cache side
|
||||||
val (icacheNode, dcacheNode): (TLNode, TLNode) = p(VortexL1Key) match {
|
val (icacheNode, dcacheNode): (TLNode, TLNode) = p(VortexL1Key) match {
|
||||||
case Some(vortexL1Config) => {
|
case Some(vortexL1Config) => {
|
||||||
println("VortexL1Cache instantiated")
|
println("VortexL1Cache instantiated")
|
||||||
@@ -327,8 +328,7 @@ class RadianceTile private (
|
|||||||
numBanks = 1
|
numBanks = 1
|
||||||
)))
|
)))
|
||||||
val dcache = LazyModule(new VortexL1Cache(vortexL1Config))
|
val dcache = LazyModule(new VortexL1Cache(vortexL1Config))
|
||||||
// imemNodes.foreach { icache.coresideNode := TLWidthWidget(4) := _ }
|
assert(imemNodes.length == 1)
|
||||||
assert(imemNodes.length == 1) // FIXME
|
|
||||||
icache.coresideNode := TLWidthWidget(4) := imemNodes(0)
|
icache.coresideNode := TLWidthWidget(4) := imemNodes(0)
|
||||||
// dmemNodes go through coalescerNode
|
// dmemNodes go through coalescerNode
|
||||||
dcache.coresideNode :=* coalescerNode
|
dcache.coresideNode :=* coalescerNode
|
||||||
@@ -336,7 +336,7 @@ class RadianceTile private (
|
|||||||
}
|
}
|
||||||
case None => {
|
case None => {
|
||||||
val imemWideNode = TLIdentityNode()
|
val imemWideNode = TLIdentityNode()
|
||||||
assert(imemNodes.length == 1) // FIXME
|
assert(imemNodes.length == 1)
|
||||||
imemWideNode := TLWidthWidget(4) := imemNodes(0)
|
imemWideNode := TLWidthWidget(4) := imemNodes(0)
|
||||||
(imemWideNode, coalescerNode)
|
(imemWideNode, coalescerNode)
|
||||||
}
|
}
|
||||||
@@ -454,11 +454,6 @@ class RadianceTileModuleImp(outer: RadianceTile)
|
|||||||
core.io.clock := clock
|
core.io.clock := clock
|
||||||
core.io.reset := reset
|
core.io.reset := reset
|
||||||
|
|
||||||
// begin @copypaste from RocketTile ------------------------------------------
|
|
||||||
|
|
||||||
// reset vector is connected in the Frontend to s2_pc
|
|
||||||
core.io.reset_vector := DontCare
|
|
||||||
|
|
||||||
class TwoWayCounter(width: Int) extends AffectsChiselPrefix {
|
class TwoWayCounter(width: Int) extends AffectsChiselPrefix {
|
||||||
val value = RegInit(0.U(width.W))
|
val value = RegInit(0.U(width.W))
|
||||||
value := value
|
value := value
|
||||||
@@ -471,6 +466,11 @@ class RadianceTileModuleImp(outer: RadianceTile)
|
|||||||
core.io.downstream_mem_busy := VecInit(dmemCounters.map(_.value =/= 0.U)).reduceTree(_ || _) ||
|
core.io.downstream_mem_busy := VecInit(dmemCounters.map(_.value =/= 0.U)).reduceTree(_ || _) ||
|
||||||
VecInit(smemCounters.map(_.value =/= 0.U)).reduceTree(_ || _)
|
VecInit(smemCounters.map(_.value =/= 0.U)).reduceTree(_ || _)
|
||||||
|
|
||||||
|
// begin @copypaste from RocketTile ------------------------------------------
|
||||||
|
|
||||||
|
// reset vector is connected in the Frontend to s2_pc
|
||||||
|
core.io.reset_vector := DontCare
|
||||||
|
|
||||||
// outer.regNode.regmap(
|
// outer.regNode.regmap(
|
||||||
// 0x00 -> Seq(RegField.r(32, core.io.finished))
|
// 0x00 -> Seq(RegField.r(32, core.io.finished))
|
||||||
// )
|
// )
|
||||||
@@ -539,7 +539,8 @@ class RadianceTileModuleImp(outer: RadianceTile)
|
|||||||
performanceCounters(Seq(imemTLAdapter.io.inReq), Seq(imemTLAdapter.io.inResp),
|
performanceCounters(Seq(imemTLAdapter.io.inReq), Seq(imemTLAdapter.io.inResp),
|
||||||
desc = s"core${outer.radianceParams.coreId}-imem")
|
desc = s"core${outer.radianceParams.coreId}-imem")
|
||||||
|
|
||||||
// now connect TL adapter downstream ports to the tile egress ports
|
// now connect TL adapter output ports to outer.imemNode, which can
|
||||||
|
// either be L1 cache or tile egress
|
||||||
outer.imemNodes(0).out(0)._1.a <> imemTLAdapter.io.outReq
|
outer.imemNodes(0).out(0)._1.a <> imemTLAdapter.io.outReq
|
||||||
imemTLAdapter.io.outResp <> outer.imemNodes(0).out(0)._1.d
|
imemTLAdapter.io.outResp <> outer.imemNodes(0).out(0)._1.d
|
||||||
}
|
}
|
||||||
@@ -648,7 +649,8 @@ class RadianceTileModuleImp(outer: RadianceTile)
|
|||||||
performanceCounters(dmemTLAdapters.map(_.io.inReq), dmemTLAdapters.map(_.io.inResp),
|
performanceCounters(dmemTLAdapters.map(_.io.inReq), dmemTLAdapters.map(_.io.inResp),
|
||||||
desc = s"core${outer.radianceParams.coreId}-dmem")
|
desc = s"core${outer.radianceParams.coreId}-dmem")
|
||||||
|
|
||||||
// now connect TL adapter downstream ports to the tile egress ports
|
// now connect TL adapter output ports to outer.dmemNodes, which can
|
||||||
|
// either be L1 cache or tile egress
|
||||||
(dmemTLAdapters zip dmemTLBundles) foreach { case (tlAdapter, tlOut) =>
|
(dmemTLAdapters zip dmemTLBundles) foreach { case (tlAdapter, tlOut) =>
|
||||||
tlOut.a <> tlAdapter.io.outReq
|
tlOut.a <> tlAdapter.io.outReq
|
||||||
tlAdapter.io.outResp <> tlOut.d
|
tlAdapter.io.outResp <> tlOut.d
|
||||||
@@ -709,7 +711,6 @@ class RadianceTileModuleImp(outer: RadianceTile)
|
|||||||
performanceCounters(smemTLAdapters.map(_.io.inReq), smemTLAdapters.map(_.io.inResp),
|
performanceCounters(smemTLAdapters.map(_.io.inReq), smemTLAdapters.map(_.io.inResp),
|
||||||
desc = s"core${outer.radianceParams.coreId}-smem")
|
desc = s"core${outer.radianceParams.coreId}-smem")
|
||||||
|
|
||||||
// now connect TL adapter downstream ports to the tile egress ports
|
|
||||||
(smemTLAdapters zip smemTLBundles) foreach { case (tlAdapter, tlOut) =>
|
(smemTLAdapters zip smemTLBundles) foreach { case (tlAdapter, tlOut) =>
|
||||||
tlOut.a <> tlAdapter.io.outReq
|
tlOut.a <> tlAdapter.io.outReq
|
||||||
tlAdapter.io.outResp <> tlOut.d
|
tlAdapter.io.outResp <> tlOut.d
|
||||||
|
|||||||
Reference in New Issue
Block a user