ptopSwaVcs.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
00019 #ifndef _ptopswitcharbitervcs_h_INC
00020 #define _ptopswitcharbitervcs_h_INC
00021
00022 #include "../interfaces/networkComponent.h"
00023 #include "../../data_types/impl/flit.h"
00024 #include "../../../util/genericData.h"
00025 #include <vector>
00026 #include <fstream>
00027
00028 using namespace std;
00029 extern SW_ARBITRATION sw_arbitration;
00030 extern message_class priority_msg_type;
00031 class PToPSwitchArbiterVcs
00032 {
00033 public:
00034 PToPSwitchArbiterVcs ();
00035 ~PToPSwitchArbiterVcs();
00036 void resize(uint p, uint v);
00037 bool is_requested(uint outp, uint inp, uint ovc);
00038 void clear_requestor(uint outp, uint inp, uint ovc);
00039 void request(uint p, uint op, uint inp, uint iv);
00040 SA_unit pick_winner( uint p);
00041 SA_unit do_round_robin_arbitration( uint p);
00042 SA_unit do_priority_round_robin_arbitration( uint p);
00043 SA_unit do_fcfs_arbitration( uint p);
00044 void request(uint oport, uint inport, message_class m);
00045 bool is_empty();
00046 string toString() const;
00047 uint address;
00048 string name;
00049 uint node_ip;
00050
00051 protected:
00052
00053 private:
00054 uint ports;
00055 uint vcs;
00056 vector < vector <bool> > requested;
00057 vector < vector <bool> > priority_reqs;
00058 vector < vector<SA_unit> > requesting_inputs;
00059 vector < SA_unit > last_winner;
00060 vector < uint> last_port_winner;
00061
00062 };
00063
00064 #endif