source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/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: 12.9 KB
Line 
1#ifndef morpheo_behavioural_core_multi_ooo_engine_ooo_engine_Parameters_h
2#define morpheo_behavioural_core_multi_ooo_engine_ooo_engine_Parameters_h
3
4/*
5 * $Id: Parameters.h 88 2008-12-10 18:31:39Z rosiere $
6 *
7 * [ Description ]
8 *
9 */
10
11#include "Behavioural/include/Parameters.h"
12#include "Common/include/Debug.h"
13
14#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/include/Parameters.h"
15#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Parameters.h"
16#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/include/Parameters.h"
17#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/include/Parameters.h"
18#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/include/Parameters.h"
19#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/include/Parameters.h"
20
21#include <vector>
22
23namespace morpheo {
24namespace behavioural {
25namespace core {
26namespace multi_ooo_engine {
27namespace ooo_engine {
28
29
30  class Parameters : public morpheo::behavioural::Parameters
31  {
32    //-----[ fields ]------------------------------------------------------------
33
34  public : uint32_t              _nb_front_end                     ;
35  public : uint32_t            * _nb_context                       ;//[nb_front_end]
36  public : uint32_t              _nb_rename_unit                   ;
37  public : uint32_t              _nb_execute_loop                  ;
38  public : uint32_t            * _nb_inst_decod                    ;//[nb_front_end]
39  public : uint32_t            * _nb_inst_insert                   ;//[nb_rename_unit]
40  public : uint32_t            * _nb_inst_retire                   ;//[nb_rename_unit]
41  public : uint32_t              _nb_inst_issue                    ;
42  public : uint32_t            * _nb_inst_execute                  ;//[nb_execute_loop]
43  public : uint32_t              _nb_inst_reexecute                ;
44  public : uint32_t              _nb_inst_commit                   ;
45  public : uint32_t              _nb_inst_branch_complete          ;
46  public : uint32_t           ** _nb_branch_speculated             ;//[nb_front_end][nb_context]
47  public : uint32_t              _nb_rename_unit_select            ;
48  public : uint32_t              _nb_execute_loop_select           ;
49//public : uint32_t              _size_general_data                ;
50//public : uint32_t              _size_special_data                ;
51  public : uint32_t            * _link_rename_unit_with_front_end  ;//[nb_front_end]
52    // Commit
53  public : uint32_t              _size_re_order_buffer             ;
54  public : uint32_t              _nb_re_order_buffer_bank          ;
55  public : Tpriority_t           _commit_priority                  ;
56  public : Tload_balancing_t     _commit_load_balancing            ;
57    // Issue
58  public : uint32_t              _size_issue_queue                 ;
59  public : uint32_t              _nb_issue_queue_bank              ;
60  public : Tpriority_t           _issue_priority                   ;
61  public : Tload_balancing_t     _issue_load_balancing             ;
62  public : bool               ** _table_routing                    ;//[nb_rename_unit][nb_inst_issue]
63  public : bool               ** _table_issue_type                 ;//[nb_inst_issue][nb_type]
64    // Reexecute
65  public : uint32_t              _size_reexecute_queue             ;
66  public : Tpriority_t           _reexecute_priority               ;
67  public : Tload_balancing_t     _reexecute_load_balancing         ;
68    // Rename_unit
69  public : Tpriority_t         * _rename_select_priority           ;//[nb_rename_unit]
70  public : Tload_balancing_t   * _rename_select_load_balancing     ;//[nb_rename_unit]
71  public : uint32_t            * _rename_select_nb_front_end_select;//[nb_rename_unit]
72  public : uint32_t            * _nb_general_register              ;//[nb_rename_unit]
73  public : uint32_t            * _nb_special_register              ;//[nb_rename_unit]
74  public : uint32_t            * _nb_reg_free                      ;//[nb_rename_unit]
75  public : uint32_t            * _nb_rename_unit_bank              ;//[nb_rename_unit]
76  public : uint32_t            * _size_read_counter                ;//[nb_rename_unit]
77  public : uint32_t            * _nb_load_store_queue              ;//[nb_rename_unit]
78  public : uint32_t           ** _size_store_queue                 ;//[nb_rename_unit][nb_load_store_queue]
79  public : uint32_t           ** _size_load_queue                  ;//[nb_rename_unit][nb_load_store_queue]
80  public : uint32_t           ** _link_load_store_unit_with_thread ;//[nb_front_end][nb_context]
81    // SPR
82  public : bool              *** _implement_group                  ;//[nb_front_end][nb_context][NB_GROUP]
83
84
85  public : std::vector<uint32_t>*_link_front_end_with_rename_unit              ;//[nb_rename_unit]
86  public : uint32_t            * _rename_unit_nb_front_end                     ;//[nb_rename_unit]
87  public : uint32_t           ** _rename_unit_nb_context                       ;//[nb_rename_unit][nb_front_end]
88  public : uint32_t           ** _rename_unit_nb_inst_decod                    ;//[nb_rename_unit][nb_front_end]
89  public : uint32_t          *** _rename_unit_link_load_store_unit_with_thread ;//[nb_rename_unit][nb_front_end][nb_context]
90  public : uint32_t            * _rename_unit_size_front_end_id                ;//[nb_rename_unit]
91  public : uint32_t            * _rename_unit_size_context_id                  ;//[nb_rename_unit]
92  public : uint32_t              _max_nb_context                               ;
93  public : uint32_t              _max_branch_speculated                        ;
94//public : uint32_t              _size_front_end_id                            ;
95//public : uint32_t              _size_context_id                              ;
96//public : uint32_t              _size_packet_id                               ;
97  public : uint32_t              _size_rename_id                               ;
98//public : uint32_t              _size_max_depth                               ;
99//public : uint32_t              _size_general_register                        ;
100//public : uint32_t              _size_special_register                        ;
101//public : uint32_t              _size_store_queue_ptr                         ;
102//public : uint32_t              _size_load_queue_ptr                          ;
103//public : uint32_t              _size_nb_inst                                 ;
104//public : uint32_t           ** _size_depth                                   ;//[nb_front_end][nb_context]
105  public : uint32_t              _sum_inst_insert                               ;
106  public : uint32_t              _sum_inst_retire                              ;
107
108//public : bool                  _have_port_front_end_id                       ;
109//public : bool                  _have_port_context_id                         ;
110//public : bool                  _have_port_packet_id                          ;
111  public : bool                  _have_port_rename_id                          ;
112//public : bool                  _have_port_load_queue_ptr                     ;
113//public : bool                  _have_port_max_depth                          ;
114//public : bool               ** _have_port_depth                              ;//[nb_front_end][nb_context]
115
116  public  : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit          ::Parameters ** _param_rename_unit          ;
117  public  : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit          ::Parameters  * _param_commit_unit          ;
118  public  : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue          ::Parameters  * _param_issue_queue          ;
119  public  : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::reexecute_unit       ::Parameters  * _param_reexecute_unit       ;   
120  public  : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::special_register_unit::Parameters  * _param_special_register_unit;
121  public  : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::ooo_engine_glue      ::Parameters  * _param_glue                 ;
122
123    //-----[ methods ]-----------------------------------------------------------
124  public : Parameters  (uint32_t              nb_front_end                     ,
125                        uint32_t            * nb_context                       ,//[nb_front_end]
126                        uint32_t              nb_rename_unit                   ,
127                        uint32_t              nb_execute_loop                  ,
128                        uint32_t            * nb_inst_decod                    ,//[nb_front_end]
129                        uint32_t            * nb_inst_insert                   ,//[nb_rename_unit]
130                        uint32_t            * nb_inst_retire                   ,//[nb_rename_unit]
131                        uint32_t              nb_inst_issue                    ,
132                        uint32_t            * nb_inst_execute                  ,//[nb_execute_loop]
133                        uint32_t              nb_inst_reexecute                ,
134                        uint32_t              nb_inst_commit                   ,
135                        uint32_t              nb_inst_branch_complete          ,
136                        uint32_t           ** nb_branch_speculated             ,//[nb_front_end][nb_context]
137                        uint32_t              nb_rename_unit_select            ,
138                        uint32_t              nb_execute_loop_select           ,
139                        uint32_t              size_general_data                ,
140                        uint32_t              size_special_data                ,
141                        uint32_t            * link_rename_unit_with_front_end  ,//[nb_front_end]
142                        // Commit
143                        uint32_t              size_re_order_buffer             ,
144                        uint32_t              nb_re_order_buffer_bank          ,
145                        Tpriority_t           commit_priority                  ,
146                        Tload_balancing_t     commit_load_balancing            ,
147                        // Issue
148                        uint32_t              size_issue_queue                 ,
149                        uint32_t              nb_issue_queue_bank              ,
150                        Tpriority_t           issue_priority                   ,
151                        Tload_balancing_t     issue_load_balancing             ,
152                        bool               ** table_routing                    ,//[nb_rename_unit][nb_inst_issue]
153                        bool               ** table_issue_type                 ,//[nb_inst_issue][nb_type]
154                        // Reexecute
155                        uint32_t              size_reexecute_queue             ,
156                        Tpriority_t           reexecute_priority               ,
157                        Tload_balancing_t     reexecute_load_balancing         ,
158                        // Rename_unit
159                        Tpriority_t         * rename_select_priority           ,//[nb_rename_unit]
160                        Tload_balancing_t   * rename_select_load_balancing     ,//[nb_rename_unit]
161                        uint32_t            * rename_select_nb_front_end_select,//[nb_rename_unit]
162                        uint32_t            * nb_general_register              ,//[nb_rename_unit]
163                        uint32_t            * nb_special_register              ,//[nb_rename_unit]
164                        uint32_t            * nb_reg_free                      ,//[nb_rename_unit]
165                        uint32_t            * nb_rename_unit_bank              ,//[nb_rename_unit]
166                        uint32_t            * size_read_counter                ,//[nb_rename_unit]
167                        uint32_t            * nb_load_store_queue              ,//[nb_rename_unit]
168                        uint32_t           ** size_store_queue                 ,//[nb_rename_unit][nb_load_store_queue]
169                        uint32_t           ** size_load_queue                  ,//[nb_rename_unit][nb_load_store_queue]
170                        uint32_t           ** link_load_store_unit_with_thread ,//[nb_front_end][nb_context]
171                        // SPR
172                        bool              *** implement_group                  ,//[nb_front_end][nb_context][NB_GROUP]
173
174                        bool                  is_toplevel=false
175                        );
176//   public : Parameters  (Parameters & param) ;
177  public : ~Parameters () ;
178
179  public :        Parameters_test msg_error  (void);
180
181  public :        void            copy       (void);
182
183  public :        std::string     print      (uint32_t depth);
184  public : friend std::ostream&   operator<< (std::ostream& output_stream,
185                                              morpheo::behavioural::core::multi_ooo_engine::ooo_engine::Parameters & x);
186  };
187
188}; // end namespace ooo_engine
189}; // end namespace multi_ooo_engine
190}; // end namespace core
191
192}; // end namespace behavioural
193}; // end namespace morpheo             
194
195#endif
Note: See TracBrowser for help on using the repository browser.