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

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