source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/include/Parameters.h @ 95

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

1) Update Prediction Table - New architecture (systemC) done (and tested) -> need change interface in top level
2) Change documentation on VHDL generation
3) Change VHDL constant (case std_logic and std_logic_vector)

  • Property svn:keywords set to Id
File size: 10.4 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 95 2008-12-16 16:24:26Z 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  public : uint32_t              * _ufpt_size_queue                      ;//[nb_context]
68
69    // context_state                                                     
70//public : uint32_t                _size_nb_inst_commit                  ;
71                                                                         
72  public : std::vector<uint32_t> * _translate_context_id_from_decod_unit ;//[nb_decod_unit]
73  public : uint32_t              * _decod_unit_nb_context                ;//[nb_decod_unit]
74  public : uint32_t             ** _decod_unit_nb_inst_fetch             ;//[nb_decod_unit][decod_unit_nb_context]
75  public : uint32_t             ** _decod_unit_nb_branch_speculated      ;//[nb_decod_unit][decod_unit_nb_context]
76//public : uint32_t             ** _decod_unit_depth                     ;//[nb_decod_unit][decod_unit_nb_context]
77  public : bool                *** _decod_unit_instruction_implemeted    ;//[nb_decod_unit][decod_unit_nb_context][nb_instruction]
78  public : uint32_t                _sum_inst_decod                       ;
79                                                                         
80//public : uint32_t                _size_context_id                      ;
81//public : uint32_t                _size_address                         ;
82  public : uint32_t              * _array_size_nb_inst_decod             ;//[nb_decod_unit]
83  public : uint32_t              * _array_size_depth                     ;//[nb_context]
84//public : uint32_t                _max_size_depth                       ;
85//public : uint32_t              * _size_ifetch_queue_ptr                ;//[nb_context]
86                                                                         
87//public : bool                  * _have_port_decod_unit_context_id      ;//[nb_decod_unit]
88//public : bool                    _have_port_context_id                 ;
89//public : bool                  * _have_port_ifetch_queue_ptr           ;//[nb_context]
90//public : bool                  * _have_port_depth                      ;//[nb_context]
91//public : bool                    _have_port_max_depth                  ;
92//public : bool                  * _have_port_instruction_ptr            ;//[nb_context]
93//public : bool                  * _have_port_branch_update_prediction_id;//[nb_context]
94
95  public : behavioural::core::multi_front_end::front_end::ifetch_unit::    Parameters ** _param_ifetch_unit    ;
96  public : behavioural::core::multi_front_end::front_end::prediction_unit::Parameters  * _param_prediction_unit;
97  public : behavioural::core::multi_front_end::front_end::decod_unit::     Parameters ** _param_decod_unit     ;
98  public : behavioural::core::multi_front_end::front_end::context_state::  Parameters  * _param_context_state  ;
99  public : behavioural::core::multi_front_end::front_end::front_end_glue:: Parameters  * _param_glue           ;
100
101    //-----[ methods ]-----------------------------------------------------------
102  public : Parameters  (uint32_t                nb_context                          ,
103                        uint32_t                nb_decod_unit                       ,
104                        uint32_t                size_general_data                   ,
105                        morpheo::behavioural::custom::custom_information_t (*get_custom_information) (void),
106                        // ifetch_unit                                             
107                        uint32_t              * size_ifetch_queue                   ,
108                        uint32_t              * nb_inst_fetch                       ,
109                        bool                 ** instruction_implemeted              ,
110                        uint32_t              * link_context_to_decod_unit          ,
111                        // decod_unit                                             
112                        uint32_t              * size_decod_queue                    ,
113                        uint32_t              * nb_inst_decod                       ,
114                        uint32_t              * nb_context_select                   ,
115                        Tpriority_t           * context_select_priority             ,
116                        Tload_balancing_t     * context_select_load_balancing       ,
117                        // prediction_unit                                                 
118                        uint32_t                nb_inst_branch_predict              ,
119                        uint32_t                nb_inst_branch_decod                ,
120                        uint32_t                nb_inst_branch_update               ,
121                        uint32_t                nb_inst_branch_complete             ,
122                        uint32_t                btb_size_queue                      ,
123                        uint32_t                btb_associativity                   ,
124                        uint32_t                btb_size_counter                    ,
125                        Tvictim_t               btb_victim_scheme                   ,
126                        Tpredictor_t            dir_predictor_scheme                ,
127                        bool                  * dir_have_bht                        ,//[3]
128                        uint32_t              * dir_bht_size_shifter                ,//[3]
129                        uint32_t              * dir_bht_nb_shifter                  ,//[3]
130                        bool                  * dir_have_pht                        ,//[3]
131                        uint32_t              * dir_pht_size_counter                ,//[3]
132                        uint32_t              * dir_pht_nb_counter                  ,//[3]
133                        uint32_t              * dir_pht_size_address_share          ,//[3]
134                        uint32_t              * ras_size_queue                      ,
135                        uint32_t              * upt_size_queue                      ,
136                        uint32_t              * ufpt_size_queue                     ,
137                        // context_state                                           
138                        uint32_t                size_nb_inst_commit                 ,
139
140                        bool                    is_toplevel=false);
141//   public : Parameters  (Parameters & param) ;
142  public : ~Parameters () ;
143
144  public :        void            copy       (void);
145
146  public :        Parameters_test msg_error  (void);
147
148  public :        std::string     print      (uint32_t depth);
149  public : friend std::ostream&   operator<< (std::ostream& output_stream,
150                                            morpheo::behavioural::core::multi_front_end::front_end::Parameters & x);
151  };
152
153}; // end namespace front_end
154}; // end namespace multi_front_end
155}; // end namespace core
156
157}; // end namespace behavioural
158}; // end namespace morpheo             
159
160#endif
Note: See TracBrowser for help on using the repository browser.