source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Parameters.cpp @ 137

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

1) Correct bug in link two signal
2) Fix error detected with valgrind
3) modif distexe script

  • Property svn:keywords set to Id
File size: 5.4 KB
Line 
1/*
2 * $Id: Parameters.cpp 128 2009-06-26 08:43:23Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Parameters.h"
9#include "Common/include/Max.h"
10
11namespace morpheo {
12namespace behavioural {
13namespace core {
14namespace multi_ooo_engine {
15namespace ooo_engine {
16namespace rename_unit {
17namespace register_translation_unit {
18
19
20#undef  FUNCTION
21#define FUNCTION "Register_translation_unit::Parameters"
22  Parameters::Parameters (uint32_t   nb_front_end          ,
23                          uint32_t * nb_context            ,
24                          uint32_t   nb_general_register   ,
25                          uint32_t   nb_special_register   ,
26                          uint32_t   nb_inst_insert        ,
27                          uint32_t   nb_inst_retire        ,
28                          uint32_t   nb_reg_free           ,
29                          uint32_t   nb_bank               ,
30//                        uint32_t   size_read_counter     ,
31                          bool       is_toplevel)
32  {
33    log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
34   
35    _nb_front_end        = nb_front_end       ;
36    _nb_context          = nb_context         ;
37    _nb_general_register = nb_general_register;
38    _nb_special_register = nb_special_register;
39    _nb_inst_insert      = nb_inst_insert     ;
40    _nb_inst_retire      = nb_inst_retire     ;
41    _nb_reg_free         = nb_reg_free        ;
42    _nb_bank             = nb_bank            ;
43//     _size_read_counter   = size_read_counter  ;
44
45    uint32_t size_general_register = log2(nb_general_register);
46    uint32_t size_special_register = log2(nb_special_register);
47    uint32_t max_nb_context        = max<uint32_t>(nb_context, nb_front_end);
48   
49    uint32_t nb_thread = 0;
50    for (uint32_t i=0; i<nb_front_end; i++)
51      nb_thread += nb_context[i];
52
53    _param_dependency_checking_unit          = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::dependency_checking_unit::Parameters
54      (_nb_front_end       ,
55       max_nb_context      ,
56       _nb_general_register,
57       _nb_special_register,
58       _nb_inst_insert     );
59
60    _param_free_list_unit                    = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::free_list_unit::Parameters
61      (nb_thread           ,
62       _nb_general_register,
63       _nb_special_register,
64       _nb_bank            ,
65       _nb_inst_insert     ,
66       _nb_reg_free        ,
67       PRIORITY_ROUND_ROBIN);
68
69    _param_register_address_translation_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Parameters
70      (_nb_front_end       ,
71       _nb_context         ,
72       _nb_general_register,
73       _nb_special_register,
74       _nb_inst_insert     ,
75       _nb_inst_retire     );
76
77    _param_stat_list_unit                    = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::stat_list_unit::Parameters
78      (_nb_front_end       ,
79       _nb_context         ,
80       _nb_general_register,
81       _nb_special_register,
82       _nb_inst_insert     ,
83       _nb_inst_retire     ,
84       _nb_reg_free        ,
85       _nb_bank            // ,
86//     _size_read_counter 
87       );
88
89    _param_register_translation_unit_glue    = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_translation_unit_glue::Parameters
90      (_nb_inst_insert,
91       _nb_inst_retire,
92        size_general_register,
93        size_special_register);
94     
95    test();
96
97    if (is_toplevel)
98      {
99        _size_front_end_id      = log2(nb_front_end       );
100        _size_context_id        = log2(max_nb_context     );
101
102        _size_general_register  = size_general_register;
103        _size_special_register  = size_special_register;
104       
105        _have_port_front_end_id = _size_front_end_id>0;
106        _have_port_context_id   = _size_context_id  >0;
107
108        copy();
109      }
110
111    log_printf(FUNC,Register_translation_unit,FUNCTION,"End");
112  };
113 
114// #undef  FUNCTION
115// #define FUNCTION "Register_translation_unit::Parameters (copy)"
116//   Parameters::Parameters (Parameters & param)
117//   {
118//     log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
119//     test();
120//     log_printf(FUNC,Register_translation_unit,FUNCTION,"End");
121//   };
122
123#undef  FUNCTION
124#define FUNCTION "Register_translation_unit::~Parameters"
125  Parameters::~Parameters () 
126  {
127    log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
128
129    delete _param_dependency_checking_unit;
130    delete _param_free_list_unit;
131    delete _param_register_address_translation_unit;
132    delete _param_stat_list_unit;   
133    delete _param_register_translation_unit_glue;
134
135    log_printf(FUNC,Register_translation_unit,FUNCTION,"End");
136  };
137
138#undef  FUNCTION
139#define FUNCTION "Register_translation_unit::copy"
140  void Parameters::copy (void) 
141  {
142    log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
143
144    COPY(_param_dependency_checking_unit);
145    COPY(_param_free_list_unit);
146    COPY(_param_register_address_translation_unit);
147    COPY(_param_stat_list_unit);   
148    COPY(_param_register_translation_unit_glue);
149
150    log_printf(FUNC,Register_translation_unit,FUNCTION,"End");
151  };
152
153}; // end namespace register_translation_unit
154}; // end namespace rename_unit
155}; // end namespace ooo_engine
156}; // end namespace multi_ooo_engine
157}; // end namespace core
158
159}; // end namespace behavioural
160}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.