Go to the documentation of this file.
34 #include "debug/RubyNetwork.hh"
39 :
Consumer(router), m_router(router), m_num_vcs(m_router->get_num_vcs()),
40 m_crossbar_activity(0), switchBuffers(0)
59 DPRINTF(RubyNetwork,
"CrossbarSwitch at Router %d woke up "
64 if (!switch_buffer.isReady(
curTick())) {
68 flit *t_flit = switch_buffer.peekTopFlit();
79 switch_buffer.getTopFlit();
88 uint32_t num_functional_writes = 0;
91 num_functional_writes += switch_buffer.functionalWrite(pkt);
94 return num_functional_writes;
bool is_stage(flit_stage stage, Tick time)
OutputUnit * getOutputUnit(unsigned port)
double m_crossbar_activity
uint32_t functionalWrite(Packet *pkt)
void advance_stage(flit_stage t_stage, Tick newTime)
std::vector< flitBuffer > switchBuffers
CrossbarSwitch(Router *router)
Cycles curCycle() const
Determine the current cycle, corresponding to a tick aligned to a clock edge.
Tick clockEdge(Cycles cycles=Cycles(0)) const
Determine the tick when a cycle begins, by default the current one, but the argument also enables the...
void insert_flit(flit *t_flit)
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
Cycles is a wrapper class for representing cycle counts, i.e.
Tick curTick()
The current simulated tick.
Generated on Wed Sep 30 2020 14:02:13 for gem5 by doxygen 1.8.17