37 #include "debug/RubyNetwork.hh"
90 for (
int inport = 0; inport <
m_input_unit.size(); inport++) {
100 for (
int outport = 0; outport <
m_output_unit.size(); outport++) {
131 const NetDest& routing_table_entry,
int link_weight,
206 .
name(
name() +
".crossbar_activity")
211 .
name(
name() +
".sw_input_arbiter_activity")
216 .
name(
name() +
".sw_output_arbiter_activity")
251 float fault_vector[num_fault_types];
253 out <<
"Router-" <<
m_id <<
" fault vector: " << endl;
254 for (
int fault_type_index = 0; fault_type_index < num_fault_types;
255 fault_type_index++) {
256 out <<
" - probability of (";
260 out << fault_vector[fault_type_index] << endl;
268 float aggregate_fault_prob;
270 &aggregate_fault_prob);
271 out <<
"Router-" <<
m_id <<
" fault probability: ";
272 out << aggregate_fault_prob << endl;
278 uint32_t num_functional_writes = 0;
282 num_functional_writes +=
m_input_unit[
i]->functionalWrite(pkt);
289 return num_functional_writes;
293 GarnetRouterParams::create()
Stats::Scalar m_buffer_reads
GarnetNetwork * m_network_ptr
void set_out_link(NetworkLink *link)
Cycles is a wrapper class for representing cycle counts, i.e.
RoutingUnit * m_routing_unit
PortDirection getOutportDirection(int outport)
std::vector< OutputUnit * > m_output_unit
void scheduleEvent(Cycles timeDelta)
void grant_switch(int inport, flit *t_flit)
int route_compute(RouteInfo route, int inport, PortDirection direction)
void resetStats()
Reset statistics associated with this object.
void update_sw_winner(int inport, flit *t_flit)
uint32_t functionalWrite(Packet *pkt)
Stats::Scalar m_buffer_writes
bool get_aggregate_fault_probability(int temperature, float *aggregate_fault_prob)
std::string getPortDirectionName(PortDirection direction)
Stats::Scalar m_sw_output_arbiter_activity
Derived & flags(Flags _flags)
Set the flags and marks this stat to print at the end of simulation.
flitBuffer * getOutQueue()
std::string fault_type_to_string(int fault_type_index)
Stats::Scalar m_sw_input_arbiter_activity
void addWeight(int link_weight)
uint32_t functionalWrite(Packet *)
double get_output_arbiter_activity()
double get_crossbar_activity()
void schedule_wakeup(Cycles time)
#define BASELINE_TEMPERATURE_CELCIUS
void addInPort(PortDirection inport_dirn, NetworkLink *link, CreditLink *credit_link)
SwitchAllocator * m_sw_alloc
Stats::Scalar m_crossbar_activity
std::string PortDirection
void addRoute(const NetDest &routing_table_entry)
void deletePointers(C< T, A > &container)
void init()
init() is called after all C++ SimObjects have been created and all ports are connected.
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
void set_credit_link(CreditLink *credit_link)
void addInDirection(PortDirection inport_dirn, int inport)
Derived & name(const std::string &name)
Set the name and marks this stat to print at the end of simulation.
void printFaultVector(std::ostream &out)
std::vector< InputUnit * > m_input_unit
virtual const std::string name() const
bool get_fault_vector(int temperature, float fault_vector[])
void addOutPort(PortDirection outport_dirn, NetworkLink *link, const NetDest &routing_table_entry, int link_weight, CreditLink *credit_link)
double get_input_arbiter_activity()
int outportCompute(RouteInfo route, int inport, PortDirection inport_dirn)
void addOutDirection(PortDirection outport_dirn, int outport)
void setSourceQueue(flitBuffer *srcQueue)
void printAggregateFaultProbability(std::ostream &out)
void setLinkConsumer(Consumer *consumer)
const FlagsType nozero
Don't print if this is zero.
void init()
init() is called after all C++ SimObjects have been created and all ports are connected.
void regStats() override
Register statistics for this object.
void regStats()
Register statistics for this object.
CrossbarSwitch * m_switch
PortDirection getInportDirection(int inport)