maxOutstandingSnoopCheck(p->max_outstanding_snoops),
maxRoutingTableSizeCheck(p->max_routing_table_size),
pointOfCoherency(p->point_of_coherency),
- pointOfUnification(p->point_of_unification)
+ pointOfUnification(p->point_of_unification),
+
+ snoops(this, "snoops", "Total snoops (count)"),
+ snoopTraffic(this, "snoopTraffic", "Total snoop traffic (bytes)"),
+ snoopFanout(this, "snoop_fanout", "Request fanout histogram")
{
// create the ports based on the size of the master and slave
// vector ports, and the presence of the default port, the ports
MasterPort* bp = new CoherentXBarMasterPort(portName, *this, i);
masterPorts.push_back(bp);
reqLayers.push_back(new ReqLayer(*bp, *this,
- csprintf(".reqLayer%d", i)));
+ csprintf("reqLayer%d", i)));
snoopLayers.push_back(
- new SnoopRespLayer(*bp, *this, csprintf(".snoopLayer%d", i)));
+ new SnoopRespLayer(*bp, *this, csprintf("snoopLayer%d", i)));
}
// see if we have a default slave device connected and if so add
MasterPort* bp = new CoherentXBarMasterPort(portName, *this,
defaultPortID);
masterPorts.push_back(bp);
- reqLayers.push_back(new ReqLayer(*bp, *this, csprintf(".reqLayer%d",
+ reqLayers.push_back(new ReqLayer(*bp, *this, csprintf("reqLayer%d",
defaultPortID)));
snoopLayers.push_back(new SnoopRespLayer(*bp, *this,
- csprintf(".snoopLayer%d",
+ csprintf("snoopLayer%d",
defaultPortID)));
}
QueuedSlavePort* bp = new CoherentXBarSlavePort(portName, *this, i);
slavePorts.push_back(bp);
respLayers.push_back(new RespLayer(*bp, *this,
- csprintf(".respLayer%d", i)));
+ csprintf("respLayer%d", i)));
snoopRespPorts.push_back(new SnoopRespPort(*bp, *this));
}
}
for (const auto& p: slavePorts) {
// check if the connected master port is snooping
if (p->isSnooping()) {
- DPRINTF(AddrRanges, "Adding snooping master %s\n",
- p->getMasterPort().name());
+ DPRINTF(AddrRanges, "Adding snooping master %s\n", p->getPeer());
snoopPorts.push_back(p);
}
}
void
CoherentXBar::regStats()
{
- // register the stats of the base class and our layers
BaseXBar::regStats();
- for (auto l: reqLayers)
- l->regStats();
- for (auto l: respLayers)
- l->regStats();
- for (auto l: snoopLayers)
- l->regStats();
-
- snoops
- .name(name() + ".snoops")
- .desc("Total snoops (count)")
- ;
-
- snoopTraffic
- .name(name() + ".snoopTraffic")
- .desc("Total snoop traffic (bytes)")
- ;
-
- snoopFanout
- .init(0, snoopPorts.size(), 1)
- .name(name() + ".snoop_fanout")
- .desc("Request fanout histogram")
- ;
+
+ snoopFanout.init(0, snoopPorts.size(), 1);
}
CoherentXBar *