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

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