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

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

Almost complete design
with Test and test platform

  • Property svn:keywords set to Id
File size: 5.4 KB
Line 
1/*
2 * $Id: Parameters.cpp 88 2008-12-10 18:31:39Z 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    _param_register_translation_unit_glue    = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_translation_unit_glue::Parameters
89      (_nb_inst_insert,
90       _nb_inst_retire,
91        size_general_register,
92        size_special_register);
93     
94    test();
95
96    if (is_toplevel)
97      {
98        _size_front_end_id      = log2(nb_front_end       );
99        _size_context_id        = log2(max_nb_context     );
100
101        _size_general_register  = size_general_register;
102        _size_special_register  = size_special_register;
103       
104        _have_port_front_end_id = _size_front_end_id>0;
105        _have_port_context_id   = _size_context_id  >0;
106
107        copy();
108      }
109
110    log_printf(FUNC,Register_translation_unit,FUNCTION,"End");
111  };
112 
113// #undef  FUNCTION
114// #define FUNCTION "Register_translation_unit::Parameters (copy)"
115//   Parameters::Parameters (Parameters & param)
116//   {
117//     log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
118//     test();
119//     log_printf(FUNC,Register_translation_unit,FUNCTION,"End");
120//   };
121
122#undef  FUNCTION
123#define FUNCTION "Register_translation_unit::~Parameters"
124  Parameters::~Parameters () 
125  {
126    log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
127
128    delete [] _param_dependency_checking_unit;
129    delete [] _param_free_list_unit;
130    delete [] _param_register_address_translation_unit;
131    delete [] _param_stat_list_unit;   
132    delete [] _param_register_translation_unit_glue;
133
134    log_printf(FUNC,Register_translation_unit,FUNCTION,"End");
135  };
136
137#undef  FUNCTION
138#define FUNCTION "Register_translation_unit::copy"
139  void Parameters::copy (void) 
140  {
141    log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
142
143    COPY(_param_dependency_checking_unit);
144    COPY(_param_free_list_unit);
145    COPY(_param_register_address_translation_unit);
146    COPY(_param_stat_list_unit);   
147    COPY(_param_register_translation_unit_glue);
148
149    log_printf(FUNC,Register_translation_unit,FUNCTION,"End");
150  };
151
152}; // end namespace register_translation_unit
153}; // end namespace rename_unit
154}; // end namespace ooo_engine
155}; // end namespace multi_ooo_engine
156}; // end namespace core
157
158}; // end namespace behavioural
159}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.