RecoSim  1.0
 All Classes Files Functions Variables Enumerations
user_algorithm_interface.h
Go to the documentation of this file.
1 
21 #ifndef USER_ALGORITHM_INTERFACE_H
22 #define USER_ALGORITHM_INTERFACE_H
23 
24 #include <systemc.h>
25 #include "utils.h"
26 
27 using namespace std;
28 
32 enum User_algorithm_action {CURRENT_MODULE_READY, NEXT_MODULE_READY, WAIT_FOR_NEXT_MODULE, WAIT_FOR_CURRENT_MODULE};
33 
34 template<int Ni, int No>
35 class User_algorithm_interface : public sc_interface {
36 
37 public:
38 
39  //
40  // ======== DATA ========
41  //
42 
48  virtual int* get_data_in_ptr(int socket) = 0;
49 
55  virtual int* get_data_in_ptr(string name) = 0;
56 
62  virtual int* get_data_out_ptr(int socket) = 0;
63 
69  virtual int* get_data_out_ptr(string name) = 0;
70 
76  virtual sc_dt::uint64 get_address_in(int socket) const = 0;
77 
83  virtual sc_dt::uint64 get_address_in(string name) const = 0;
84 
91  virtual void set_address_out(int socket, sc_dt::uint64 value) = 0;
92 
99  virtual void set_address_out(string name, sc_dt::uint64 value) = 0;
100 
106  virtual int get_data_in_length(int socket) const = 0;
107 
113  virtual int get_data_in_length(string name) const = 0;
114 
120  virtual int get_data_out_length(int socket) const = 0;
121 
127  virtual int get_data_out_length(string name) const = 0;
128 
133  virtual sc_time get_WCET(void) const = 0;
134 
139  virtual sc_time get_BCET(void) const = 0;
140 
146  virtual int get_input_socket_id(string name) const = 0;
147 
153  virtual int get_output_socket_id(string name) const = 0;
154 
155 
156  //
157  // ======== Control ========
158  //
159 
163  virtual void end_of_algorithm(void) = 0;
164 
168  virtual void preemption_point(void) = 0;
169 
173  virtual void b_execution_requested(void) = 0;
174 
179  virtual void compute(sc_time duration) = 0;
180 
181 
182  //
183  // ======== Trace ========
184  //
185 
190  virtual void set_algorithm_running(void) = 0;
191 
196  virtual void set_algorithm_idle(void) = 0;
197 
202  virtual void set_algorithm_waiting(void) = 0;
203 
204 
205  //
206  // ======== User algorithm management ========
207  //
208 
214  virtual const sc_event& update_user_algorithm(void) const = 0;
215 
216  virtual void wait_for_update_user_algorithm(void) = 0;
217 
224  virtual bool& kill_user_algorithm(void) = 0;
225 
226 
227  //
228  // ======== Data received ========
229  //
230 
237  virtual void b_data_received(string name) = 0;
238 
245  virtual void b_data_received(int id) = 0;
246 
252  virtual void b_all_data_received(void) = 0;
253 
260  virtual bool nb_data_received(string name) = 0;
261 
268  virtual bool nb_data_received(int id) = 0;
269 
275  virtual bool nb_all_data_received(void) = 0;
276 
277 
278  //
279  // ======== Send data ========
280  //
281 
286  virtual void nb_send_data(string name) = 0;
287 
292  virtual void nb_send_data(int id) = 0;
293 
297  virtual void nb_send_all_data(void) = 0;
298 
304  virtual void b_send_data(string name) = 0;
305 
311  virtual void b_send_data(int id) = 0;
312 
317  virtual void b_send_all_data(void) = 0;
318 
319 
320  //
321  // ======== Data sent ========
322  //
323 
331  virtual void b_data_sent(int id) = 0;
332 
340  virtual void b_data_sent(string name) = 0;
341 
348  virtual void b_all_data_sent(void) = 0;
349 
356  virtual bool nb_data_sent(int id) = 0;
357 
364  virtual bool nb_data_sent(string name) = 0;
365 
370  virtual bool nb_all_data_sent(void) = 0;
371 
377  virtual void start_new_transaction_sequence(int id) = 0;
378 
384  virtual void start_new_transaction_sequence(string name) = 0;
385 
391  virtual void start_new_transaction_sequence(void) = 0;
392 
393 
394 
395  //
396  // ======== Transient channels ========
397  //
398 
404  virtual bool is_channel_transient(string name) = 0;
405 
411  virtual bool is_channel_transient(int id) = 0;
412 
413 
414  //
415  // ======== Algorithm execution mode ========
416  //
417 
422  virtual string get_algorithm_execution_mode(void) = 0;
423 
429  virtual bool is_algorithm_execution_mode(string mode) = 0;
430 
431 
432  //
433  // ======== Input socket management ========
434  //
435 
441  virtual void release_input_socket(int socketID) = 0;
442 
448  virtual void release_input_socket(string connectionName) = 0;
449 
454  virtual void release_all_input_sockets(void) = 0;
455 
456 
457  //
458  // ======== Misc ========
459  //
460 
465  virtual const char* get_name(void) const = 0;
466 
472  virtual int get_nb_preemption_points(void) = 0;
473 
478  virtual void wait_until_next_period(void) = 0;
479 
484  virtual ofstream& get_logfile(void) = 0;
485 
486 };
487 
488 #endif
Definition: user_algorithm_interface.h:35
User_algorithm_action
Definition: user_algorithm_interface.h:32