genericData.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _genericdata_h_INC
00019 #define _genericdata_h_INC
00020
00021 #include "../simIris/data_types/impl/flit.h"
00022 #include "simIrisComponentHeader.h"
00023
00024 using namespace std;
00025
00026 enum ROUTING_SCHEME { XY, NEGATIVE_FIRST, ODD_EVEN, WEST_FIRST, NORTH_LAST, NORTH_LAST_NON_MINIMAL, TORUS_ROUTING, RING_ROUTING };
00027 enum SW_ARBITRATION { ROUND_ROBIN, FCFS, ROUND_ROBIN_PRIORITY };
00028 enum RouterPipeStage {
00029 INVALID,
00030 EMPTY,
00031 IB,
00032 FULL,
00033 ROUTED,
00034 VCA_REQUESTED,
00035 SWA_REQUESTED,
00036 SW_ALLOCATED,
00037 SW_TRAVERSAL,
00038 REQ_OUTVC_ARB,
00039 VCA_COMPLETE
00040 };
00041
00042 enum ROUTER_MODEL { PHYSICAL, VIRTUAL};
00043 enum MC_MODEL { GENERIC_MC, FLAT_MC, SINK};
00044 enum TERMINAL_MODEL { GENERIC_PKTGEN, TPG};
00045
00046 class InputBufferState
00047 {
00048 public:
00049 InputBufferState();
00050 ~InputBufferState(){}
00051 uint input_port;
00052 uint input_channel;
00053 uint output_port;
00054 uint output_channel;
00055 double stat_pkt_intime;
00056 double arrival_time;
00057 int length;
00058 int credits_sent;
00059 vector < uint > possible_ovcs;
00060 vector < uint > possible_oports;
00061 RouterPipeStage pipe_stage;
00062 message_class msg_class;
00063 ullint address;
00064 uint destination;
00065 bool clear_message;
00066 bool sa_head_done;
00067 uint flits_in_ib;
00068 bool sent_head;
00069 bool has_pending_pkts;
00070 bool pkt_in_progress;
00071 int bodies_sent;
00072 string toString () const;
00073
00074 };
00075
00076
00077
00078
00079
00080
00081
00082 class LinkArrivalData
00083 {
00084 public:
00085 LinkArrivalData ();
00086 ~LinkArrivalData ();
00087 uint type;
00088 uint vc;
00089 Flit* ptr;
00090 bool valid;
00091
00092 protected:
00093
00094 private:
00095
00096 };
00097
00098
00099
00100
00101
00102
00103
00104 class VirtualChannelDescription
00105 {
00106 public:
00107 VirtualChannelDescription ();
00108 uint vc;
00109 uint port;
00110
00111 protected:
00112
00113 private:
00114
00115 };
00116
00117
00118
00119
00120
00121
00122
00123 class RouteEntry
00124 {
00125 public:
00126 RouteEntry ();
00127 uint destination;
00128 vector< vector<uint> > ports;
00129 vector< vector<uint> > channels;
00130
00131 protected:
00132
00133 private:
00134
00135 };
00136
00137 class SA_unit
00138 {
00139 public:
00140 SA_unit(){};
00141 uint port;
00142 uint ch;
00143 ullint in_time;
00144 ullint win_cycle;
00145 };
00146
00147 #endif
00148