RouterVcMP Class Reference

#include <routerVcMP.h>

Inheritance diagram for RouterVcMP:

Inheritance graph
[legend]

List of all members.

Public Member Functions

 RouterVcMP ()
 ~RouterVcMP ()
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 ()
void set_edge_links ()
void dump_buffer_state ()

Public Attributes

vector< vector< uint > > downstream_credits

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.
void handle_detect_deadlock_event (IrisEvent *)
void do_switch_traversal ()
void do_switch_allocation ()
void do_input_buffering ()
void do_virtual_channel_allocation ()
void request_switch_allocation ()

Private Attributes

vector< GenericBufferin_buffers
vector< GenericRCdecoders
vector< InputBufferStateinput_buffer_state
vector< list< uint > > vc_alloc
vector< vector< uint > > sw_alloc
vector< vector< uint > > request_op
vector< uintavailable_ports
vector< uintavailable_vcs
vector< vector< uint > > cr_time
bool ticking
double stat_buffer_occupancy
uint stat_packets
uint stat_flits
double stat_total_packet_latency
double last_flit_out_cycle
double stat_swa_fail_msg_ratio
double stat_swa_load
double stat_vca_fail_msg_ratio
double stat_vca_load
ullint stat_sim_total_time
vector< vector< uint > > stat_packet_out
vector< vector< uint > > stat_flit_out
bool is_mc_router
ullint stat_ib_cycles
ullint stat_rc_cycles
ullint stat_vca_cycles
ullint stat_swa_cycles
ullint stat_st_cycles


Detailed Description

Definition at line 47 of file routerVcMP.h.


Constructor & Destructor Documentation

RouterVcMP::RouterVcMP (  ) 

Definition at line 24 of file routerVcMP.cc.

References NetworkComponent::name, and ticking.

RouterVcMP::~RouterVcMP (  ) 

constructor

Definition at line 30 of file routerVcMP.cc.


Member Function Documentation

void RouterVcMP::do_input_buffering (  )  [private]

void RouterVcMP::do_switch_allocation (  )  [private]

void RouterVcMP::do_switch_traversal (  )  [private]

void RouterVcMP::do_virtual_channel_allocation (  )  [private]

Definition at line 679 of file routerVcMP.cc.

References input_buffer_state, istat, NetworkComponent::node_ip, Router::ports, request_op, request_switch_allocation(), IrisStats::stat_router, stat_vca_cycles, stat_vca_fail_msg_ratio, stat_vca_load, ticking, vc_alloc, VCA_COMPLETE, VCA_REQUESTED, 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 RouterVcMP::dump_buffer_state (  ) 

void RouterVcMP::handle_detect_deadlock_event ( IrisEvent e  )  [private]

Definition at line 166 of file routerVcMP.cc.

References _DBG_NOARG, cr_time, DETECT_DEADLOCK_EVENT, input_buffer_state, Simulator::Now(), Router::ports, NetworkComponent::process_event(), Simulator::Schedule(), IrisEvent::type, and Router::vcs.

Referenced by process_event().

Here is the call graph for this function:

Here is the caller graph for this function:

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

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

Event handle for the TICK_EVENT. Entry from DES kernel.

Input buffering Flits are pushed into the input buffer in the link arrival handler itself. To ensure the pipeline stages are executed in reverse pipe order IB is done here and all link_traversals have higher priority and get done before tick. Head/Body and Tail flits go thru the IB stage.

Request VCA at the end of IB

The router can be set to not tick and therefore speed up simulation if there are no messages to route. To be replaced by the start and stop clock functionality in the next release of the kernel. Under high load you also register the component to a clock so that it will be called every cycle and hence an event need not be explicitly generated.

Definition at line 785 of file routerVcMP.cc.

