source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/include/Parameters.h @ 88

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

Almost complete design
with Test and test platform

  • Property svn:keywords set to Id
File size: 15.9 KB
Line 
1#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_Parameters_h
2#define morpheo_behavioural_core_multi_execute_loop_execute_loop_Parameters_h
3
4/*
5 * $Id: Parameters.h 88 2008-12-10 18:31:39Z rosiere $
6 *
7 * [ Description ]
8 *
9 */
10
11#include "Common/include/Debug.h"
12#include "Behavioural/include/Parameters.h"
13#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/include/Types.h"
14#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Execute_loop_Glue/include/Parameters.h"
15#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Parameters.h"
16#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Parameters.h"
17#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Parameters.h"
18#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Parameters.h"
19#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/include/Parameters.h"
20#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Parameters.h"
21#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Parameters.h"
22#include <set>
23
24namespace morpheo {
25namespace behavioural {
26namespace core {
27namespace multi_execute_loop {
28namespace execute_loop {
29
30
31  class Parameters : public morpheo::behavioural::Parameters
32  {
33    //-----[ fields ]------------------------------------------------------------
34    // unit occurence
35  public : uint32_t              _nb_read_unit                                  ;
36  public : uint32_t              _nb_functionnal_unit                           ;
37  public : uint32_t              _nb_load_store_unit                            ;
38  public : uint32_t              _nb_write_unit                                 ;
39    // generic parameters                                                             
40  public : uint32_t              _nb_context                                    ;
41  public : uint32_t              _nb_front_end                                  ;
42  public : uint32_t              _nb_ooo_engine                                 ;
43  public : uint32_t              _nb_packet                                     ;
44//public : uint32_t              _size_general_data                             ;
45//public : uint32_t              _size_special_data                             ;
46    // specific parameters                                                           
47    //  * functionnal_unit                                                           
48  public : uint32_t            * _nb_inst_functionnal_unit                      ; //[nb_functionnal_unit]
49  public : execute_timing_t  *** _timing                                        ; //[nb_functionnal_unit][nb_type][nb_operation]
50  public : morpheo::behavioural::custom::custom_information_t (*_get_custom_information) (void);
51
52    //  * load_store_unit   
53  public : uint32_t            * _size_store_queue                              ; //[nb_load_store_unit]
54  public : uint32_t            * _size_load_queue                               ; //[nb_load_store_unit]
55  public : uint32_t            * _size_speculative_access_queue                 ; //[nb_load_store_unit]
56  public : uint32_t            * _nb_port_check                                 ; //[nb_load_store_unit]
57  public : Tspeculative_load_t * _speculative_load                              ; //[nb_load_store_unit]
58  public : uint32_t            * _nb_bypass_memory                              ; //[nb_load_store_unit]
59  public : uint32_t            * _nb_cache_port                                 ; //[nb_load_store_unit]
60  public : uint32_t            * _nb_inst_memory                                ; //[nb_load_store_unit]
61    //  * read_unit                                                                   
62  public : uint32_t            * _size_read_queue                               ; //[nb_read_unit]
63  public : uint32_t            * _size_reservation_station                      ; //[nb_read_unit]
64  public : uint32_t            * _nb_inst_retire                                ; //[nb_read_unit]
65  public : uint32_t            * _read_unit_nb_register_write                   ; //[nb_read_unit]
66  public : uint32_t            * _read_unit_nb_bypass_write                     ; //[nb_read_unit]
67  public : uint32_t            * _read_unit_nb_bypass_memory                    ; //[nb_read_unit]
68  public : bool              *** _link_read_unit_with_load_store_unit           ; //[nb_read_unit][nb_load_store_unit][nb_inst_memory]
69  public : bool               ** _link_read_unit_with_write_unit                ; //[nb_read_unit][nb_write_unit]
70  public : bool               ** _link_read_unit_with_thread                    ; //[nb_read_unit][nb_thread]
71    //  * write_unit                                                                 
72  public : uint32_t            * _size_write_queue                              ; //[nb_write_unit]
73  public : uint32_t            * _size_execute_queue                            ; //[nb_write_unit]
74  public : uint32_t            * _nb_bypass_write                               ; //[nb_write_unit]
75    //  * register_unit                                                               
76  public : uint32_t              _nb_gpr_read                                   ;
77  public : uint32_t              _nb_gpr_write                                  ;
78  public : uint32_t              _nb_gpr_bank                                   ;
79  public : uint32_t              _nb_gpr_port_read_by_bank                      ;
80  public : uint32_t              _nb_gpr_port_write_by_bank                     ;
81  public : uint32_t              _nb_spr_read                                   ;
82  public : uint32_t              _nb_spr_write                                  ;
83  public : uint32_t              _nb_spr_bank                                   ;
84  public : uint32_t              _nb_spr_port_read_by_bank                      ;
85  public : uint32_t              _nb_spr_port_write_by_bank                     ;
86  public : uint32_t            * _nb_general_register                           ; //[nb_ooo_engine]
87  public : uint32_t            * _nb_special_register                           ; //[nb_ooo_engine]
88  public : uint32_t            * _nb_inst_insert_rob                            ; //[nb_ooo_engine]
89  public : uint32_t            * _nb_inst_retire_rob                            ; //[nb_ooo_engine]
90    //  * network
91  public : Tpriority_t           _execution_unit_to_write_unit_priority         ;
92  public : bool              *** _execution_unit_to_write_unit_table_routing    ; //[nb_execute_unit][nb_execute_unit_port][nb_write_unit]
93  public : bool               ** _execution_unit_to_write_unit_table_thread     ; //[nb_write_unit][nb_thread]
94
95  public : Tpriority_t           _read_unit_to_execution_unit_priority          ;
96  public : bool              *** _read_unit_to_execution_unit_table_routing     ; //[nb_read_unit][nb_execute_unit][nb_execute_unit_port]
97  public : bool               ** _read_unit_to_execution_unit_table_execute_type; //[nb_execute_unit][nb_type]
98  public : bool               ** _read_unit_to_execution_unit_table_thread      ; //[nb_execute_unit][nb_thread]
99
100  public : bool                * _is_load_store_unit                            ; //[nb_execute_unit]
101  public : uint32_t            * _translate_num_execute_unit                    ; //[nb_execute_unit]
102
103  public : uint32_t              _nb_execute_unit              ;
104  public : uint32_t            * _nb_execute_unit_port         ;
105
106//public : uint32_t              _size_context_id              ;
107//public : uint32_t              _size_front_end_id            ;
108//public : uint32_t              _size_ooo_engine_id           ;
109//public : uint32_t              _size_packet_id               ;
110//public : bool                  _have_port_context_id         ;
111//public : bool                  _have_port_front_end_id       ;
112//public : bool                  _have_port_ooo_engine_id      ;
113//public : bool                  _have_port_packet_id          ;
114//public : bool                  _have_port_load_queue_ptr     ;
115  public : bool                  _have_port_dcache_context_id  ;
116   
117  public : uint32_t              _max_nb_general_register;
118  public : uint32_t              _max_nb_special_register;
119  public : uint32_t              _max_size_store_queue   ;
120  public : uint32_t              _max_size_load_queue    ;
121
122//public : uint32_t              _size_general_register        ;
123//public : uint32_t              _size_special_register        ;
124
125  public : uint32_t              _max_size_dcache_context_id;
126  public : uint32_t              _max_size_dcache_packet_id ;
127
128  public : std::set<uint32_t>  * _set_read_unit_source_register_write ; //[nb_read_unit]
129  public : std::set<uint32_t>  * _set_read_unit_source_bypass_write   ; //[nb_read_unit]
130  public : std::set<uint32_t>  * _set_read_unit_source_bypass_memory  ; //[nb_read_unit]
131
132  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::execute_loop_glue::                                 Parameters  * _param_glue;
133  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::                        Parameters ** _param_read_unit;
134  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::functionnal_unit::Parameters ** _param_functionnal_unit;
135  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit:: Parameters ** _param_load_store_unit;
136  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::                      Parameters ** _param_write_unit;
137  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::              Parameters  * _param_read_unit_to_execution_unit;
138  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::             Parameters  * _param_execution_unit_to_write_unit;
139  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::register_unit::                                     Parameters  * _param_register_unit;
140   
141    //-----[ methods ]-----------------------------------------------------------
142  public : Parameters  (uint32_t              nb_read_unit                                  ,
143                        uint32_t              nb_functionnal_unit                           ,
144                        uint32_t              nb_load_store_unit                            ,
145                        uint32_t              nb_write_unit                                 ,
146                       
147                        uint32_t              nb_context                                    ,
148                        uint32_t              nb_front_end                                  ,
149                        uint32_t              nb_ooo_engine                                 ,
150                        uint32_t              nb_packet                                     ,
151                        uint32_t              size_general_data                             ,
152                        uint32_t              size_special_data                             ,
153                       
154                        uint32_t            * size_read_queue                               ,//[nb_read_unit]
155                        uint32_t            * size_reservation_station                      ,//[nb_read_unit]
156                        uint32_t            * nb_inst_retire                                ,//[nb_read_unit]
157                       
158                        uint32_t            * nb_inst_functionnal_unit                      ,//[nb_functionnal_unit]
159                        execute_timing_t  *** timing                                        ,//[nb_functionnal_unit][nb_type][nb_operation]
160                        morpheo::behavioural::custom::custom_information_t (*get_custom_information) (void),
161                       
162                        uint32_t            * size_store_queue                              ,//[nb_load_store_unit]
163                        uint32_t            * size_load_queue                               ,//[nb_load_store_unit]
164                        uint32_t            * size_speculative_access_queue                 ,//[nb_load_store_unit]
165                        uint32_t            * nb_port_check                                 ,//[nb_load_store_unit]
166                        Tspeculative_load_t * speculative_load                              ,//[nb_load_store_unit]
167                        uint32_t            * nb_bypass_memory                              ,//[nb_load_store_unit]
168                        uint32_t            * nb_cache_port                                 ,//[nb_load_store_unit]
169                        uint32_t            * nb_inst_memory                                ,//[nb_load_store_unit]
170                       
171                        uint32_t            * size_write_queue                              ,//[nb_write_unit]
172                        uint32_t            * size_execute_queue                            ,//[nb_write_unit]
173                        uint32_t            * nb_bypass_write                               ,//[nb_write_unit]
174                       
175                        uint32_t              nb_gpr_bank                                   ,
176                        uint32_t              nb_gpr_port_read_by_bank                      ,
177                        uint32_t              nb_gpr_port_write_by_bank                     ,
178                        uint32_t              nb_spr_bank                                   ,
179                        uint32_t              nb_spr_port_read_by_bank                      ,
180                        uint32_t              nb_spr_port_write_by_bank                     ,
181                        uint32_t            * nb_general_register                           ,//[nb_ooo_engine]
182                        uint32_t            * nb_special_register                           ,//[nb_ooo_engine]
183                        uint32_t            * nb_inst_insert_rob                            ,//[nb_ooo_engine]
184                        uint32_t            * nb_inst_retire_rob                            ,//[nb_ooo_engine]
185                       
186                        Tpriority_t           execution_unit_to_write_unit_priority         ,
187                        bool              *** execution_unit_to_write_unit_table_routing    ,//[nb_execute_unit][nb_execute_unit_port][nb_write_unit]
188                        bool               ** execution_unit_to_write_unit_table_thread     ,//[nb_write_unit][nb_thread]
189                       
190                        Tpriority_t           read_unit_to_execution_unit_priority          ,
191                        bool              *** read_unit_to_execution_unit_table_routing     ,//[nb_read_unit][nb_execute_unit][nb_execute_unit_port]
192                        bool               ** read_unit_to_execution_unit_table_thread      ,//[nb_execute_unit][nb_thread]
193
194                        bool                * is_load_store_unit                            ,//[nb_execute_unit]
195                        uint32_t            * translate_num_execute_unit                    ,//[nb_execute_unit]
196
197                        bool                  is_toplevel=false
198                        );
199//   public : Parameters  (Parameters & param) ;
200  public : ~Parameters (void) ;
201
202  public :        void            copy       (void);
203
204  public :        Parameters_test msg_error  (void);
205
206  public :        std::string     print      (uint32_t depth);
207  public : friend std::ostream&   operator<< (std::ostream& output_stream,
208                                              morpheo::behavioural::core::multi_execute_loop::execute_loop::Parameters & x);
209  };
210
211}; // end namespace execute_loop
212}; // end namespace multi_execute_loop
213}; // end namespace core
214
215}; // end namespace behavioural
216}; // end namespace morpheo             
217
218#endif
Note: See TracBrowser for help on using the repository browser.