GenericRouterPhy Class Reference

#include <genericRouterPhy.h>

Inheritance diagram for GenericRouterPhy:

Inheritance graph
[legend]

List of all members.

Public Member Functions

 GenericRouterPhy ()
 ~GenericRouterPhy ()
void init (uint ports, uint vcs, uint credits, uint buffer_size)
void set_no_nodes (uint nodes)
 These functions are mainly for DOR routing and are seperated so as to not force DOR modelling in all designs.
void set_grid_x_location (uint a, uint b, uint c)
void set_grid_y_location (uint a, uint b, uint c)
void send_credit_back (uint i)
void process_event (IrisEvent *e)
string toString () const
string print_stats ()
 Prints out all the accumulated stats at the end of the simulation. Routers have a print_stats component that gets called on all routers at the end of the simulation. For information on where this is called look at either the main front end file at manifold_simiris.cc or the corresponding topology file that you are running.

Public Attributes

vector< vector< uint > > downstream_credits
uint packets
uint flits
double total_packet_latency
double last_flit_out_cycle
unsigned long long int stat_sim_total_time
vector< vector< uint > > stat_packet_out
vector< vector< uint > > stat_flit_out

Private Member Functions

void handle_link_arrival_event (IrisEvent *e)
 Event handle for the LINK_ARRIVAL_EVENT event. Entry from DES kernel.
void handle_tick_event (IrisEvent *e)
 Event handle for the TICK_EVENT. Entry from DES kernel This implements the pipe stages for the router. Easy way to follow it. There are as many messages in the system as ports*vcs. Loop over the input_buffer_state ( ports*vcs ) times. Check for a message in a certain pipe stage and do that pipe stage.
void do_switch_traversal ()
void do_switch_allocation ()
void do_input_buffering ()

Private Attributes

vector< GenericBufferin_buffers
vector< GenericRCdecoders
vector< InputBufferStateinput_buffer_state
PToPSwitchArbiter swa
GenericCrossbar xbar
bool ticking


Detailed Description

Definition at line 71 of file genericRouterPhy.h.


Constructor & Destructor Documentation

GenericRouterPhy::GenericRouterPhy (  ) 

Definition at line 25 of file genericRouterPhy.cc.

References NetworkComponent::name, and ticking.

GenericRouterPhy::~GenericRouterPhy (  ) 

Definition at line 31 of file genericRouterPhy.cc.


Member Function Documentation

void GenericRouterPhy::do_input_buffering (  )  [private]

Body and tail flits get written in link arrival and since the message state may already been pushed to ST because of the header we want to ensure that all flits go thru an IB and ST stage. Hence ST is done on the flits_in_ib information and not buffer occupancy.

Definition at line 563 of file genericRouterPhy.cc.

References _DBG, FULL, IB, in_buffers, input_buffer_state, istat, NetworkComponent::node_ip, Simulator::Now(), Router::ports, IrisStats::stat_router, SW_TRAVERSAL, SWA_REQUESTED, ticking, and Router::vcs.

Referenced by handle_tick_event().

Here is the call graph for this function:

Here is the caller graph for this function:

void GenericRouterPhy::do_switch_allocation (  )  [private]

void GenericRouterPhy::do_switch_traversal (  )  [private]

void GenericRouterPhy::handle_link_arrival_event ( IrisEvent e  )  [private]

void GenericRouterPhy::handle_tick_event ( IrisEvent e  )  [private]

Event handle for the TICK_EVENT. Entry from DES kernel This implements the pipe stages for the router. Easy way to follow it. There are as many messages in the system as ports*vcs. Loop over the input_buffer_state ( ports*vcs ) times. Check for a message in a certain pipe stage and do that pipe stage.

Definition at line 619 of file genericRouterPhy.cc.

References _DBG_NOARG, Router::credits, do_input_buffering(), do_switch_allocation(), do_switch_traversal(), downstream_credits, IB, in_buffers, input_buffer_state, PToPSwitchArbiter::is_requested(), Simulator::Now(), Router::ports, NetworkComponent::process_event(), PToPSwitchArbiter::request(), Simulator::Schedule(), swa, SWA_REQUESTED, TICK_EVENT, ticking, toString(), IrisEvent::vc, and Router::vcs.

