From 50c85f1b621fb588eb79eecd9e2f524bb62e9039 Mon Sep 17 00:00:00 2001 From: Megan Wachs Date: Thu, 3 Aug 2017 15:39:18 -0700 Subject: [PATCH] TLXbar: Allow more masters and slaves and issue a warning. --- src/main/scala/tilelink/Xbar.scala | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/scala/tilelink/Xbar.scala b/src/main/scala/tilelink/Xbar.scala index 5208bec0..8e0f184b 100644 --- a/src/main/scala/tilelink/Xbar.scala +++ b/src/main/scala/tilelink/Xbar.scala @@ -9,8 +9,8 @@ import freechips.rocketchip.diplomacy._ class TLXbar(policy: TLArbiter.Policy = TLArbiter.roundRobin)(implicit p: Parameters) extends LazyModule { val node = TLNexusNode( - numClientPorts = 1 to 32, - numManagerPorts = 1 to 32, + numClientPorts = 1 to 999, + numManagerPorts = 1 to 999, clientFn = { seq => require (!seq.exists(_.unsafeAtomics) || seq.size == 1, "An unsafe atomic port can not be combined with any other!") @@ -46,6 +46,11 @@ class TLXbar(policy: TLArbiter.Policy = TLArbiter.roundRobin)(implicit p: Parame val out = node.bundleOut } + if ((io.in.size * io.out.size) > (8*32)) { + println (s"!!! WARNING !!!") + println (s" Your TLXbar ($name) is very large, with ${io.in.size} Masters and ${io.out.size} Slaves.") + println (s"!!! WARNING !!!") + } // Grab the port ID mapping val inputIdRanges = TLXbar.mapInputIds(node.edgesIn.map(_.client)) val outputIdRanges = TLXbar.mapOutputIds(node.edgesOut.map(_.manager))