merge ClientTileLinkEnqueuer and ClientUncachedTileLinkEnqueuer objects into TileLinkEnqueuer
This commit is contained in:
parent
f363f5f709
commit
49863944c4
@ -117,13 +117,13 @@ class DefaultCoreplex(tp: Parameters, tc: CoreplexConfig) extends Coreplex()(tp,
|
|||||||
val backendBuffering = TileLinkDepths(0,0,0,0,0)
|
val backendBuffering = TileLinkDepths(0,0,0,0,0)
|
||||||
for ((bank, icPort) <- managerEndpoints zip mem_ic.io.in) {
|
for ((bank, icPort) <- managerEndpoints zip mem_ic.io.in) {
|
||||||
val unwrap = Module(new ClientTileLinkIOUnwrapper()(outerTLParams))
|
val unwrap = Module(new ClientTileLinkIOUnwrapper()(outerTLParams))
|
||||||
unwrap.io.in <> ClientTileLinkEnqueuer(bank.outerTL, backendBuffering)(outerTLParams)
|
unwrap.io.in <> TileLinkEnqueuer(bank.outerTL, backendBuffering)(outerTLParams)
|
||||||
TileLinkWidthAdapter(icPort, unwrap.io.out)
|
TileLinkWidthAdapter(icPort, unwrap.io.out)
|
||||||
}
|
}
|
||||||
|
|
||||||
io.master.mem <> mem_ic.io.out
|
io.master.mem <> mem_ic.io.out
|
||||||
|
|
||||||
buildMMIONetwork(ClientUncachedTileLinkEnqueuer(mmioManager.io.outer, 1))(
|
buildMMIONetwork(TileLinkEnqueuer(mmioManager.io.outer, 1))(
|
||||||
p.alterPartial({case TLId => "L2toMMIO"}))
|
p.alterPartial({case TLId => "L2toMMIO"}))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,7 +157,7 @@ class DefaultCoreplex(tp: Parameters, tc: CoreplexConfig) extends Coreplex()(tp,
|
|||||||
|
|
||||||
val tileSlavePorts = (0 until tc.nTiles) map (i => s"int:dmem$i") filter (ioAddrMap contains _)
|
val tileSlavePorts = (0 until tc.nTiles) map (i => s"int:dmem$i") filter (ioAddrMap contains _)
|
||||||
for ((t, m) <- (tileList.map(_.io.slave).flatten) zip (tileSlavePorts map (mmioNetwork port _)))
|
for ((t, m) <- (tileList.map(_.io.slave).flatten) zip (tileSlavePorts map (mmioNetwork port _)))
|
||||||
t <> ClientUncachedTileLinkEnqueuer(m, 1)
|
t <> TileLinkEnqueuer(m, 1)
|
||||||
|
|
||||||
io.master.mmio.foreach { _ <> mmioNetwork.port("ext") }
|
io.master.mmio.foreach { _ <> mmioNetwork.port("ext") }
|
||||||
}
|
}
|
||||||
|
@ -179,7 +179,7 @@ trait PeripheryMasterMemModule extends HasPeripheryParameters {
|
|||||||
}
|
}
|
||||||
|
|
||||||
(io.mem_tl zip coreplex.io.master.mem) foreach { case (tl, mem) =>
|
(io.mem_tl zip coreplex.io.master.mem) foreach { case (tl, mem) =>
|
||||||
tl <> ClientUncachedTileLinkEnqueuer(mem, 2)(outermostParams)
|
tl <> TileLinkEnqueuer(mem, 2)(outermostParams)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -229,7 +229,7 @@ trait PeripheryMasterMMIOModule extends HasPeripheryParameters {
|
|||||||
io.mmio_ahb(idx) <> PeripheryUtils.convertTLtoAHB(mmio_ports(i), atomics = true)(outermostMMIOParams)
|
io.mmio_ahb(idx) <> PeripheryUtils.convertTLtoAHB(mmio_ports(i), atomics = true)(outermostMMIOParams)
|
||||||
} else if (mmio_tl_start <= i && i < mmio_tl_end) {
|
} else if (mmio_tl_start <= i && i < mmio_tl_end) {
|
||||||
val idx = i-mmio_tl_start
|
val idx = i-mmio_tl_start
|
||||||
io.mmio_tl(idx) <> ClientUncachedTileLinkEnqueuer(mmio_ports(i), 2)(outermostMMIOParams)
|
io.mmio_tl(idx) <> TileLinkEnqueuer(mmio_ports(i), 2)(outermostMMIOParams)
|
||||||
} else {
|
} else {
|
||||||
require(false, "Unconnected external MMIO port")
|
require(false, "Unconnected external MMIO port")
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,23 @@ object TileLinkEnqueuer {
|
|||||||
def apply(in: TileLinkIO, depth: Int)(implicit p: Parameters): TileLinkIO = {
|
def apply(in: TileLinkIO, depth: Int)(implicit p: Parameters): TileLinkIO = {
|
||||||
apply(in, TileLinkDepths(depth, depth, depth, depth, depth))
|
apply(in, TileLinkDepths(depth, depth, depth, depth, depth))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def apply(in: ClientTileLinkIO, depths: TileLinkDepths)(implicit p: Parameters): ClientTileLinkIO = {
|
||||||
|
val t = Module(new ClientTileLinkEnqueuer(depths))
|
||||||
|
t.io.inner <> in
|
||||||
|
t.io.outer
|
||||||
|
}
|
||||||
|
def apply(in: ClientTileLinkIO, depth: Int)(implicit p: Parameters): ClientTileLinkIO = {
|
||||||
|
apply(in, TileLinkDepths(depth, depth, depth, depth, depth))
|
||||||
|
}
|
||||||
|
def apply(in: ClientUncachedTileLinkIO, depths: UncachedTileLinkDepths)(implicit p: Parameters): ClientUncachedTileLinkIO = {
|
||||||
|
val t = Module(new ClientUncachedTileLinkEnqueuer(depths))
|
||||||
|
t.io.inner <> in
|
||||||
|
t.io.outer
|
||||||
|
}
|
||||||
|
def apply(in: ClientUncachedTileLinkIO, depth: Int)(implicit p: Parameters): ClientUncachedTileLinkIO = {
|
||||||
|
apply(in, UncachedTileLinkDepths(depth, depth))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ClientTileLinkEnqueuer(depths: TileLinkDepths)(implicit p: Parameters) extends Module {
|
class ClientTileLinkEnqueuer(depths: TileLinkDepths)(implicit p: Parameters) extends Module {
|
||||||
@ -45,17 +62,6 @@ class ClientTileLinkEnqueuer(depths: TileLinkDepths)(implicit p: Parameters) ext
|
|||||||
io.outer.finish <> (if(depths.fin > 0) Queue(io.inner.finish, depths.fin) else io.inner.finish)
|
io.outer.finish <> (if(depths.fin > 0) Queue(io.inner.finish, depths.fin) else io.inner.finish)
|
||||||
}
|
}
|
||||||
|
|
||||||
object ClientTileLinkEnqueuer {
|
|
||||||
def apply(in: ClientTileLinkIO, depths: TileLinkDepths)(implicit p: Parameters): ClientTileLinkIO = {
|
|
||||||
val t = Module(new ClientTileLinkEnqueuer(depths))
|
|
||||||
t.io.inner <> in
|
|
||||||
t.io.outer
|
|
||||||
}
|
|
||||||
def apply(in: ClientTileLinkIO, depth: Int)(implicit p: Parameters): ClientTileLinkIO = {
|
|
||||||
apply(in, TileLinkDepths(depth, depth, depth, depth, depth))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class ClientUncachedTileLinkEnqueuer(depths: UncachedTileLinkDepths)(implicit p: Parameters) extends Module {
|
class ClientUncachedTileLinkEnqueuer(depths: UncachedTileLinkDepths)(implicit p: Parameters) extends Module {
|
||||||
val io = new Bundle {
|
val io = new Bundle {
|
||||||
val inner = new ClientUncachedTileLinkIO().flip
|
val inner = new ClientUncachedTileLinkIO().flip
|
||||||
@ -65,14 +71,3 @@ class ClientUncachedTileLinkEnqueuer(depths: UncachedTileLinkDepths)(implicit p:
|
|||||||
io.outer.acquire <> (if(depths.acq > 0) Queue(io.inner.acquire, depths.acq) else io.inner.acquire)
|
io.outer.acquire <> (if(depths.acq > 0) Queue(io.inner.acquire, depths.acq) else io.inner.acquire)
|
||||||
io.inner.grant <> (if(depths.gnt > 0) Queue(io.outer.grant, depths.gnt) else io.outer.grant)
|
io.inner.grant <> (if(depths.gnt > 0) Queue(io.outer.grant, depths.gnt) else io.outer.grant)
|
||||||
}
|
}
|
||||||
|
|
||||||
object ClientUncachedTileLinkEnqueuer {
|
|
||||||
def apply(in: ClientUncachedTileLinkIO, depths: UncachedTileLinkDepths)(implicit p: Parameters): ClientUncachedTileLinkIO = {
|
|
||||||
val t = Module(new ClientUncachedTileLinkEnqueuer(depths))
|
|
||||||
t.io.inner <> in
|
|
||||||
t.io.outer
|
|
||||||
}
|
|
||||||
def apply(in: ClientUncachedTileLinkIO, depth: Int)(implicit p: Parameters): ClientUncachedTileLinkIO = {
|
|
||||||
apply(in, UncachedTileLinkDepths(depth, depth))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user