source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Parameters.cpp @ 60

Last change on this file since 60 was 60, checked in by rosiere, 17 years ago
File size: 8.6 KB
Line 
1/*
2 * $Id$
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/include/Parameters.h"
9
10namespace morpheo {
11namespace behavioural {
12namespace core {
13namespace multi_execute_loop {
14namespace execute_loop {
15namespace register_unit {
16
17
18#undef  FUNCTION
19#define FUNCTION "Register_unit::Parameters"
20  Parameters::Parameters (uint32_t    nb_ooo_engine            ,
21                          uint32_t    size_general_data        ,
22                          uint32_t    size_special_data        ,
23                          uint32_t    nb_gpr_read              ,
24                          uint32_t    nb_gpr_write             ,
25                          uint32_t    nb_gpr_bank              ,
26                          uint32_t    nb_gpr_port_read_by_bank ,
27                          uint32_t    nb_gpr_port_write_by_bank,
28                          uint32_t    nb_spr_read              ,
29                          uint32_t    nb_spr_write             ,
30                          uint32_t    nb_spr_bank              ,
31                          uint32_t    nb_spr_port_read_by_bank ,
32                          uint32_t    nb_spr_port_write_by_bank,
33                          uint32_t  * nb_general_register      ,
34                          uint32_t  * nb_special_register      ,
35                          uint32_t  * nb_inst_insert_rob       ,
36                          uint32_t  * nb_inst_retire_rob       ):
37    _nb_ooo_engine             (nb_ooo_engine            ),
38    _size_general_data         (size_general_data        ),
39    _size_special_data         (size_special_data        ),
40    _nb_gpr_read               (nb_gpr_read              ),
41    _nb_gpr_write              (nb_gpr_write             ),
42    _nb_gpr_bank               (nb_gpr_bank              ),
43    _nb_gpr_port_read_by_bank  (nb_gpr_port_read_by_bank ),
44    _nb_gpr_port_write_by_bank (nb_gpr_port_write_by_bank),
45    _nb_spr_read               (nb_spr_read              ),
46    _nb_spr_write              (nb_spr_write             ),
47    _nb_spr_bank               (nb_spr_bank              ),
48    _nb_spr_port_read_by_bank  (nb_spr_port_read_by_bank ),
49    _nb_spr_port_write_by_bank (nb_spr_port_write_by_bank),
50    _nb_general_register       (nb_general_register      ),
51    _nb_special_register       (nb_special_register      ),
52    _nb_inst_insert_rob        (nb_inst_insert_rob       ),
53    _nb_inst_retire_rob        (nb_inst_retire_rob       ),
54    _have_port_ooo_engine_id   (nb_ooo_engine>1          )
55   
56  {
57    log_printf(FUNC,Register_unit,FUNCTION,"Begin");
58
59    _size_gpr_address = log2(nb_general_register [0]);
60   
61    for (uint32_t i=1; i<nb_ooo_engine; i++)
62      if (log2(nb_general_register [i]) > _size_gpr_address)
63        _size_gpr_address = log2(nb_general_register [i]);
64
65    _size_spr_address = log2(nb_special_register [0]);
66   
67    for (uint32_t i=1; i<nb_ooo_engine; i++)
68      if (log2(nb_special_register [i]) > _size_spr_address)
69        _size_spr_address = log2(nb_special_register [i]);
70
71    _param_gpr         = new morpheo::behavioural::generic::registerfile::Parameters * [_nb_ooo_engine];
72    _param_gpr_status  = new morpheo::behavioural::generic::registerfile::Parameters * [_nb_ooo_engine];
73    _param_spr         = new morpheo::behavioural::generic::registerfile::Parameters * [_nb_ooo_engine];
74    _param_spr_status  = new morpheo::behavioural::generic::registerfile::Parameters * [_nb_ooo_engine];
75   
76    __param_gpr        = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters * [_nb_ooo_engine];
77    __param_gpr_status = new morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters * [_nb_ooo_engine];
78    __param_spr        = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters * [_nb_ooo_engine];
79    __param_spr_status = new morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters * [_nb_ooo_engine];
80   
81   for (uint32_t i=0; i<_nb_ooo_engine; i++)
82     {
83       Tcrossbar_t crossbar = PARTIAL_CROSSBAR;
84 
85       __param_gpr        [i] = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters
86         (_nb_gpr_read              ,
87          _nb_gpr_write             ,
88          _nb_general_register[i]   ,
89          _size_general_data        ,
90          _nb_gpr_bank              ,
91          _nb_gpr_port_read_by_bank ,
92          _nb_gpr_port_write_by_bank,
93          crossbar                  );
94
95       __param_gpr_status [i] = new morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters
96         (_nb_gpr_read ,
97          _nb_gpr_write+_nb_inst_insert_rob[i]+2*_nb_inst_retire_rob[i],
98          0,
99          nb_general_register[i],
100          1);
101
102       __param_spr        [i] = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters
103         (_nb_spr_read              ,
104          _nb_spr_write             ,
105          _nb_special_register[i]   ,
106          _size_special_data        ,
107          _nb_spr_bank              ,
108          _nb_spr_port_read_by_bank ,
109          _nb_spr_port_write_by_bank,
110          crossbar                  );
111
112       __param_spr_status [i] = new morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters
113         (_nb_spr_read ,
114          _nb_spr_write+_nb_inst_insert_rob[i]+2*_nb_inst_retire_rob[i],
115          0,
116          nb_special_register[i],
117          1);   
118
119       _param_gpr        [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_gpr        [i]);
120       _param_gpr_status [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_gpr_status [i]);
121       _param_spr        [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_spr        [i]);
122       _param_spr_status [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_spr_status [i]);
123     }
124
125   _param_glue       = new morpheo::behavioural::core::multi_execute_loop::execute_loop::register_unit::register_unit_glue::Parameters  (_nb_ooo_engine        ,
126                                                                                                                                         _size_general_data    ,
127                                                                                                                                         _size_special_data    ,
128                                                                                                                                         _nb_gpr_read          ,
129                                                                                                                                         _nb_spr_read          ,   
130                                                                                                                                         _nb_gpr_write         ,
131                                                                                                                                         _nb_spr_write         ,
132                                                                                                                                         _nb_inst_insert_rob   ,
133                                                                                                                                         _nb_inst_retire_rob   );
134     
135   
136
137
138    test();
139    log_printf(FUNC,Register_unit,FUNCTION,"End");
140  };
141 
142#undef  FUNCTION
143#define FUNCTION "Register_unit::Parameters (copy)"
144  Parameters::Parameters (Parameters & param):
145    _nb_ooo_engine             (param._nb_ooo_engine            ),
146    _size_general_data         (param._size_general_data        ),
147    _size_special_data         (param._size_special_data        ),
148    _nb_gpr_read               (param._nb_gpr_read              ),
149    _nb_gpr_write              (param._nb_gpr_write             ),
150    _nb_gpr_bank               (param._nb_gpr_bank              ),
151    _nb_gpr_port_read_by_bank  (param._nb_gpr_port_read_by_bank ),
152    _nb_gpr_port_write_by_bank (param._nb_gpr_port_write_by_bank),
153    _nb_spr_read               (param._nb_spr_read              ),
154    _nb_spr_write              (param._nb_spr_write             ),
155    _nb_spr_bank               (param._nb_spr_bank              ),
156    _nb_spr_port_read_by_bank  (param._nb_spr_port_read_by_bank ),
157    _nb_spr_port_write_by_bank (param._nb_spr_port_write_by_bank),
158    _nb_general_register       (param._nb_general_register      ),
159    _nb_special_register       (param._nb_special_register      ),
160    _nb_inst_insert_rob        (param._nb_inst_insert_rob       ),
161    _nb_inst_retire_rob        (param._nb_inst_retire_rob       ),
162    _have_port_ooo_engine_id   (param._have_port_ooo_engine_id  )
163  {
164    log_printf(FUNC,Register_unit,FUNCTION,"Begin");
165
166    _size_gpr_address = param._size_gpr_address;
167    _size_spr_address = param._size_spr_address;
168
169    __param_gpr        = param.__param_gpr       ;
170    __param_gpr_status = param.__param_gpr_status;
171    __param_spr        = param.__param_spr       ;
172    __param_spr_status = param.__param_spr_status;
173    _param_gpr         = param._param_gpr       ;
174    _param_gpr_status  = param._param_gpr_status;
175    _param_spr         = param._param_spr       ;
176    _param_spr_status  = param._param_spr_status;
177    _param_glue        = param._param_glue      ;
178
179    test();
180    log_printf(FUNC,Register_unit,FUNCTION,"End");
181  };
182
183#undef  FUNCTION
184#define FUNCTION "Register_unit::~Parameters"
185  Parameters::~Parameters () 
186  {
187    log_printf(FUNC,Register_unit,FUNCTION,"Begin");
188
189    delete [] _param_gpr       ;
190    delete [] _param_gpr_status;
191    delete [] _param_spr       ;
192    delete [] _param_spr_status;
193    delete [] __param_gpr       ;
194    delete [] __param_gpr_status;
195    delete [] __param_spr       ;
196    delete [] __param_spr_status;
197    delete    _param_glue;
198   
199    log_printf(FUNC,Register_unit,FUNCTION,"End");
200  };
201
202}; // end namespace register_unit
203}; // end namespace execute_loop
204}; // end namespace multi_execute_loop
205}; // end namespace core
206
207}; // end namespace behavioural
208}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.