1
0

add queues between Nasti -> TL converter and Nasti interconnect

This commit is contained in:
Howard Mao 2015-10-26 14:11:49 -07:00
parent f37938e4de
commit eb62ff6a50
2 changed files with 16 additions and 3 deletions

@ -1 +1 @@
Subproject commit 2982167822874831b0acee4b80c3c76f54bb4417 Subproject commit ec5036a6caa9a53c0fcee17dd3b001ba054ac549

View File

@ -76,6 +76,18 @@ class MultiChannelTopIO(implicit p: Parameters) extends BasicTopIO()(p) {
val mmio = new NastiIO val mmio = new NastiIO
} }
object TopUtils {
// Connect two Nasti interfaces with queues in-between
def connectNasti(outer: NastiIO, inner: NastiIO)(implicit p: Parameters) {
val mifDataBeats = p(MIFDataBeats)
outer.ar <> Queue(inner.ar)
outer.aw <> Queue(inner.aw)
outer.w <> Queue(inner.w, mifDataBeats)
inner.r <> Queue(outer.r, mifDataBeats)
inner.b <> Queue(outer.b)
}
}
/** Top-level module for the chip */ /** Top-level module for the chip */
//TODO: Remove this wrapper once multichannel DRAM controller is provided //TODO: Remove this wrapper once multichannel DRAM controller is provided
class Top(topParams: Parameters) extends Module with HasTopLevelParameters { class Top(topParams: Parameters) extends Module with HasTopLevelParameters {
@ -240,7 +252,8 @@ class OuterMemorySystem(implicit val p: Parameters) extends Module with HasTopLe
println(f"\t$name%s $base%x - ${base + size - 1}%x") println(f"\t$name%s $base%x - ${base + size - 1}%x")
} }
val interconnect = Module(new NastiTopInterconnect(nMasters, nSlaves, addrMap)(p)) val interconnect = Module(new NastiRecursiveInterconnect(
nMasters, nSlaves, addrMap)(p))
for ((bank, i) <- managerEndpoints.zipWithIndex) { for ((bank, i) <- managerEndpoints.zipWithIndex) {
val unwrap = Module(new ClientTileLinkIOUnwrapper()(outerTLParams)) val unwrap = Module(new ClientTileLinkIOUnwrapper()(outerTLParams))
@ -249,7 +262,7 @@ class OuterMemorySystem(implicit val p: Parameters) extends Module with HasTopLe
unwrap.io.in <> bank.outerTL unwrap.io.in <> bank.outerTL
narrow.io.in <> unwrap.io.out narrow.io.in <> unwrap.io.out
conv.io.tl <> narrow.io.out conv.io.tl <> narrow.io.out
interconnect.io.masters(i) <> conv.io.nasti TopUtils.connectNasti(interconnect.io.masters(i), conv.io.nasti)
} }
val rtc = Module(new RTC(CSRs.mtime)) val rtc = Module(new RTC(CSRs.mtime))