pvtopv_swa.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 _pvtopv_swa_h_INC
00020 #define _pvtopv_swa_h_INC
00021
00022 #include "../interfaces/networkComponent.h"
00023 #include "../../data_types/impl/flit.h"
00024 #include "../../../util/genericData.h"
00025 #include <vector>
00026
00027 class PVToPV_swa
00028 {
00029 public:
00030 PVToPV_swa ();
00031 ~PVToPV_swa();
00032 void resize(uint p, uint c);
00033 bool is_requested(uint inp, uint inch, uint p, uint c);
00034 void request(uint p, uint c, uint inp, uint inch);
00035 SA_unit pick_winner( uint p, uint c);
00036 void clear_winner( uint p, uint c, uint ip, uint ic);
00037 bool is_empty();
00038 bool is_empty_for_ch(uint ch);
00039 uint no_requests_ch(uint ch);
00040 string toString() const;
00041 uint address;
00042 uint name;
00043 uint node_ip;
00044
00045 protected:
00046
00047 private:
00048 uint PORTS;
00049 uint CHANNELS;
00050 vector < vector<bool> > locked;
00051 vector < vector<bool> > done;
00052 vector < vector<bool> > requested;
00053 vector < bool> port_locked;
00054 vector < vector<SA_unit> > requesting_inputs;
00055 vector < vector<SA_unit> > last_winner;
00056 vector < vector<uint> > last_port_winner;
00057 vector < vector<uint> > last_ch_winner;
00058
00059
00060 };
00061
00062 #endif