From 94f85e8bc877adb6cefda2abe45f95f834056c0e Mon Sep 17 00:00:00 2001 From: "Wesley W. Terpstra" Date: Tue, 13 Jun 2017 15:35:22 -0700 Subject: [PATCH] tilelink2: TLMonitor will not create giant wires --- src/main/scala/uncore/tilelink2/Monitor.scala | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/scala/uncore/tilelink2/Monitor.scala b/src/main/scala/uncore/tilelink2/Monitor.scala index b911d412..1d5eb3db 100644 --- a/src/main/scala/uncore/tilelink2/Monitor.scala +++ b/src/main/scala/uncore/tilelink2/Monitor.scala @@ -466,10 +466,21 @@ class TLMonitor(args: TLMonitorArgs) extends TLMonitorBase(args) } def legalizeUnique(bundle: TLBundleSnoop, edge: TLEdge)(implicit sourceInfo: SourceInfo) { - legalizeADSource(bundle, edge) - if (edge.client.anySupportProbe && edge.manager.anySupportAcquireB) { + val sourceBits = log2Ceil(edge.client.endSourceId) + val tooBig = 14 // >16kB worth of flight information gets to be too much + if (sourceBits > tooBig) { + println(s"WARNING: TLMonitor instantiated on a bus with source bits (${sourceBits}) > ${tooBig}; A=>D transaction flight will not be checked") + } else { + legalizeADSource(bundle, edge) + } + if (edge.client.anySupportProbe && edge.manager.anySupportAcquireB && edge.manager.endSinkId > 1) { // legalizeBCSourceAddress(bundle, edge) // too much state needed to synthesize... - if (edge.manager.endSinkId > 1) legalizeDESink(bundle, edge) + val sinkBits = log2Ceil(edge.manager.endSinkId) + if (sinkBits > tooBig) { + println(s"WARNING: TLMonitor instantiated on a bus with sink bits (${sinkBits}) > ${tooBig}; D=>E transaction flight will not be checked") + } else { + legalizeDESink(bundle, edge) + } } }