source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue.cpp @ 145

Last change on this file since 145 was 145, checked in by rosiere, 14 years ago

1) add test with SPECINT2K
2) new config of Selftest
3) modif RAT to support multiple depth_save ... but not finish (need fix Update Prediction Table)
4) add Function_pointer but need fix

  • Property svn:keywords set to Id
File size: 6.4 KB
Line 
1/*
2 * $Id: Rename_unit_Glue.cpp 145 2010-10-13 18:15:51Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/include/Rename_unit_Glue.h"
9
10namespace morpheo                    {
11namespace behavioural {
12namespace core {
13namespace multi_ooo_engine {
14namespace ooo_engine {
15namespace rename_unit {
16namespace rename_unit_glue {
17
18
19#undef  FUNCTION
20#define FUNCTION "Rename_unit_Glue::Rename_unit_Glue"
21  Rename_unit_Glue::Rename_unit_Glue
22  (
23#ifdef SYSTEMC
24   sc_module_name name,
25#else
26   string name,
27#endif
28#ifdef STATISTICS
29   morpheo::behavioural::Parameters_Statistics * param_statistics,
30#endif
31   morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::rename_unit_glue::Parameters * param,
32   morpheo::behavioural::Tusage_t usage
33   ):
34    _name              (name)
35    ,_param            (param)
36    ,_usage            (usage)
37  {
38    log_begin(Rename_unit_Glue,FUNCTION);
39
40    usage_environment(_usage);
41
42// #if DEBUG_Rename_unit_Glue == true
43//     log_printf(INFO,Rename_unit_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str());
44
45//     std::cout << *param << std::endl;
46// #endif   
47
48    log_printf(INFO,Rename_unit_Glue,FUNCTION,_("<%s> : Allocation"),_name.c_str());
49
50    allocation (
51#ifdef STATISTICS
52                param_statistics
53#endif
54                );
55
56#ifdef STATISTICS
57    if (usage_is_set(_usage,USE_STATISTICS))
58      { 
59        log_printf(INFO,Rename_unit_Glue,FUNCTION,_("<%s> : Allocation of statistics"),_name.c_str());
60
61        statistics_allocation(param_statistics);
62      }
63#endif
64
65#ifdef VHDL
66    if (usage_is_set(_usage,USE_VHDL))
67      {
68        // generate the vhdl
69        log_printf(INFO,Rename_unit_Glue,FUNCTION,_("<%s> : Generate the vhdl"),_name.c_str());
70       
71        vhdl();
72      }
73#endif
74
75#ifdef SYSTEMC
76    if (usage_is_set(_usage,USE_SYSTEMC))
77      {
78        log_printf(INFO,Rename_unit_Glue,FUNCTION,_("<%s> : Method - transition"),_name.c_str());
79
80        SC_METHOD (transition);
81        dont_initialize ();
82        sensitive << (*(in_CLOCK)).pos();
83       
84# ifdef SYSTEMCASS_SPECIFIC
85        // List dependency information
86# endif   
87
88//      log_printf(INFO,Rename_unit_Glue,FUNCTION,_("<%s> : Method - genMoore"),_name.c_str());
89
90//      SC_METHOD (genMoore);
91//      dont_initialize ();
92//      sensitive << (*(in_CLOCK)).neg(); // need internal register
93       
94// # ifdef SYSTEMCASS_SPECIFIC
95//      // List dependency information
96// # endif   
97
98        log_printf(INFO,Rename_unit_Glue,FUNCTION,_("<%s> : Method - genMealy_insert_valack"),_name.c_str());
99
100        SC_METHOD (genMealy_insert_valack);
101        dont_initialize ();
102//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
103        sensitive << (*(in_NRESET));
104
105        for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
106          sensitive
107          //<< (*(in_INSERT_ACK                          [i]))
108            << (*(in_INSERT_RENAME_SELECT_VAL            [i]))
109            << (*(in_INSERT_RENAME_SELECT_NO_EXECUTE     [i]))
110            << (*(in_INSERT_REGISTER_TRANSLATION_ACK     [i]))
111            << (*(in_INSERT_LOAD_STORE_QUEUE_POINTER_ACK [i]))
112            ;
113
114# ifdef SYSTEMCASS_SPECIFIC
115        // List dependency information
116# endif   
117
118        log_printf(INFO,Rename_unit_Glue,FUNCTION,_("<%s> : Method - genMealy_retire_valack"),_name.c_str());
119
120        SC_METHOD (genMealy_retire_valack);
121        dont_initialize ();
122//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
123        sensitive << (*(in_NRESET));
124        for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
125          sensitive
126            << (*(in_RETIRE_VAL                          [i]))
127            << (*(in_RETIRE_LOAD_STORE_QUEUE_POINTER_ACK [i]))
128            << (*(in_RETIRE_REGISTER_TRANSLATION_ACK     [i]))
129            ;
130
131# ifdef SYSTEMCASS_SPECIFIC
132        // List dependency information
133# endif   
134
135        log_printf(INFO,Rename_unit_Glue,FUNCTION,_("<%s> : Method - genMealy_retire_event_valack"),_name.c_str());
136
137        SC_METHOD (genMealy_retire_event_valack);
138        dont_initialize ();
139//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
140        sensitive << (*(in_NRESET));
141        for (uint32_t i=0; i<_param->_nb_front_end; i++)
142          for (uint32_t j=0; j<_param->_nb_context[i]; j++)
143            sensitive
144              << (*(in_RETIRE_EVENT_VAL                          [i][j]))
145              << (*(in_RETIRE_EVENT_LOAD_STORE_QUEUE_POINTER_ACK [i][j]))
146              << (*(in_RETIRE_EVENT_REGISTER_TRANSLATION_ACK     [i][j]))
147              ;
148
149# ifdef SYSTEMCASS_SPECIFIC
150        // List dependency information
151# endif   
152
153        log_printf(INFO,Rename_unit_Glue,FUNCTION,_("<%s> : Method - genMealy_insert"),_name.c_str());
154
155        SC_METHOD (genMealy_insert);
156        dont_initialize ();
157//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
158        sensitive << (*(in_NRESET));
159        for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
160          {
161            if (_param->_have_port_front_end_id)
162            sensitive << (*(in_INSERT_RENAME_SELECT_FRONT_END_ID              [i]));
163            if (_param->_have_port_context_id)
164            sensitive << (*(in_INSERT_RENAME_SELECT_CONTEXT_ID                [i]));
165            if (_param->_rat_scheme == RAT_DEPTH_SAVE)
166              {
167            if (_param->_have_port_depth)
168            sensitive << (*(in_INSERT_RENAME_SELECT_DEPTH                     [i]));
169            sensitive << (*(in_INSERT_RENAME_SELECT_SAVE_RAT                  [i]));
170              }
171            sensitive << (*(in_INSERT_RENAME_SELECT_TYPE                      [i]))
172                      << (*(in_INSERT_RENAME_SELECT_OPERATION                 [i]))
173                      << (*(in_INSERT_RENAME_SELECT_IMMEDIAT                  [i]))
174//                    << (*(in_INSERT_RENAME_SELECT_EXCEPTION_USE             [i]))
175                      << (*(in_INSERT_RENAME_SELECT_EXCEPTION                 [i]))
176                      << (*(in_INSERT_REGISTER_TRANSLATION_NUM_REG_RE_PHY_NEW [i]));
177
178          }
179        for (uint32_t i=0; i<_param->_nb_front_end; i++)
180          for (uint32_t j=0; j<_param->_nb_context[i]; j++)
181            sensitive << (*(in_SPR_READ_SR [i][j]));
182       
183# ifdef SYSTEMCASS_SPECIFIC
184        // List dependency information
185# endif   
186       
187#endif
188      }
189    log_end(Rename_unit_Glue,FUNCTION);
190  };
191   
192#undef  FUNCTION
193#define FUNCTION "Rename_unit_Glue::~Rename_unit_Glue"
194  Rename_unit_Glue::~Rename_unit_Glue (void)
195  {
196    log_begin(Rename_unit_Glue,FUNCTION);
197
198#ifdef STATISTICS
199    if (usage_is_set(_usage,USE_STATISTICS))
200      {
201        statistics_deallocation();
202      }
203#endif
204
205    log_printf(INFO,Rename_unit_Glue,FUNCTION,_("<%s> : Deallocation"),_name.c_str());
206    deallocation ();
207
208    log_end(Rename_unit_Glue,FUNCTION);
209  };
210
211}; // end namespace rename_unit_glue
212}; // end namespace rename_unit
213}; // end namespace ooo_engine
214}; // end namespace multi_ooo_engine
215}; // end namespace core
216
217}; // end namespace behavioural
218}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.