diff options
author | Tiago Muck <tiago.muck@arm.com> | 2019-03-04 16:42:13 -0600 |
---|---|---|
committer | Tiago Mück <tiago.muck@arm.com> | 2019-05-28 16:14:40 +0000 |
commit | c32b2ac795686d3292d8442d0091c42b17b61797 (patch) | |
tree | ebf43da2d88bc4d434344e131ae11ddce15684a9 /src/mem/coherent_xbar.cc | |
parent | c73b7e50d06a8313174de0133ea4050ccb5959d9 (diff) | |
download | gem5-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.cc | 19 |
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); } } } |