Referenced by process_event().

Here is the call graph for this function:

Here is the caller graph for this function:

void GenericRouterPhy::init ( uint  ports,
uint  vcs,
uint  credits,
uint  buffer_size 
) [virtual]

string GenericRouterPhy::print_stats ( void   )  [virtual]

Prints out all the accumulated stats at the end of the simulation. Routers have a print_stats component that gets called on all routers at the end of the simulation. For information on where this is called look at either the main front end file at manifold_simiris.cc or the corresponding topology file that you are running.

Implements Router.

Definition at line 158 of file genericRouterPhy.cc.

References flits, last_flit_out_cycle, NetworkComponent::node_ip, packets, Router::ports, stat_flit_out, stat_packet_out, stat_print_level, and total_packet_latency.

void GenericRouterPhy::process_event ( IrisEvent e  )  [virtual]

Implements NetworkComponent.

Definition at line 124 of file genericRouterPhy.cc.

References _DBG, handle_link_arrival_event(), handle_tick_event(), LINK_ARRIVAL_EVENT, TICK_EVENT, and IrisEvent::type.

Here is the call graph for this function:

void GenericRouterPhy::send_credit_back ( uint  i  ) 

Definition at line 704 of file genericRouterPhy.cc.

References _DBG, NetworkComponent::address, CREDIT_ID, data, input_buffer_state, Router::input_connections, LINK_ARRIVAL_EVENT, Simulator::Now(), NetworkComponent::process_event(), Simulator::Schedule(), LinkArrivalData::type, and LinkArrivalData::vc.

Referenced by do_switch_traversal().

Here is the call graph for this function:

Here is the caller graph for this function:

void GenericRouterPhy::set_grid_x_location ( uint  a,
uint  b,
uint  c 
) [virtual]

Implements Router.

Definition at line 110 of file genericRouterPhy.cc.

References decoders.

void GenericRouterPhy::set_grid_y_location ( uint  a,
uint  b,
uint  c 
) [virtual]

Implements Router.

Definition at line 116 of file genericRouterPhy.cc.

References decoders.

void GenericRouterPhy::set_no_nodes ( uint  nodes  )  [virtual]

These functions are mainly for DOR routing and are seperated so as to not force DOR modelling in all designs.

Implements Router.

Definition at line 100 of file genericRouterPhy.cc.

References decoders.

string GenericRouterPhy::toString (  )  const [virtual]

Reimplemented from Router.

Definition at line 678 of file genericRouterPhy.cc.

References NetworkComponent::address, decoders, in_buffers, NetworkComponent::node_ip, swa, GenericCrossbar::toString(), PToPSwitchArbiter::toString(), and xbar.

Referenced by do_switch_traversal(), and handle_tick_event().

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

Definition at line 91 of file genericRouterPhy.h.

Referenced by handle_link_arrival_event(), init(), and print_stats().

Definition at line 93 of file genericRouterPhy.h.

Referenced by do_switch_traversal(), and print_stats().

Definition at line 90 of file genericRouterPhy.h.

Referenced by handle_link_arrival_event(), init(), and print_stats().

Definition at line 96 of file genericRouterPhy.h.

Referenced by do_switch_traversal(), init(), and print_stats().

Definition at line 95 of file genericRouterPhy.h.

Referenced by do_switch_traversal(), init(), and print_stats().

unsigned long long int GenericRouterPhy::stat_sim_total_time

Definition at line 94 of file genericRouterPhy.h.

bool GenericRouterPhy::ticking [private]

Definition at line 92 of file genericRouterPhy.h.

Referenced by do_switch_traversal(), init(), and print_stats().

Definition at line 105 of file genericRouterPhy.h.

Referenced by do_switch_allocation(), do_switch_traversal(), init(), and toString().


The documentation for this class was generated from the following files:

Generated on Tue Oct 19 17:22:17 2010 for IRIS by  doxygen 1.5.8