source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/Parameters.cpp @ 128

Last change on this file since 128 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.9 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/OOO_Engine_Glue/include/Parameters.h"
9#include "Behavioural/include/Allocation.h"
10#include "Common/include/Max.h"
11#include "Common/include/BitManipulation.h"
12
13namespace morpheo {
14namespace behavioural {
15namespace core {
16namespace multi_ooo_engine {
17namespace ooo_engine {
18namespace ooo_engine_glue {
19
20#undef  FUNCTION
21#define FUNCTION "OOO_Engine_Glue::Parameters"
22  Parameters::Parameters (uint32_t                nb_front_end                           ,
23                          uint32_t              * nb_context                             ,
24                          uint32_t                nb_rename_unit                         ,
25                          uint32_t              * nb_inst_decod                          ,
26                          uint32_t              * nb_inst_insert                         ,
27                          uint32_t              * nb_inst_retire                         ,
28                          uint32_t                size_general_data                      ,
29                          uint32_t                size_special_data                      ,
30                          uint32_t              * link_rename_unit_with_front_end        ,
31                          std::vector<uint32_t> * translate_front_end_id_from_rename_unit,
32                          uint32_t                size_packet_id                         ,
33                          uint32_t                size_general_register                  ,
34                          uint32_t                size_special_register                  ,
35                          uint32_t                size_store_queue_ptr                   ,
36                          uint32_t                size_load_queue_ptr                    ,
37                          bool                    is_toplevel                            )
38  {
39    log_begin(OOO_Engine_Glue,FUNCTION);
40
41    _nb_front_end                           = nb_front_end                    ;
42    _nb_context                             = nb_context                      ;
43    _nb_rename_unit                         = nb_rename_unit                  ;
44    _nb_inst_decod                          = nb_inst_decod                   ;
45    _nb_inst_insert                         = nb_inst_insert                  ;
46    _nb_inst_retire                         = nb_inst_retire                  ;
47    _link_rename_unit_with_front_end        = link_rename_unit_with_front_end ;
48    _translate_front_end_id_from_rename_unit= translate_front_end_id_from_rename_unit ;
49                                           
50//  _rename_unit_nb_front_end               = rename_unit_nb_front_end        ;
51//  _rename_unit_nb_context                 = rename_unit_nb_context          ;
52//  _rename_unit_size_front_end_id          = rename_unit_size_front_end_id   ;
53//  _rename_unit_size_context_id            = rename_unit_size_context_id     ;
54    _size_rename_id                         = log2(_nb_rename_unit)           ;
55    _sum_inst_insert                        = 0;
56//  _sum_inst_retire                        = 0;
57
58    for (uint32_t i=0; i<_nb_rename_unit; ++i)
59      {
60        _sum_inst_insert += _nb_inst_insert[i];
61//      _sum_inst_retire += _nb_inst_retire[i];
62      }
63
64    ALLOC1(_translate_front_end_id_to_rename_unit,uint32_t,_nb_front_end);
65   
66    for (uint32_t i=0; i<_nb_front_end; i++)
67      {
68        _translate_front_end_id_to_rename_unit [i]=0;
69       
70        uint32_t x = _link_rename_unit_with_front_end [i];
71
72        for (uint32_t j=0; j<_translate_front_end_id_from_rename_unit [x].size(); ++j)
73          {
74            if (_translate_front_end_id_from_rename_unit [x][j] == i)
75              break;
76            _translate_front_end_id_to_rename_unit [i]++;
77          }
78      }
79   
80    _mask_num_general_register              = gen_mask<Tgeneral_address_t>(size_general_register);
81    _mask_num_special_register              = gen_mask<Tspecial_address_t>(size_special_register);
82
83    test();
84
85    if (is_toplevel)
86      {
87        _size_context_id                        = log2(max<uint32_t>(_nb_context,_nb_front_end));
88        _size_front_end_id                      = log2(_nb_front_end)  ;
89        _size_rob_ptr                           = size_packet_id       ;
90        _size_general_data                      = size_general_data    ;
91        _size_special_data                      = size_special_data    ;
92        _size_general_register                  = size_general_register;
93        _size_special_register                  = size_special_register;
94        _size_store_queue_ptr                   = size_store_queue_ptr ;
95        _size_load_queue_ptr                    = size_load_queue_ptr  ;
96       
97        _have_port_context_id                   = _size_context_id     > 0;
98        _have_port_front_end_id                 = _size_front_end_id   > 0;
99        _have_port_rob_ptr                      = _size_rob_ptr        > 0;
100        _have_port_load_queue_ptr               = _size_load_queue_ptr > 0;
101       
102        copy();
103      }
104
105    log_end(OOO_Engine_Glue,FUNCTION);
106  };
107 
108// #undef  FUNCTION
109// #define FUNCTION "OOO_Engine_Glue::Parameters (copy)"
110//   Parameters::Parameters (Parameters & param)
111//   {
112//     log_begin(OOO_Engine_Glue,FUNCTION);
113//     test();
114//     log_end(OOO_Engine_Glue,FUNCTION);
115//   };
116
117#undef  FUNCTION
118#define FUNCTION "OOO_Engine_Glue::~Parameters"
119  Parameters::~Parameters (void) 
120  {
121    log_begin(OOO_Engine_Glue,FUNCTION);
122
123    DELETE1(_translate_front_end_id_to_rename_unit,_nb_front_end);
124 
125    log_end(OOO_Engine_Glue,FUNCTION);
126  };
127
128#undef  FUNCTION
129#define FUNCTION "OOO_Engine_Glue::copy"
130  void Parameters::copy (void) 
131  {
132    log_begin(OOO_Engine_Glue,FUNCTION);
133    log_end(OOO_Engine_Glue,FUNCTION);
134  };
135
136}; // end namespace ooo_engine_glue
137}; // end namespace ooo_engine
138}; // end namespace multi_ooo_engine
139}; // end namespace core
140
141}; // end namespace behavioural
142}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.