RecoSim  1.0
 All Classes Files Functions Variables Enumerations
reconfiguration_manager.h
Go to the documentation of this file.
1 
21 #ifndef RECONFIGURATION_MANAGER_H
22 #define RECONFIGURATION_MANAGER_H
23 
24 #define SC_INCLUDE_DYNAMIC_PROCESSES
25 
26 #include <systemc.h>
27 #include "tlm.h"
28 #include "tlm_utils/peq_with_cb_and_phase.h"
29 #include "tlm_utils/multi_passthrough_initiator_socket.h"
30 #include "tlm_utils/multi_passthrough_target_socket.h"
31 #include "tlm_utils/simple_target_socket.h"
32 #include "tlm_utils/simple_initiator_socket.h"
33 
34 #include "memory_manager.h"
35 #include "trace.h"
36 #include "utils.h"
37 #include "manager_interface.h"
38 #include "reconfigurable_zone.h"
40 #include "my_priority_queue.h"
41 #include "simulation_controller.h"
42 #include "fpga.h"
43 #include "task.h"
44 #include "application.h"
45 #include "scheduler_interface.h"
46 #include "scheduling.h"
47 #include "user_scheduling.h"
48 #include "reconfiguration_unit.h"
49 #include "scheduler_request.h"
50 #include "configuration_request.h"
52 
53 #include <map>
54 #include <vector>
55 #include <list>
56 
57 using namespace sc_core;
58 using namespace sc_dt;
59 using namespace std;
60 using namespace tlm;
61 using namespace tlm_utils;
62 
63 //#define GENERATE_RZ_STATE_FILE
64 //#define GENERATE_TASK_STATE_FILE
65 
67 
68 private:
69  // Priority queue to handle waiting tasks (by ID)
71 
72 public:
73 
74 
75 
76  Reconfiguration_manager(sc_module_name instname, vector<RZ *> rzs, vector<Task> tasks, void (*handler)(Scheduler_interface &), FPGA* device, ofstream& logfile, sc_trace_file* mtf, map<string, RZ_config*>& table) :
77  Reconfiguration_manager_base(instname, rzs, tasks, handler, device, logfile, mtf, table) {
78 
79  }
80 
82 
83  }
84 
85  // TLM transport methods
86  virtual void b_transport_module(int id, tlm_generic_payload& trans, sc_time& delay);
87  virtual void b_transport_testbench(int id, tlm_generic_payload& trans, sc_time& delay);
88 
89  void Scheduler_display_waiting_queue(void) const;
90 
91 
92  // ===== Scheduler interface =====
93  bool Scheduler_are_tasks_waiting(void) const;
94  //SchedulerRequest Scheduler_get_top_request(void);
95  //void Scheduler_pop_request(void);
96  int Scheduler_get_waiting_queue_size(void);
97  int Scheduler_position_of_current_element(void);
98  SchedulerRequest& Scheduler_get_element(int position);
99  void Scheduler_update_queue(void);
100 
101  bool Scheduler_last_task_waiting(void) const;
102  void Scheduler_erase_current_task_waiting();
103  SchedulerRequest& Scheduler_current_task_waiting();
104  SchedulerRequest Scheduler_next_task_waiting();
105  void Scheduler_reset_current_position_in_waiting_queue();
106 
107  void display_waiting_queue(void) const;
108 };
109 
110 #endif
Definition: fpga.h:30
Definition: reconfiguration_manager_base.h:119
Definition: scheduler_request.h:47
Definition: reconfiguration_manager.h:66
Definition: my_priority_queue.h:30
Definition: scheduler_interface.h:138