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

Last change on this file since 68 was 68, checked in by rosiere, 17 years ago

read_queue : systemC et vhdl ok !
queue : quelques petits modif pour avoir une queue de taille 1
nettoyage des fichiers *mkf*

File size: 8.0 KB
Line 
1/*
2 * $Id$
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,"Read_queue","Allocation of statistics");
42
43    // Allocation of statistics
44    _stat = new Statistics (static_cast<string>(_name),
45                            param_statistics          ,
46                            param);
47#endif
48
49#ifdef VHDL
50    // generate the vhdl
51    log_printf(INFO,Read_queue,"Read_queue","Generate the vhdl");
52
53    vhdl();
54#endif
55
56#ifdef SYSTEMC
57    log_printf(INFO,Read_queue,"Read_queue","Method - transition");
58
59    SC_METHOD (transition);
60    dont_initialize ();
61    sensitive_pos << *(in_CLOCK);
62
63    log_printf(INFO,Read_queue,"Read_queue","Method - genMoore");
64
65    SC_METHOD (genMoore);
66    dont_initialize ();
67    sensitive_neg << *(in_CLOCK);
68
69    log_printf(INFO,Read_queue,"Read_queue","Method - genMealy_read_queue_out_val");
70
71    SC_METHOD (genMealy_read_queue_out_val);
72    dont_initialize ();
73    sensitive_neg << *(in_CLOCK);
74    for (uint32_t i=0; i<_param->_nb_gpr_read ; i++)
75      sensitive << *(in_GPR_READ_ACK      [i]);
76    for (uint32_t i=0; i<_param->_nb_spr_read ; i++)
77      sensitive << *(in_SPR_READ_ACK      [i]);
78    for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
79      {
80        if (_param->_have_port_ooo_engine_id)
81          sensitive << *(in_GPR_WRITE_OOO_ENGINE_ID [i]);
82
83        sensitive << *(in_GPR_WRITE_VAL        [i])
84                  << *(in_GPR_WRITE_NUM_REG    [i]);
85      }
86    for (uint32_t i=0; i<_param->_nb_spr_write; i++)
87      {
88        if (_param->_have_port_ooo_engine_id)
89          sensitive << *(in_SPR_WRITE_OOO_ENGINE_ID [i]);
90        sensitive << *(in_SPR_WRITE_VAL        [i])
91                 
92                  << *(in_SPR_WRITE_NUM_REG    [i]);
93      }
94#ifdef SYSTEMCASS_SPECIFIC
95    // List dependency information
96
97    (*(out_READ_QUEUE_OUT_VAL)) (*(in_GPR_READ_ACK                [0]));
98    (*(out_READ_QUEUE_OUT_VAL)) (*(in_SPR_READ_ACK                [0]));
99   
100    for (uint32_t i=0; i<_param->_nb_gpr_write ; i++)
101      {
102        (*(out_READ_QUEUE_OUT_VAL)) (*(in_GPR_WRITE_VAL        [i]));
103        if (_param->_have_port_ooo_engine_id)
104        (*(out_READ_QUEUE_OUT_VAL)) (*(in_GPR_WRITE_OOO_ENGINE_ID [i]));
105        (*(out_READ_QUEUE_OUT_VAL)) (*(in_GPR_WRITE_NUM_REG    [i]));
106      }
107    for (uint32_t i=0; i<_param->_nb_spr_write ; i++)
108      {
109        (*(out_READ_QUEUE_OUT_VAL)) (*(in_SPR_WRITE_VAL        [i]));
110        if (_param->_have_port_ooo_engine_id)
111        (*(out_READ_QUEUE_OUT_VAL)) (*(in_SPR_WRITE_OOO_ENGINE_ID [i]));
112        (*(out_READ_QUEUE_OUT_VAL)) (*(in_SPR_WRITE_NUM_REG    [i]));
113      }
114#endif   
115   
116    log_printf(INFO,Read_queue,"Read_queue","Method - genMealy_read_queue_out_gpr");
117
118    SC_METHOD (genMealy_read_queue_out_gpr);
119    dont_initialize ();
120    sensitive_neg << *(in_CLOCK);
121    for (uint32_t i=0; i<_param->_nb_gpr_read ; i++)
122      sensitive << *(in_GPR_READ_ACK      [i])
123                << *(in_GPR_READ_DATA     [i])
124                << *(in_GPR_READ_DATA_VAL [i]);
125    for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
126      {
127        if (_param->_have_port_ooo_engine_id)
128          sensitive << *(in_GPR_WRITE_OOO_ENGINE_ID [i]);
129        sensitive << *(in_GPR_WRITE_VAL        [i])
130                  << *(in_GPR_WRITE_NUM_REG    [i])
131                  << *(in_GPR_WRITE_DATA       [i]);
132      }
133#ifdef SYSTEMCASS_SPECIFIC
134    // List dependency information
135
136    (*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_READ_ACK                [0]));
137    (*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_READ_DATA_VAL           [0]));
138    (*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_READ_ACK                [1]));
139    (*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_READ_DATA_VAL           [1]));
140   
141    (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_READ_DATA               [0]));
142    (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_READ_DATA               [1]));
143   
144    for (uint32_t i=0; i<_param->_nb_gpr_write ; i++)
145      {
146        (*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_WRITE_VAL        [i]));
147        if (_param->_have_port_ooo_engine_id)
148          (*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_WRITE_OOO_ENGINE_ID [i]));
149        (*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_WRITE_NUM_REG    [i]));
150        (*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_WRITE_VAL        [i]));
151        if (_param->_have_port_ooo_engine_id)
152          (*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_WRITE_OOO_ENGINE_ID [i]));
153        (*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_WRITE_NUM_REG    [i]));
154
155        (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_WRITE_VAL        [i]));
156        if (_param->_have_port_ooo_engine_id)
157          (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_WRITE_OOO_ENGINE_ID [i]));
158        (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_WRITE_NUM_REG    [i]));
159        (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_WRITE_DATA       [i]));
160        (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_WRITE_VAL        [i]));
161        if (_param->_have_port_ooo_engine_id)
162          (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_WRITE_OOO_ENGINE_ID [i]));
163        (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_WRITE_NUM_REG    [i]));
164        (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_WRITE_DATA       [i]));
165      }
166#endif   
167
168    log_printf(INFO,Read_queue,"Read_queue","Method - genMealy_read_queue_out_spr");
169
170    SC_METHOD (genMealy_read_queue_out_spr);
171    dont_initialize ();
172    sensitive_neg << *(in_CLOCK);
173    for (uint32_t i=0; i<_param->_nb_spr_read ; i++)
174      sensitive << *(in_SPR_READ_ACK      [i])
175                << *(in_SPR_READ_DATA     [i])
176                << *(in_SPR_READ_DATA_VAL [i]);
177    for (uint32_t i=0; i<_param->_nb_spr_write; i++)
178      {
179        if (_param->_have_port_ooo_engine_id)
180          sensitive << *(in_SPR_WRITE_OOO_ENGINE_ID [i]);
181        sensitive << *(in_SPR_WRITE_VAL        [i])
182                  << *(in_SPR_WRITE_NUM_REG    [i])
183                  << *(in_SPR_WRITE_DATA       [i]);
184      }
185#ifdef SYSTEMCASS_SPECIFIC
186    // List dependency information
187
188    (*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_READ_ACK                [0]));
189    (*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_READ_DATA_VAL           [0]));
190   
191    (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_READ_DATA               [0]));
192   
193    for (uint32_t i=0; i<_param->_nb_spr_write ; i++)
194      {
195        (*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_WRITE_VAL        [i]));
196        if (_param->_have_port_ooo_engine_id)
197          (*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_WRITE_OOO_ENGINE_ID [i]));
198        (*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_WRITE_NUM_REG    [i]));
199
200        (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_WRITE_VAL        [i]));
201        if (_param->_have_port_ooo_engine_id)
202          (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_WRITE_OOO_ENGINE_ID [i]));
203        (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_WRITE_NUM_REG    [i]));
204        (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_WRITE_DATA       [i]));
205      }
206#endif   
207
208#endif
209    log_printf(FUNC,Read_queue,"Read_queue","End");
210  };
211 
212  Read_queue::~Read_queue (void)
213  {
214    log_printf(FUNC,Read_queue,"~Read_queue","Begin");
215
216#ifdef STATISTICS
217    log_printf(INFO,Read_queue,"~Read_queue","Generate Statistics file");
218
219    _stat->generate_file(statistics(0));
220   
221    delete _stat;
222#endif
223
224#ifdef SYSTEMC
225    log_printf(INFO,Read_queue,"~Read_queue","Deallocation");
226
227    deallocation ();
228#endif
229
230    log_printf(FUNC,Read_queue,"~Read_queue","End");
231  };
232
233}; // end namespace read_queue
234}; // end namespace read_unit
235}; // end namespace multi_read_unit
236}; // end namespace execute_loop
237}; // end namespace multi_execute_loop
238}; // end namespace core
239
240}; // end namespace behavioural
241}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.