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

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

Almost complete design
with Test and test platform

  • Property svn:keywords set to Id
File size: 7.6 KB
Line 
1#ifndef morpheo_behavioural_core_core_glue_Parameters_h
2#define morpheo_behavioural_core_core_glue_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/Core/Core_Glue/include/Types.h"
12#include "Behavioural/include/Parameters.h"
13#include "Common/include/Debug.h"
14
15namespace morpheo {
16namespace behavioural {
17namespace core {
18namespace core_glue {
19
20
21  class Parameters : public morpheo::behavioural::Parameters
22  {
23    //-----[ fields ]------------------------------------------------------------
24  public : uint32_t                _nb_front_end                         ;
25  public : uint32_t              * _nb_context                           ;//[nb_front_end]
26  public : uint32_t                _nb_ooo_engine                        ;
27  public : uint32_t                _nb_execute_loop                      ;
28  public : uint32_t              * _ooo_engine_nb_front_end              ;//[nb_ooo_engine]
29  public : uint32_t              * _ooo_engine_nb_execute_loop           ;//[nb_ooo_engine]
30  public : uint32_t              * _execute_loop_nb_ooo_engine           ;//[nb_execute_loop]
31  public : uint32_t              * _nb_inst_decod                        ;//[nb_front_end] -> [sum_inst_decod]
32  public : uint32_t              * _front_end_nb_inst_branch_complete    ;//[nb_front_end]
33  public : uint32_t              * _ooo_engine_nb_inst_branch_complete   ;//[nb_ooo_engine]
34  public : uint32_t              * _nb_inst_insert                       ;//[nb_ooo_engine]
35  public : uint32_t              * _nb_inst_issue                        ;//[nb_ooo_engine]
36  public : uint32_t             ** _nb_inst_execute                      ;//[nb_ooo_engine][ooo_engine_nb_execute_loop]
37  public : uint32_t              * _nb_read_unit                         ;//[nb_execute_loop]
38  public : uint32_t              * _nb_write_unit                        ;//[nb_execute_loop]
39//public : uint32_t                _size_depth                           ;
40//public : uint32_t                _size_rob_ptr                         ;
41//public : uint32_t                _size_load_queue_ptr                  ;
42//public : uint32_t                _size_store_queue_ptr                 ;
43//public : uint32_t                _size_general_data                    ;
44//public : uint32_t                _size_special_data                    ;
45//public : uint32_t                _size_general_register                ;
46//public : uint32_t                _size_special_register                ;
47//public : uint32_t                _size_front_end_id                    ;
48//public : uint32_t                _size_context_id                      ;
49//public : uint32_t                _size_ooo_engine_id                   ;
50  public : Tpriority_t             _dispatch_priority                    ;
51  public : Tload_balancing_t       _dispatch_load_balancing              ;
52  public : bool               **** _table_dispatch                       ;//[nb_ooo_engine][nb_inst_issue][execute_loop][nb_read_unit]
53  public : uint32_t             ** _translate_ooo_engine_num_front_end   ;//[nb_ooo_engine][ooo_engine_nb_front_end]
54  public : uint32_t             ** _translate_ooo_engine_num_execute_loop;//[nb_ooo_engine][ooo_engine_nb_execute_loop]
55  public : uint32_t             ** _translate_execute_loop_num_ooo_engine;//[nb_execute_loop][execute_loop_nb_ooo_engine]
56
57  public : uint32_t              * _link_ooo_engine_with_front_end                          ;//[nb_front_end]
58  public : uint32_t              * _translate_num_front_end_to_ooo_engine_front_end_id      ;//[nb_front_end]
59
60  public : uint32_t             ** _translate_num_execute_loop_to_ooo_engine_execute_loop_id;//[nb_execute_loop][execute_loop_nb_ooo_engine]
61
62  public : uint32_t             ** _execute_loop_nb_inst_insert                             ;//[nb_execute_loop][execute_loop_nb_ooo_engine]
63  public : uint32_t             ** _execute_loop_nb_inst_issue                              ;//[nb_execute_loop][execute_loop_nb_ooo_engine]
64//public : uint32_t              * _link_execute_loop_with_ooo_engine                       ;//[nb_ooo_engine]
65
66  public : uint32_t                _max_ooo_engine_nb_inst_branch_complete;
67  public : uint32_t                _max_front_end_nb_inst_branch_complete ;
68  public : uint32_t                _max_ooo_engine_nb_execute_loop        ;
69  public : uint32_t                _max_nb_inst_execute                   ;
70  public : uint32_t                _max_nb_write_unit                     ;
71  public : uint32_t                _max_nb_inst_insert                    ;
72  public : uint32_t                _max_nb_inst_issue                     ;
73  public : uint32_t                _max_nb_read_unit                      ;
74
75    //-----[ methods ]-----------------------------------------------------------
76  public : Parameters 
77  (uint32_t                nb_front_end                         ,
78   uint32_t              * nb_context                           ,//[nb_front_end]
79   uint32_t                nb_ooo_engine                        ,
80   uint32_t                nb_execute_loop                      ,
81   uint32_t              * ooo_engine_nb_front_end              ,//[nb_ooo_engine]
82   uint32_t              * ooo_engine_nb_execute_loop           ,//[nb_ooo_engine]
83   uint32_t              * execute_loop_nb_ooo_engine           ,//[nb_execute_loop]
84   uint32_t              * nb_inst_decod                        ,//[nb_front_end] -> [sum_inst_decod]
85   uint32_t              * front_end_nb_inst_branch_complete    ,//[nb_front_end]
86   uint32_t              * ooo_engine_nb_inst_branch_complete   ,//[nb_ooo_engine]
87   uint32_t              * nb_inst_insert                       ,//[nb_ooo_engine]
88   uint32_t              * nb_inst_issue                        ,//[nb_ooo_engine]
89   uint32_t             ** nb_inst_execute                      ,//[nb_ooo_engine][ooo_engine_nb_execute_loop]
90   uint32_t              * nb_read_unit                         ,//[nb_execute_loop]
91   uint32_t              * nb_write_unit                        ,//[nb_execute_loop]
92   uint32_t                size_depth                           ,
93   uint32_t                size_rob_ptr                         ,
94   uint32_t                size_load_queue_ptr                  ,
95   uint32_t                size_store_queue_ptr                 ,
96   uint32_t                size_general_data                    ,
97   uint32_t                size_special_data                    ,
98   uint32_t                size_general_register                ,
99   uint32_t                size_special_register                ,
100   Tpriority_t             dispatch_priority                    ,
101   Tload_balancing_t       dispatch_load_balancing              ,
102   bool               **** table_dispatch                       ,//[nb_ooo_engine][nb_inst_issue][execute_loop][nb_read_unit]
103   uint32_t             ** translate_ooo_engine_num_front_end   ,//[nb_ooo_engine][ooo_engine_nb_front_end]
104   uint32_t             ** translate_ooo_engine_num_execute_loop,//[nb_ooo_engine][ooo_engine_nb_execute_loop]
105   uint32_t             ** translate_execute_loop_num_ooo_engine,//[nb_execute_loop][execute_loop_nb_ooo_engine]
106   bool                    is_toplevel=false);
107
108//   public : Parameters  (Parameters & param) ;
109  public : ~Parameters () ;
110
111  public :        void            copy       (void);
112
113  public :        Parameters_test msg_error  (void);
114
115  public :        std::string     print      (uint32_t depth);
116  public : friend std::ostream&   operator<< (std::ostream& output_stream,
117                                            morpheo::behavioural::core::core_glue::Parameters & x);
118  };
119
120}; // end namespace core_glue
121}; // end namespace core
122
123}; // end namespace behavioural
124}; // end namespace morpheo             
125
126#endif
Note: See TracBrowser for help on using the repository browser.