source: trunk/IPs/systemC/processor/Morpheo/TopLevel/src/Morpheo_configuration.cpp @ 146

Last change on this file since 146 was 146, checked in by rosiere, 13 years ago

1) Integration of RegisterFile_Internal_Banked in RegisterFile?
2) Erase "read_write" interface in RegisterFile_Monolithic component
3) Add smith predictor parameters in Load_store_pointer_unit.
4) Fix not statistics flags

  • Property svn:keywords set to Id
File size: 11.2 KB
Line 
1/*
2 * $Id: Morpheo_configuration.cpp 146 2011-02-01 20:57:54Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "TopLevel/include/Morpheo.h"
9
10namespace morpheo {
11
12  using namespace behavioural;
13//   using namespace behavioural::configuration;
14//   using namespace behavioural::custom;
15
16#undef  FUNCTION
17#define FUNCTION "Morpheo::configuration"
18  void Morpheo::configuration (std::string filename_simulator, 
19                               std::string filename_generator, 
20                               std::string filename_instance ,
21                               behavioural::custom::custom_information_t (*get_custom_information) (void))
22  {
23    log_begin(Morpheo,FUNCTION);
24
25    _config = new behavioural::configuration::Configuration (filename_simulator,
26                                                             filename_generator,
27                                                             filename_instance,
28                                                             get_custom_information);
29   
30    _name             = _config->getName ();
31    _usage            = _config->getUsage();
32
33    // Test usage
34    usage_environment(_usage);
35
36#ifdef STATISTICS
37    _param_statistics = _config->getParamStatistics();
38#endif
39
40    configuration::Parameters * param = _config->getParam();
41
42    _param_core       = new core::Parameters
43      (
44       param->_size_general_data                             ,
45       param->_size_special_data                             ,
46       param->_get_custom_information                        ,
47
48       param->_nb_thread                                     ,
49       param->_size_ifetch_queue                             ,
50       param->_ifetch_queue_scheme                           ,
51       param->_nb_inst_fetch                                 ,
52       param->_implement_group                               ,
53       param->_ras_size_queue                                ,
54       param->_upt_size_queue                                ,
55       param->_ufpt_size_queue                               ,
56
57       param->_nb_decod_bloc                                 ,
58       param->_size_decod_queue                              ,
59       param->_decod_queue_scheme                            ,
60       param->_nb_inst_decod                                 ,
61       param->_nb_context_select                             ,
62       param->_context_select_priority                       ,
63       param->_context_select_load_balancing                 ,
64
65       param->_nb_rename_bloc                                ,
66       param->_nb_inst_insert                                ,
67       param->_nb_inst_retire                                ,
68       param->_rename_select_priority                        ,
69       param->_rename_select_load_balancing                  ,
70       param->_rename_select_nb_front_end_select             ,
71       param->_nb_general_register                           ,
72       param->_nb_special_register                           ,
73       param->_rat_scheme                                    ,
74       param->_nb_reg_free                                   ,
75       param->_nb_rename_unit_bank                           ,
76//     param->_size_read_counter                             ,
77
78       param->_nb_read_bloc                                  ,
79       param->_nb_inst_read                                  ,
80       param->_size_read_queue                               ,
81       param->_size_reservation_station                      ,
82       param->_nb_inst_retire_reservation_station            ,
83
84       param->_nb_write_bloc                                 ,
85       param->_nb_inst_write                                 ,
86       param->_size_write_queue                              ,
87       param->_size_execute_queue                            ,
88       param->_nb_bypass_write                               ,
89       param->_write_queue_scheme                            ,
90
91       param->_nb_load_store_unit                            ,
92       param->_size_store_queue                              ,
93       param->_size_load_queue                               ,
94       param->_size_speculative_access_queue                 ,
95       param->_nb_store_queue_bank                           ,
96       param->_nb_load_queue_bank                            ,
97       param->_nb_port_check                                 ,
98       param->_speculative_load                              ,
99       param->_speculative_commit_predictor_scheme           ,
100       param->_lsu_pht_size_counter                          ,
101       param->_lsu_pht_nb_counter                            ,
102       param->_lsu_pht_scheme                                ,
103       param->_nb_bypass_memory                              ,
104       param->_nb_cache_port                                 ,
105       param->_nb_inst_memory                                ,
106
107       param->_nb_functionnal_unit                           ,
108       param->_nb_inst_functionnal_unit                      ,
109       param->_timing                                        ,
110
111       param->_nb_icache_port                                ,
112       param->_icache_port_priority                          ,
113       param->_icache_port_load_balancing                    ,
114
115       param->_nb_dcache_port                                ,
116       param->_dcache_port_priority                          ,
117       param->_dcache_port_load_balancing                    ,
118
119       param->_nb_front_end                                  ,
120       param->_nb_context                                    ,
121       param->_nb_decod_unit                                 ,
122       param->_nb_inst_branch_predict                        ,
123       param->_nb_inst_branch_decod                          ,
124       param->_nb_inst_branch_update                         ,
125       param->_btb_size_queue                                ,
126       param->_btb_associativity                             ,
127       param->_btb_size_counter                              ,
128       param->_btb_victim_scheme                             ,
129       param->_dir_predictor_scheme                          ,
130       param->_dir_have_bht                                  ,
131       param->_dir_bht_size_shifter                          ,
132       param->_dir_bht_nb_shifter                            ,
133       param->_dir_have_pht                                  ,
134       param->_dir_pht_size_counter                          ,
135       param->_dir_pht_nb_counter                            ,
136       param->_dir_pht_size_address_share                    ,
137       param->_dir_pht_scheme                                ,
138
139       param->_nb_ooo_engine                                 ,
140       param->_nb_rename_unit                                ,
141//     param->_nb_inst_issue                                 , // nb_inst_issue_slot
142       param->_nb_inst_reexecute                             ,
143       param->_nb_inst_commit                                ,
144       param->_nb_inst_branch_complete                       ,
145       param->_nb_rename_unit_select                         ,
146       param->_nb_execute_loop_select                        ,
147       param->_size_re_order_buffer                          ,
148       param->_nb_re_order_buffer_bank                       ,
149       param->_retire_ooo_scheme                             ,
150       param->_commit_priority                               ,
151       param->_commit_load_balancing                         ,
152       param->_size_issue_queue                              ,
153       param->_issue_queue_scheme                            ,
154       param->_nb_issue_queue_bank                           ,
155       param->_issue_priority                                ,
156       param->_issue_load_balancing                          ,
157       param->_size_reexecute_queue                          ,
158
159       param->_nb_execute_loop                               ,
160       param->_nb_read_unit                                  ,
161       param->_nb_execute_unit                               ,
162       param->_nb_write_unit                                 ,
163       param->_nb_gpr_bank                                   ,
164       param->_nb_gpr_port_read_by_bank                      ,
165       param->_nb_gpr_port_write_by_bank                     ,
166       param->_nb_spr_bank                                   ,
167       param->_nb_spr_port_read_by_bank                      ,
168       param->_nb_spr_port_write_by_bank                     ,
169       param->_execution_unit_to_write_unit_priority         ,
170       param->_read_unit_to_execution_unit_priority          ,
171
172       param->_link_context_with_thread                      ,
173       param->_link_decod_unit_with_decod_bloc               ,
174       param->_link_rename_unit_with_rename_bloc             ,
175       param->_link_read_unit_with_read_bloc                 ,
176       param->_link_write_unit_with_write_bloc               ,
177       param->_link_execute_unit_with_functionnal_unit       ,
178       param->_link_execute_unit_with_load_store_unit        ,
179       param->_link_decod_bloc_with_thread                   ,
180       param->_link_rename_bloc_with_front_end               ,
181//     param->_table_dispatch                                ,
182       param->_link_read_bloc_with_load_store_unit           ,
183       param->_link_read_bloc_and_functionnal_unit           ,
184       param->_link_write_bloc_with_load_store_unit          ,
185       param->_link_write_bloc_and_functionnal_unit          ,
186       param->_link_load_store_unit_with_thread              ,
187       param->_link_thread_and_functionnal_unit              ,
188       param->_link_icache_port_with_thread                  ,
189       param->_link_dcache_port_with_load_store_unit         ,
190
191       param->_dispatch_priority                             ,
192       param->_dispatch_load_balancing                       );
193
194    // interface parameters
195    _nb_thread                  = _param_core->_nb_thread                 ;
196    _nb_icache_port             = _param_core->_nb_icache_port            ;
197    _size_icache_thread_id      = _param_core->_size_icache_thread_id     ;
198    _size_icache_packet_id      = _param_core->_size_icache_packet_id     ;
199    _size_icache_address        = _param_core->_size_icache_address       ;
200    _size_icache_type           = _param_core->_size_icache_type          ;
201    _size_icache_error          = _param_core->_size_icache_error         ;
202    _icache_nb_instruction      = _param_core->_icache_nb_instruction     ;
203    _size_icache_instruction    = _param_core->_size_instruction          ;
204    _nb_dcache_port             = _param_core->_nb_dcache_port            ;
205    _size_dcache_thread_id      = _param_core->_size_dcache_thread_id     ;
206    _size_dcache_packet_id      = _param_core->_size_dcache_packet_id     ;
207    _size_dcache_address        = _param_core->_size_dcache_address       ;
208    _size_dcache_data           = _param_core->_size_dcache_data          ;
209    _size_dcache_type           = _param_core->_size_dcache_type          ;
210    _size_dcache_error          = _param_core->_size_dcache_error         ;
211    _have_port_icache_thread_id = _param_core->_have_port_icache_thread_id;
212    _have_port_icache_packet_id = _param_core->_have_port_icache_packet_id;
213    _have_port_dcache_thread_id = _param_core->_have_port_dcache_thread_id;
214    _have_port_dcache_packet_id = _param_core->_have_port_dcache_packet_id;
215
216    log_end(Morpheo,FUNCTION);
217  };
218}; // end namespace morpheo
Note: See TracBrowser for help on using the repository browser.