summaryrefslogtreecommitdiff
path: root/src/mem/coherent_xbar.cc
diff options
context:
space:
mode:
authorTiago Muck <tiago.muck@arm.com>2019-03-04 16:42:13 -0600
committerTiago Mück <tiago.muck@arm.com>2019-05-28 16:14:40 +0000
commitc32b2ac795686d3292d8442d0091c42b17b61797 (patch)
treeebf43da2d88bc4d434344e131ae11ddce15684a9 /src/mem/coherent_xbar.cc
parentc73b7e50d06a8313174de0133ea4050ccb5959d9 (diff)
downloadgem5-c32b2ac795686d3292d8442d0091c42b17b61797.tar.xz
mem: Parameterize coherent xbar sanity checks
Parameters can be used to change coherent xbar limits for the routing table and outstanding snoops. We need the ability to tweak these values as the current defaults may be violated in simulations with large core counts. Change-Id: Idb64b8c105683d02d8beba5bce13b815181ba824 Signed-off-by: Tiago Muck <tiago.muck@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18789 Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br> Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com> Tested-by: kokoro <noreply+kokoro@google.com>
Diffstat (limited to 'src/mem/coherent_xbar.cc')
-rw-r--r--src/mem/coherent_xbar.cc19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/mem/coherent_xbar.cc b/src/mem/coherent_xbar.cc
index 839d95b9d..74c93be0f 100644
--- a/src/mem/coherent_xbar.cc
+++ b/src/mem/coherent_xbar.cc
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2018 ARM Limited
+ * Copyright (c) 2011-2019 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -59,6 +59,8 @@
CoherentXBar::CoherentXBar(const CoherentXBarParams *p)
: BaseXBar(p), system(p->system), snoopFilter(p->snoop_filter),
snoopResponseLatency(p->snoop_response_latency),
+ maxOutstandingSnoopCheck(p->max_outstanding_snoops),
+ maxRoutingTableSizeCheck(p->max_routing_table_size),
pointOfCoherency(p->point_of_coherency),
pointOfUnification(p->point_of_unification)
{
@@ -325,8 +327,9 @@ CoherentXBar::recvTimingReq(PacketPtr pkt, PortID slave_port_id)
outstandingSnoop.insert(pkt->req);
// basic sanity check on the outstanding snoops
- panic_if(outstandingSnoop.size() > 512,
- "Outstanding snoop requests exceeded 512\n");
+ panic_if(outstandingSnoop.size() > maxOutstandingSnoopCheck,
+ "%s: Outstanding snoop requests exceeded %d\n",
+ name(), maxOutstandingSnoopCheck);
}
// remember where to route the normal response to
@@ -334,8 +337,9 @@ CoherentXBar::recvTimingReq(PacketPtr pkt, PortID slave_port_id)
assert(routeTo.find(pkt->req) == routeTo.end());
routeTo[pkt->req] = slave_port_id;
- panic_if(routeTo.size() > 512,
- "Routing table exceeds 512 packets\n");
+ panic_if(routeTo.size() > maxRoutingTableSizeCheck,
+ "%s: Routing table exceeds %d packets\n",
+ name(), maxRoutingTableSizeCheck);
}
// update the layer state and schedule an idle event
@@ -401,8 +405,9 @@ CoherentXBar::recvTimingReq(PacketPtr pkt, PortID slave_port_id)
assert(routeTo.find(pkt->req) == routeTo.end());
routeTo[pkt->req] = slave_port_id;
- panic_if(routeTo.size() > 512,
- "Routing table exceeds 512 packets\n");
+ panic_if(routeTo.size() > maxRoutingTableSizeCheck,
+ "%s: Routing table exceeds %d packets\n",
+ name(), maxRoutingTableSizeCheck);
}
}
}