Please, help us to better know about our user community by answering the following short survey: https://forms.gle/wpyrxWi18ox9Z5ae9
scTimedFIFO.h
Go to the documentation of this file.
1 
5  /* @author János Végh (jvegh)
6  * @bug No known bugs.
7  */
8 
9 // Header for the scEMPA simulator, Inter-core block
10 
11 #ifndef scTimedIGPFIFO_h
12 #define scTimedIGPFIFO_h
13 #include <systemc>
14 //#include "scGridPoint.h"
15 
16 class scIGPMessage;
17 using namespace sc_core;
18 //Submodule forward class declarations
23 typedef struct{
24  sc_core::sc_time Time;
25  scIGPMessage* Message;
27 
28 // This is a FIFO for the timed GridPoint events
29 
30 class TimedIGPMessage_write_if : virtual public sc_interface
31 {
32  public:
33  virtual void write(TimedIGPMessage_type) = 0;
34  virtual void reset() = 0;
35 };
36 
37 class TimedIGPMessage_read_if : virtual public sc_interface
38 {
39  public:
40  virtual void read(TimedIGPMessage_type &) = 0;
41  virtual int num_available() = 0;
42 };
43 
44 // This is the FIFO for the timed scGridPoint events
45 // This FIFO is time ordered; the new messages are inserted in the queue
46 // according to their deadline
58 class scTimedIGPMessage_fifo: public sc_core::sc_channel, TimedIGPMessage_write_if, TimedIGPMessage_read_if
59 {
60  public:
61  scTimedIGPMessage_fifo(const sc_module_name& name) ;
62  virtual
63  ~scTimedIGPMessage_fifo(void){}
64  void write(TimedIGPMessage_type T);
65  void read(TimedIGPMessage_type &T);
66  void dowrite(TimedIGPMessage_type T);
67  void doread(TimedIGPMessage_type &T);
68  void reset() { num_elements = first = 0;}
69  int num_available() { return num_elements;}
70  bool NewTimeLower(TimedIGPMessage_type New, TimedIGPMessage_type Old);
71  sc_time NextTime_Get(void){if(num_elements) return data[first].Time; else return SC_ZERO_TIME;}
72  int Length_Get(void){ return max;}
73  sc_event TimedIGPMessage_fifo_write_event, TimedIGPMessage_fifo_read_event;
74  private:
75  enum e { max = 10 }; // Only for testing!
76  TimedIGPMessage_type data[max];
77  int num_elements, first;
78 };
79 
80 
81 #endif // scTimedIGPFIFO
scIGPMessage
The scIGPMessage class.
Definition: scIGPMessage.h:97
TimedIGPMessage_type
The event in the timed event queue.
Definition: scTimedFIFO.h:23
scTimedIGPMessage_fifo
The FIFO stores messages ordered by their 'delayed delivery time'.
Definition: scTimedFIFO.h:58