source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/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: 10.2 KB
Line 
1#ifndef morpheo_behavioural_core_multi_front_end_front_end_Parameters_h
2#define morpheo_behavioural_core_multi_front_end_front_end_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#include "Behavioural/include/Types.h"
14#include "Behavioural/Custom/include/Custom.h"
15
16#include "Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/include/Parameters.h"
17#include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/include/Parameters.h"
18#include "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/include/Parameters.h"
19#include "Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Parameters.h"
20#include "Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/include/Parameters.h"
21
22#include <vector> 
23
24namespace morpheo {
25namespace behavioural {
26namespace core {
27namespace multi_front_end {
28namespace front_end {
29
30  class Parameters : public morpheo::behavioural::Parameters
31  {
32    //-----[ fields ]------------------------------------------------------------
33  public : uint32_t                _nb_context                           ;
34  public : uint32_t                _nb_decod_unit                        ;
35//public : uint32_t                _size_general_data                    ;
36  public : morpheo::behavioural::custom::custom_information_t (*_get_custom_information) (void);
37    // ifetch_unit                                             
38  public : uint32_t              * _size_ifetch_queue                    ;//[nb_context]
39  public : uint32_t              * _nb_inst_fetch                        ;//[nb_context]
40  public : bool                 ** _instruction_implemeted               ;//[nb_context][nb_inst_fetch]
41  public : uint32_t              * _link_context_to_decod_unit           ;//[nb_context]
42    // decod_unit                                                       
43  public : uint32_t              * _size_decod_queue                     ;//[nb_decod_unit]
44  public : uint32_t              * _nb_inst_decod                        ;//[nb_decod_unit]
45  public : uint32_t              * _nb_context_select                    ;//[nb_decod_unit]
46  public : Tpriority_t           * _context_select_priority              ;//[nb_decod_unit]
47  public : Tload_balancing_t     * _context_select_load_balancing        ;//[nb_decod_unit]
48    // prediction_unit                                                   
49  public : uint32_t                _nb_inst_branch_predict               ;
50  public : uint32_t                _nb_inst_branch_decod                 ;
51  public : uint32_t                _nb_inst_branch_update                ;
52  public : uint32_t                _nb_inst_branch_complete              ;
53  public : uint32_t                _btb_size_queue                       ;
54  public : uint32_t                _btb_associativity                    ;
55  public : uint32_t                _btb_size_counter                     ;
56  public : Tvictim_t               _btb_victim_scheme                    ;
57  public : Tpredictor_t            _dir_predictor_scheme                 ;
58  public : bool                    _dir_have_bht               [3]       ;
59  public : uint32_t                _dir_bht_size_shifter       [3]       ;
60  public : uint32_t                _dir_bht_nb_shifter         [3]       ;
61  public : bool                    _dir_have_pht               [3]       ;
62  public : uint32_t                _dir_pht_size_counter       [3]       ;
63  public : uint32_t                _dir_pht_nb_counter         [3]       ;
64  public : uint32_t                _dir_pht_size_address_share [3]       ;
65  public : uint32_t              * _ras_size_queue                       ;//[nb_context]
66  public : uint32_t              * _upt_size_queue                       ;//[nb_context]
67    // context_state                                                     
68//public : uint32_t                _size_nb_inst_commit                  ;
69                                                                         
70  public : std::vector<uint32_t> * _translate_context_id_from_decod_unit ;//[nb_decod_unit]
71  public : uint32_t              * _decod_unit_nb_context                ;//[nb_decod_unit]
72  public : uint32_t             ** _decod_unit_nb_inst_fetch             ;//[nb_decod_unit][decod_unit_nb_context]
73  public : uint32_t             ** _decod_unit_nb_branch_speculated      ;//[nb_decod_unit][decod_unit_nb_context]
74//public : uint32_t             ** _decod_unit_depth                     ;//[nb_decod_unit][decod_unit_nb_context]
75  public : bool                *** _decod_unit_instruction_implemeted    ;//[nb_decod_unit][decod_unit_nb_context][nb_instruction]
76  public : uint32_t                _sum_inst_decod                       ;
77                                                                         
78//public : uint32_t                _size_context_id                      ;
79//public : uint32_t                _size_address                         ;
80  public : uint32_t              * _array_size_nb_inst_decod             ;//[nb_decod_unit]
81  public : uint32_t              * _array_size_depth                     ;//[nb_context]
82//public : uint32_t                _max_size_depth                       ;
83//public : uint32_t              * _size_ifetch_queue_ptr                ;//[nb_context]
84                                                                         
85//public : bool                  * _have_port_decod_unit_context_id      ;//[nb_decod_unit]
86//public : bool                    _have_port_context_id                 ;
87//public : bool                  * _have_port_ifetch_queue_ptr           ;//[nb_context]
88//public : bool                  * _have_port_depth                      ;//[nb_context]
89//public : bool                    _have_port_max_depth                  ;
90//public : bool                  * _have_port_instruction_ptr            ;//[nb_context]
91//public : bool                  * _have_port_branch_update_prediction_id;//[nb_context]
92
93  public : behavioural::core::multi_front_end::front_end::ifetch_unit::    Parameters ** _param_ifetch_unit    ;
94  public : behavioural::core::multi_front_end::front_end::prediction_unit::Parameters  * _param_prediction_unit;
95  public : behavioural::core::multi_front_end::front_end::decod_unit::     Parameters ** _param_decod_unit     ;
96  public : behavioural::core::multi_front_end::front_end::context_state::  Parameters  * _param_context_state  ;
97  public : behavioural::core::multi_front_end::front_end::front_end_glue:: Parameters  * _param_glue           ;
98
99    //-----[ methods ]-----------------------------------------------------------
100  public : Parameters  (uint32_t                nb_context                          ,
101                        uint32_t                nb_decod_unit                       ,
102                        uint32_t                size_general_data                   ,
103                        morpheo::behavioural::custom::custom_information_t (*get_custom_information) (void),
104                        // ifetch_unit                                             
105                        uint32_t              * size_ifetch_queue                   ,
106                        uint32_t              * nb_inst_fetch                       ,
107                        bool                 ** instruction_implemeted              ,
108                        uint32_t              * link_context_to_decod_unit          ,
109                        // decod_unit                                             
110                        uint32_t              * size_decod_queue                    ,
111                        uint32_t              * nb_inst_decod                       ,
112                        uint32_t              * nb_context_select                   ,
113                        Tpriority_t           * context_select_priority             ,
114                        Tload_balancing_t     * context_select_load_balancing       ,
115                        // prediction_unit                                                 
116                        uint32_t                nb_inst_branch_predict              ,
117                        uint32_t                nb_inst_branch_decod                ,
118                        uint32_t                nb_inst_branch_update               ,
119                        uint32_t                nb_inst_branch_complete             ,
120                        uint32_t                btb_size_queue                      ,
121                        uint32_t                btb_associativity                   ,
122                        uint32_t                btb_size_counter                    ,
123                        Tvictim_t               btb_victim_scheme                   ,
124                        Tpredictor_t            dir_predictor_scheme                ,
125                        bool                  * dir_have_bht                        ,//[3]
126                        uint32_t              * dir_bht_size_shifter                ,//[3]
127                        uint32_t              * dir_bht_nb_shifter                  ,//[3]
128                        bool                  * dir_have_pht                        ,//[3]
129                        uint32_t              * dir_pht_size_counter                ,//[3]
130                        uint32_t              * dir_pht_nb_counter                  ,//[3]
131                        uint32_t              * dir_pht_size_address_share          ,//[3]
132                        uint32_t              * ras_size_queue                      ,
133                        uint32_t              * upt_size_queue                      ,
134                        // context_state                                           
135                        uint32_t                size_nb_inst_commit                 ,
136
137                        bool                    is_toplevel=false);
138//   public : Parameters  (Parameters & param) ;
139  public : ~Parameters () ;
140
141  public :        void            copy       (void);
142
143  public :        Parameters_test msg_error  (void);
144
145  public :        std::string     print      (uint32_t depth);
146  public : friend std::ostream&   operator<< (std::ostream& output_stream,
147                                            morpheo::behavioural::core::multi_front_end::front_end::Parameters & x);
148  };
149
150}; // end namespace front_end
151}; // end namespace multi_front_end
152}; // end namespace core
153
154}; // end namespace behavioural
155}; // end namespace morpheo             
156
157#endif
Note: See TracBrowser for help on using the repository browser.