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

Last change on this file since 123 was 123, checked in by rosiere, 15 years ago

1) Fix performance
2) add auto generation to SPECINT2000
3) add reset in genMoore and genMealy

  • Property svn:keywords set to Id
File size: 6.0 KB
Line 
1/*
2 * $Id: Rename_unit_Glue.cpp 123 2009-06-08 20:43:30Z 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       
104        for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
105          sensitive
106          //<< (*(in_INSERT_ACK                          [i]))
107            << (*(in_INSERT_RENAME_SELECT_VAL            [i]))
108            << (*(in_INSERT_RENAME_SELECT_NO_EXECUTE     [i]))
109            << (*(in_INSERT_REGISTER_TRANSLATION_ACK     [i]))
110            << (*(in_INSERT_LOAD_STORE_QUEUE_POINTER_ACK [i]))
111            ;
112
113# ifdef SYSTEMCASS_SPECIFIC
114        // List dependency information
115# endif   
116
117        log_printf(INFO,Rename_unit_Glue,FUNCTION,_("<%s> : Method - genMealy_retire_valack"),_name.c_str());
118
119        SC_METHOD (genMealy_retire_valack);
120        dont_initialize ();
121//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
122        for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
123          sensitive
124            << (*(in_RETIRE_VAL                          [i]))
125            << (*(in_RETIRE_LOAD_STORE_QUEUE_POINTER_ACK [i]))
126            << (*(in_RETIRE_REGISTER_TRANSLATION_ACK     [i]))
127            ;
128
129# ifdef SYSTEMCASS_SPECIFIC
130        // List dependency information
131# endif   
132
133        log_printf(INFO,Rename_unit_Glue,FUNCTION,_("<%s> : Method - genMealy_retire_event_valack"),_name.c_str());
134
135        SC_METHOD (genMealy_retire_event_valack);
136        dont_initialize ();
137//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
138        for (uint32_t i=0; i<_param->_nb_front_end; i++)
139          for (uint32_t j=0; j<_param->_nb_context[i]; j++)
140            sensitive
141              << (*(in_RETIRE_EVENT_VAL                          [i][j]))
142              << (*(in_RETIRE_EVENT_LOAD_STORE_QUEUE_POINTER_ACK [i][j]))
143              << (*(in_RETIRE_EVENT_REGISTER_TRANSLATION_ACK     [i][j]))
144              ;
145
146# ifdef SYSTEMCASS_SPECIFIC
147        // List dependency information
148# endif   
149
150        log_printf(INFO,Rename_unit_Glue,FUNCTION,_("<%s> : Method - genMealy_insert"),_name.c_str());
151
152        SC_METHOD (genMealy_insert);
153        dont_initialize ();
154//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
155        for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
156          {
157            if (_param->_have_port_front_end_id)
158            sensitive << (*(in_INSERT_RENAME_SELECT_FRONT_END_ID              [i]));
159            if (_param->_have_port_context_id)
160            sensitive << (*(in_INSERT_RENAME_SELECT_CONTEXT_ID                [i]));
161            sensitive << (*(in_INSERT_RENAME_SELECT_TYPE                      [i]))
162                      << (*(in_INSERT_RENAME_SELECT_OPERATION                 [i]))
163                      << (*(in_INSERT_RENAME_SELECT_IMMEDIAT                  [i]))
164//                    << (*(in_INSERT_RENAME_SELECT_EXCEPTION_USE             [i]))
165                      << (*(in_INSERT_RENAME_SELECT_EXCEPTION                 [i]))
166                      << (*(in_INSERT_REGISTER_TRANSLATION_NUM_REG_RE_PHY_NEW [i]));
167
168          }
169        for (uint32_t i=0; i<_param->_nb_front_end; i++)
170          for (uint32_t j=0; j<_param->_nb_context[i]; j++)
171            sensitive << (*(in_SPR_READ_SR [i][j]));
172       
173# ifdef SYSTEMCASS_SPECIFIC
174        // List dependency information
175# endif   
176       
177#endif
178      }
179    log_end(Rename_unit_Glue,FUNCTION);
180  };
181   
182#undef  FUNCTION
183#define FUNCTION "Rename_unit_Glue::~Rename_unit_Glue"
184  Rename_unit_Glue::~Rename_unit_Glue (void)
185  {
186    log_begin(Rename_unit_Glue,FUNCTION);
187
188#ifdef STATISTICS
189    if (usage_is_set(_usage,USE_STATISTICS))
190      {
191        statistics_deallocation();
192      }
193#endif
194
195    log_printf(INFO,Rename_unit_Glue,FUNCTION,_("<%s> : Deallocation"),_name.c_str());
196    deallocation ();
197
198    log_end(Rename_unit_Glue,FUNCTION);
199  };
200
201}; // end namespace rename_unit_glue
202}; // end namespace rename_unit
203}; // end namespace ooo_engine
204}; // end namespace multi_ooo_engine
205}; // end namespace core
206
207}; // end namespace behavioural
208}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.