References Router::credits, do_input_buffering(), do_switch_allocation(), do_switch_traversal(), do_virtual_channel_allocation(), IB, in_buffers, input_buffer_state, Simulator::Now(), Router::ports, NetworkComponent::process_event(), Simulator::Schedule(), stat_buffer_occupancy, TICK_EVENT, ticking, IrisEvent::vc, VCA_REQUESTED, and Router::vcs.

Referenced by process_event().

Here is the call graph for this function:

Here is the caller graph for this function:

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

string RouterVcMP::print_stats ( void   )  [virtual]

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

void RouterVcMP::request_switch_allocation (  )  [private]

Definition at line 760 of file routerVcMP.cc.

References in_buffers, input_buffer_state, Router::ports, sw_alloc, SWA_REQUESTED, ticking, VCA_COMPLETE, and Router::vcs.

Referenced by do_switch_traversal(), and do_virtual_channel_allocation().

Here is the caller graph for this function:

void RouterVcMP::send_credit_back ( uint  i  ) 

void RouterVcMP::set_edge_links (  ) 

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

For DOR the no of nodes in the network and the grid sizes are to be set and passed to RC.

Implements Router.

Definition at line 131 of file routerVcMP.cc.

References decoders.

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

Implements Router.

Definition at line 137 of file routerVcMP.cc.

References decoders.

void RouterVcMP::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.

Initialise the router for ports, vcs and credits. TODO buffer size not used right now. Just make sure its larger than credits.

Implements Router.

Definition at line 121 of file routerVcMP.cc.

References decoders.

string RouterVcMP::toString (  )  const [virtual]

Reimplemented from Router.

Definition at line 850 of file routerVcMP.cc.

References NetworkComponent::address, decoders, in_buffers, and NetworkComponent::node_ip.


Member Data Documentation

vector<uint> RouterVcMP::available_ports [private]

Definition at line 81 of file routerVcMP.h.

vector<uint> RouterVcMP::available_vcs [private]

Definition at line 82 of file routerVcMP.h.

vector< vector<uint> > RouterVcMP::cr_time [private]

vector<GenericRC> RouterVcMP::decoders [private]

bool RouterVcMP::is_mc_router [private]

Definition at line 108 of file routerVcMP.h.

Definition at line 100 of file routerVcMP.h.

Referenced by do_switch_traversal(), and print_stats().

vector< vector <uint> > RouterVcMP::request_op [private]

Definition at line 80 of file routerVcMP.h.

Referenced by do_virtual_channel_allocation(), and init().

These are the statistics variables

Definition at line 96 of file routerVcMP.h.

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

vector< vector<uint> > RouterVcMP::stat_flit_out [private]

Definition at line 107 of file routerVcMP.h.

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

Definition at line 98 of file routerVcMP.h.

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

Definition at line 109 of file routerVcMP.h.

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

vector< vector<uint> > RouterVcMP::stat_packet_out [private]

Definition at line 106 of file routerVcMP.h.

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

Definition at line 97 of file routerVcMP.h.

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

Definition at line 110 of file routerVcMP.h.

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

Definition at line 105 of file routerVcMP.h.

Definition at line 113 of file routerVcMP.h.

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

Definition at line 112 of file routerVcMP.h.

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

Definition at line 101 of file routerVcMP.h.

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

double RouterVcMP::stat_swa_load [private]

Definition at line 102 of file routerVcMP.h.

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

Definition at line 99 of file routerVcMP.h.

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

Definition at line 111 of file routerVcMP.h.

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

Definition at line 103 of file routerVcMP.h.

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

double RouterVcMP::stat_vca_load [private]

Definition at line 104 of file routerVcMP.h.

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

vector< vector< uint> > RouterVcMP::sw_alloc [private]

Definition at line 79 of file routerVcMP.h.

Referenced by do_switch_allocation(), init(), and request_switch_allocation().

bool RouterVcMP::ticking [private]

vector< list< uint> > RouterVcMP::vc_alloc [private]

Definition at line 78 of file routerVcMP.h.

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


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

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