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

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

1) Add new algo in ifetch queue
2) Add Cancel bit
3) new config

  • Property svn:keywords set to Id
File size: 10.6 KB
Line 
1/*
2 * $Id: Morpheo_configuration.cpp 136 2009-10-20 18:52:15Z 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->_nb_reg_free                                   ,
74       param->_nb_rename_unit_bank                           ,
75//        param->_size_read_counter                             ,
76
77       param->_nb_read_bloc                                  ,
78       param->_size_read_queue                               ,
79       param->_size_reservation_station                      ,
80       param->_nb_inst_retire_reservation_station            ,
81
82       param->_nb_write_bloc                                 ,
83       param->_size_write_queue                              ,
84       param->_size_execute_queue                            ,
85       param->_nb_bypass_write                               ,
86       param->_write_queue_scheme                            ,
87
88       param->_nb_load_store_unit                            ,
89       param->_size_store_queue                              ,
90       param->_size_load_queue                               ,
91       param->_size_speculative_access_queue                 ,
92       param->_nb_port_check                                 ,
93       param->_speculative_load                              ,
94       param->_nb_bypass_memory                              ,
95       param->_nb_cache_port                                 ,
96       param->_nb_inst_memory                                ,
97
98       param->_nb_functionnal_unit                           ,
99       param->_nb_inst_functionnal_unit                      ,
100       param->_timing                                        ,
101
102       param->_nb_icache_port                                ,
103       param->_icache_port_priority                          ,
104       param->_icache_port_load_balancing                    ,
105
106       param->_nb_dcache_port                                ,
107       param->_dcache_port_priority                          ,
108       param->_dcache_port_load_balancing                    ,
109
110       param->_nb_front_end                                  ,
111       param->_nb_context                                    ,
112       param->_nb_decod_unit                                 ,
113       param->_nb_inst_branch_predict                        ,
114       param->_nb_inst_branch_decod                          ,
115       param->_nb_inst_branch_update                         ,
116       param->_btb_size_queue                                ,
117       param->_btb_associativity                             ,
118       param->_btb_size_counter                              ,
119       param->_btb_victim_scheme                             ,
120       param->_dir_predictor_scheme                          ,
121       param->_dir_have_bht                                  ,
122       param->_dir_bht_size_shifter                          ,
123       param->_dir_bht_nb_shifter                            ,
124       param->_dir_have_pht                                  ,
125       param->_dir_pht_size_counter                          ,
126       param->_dir_pht_nb_counter                            ,
127       param->_dir_pht_size_address_share                    ,
128
129       param->_nb_ooo_engine                                 ,
130       param->_nb_rename_unit                                ,
131       param->_nb_inst_issue                                 ,
132       param->_nb_inst_reexecute                             ,
133       param->_nb_inst_commit                                ,
134       param->_nb_inst_branch_complete                       ,
135       param->_nb_rename_unit_select                         ,
136       param->_nb_execute_loop_select                        ,
137       param->_size_re_order_buffer                          ,
138       param->_nb_re_order_buffer_bank                       ,
139       param->_commit_priority                               ,
140       param->_commit_load_balancing                         ,
141       param->_size_issue_queue                              ,
142       param->_issue_queue_scheme                            ,
143       param->_nb_issue_queue_bank                           ,
144       param->_issue_priority                                ,
145       param->_issue_load_balancing                          ,
146       param->_size_reexecute_queue                          ,
147       param->_reexecute_priority                            ,
148       param->_reexecute_load_balancing                      ,
149
150       param->_nb_execute_loop                               ,
151       param->_nb_read_unit                                  ,
152       param->_nb_execute_unit                               ,
153       param->_nb_write_unit                                 ,
154       param->_nb_gpr_bank                                   ,
155       param->_nb_gpr_port_read_by_bank                      ,
156       param->_nb_gpr_port_write_by_bank                     ,
157       param->_nb_spr_bank                                   ,
158       param->_nb_spr_port_read_by_bank                      ,
159       param->_nb_spr_port_write_by_bank                     ,
160       param->_execution_unit_to_write_unit_priority         ,
161       param->_read_unit_to_execution_unit_priority          ,
162
163       param->_link_context_with_thread                      ,
164       param->_link_decod_unit_with_decod_bloc               ,
165       param->_link_rename_unit_with_rename_bloc             ,
166       param->_link_read_unit_with_read_bloc                 ,
167       param->_link_write_unit_with_write_bloc               ,
168       param->_link_execute_unit_with_functionnal_unit       ,
169       param->_link_execute_unit_with_load_store_unit        ,
170       param->_link_decod_bloc_with_thread                   ,
171       param->_link_rename_bloc_with_front_end               ,
172       param->_table_dispatch                                ,
173       param->_link_read_bloc_and_load_store_unit            ,
174       param->_link_read_bloc_and_functionnal_unit           ,
175       param->_link_write_bloc_and_load_store_unit           ,
176       param->_link_write_bloc_and_functionnal_unit          ,
177       param->_link_load_store_unit_with_thread              ,
178       param->_link_thread_and_functionnal_unit              ,
179       param->_link_icache_port_with_thread                  ,
180       param->_link_dcache_port_with_load_store_unit         ,
181
182       param->_dispatch_priority                             ,
183       param->_dispatch_load_balancing                       );
184
185    // interface parameters
186    _nb_thread                  = _param_core->_nb_thread                 ;
187    _nb_icache_port             = _param_core->_nb_icache_port            ;
188    _size_icache_thread_id      = _param_core->_size_icache_thread_id     ;
189    _size_icache_packet_id      = _param_core->_size_icache_packet_id     ;
190    _size_icache_address        = _param_core->_size_icache_address       ;
191    _size_icache_type           = _param_core->_size_icache_type          ;
192    _size_icache_error          = _param_core->_size_icache_error         ;
193    _icache_nb_instruction      = _param_core->_icache_nb_instruction     ;
194    _size_icache_instruction    = _param_core->_size_instruction          ;
195    _nb_dcache_port             = _param_core->_nb_dcache_port            ;
196    _size_dcache_thread_id      = _param_core->_size_dcache_thread_id     ;
197    _size_dcache_packet_id      = _param_core->_size_dcache_packet_id     ;
198    _size_dcache_address        = _param_core->_size_dcache_address       ;
199    _size_dcache_data           = _param_core->_size_dcache_data          ;
200    _size_dcache_type           = _param_core->_size_dcache_type          ;
201    _size_dcache_error          = _param_core->_size_dcache_error         ;
202    _have_port_icache_thread_id = _param_core->_have_port_icache_thread_id;
203    _have_port_icache_packet_id = _param_core->_have_port_icache_packet_id;
204    _have_port_dcache_thread_id = _param_core->_have_port_dcache_thread_id;
205    _have_port_dcache_packet_id = _param_core->_have_port_dcache_packet_id;
206
207    log_end(Morpheo,FUNCTION);
208  };
209}; // end namespace morpheo
Note: See TracBrowser for help on using the repository browser.