source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue.cpp @ 81

Last change on this file since 81 was 81, checked in by rosiere, 16 years ago
  • Finish Environment (and test)
  • Continue predictor_unit
  • Add external tools
  • svn keyword "Id" set
  • Property svn:keywords set to Id
File size: 7.9 KB
Line 
1/*
2 * $Id: Read_queue.cpp 81 2008-04-15 18:40:01Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h"
9
10namespace morpheo                    {
11namespace behavioural {
12namespace core {
13namespace multi_execute_loop {
14namespace execute_loop {
15namespace multi_read_unit {
16namespace read_unit {
17namespace read_queue {
18
19
20#ifdef SYSTEMC
21  Read_queue::Read_queue (sc_module_name name,
22#else
23  Read_queue::Read_queue (string name,
24#endif
25#ifdef STATISTICS
26                              morpheo::behavioural::Parameters_Statistics            * param_statistics,
27#endif
28                              morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Parameters * param ):
29                              _name              (name)
30                              ,_param            (param)
31  {
32    log_printf(FUNC,Read_queue,"Read_queue","Begin");
33
34#ifdef SYSTEMC
35    log_printf(INFO,Read_queue,"Read_queue","Allocation");
36
37    allocation ();
38#endif
39
40#ifdef STATISTICS
41    log_printf(INFO,Read_queue,FUNCTION,"Allocation of statistics");
42   
43    statistics_declaration(param_statistics);
44#endif
45
46#ifdef VHDL
47    // generate the vhdl
48    log_printf(INFO,Read_queue,"Read_queue","Generate the vhdl");
49
50    vhdl();
51#endif
52
53#ifdef SYSTEMC
54    log_printf(INFO,Read_queue,"Read_queue","Method - transition");
55
56    SC_METHOD (transition);
57    dont_initialize ();
58    sensitive_pos << *(in_CLOCK);
59
60    log_printf(INFO,Read_queue,"Read_queue","Method - genMoore");
61
62    SC_METHOD (genMoore);
63    dont_initialize ();
64    sensitive_neg << *(in_CLOCK);
65
66    log_printf(INFO,Read_queue,"Read_queue","Method - genMealy_read_queue_out_val");
67
68    SC_METHOD (genMealy_read_queue_out_val);
69    dont_initialize ();
70    sensitive_neg << *(in_CLOCK);
71    for (uint32_t i=0; i<_param->_nb_gpr_read ; i++)
72      sensitive << *(in_GPR_READ_ACK      [i]);
73    for (uint32_t i=0; i<_param->_nb_spr_read ; i++)
74      sensitive << *(in_SPR_READ_ACK      [i]);
75    for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
76      {
77        if (_param->_have_port_ooo_engine_id)
78          sensitive << *(in_GPR_WRITE_OOO_ENGINE_ID [i]);
79
80        sensitive << *(in_GPR_WRITE_VAL        [i])
81                  << *(in_GPR_WRITE_NUM_REG    [i]);
82      }
83    for (uint32_t i=0; i<_param->_nb_spr_write; i++)
84      {
85        if (_param->_have_port_ooo_engine_id)
86          sensitive << *(in_SPR_WRITE_OOO_ENGINE_ID [i]);
87        sensitive << *(in_SPR_WRITE_VAL        [i])
88                 
89                  << *(in_SPR_WRITE_NUM_REG    [i]);
90      }
91#ifdef SYSTEMCASS_SPECIFIC
92    // List dependency information
93
94    (*(out_READ_QUEUE_OUT_VAL)) (*(in_GPR_READ_ACK                [0]));
95    (*(out_READ_QUEUE_OUT_VAL)) (*(in_SPR_READ_ACK                [0]));
96   
97    for (uint32_t i=0; i<_param->_nb_gpr_write ; i++)
98      {
99        (*(out_READ_QUEUE_OUT_VAL)) (*(in_GPR_WRITE_VAL        [i]));
100        if (_param->_have_port_ooo_engine_id)
101        (*(out_READ_QUEUE_OUT_VAL)) (*(in_GPR_WRITE_OOO_ENGINE_ID [i]));
102        (*(out_READ_QUEUE_OUT_VAL)) (*(in_GPR_WRITE_NUM_REG    [i]));
103      }
104    for (uint32_t i=0; i<_param->_nb_spr_write ; i++)
105      {
106        (*(out_READ_QUEUE_OUT_VAL)) (*(in_SPR_WRITE_VAL        [i]));
107        if (_param->_have_port_ooo_engine_id)
108        (*(out_READ_QUEUE_OUT_VAL)) (*(in_SPR_WRITE_OOO_ENGINE_ID [i]));
109        (*(out_READ_QUEUE_OUT_VAL)) (*(in_SPR_WRITE_NUM_REG    [i]));
110      }
111#endif   
112   
113    log_printf(INFO,Read_queue,"Read_queue","Method - genMealy_read_queue_out_gpr");
114
115    SC_METHOD (genMealy_read_queue_out_gpr);
116    dont_initialize ();
117    sensitive_neg << *(in_CLOCK);
118    for (uint32_t i=0; i<_param->_nb_gpr_read ; i++)
119      sensitive << *(in_GPR_READ_ACK      [i])
120                << *(in_GPR_READ_DATA     [i])
121                << *(in_GPR_READ_DATA_VAL [i]);
122    for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
123      {
124        if (_param->_have_port_ooo_engine_id)
125          sensitive << *(in_GPR_WRITE_OOO_ENGINE_ID [i]);
126        sensitive << *(in_GPR_WRITE_VAL        [i])
127                  << *(in_GPR_WRITE_NUM_REG    [i])
128                  << *(in_GPR_WRITE_DATA       [i]);
129      }
130#ifdef SYSTEMCASS_SPECIFIC
131    // List dependency information
132
133    (*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_READ_ACK                [0]));
134    (*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_READ_DATA_VAL           [0]));
135    (*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_READ_ACK                [1]));
136    (*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_READ_DATA_VAL           [1]));
137   
138    (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_READ_DATA               [0]));
139    (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_READ_DATA               [1]));
140   
141    for (uint32_t i=0; i<_param->_nb_gpr_write ; i++)
142      {
143        (*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_WRITE_VAL        [i]));
144        if (_param->_have_port_ooo_engine_id)
145          (*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_WRITE_OOO_ENGINE_ID [i]));
146        (*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_WRITE_NUM_REG    [i]));
147        (*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_WRITE_VAL        [i]));
148        if (_param->_have_port_ooo_engine_id)
149          (*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_WRITE_OOO_ENGINE_ID [i]));
150        (*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_WRITE_NUM_REG    [i]));
151
152        (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_WRITE_VAL        [i]));
153        if (_param->_have_port_ooo_engine_id)
154          (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_WRITE_OOO_ENGINE_ID [i]));
155        (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_WRITE_NUM_REG    [i]));
156        (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_WRITE_DATA       [i]));
157        (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_WRITE_VAL        [i]));
158        if (_param->_have_port_ooo_engine_id)
159          (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_WRITE_OOO_ENGINE_ID [i]));
160        (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_WRITE_NUM_REG    [i]));
161        (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_WRITE_DATA       [i]));
162      }
163#endif   
164
165    log_printf(INFO,Read_queue,"Read_queue","Method - genMealy_read_queue_out_spr");
166
167    SC_METHOD (genMealy_read_queue_out_spr);
168    dont_initialize ();
169    sensitive_neg << *(in_CLOCK);
170    for (uint32_t i=0; i<_param->_nb_spr_read ; i++)
171      sensitive << *(in_SPR_READ_ACK      [i])
172                << *(in_SPR_READ_DATA     [i])
173                << *(in_SPR_READ_DATA_VAL [i]);
174    for (uint32_t i=0; i<_param->_nb_spr_write; i++)
175      {
176        if (_param->_have_port_ooo_engine_id)
177          sensitive << *(in_SPR_WRITE_OOO_ENGINE_ID [i]);
178        sensitive << *(in_SPR_WRITE_VAL        [i])
179                  << *(in_SPR_WRITE_NUM_REG    [i])
180                  << *(in_SPR_WRITE_DATA       [i]);
181      }
182#ifdef SYSTEMCASS_SPECIFIC
183    // List dependency information
184
185    (*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_READ_ACK                [0]));
186    (*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_READ_DATA_VAL           [0]));
187   
188    (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_READ_DATA               [0]));
189   
190    for (uint32_t i=0; i<_param->_nb_spr_write ; i++)
191      {
192        (*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_WRITE_VAL        [i]));
193        if (_param->_have_port_ooo_engine_id)
194          (*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_WRITE_OOO_ENGINE_ID [i]));
195        (*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_WRITE_NUM_REG    [i]));
196
197        (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_WRITE_VAL        [i]));
198        if (_param->_have_port_ooo_engine_id)
199          (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_WRITE_OOO_ENGINE_ID [i]));
200        (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_WRITE_NUM_REG    [i]));
201        (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_WRITE_DATA       [i]));
202      }
203#endif   
204
205#endif
206    log_printf(FUNC,Read_queue,"Read_queue","End");
207  };
208 
209  Read_queue::~Read_queue (void)
210  {
211    log_printf(FUNC,Read_queue,"~Read_queue","Begin");
212
213#ifdef STATISTICS
214    log_printf(INFO,Read_queue,"~Read_queue","Generate Statistics file");
215
216    delete _stat;
217#endif
218
219#ifdef SYSTEMC
220    log_printf(INFO,Read_queue,"~Read_queue","Deallocation");
221
222    deallocation ();
223#endif
224
225    log_printf(FUNC,Read_queue,"~Read_queue","End");
226  };
227
228}; // end namespace read_queue
229}; // end namespace read_unit
230}; // end namespace multi_read_unit
231}; // end namespace execute_loop
232}; // end namespace multi_execute_loop
233}; // end namespace core
234
235}; // end namespace behavioural
236}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.