source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters_print.cpp @ 97

Last change on this file since 97 was 97, checked in by rosiere, 16 years ago

1) Update Prediction Table : statistics
2) Size instruction address on 30 bits
3) Change Log File
4) Add debug_level in simulation configuration file

  • Property svn:keywords set to Id
File size: 25.0 KB
Line 
1/*
2 * $Id: Parameters_print.cpp 97 2008-12-19 15:34:00Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/include/Parameters.h"
9#include "Behavioural/include/XML.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace core {
14
15
16#undef  FUNCTION
17#define FUNCTION "Core::print"
18  std::string Parameters::print (uint32_t depth)
19  {
20    log_begin(Core,FUNCTION);
21
22//     XML xml ("core");
23
24//     xml.balise_open("core");
25// //  xml.singleton_begin(""); xml.attribut("value",toString(_)); xml.singleton_end();
26//     xml.balise_close();
27
28//     return xml.get_body(depth);
29
30    std::string str = "";
31
32    str+= toString(MSG_INFORMATION)+" -----[ Common ]-----------------------------------\n";
33    str+= toString(MSG_INFORMATION)+"   * size_general_data                             : "+toString<uint32_t>(_size_general_data)+"\n";
34    str+= toString(MSG_INFORMATION)+"   * size_special_data                             : "+toString<uint32_t>(_size_special_data)+"\n";
35   
36    str+= toString(MSG_INFORMATION)+" -----[ Thread ]-----------------------------------\n";
37    str+= toString(MSG_INFORMATION)+"   * nb_thread                                     : "+toString<uint32_t>(_nb_thread)+"\n";
38    for (uint32_t i=0; i<_nb_thread; ++i)
39      {
40    str+= toString(MSG_INFORMATION)+"   * THREAD ["+toString<uint32_t>(i)+"]\n";
41    str+= toString(MSG_INFORMATION)+"     * size_ifetch_queue                           : "+toString<uint32_t>(_size_ifetch_queue [i])+"\n";
42    str+= toString(MSG_INFORMATION)+"     * nb_inst_fetch                               : "+toString<uint32_t>(_nb_inst_fetch     [i])+"\n";
43    str+= toString(MSG_INFORMATION)+"     * ras_size_queue                              : "+toString<uint32_t>(_ras_size_queue    [i])+"\n";
44    str+= toString(MSG_INFORMATION)+"     * upt_size_queue                              : "+toString<uint32_t>(_upt_size_queue    [i])+"\n";
45    str+= toString(MSG_INFORMATION)+"     * ufpt_size_queue                             : "+toString<uint32_t>(_ufpt_size_queue   [i])+"\n";
46   
47    for (uint32_t j=0; j<NB_GROUP; ++j)
48      {
49    str+= toString(MSG_INFORMATION)+"     * GROUP["+toString(j)+"]\n";
50    str+= toString(MSG_INFORMATION)+"       * implement_group                           : "+toString<uint32_t>(_implement_group [i][j])+"\n";
51      }
52      }
53
54    str+= toString(MSG_INFORMATION)+" -----[ Decod bloc ]-------------------------------\n";
55    str+= toString(MSG_INFORMATION)+"   * nb_decod_bloc                                 : "+toString<uint32_t>(_nb_decod_bloc)+"\n";
56    for (uint32_t i=0; i<_nb_decod_bloc; ++i)
57      {
58    str+= toString(MSG_INFORMATION)+"   * DECOD_BLOC ["+toString<uint32_t>(i)+"]\n";
59
60    str+= toString(MSG_INFORMATION)+"     * size_decod_queue                            : "+toString<uint32_t         >(_size_decod_queue             [i])+"\n";
61    str+= toString(MSG_INFORMATION)+"     * nb_inst_decod                               : "+toString<uint32_t         >(_nb_inst_decod                [i])+"\n";
62    str+= toString(MSG_INFORMATION)+"     * nb_context_select                           : "+toString<uint32_t         >(_nb_context_select            [i])+"\n";
63    str+= toString(MSG_INFORMATION)+"     * context_select_priority                     : "+toString<Tpriority_t      >(_context_select_priority      [i])+"\n";
64    str+= toString(MSG_INFORMATION)+"     * context_select_load_balancing               : "+toString<Tload_balancing_t>(_context_select_load_balancing[i])+"\n";
65      }
66
67    str+= toString(MSG_INFORMATION)+" -----[ Rename bloc ]------------------------------\n";
68    str+= toString(MSG_INFORMATION)+"   * nb_rename_bloc                                : "+toString<uint32_t>(_nb_rename_bloc)+"\n";
69    for (uint32_t i=0; i<_nb_rename_bloc; ++i)
70      {
71    str+= toString(MSG_INFORMATION)+"   * RENAME_BLOC ["+toString<uint32_t>(i)+"]\n";
72    str+= toString(MSG_INFORMATION)+"     * nb_inst_insert                              : "+toString<uint32_t         >(_nb_inst_insert                   [i])+"\n";
73    str+= toString(MSG_INFORMATION)+"     * nb_inst_retire                              : "+toString<uint32_t         >(_nb_inst_retire                   [i])+"\n";
74    str+= toString(MSG_INFORMATION)+"     * rename_select_priority                      : "+toString<Tpriority_t      >(_rename_select_priority           [i])+"\n";
75    str+= toString(MSG_INFORMATION)+"     * rename_select_load_balancing                : "+toString<Tload_balancing_t>(_rename_select_load_balancing     [i])+"\n";
76    str+= toString(MSG_INFORMATION)+"     * rename_select_nb_front_end_select           : "+toString<uint32_t         >(_rename_select_nb_front_end_select[i])+"\n";
77    str+= toString(MSG_INFORMATION)+"     * nb_general_register                         : "+toString<uint32_t         >(_nb_general_register              [i])+"\n";
78    str+= toString(MSG_INFORMATION)+"     * nb_special_register                         : "+toString<uint32_t         >(_nb_special_register              [i])+"\n";
79    str+= toString(MSG_INFORMATION)+"     * nb_reg_free                                 : "+toString<uint32_t         >(_nb_reg_free                      [i])+"\n";
80    str+= toString(MSG_INFORMATION)+"     * nb_rename_unit_bank                         : "+toString<uint32_t         >(_nb_rename_unit_bank              [i])+"\n";
81    str+= toString(MSG_INFORMATION)+"     * size_read_counter                           : "+toString<uint32_t         >(_size_read_counter                [i])+"\n";
82      }
83
84    str+= toString(MSG_INFORMATION)+" -----[ Read bloc ]--------------------------------\n";
85    str+= toString(MSG_INFORMATION)+"   * nb_read_bloc                                  : "+toString<uint32_t>(_nb_read_bloc                         )+"\n";
86    for (uint32_t i=0; i<_nb_read_bloc; ++i)
87      {
88    str+= toString(MSG_INFORMATION)+"   * READ_BLOC ["+toString<uint32_t>(i)+"]\n";
89    str+= toString(MSG_INFORMATION)+"     * size_read_queue                             : "+toString<uint32_t>(_size_read_queue                   [i])+"\n";
90    str+= toString(MSG_INFORMATION)+"     * size_reservation_station                    : "+toString<uint32_t>(_size_reservation_station          [i])+"\n";
91    str+= toString(MSG_INFORMATION)+"     * nb_inst_retire_reservation_station          : "+toString<uint32_t>(_nb_inst_retire_reservation_station[i])+"\n";
92      }
93
94    str+= toString(MSG_INFORMATION)+" -----[ Write bloc ]-------------------------------\n";
95    str+= toString(MSG_INFORMATION)+"   * nb_write_bloc                                 : "+toString<uint32_t>(_nb_write_bloc        )+"\n";
96    for (uint32_t i=0; i<_nb_write_bloc; ++i)
97      {
98    str+= toString(MSG_INFORMATION)+"   * WRITE_BLOC ["+toString<uint32_t>(i)+"]\n";
99    str+= toString(MSG_INFORMATION)+"     * size_write_queue                            : "+toString<uint32_t>(_size_write_queue  [i])+"\n";
100    str+= toString(MSG_INFORMATION)+"     * size_execute_queue                          : "+toString<uint32_t>(_size_execute_queue[i])+"\n";
101    str+= toString(MSG_INFORMATION)+"     * nb_bypass_write                             : "+toString<uint32_t>(_nb_bypass_write   [i])+"\n";
102      }
103
104    str+= toString(MSG_INFORMATION)+" -----[ Load_store_unit ]--------------------------\n";
105    str+= toString(MSG_INFORMATION)+"   * nb_load_store_unit                            : "+toString<uint32_t>(_nb_load_store_unit              )+"\n";
106    for (uint32_t i=0; i<_nb_load_store_unit; ++i)
107      {
108    str+= toString(MSG_INFORMATION)+"   * LOAD_STORE_UNIT ["+toString<uint32_t>(i)+"]\n";
109    str+= toString(MSG_INFORMATION)+"     * size_store_queue                            : "+toString<uint32_t>(_size_store_queue             [i])+"\n";
110    str+= toString(MSG_INFORMATION)+"     * size_load_queue                             : "+toString<uint32_t>(_size_load_queue              [i])+"\n";
111    str+= toString(MSG_INFORMATION)+"     * size_speculative_access_queue               : "+toString<uint32_t>(_size_speculative_access_queue[i])+"\n";
112    str+= toString(MSG_INFORMATION)+"     * nb_port_check                               : "+toString<uint32_t>(_nb_port_check                [i])+"\n";
113    str+= toString(MSG_INFORMATION)+"     * speculative_load                            : "+toString<multi_execute_loop::execute_loop::Tspeculative_load_t>(_speculative_load             [i])+"\n";
114    str+= toString(MSG_INFORMATION)+"     * nb_bypass_memory                            : "+toString<uint32_t>(_nb_bypass_memory             [i])+"\n";
115    str+= toString(MSG_INFORMATION)+"     * nb_cache_port                               : "+toString<uint32_t>(_nb_cache_port                [i])+"\n";
116    str+= toString(MSG_INFORMATION)+"     * nb_inst_memory                              : "+toString<uint32_t>(_nb_inst_memory               [i])+"\n";
117      }
118
119    str+= toString(MSG_INFORMATION)+" -----[ Functionnal_unit ]-------------------------\n";
120    str+= toString(MSG_INFORMATION)+"   * nb_functionnal_unit                           : "+toString<uint32_t>(_nb_functionnal_unit         )+"\n";
121    for (uint32_t i=0; i<_nb_functionnal_unit; ++i)
122      {
123    str+= toString(MSG_INFORMATION)+"   * FUNCTIONNAL_UNIT ["+toString<uint32_t>(i)+"]\n";
124    str+= toString(MSG_INFORMATION)+"   * nb_inst_functionnal_unit                      : "+toString<uint32_t>(_nb_inst_functionnal_unit [i])+"\n";
125      }
126
127//multi_execute_loop::execute_loop::execute_timing_t *** timing; //[nb_functionnal_unit][nb_type][nb_operation]
128
129    str+= toString(MSG_INFORMATION)+" -----[ Icache_Access ]----------------------------\n";
130    str+= toString(MSG_INFORMATION)+"   * nb_icache_port                                : "+toString<uint32_t         >(_nb_icache_port            )+"\n";
131    str+= toString(MSG_INFORMATION)+"   * icache_port_priority                          : "+toString<Tpriority_t      >(_icache_port_priority      )+"\n";
132    str+= toString(MSG_INFORMATION)+"   * icache_port_load_balancing                    : "+toString<Tload_balancing_t>(_icache_port_load_balancing)+"\n";
133
134    str+= toString(MSG_INFORMATION)+" -----[ Dcache_Access ]----------------------------\n";
135    str+= toString(MSG_INFORMATION)+"   * nb_dcache_port                                : "+toString<uint32_t         >(_nb_dcache_port            )+"\n";
136    str+= toString(MSG_INFORMATION)+"   * dcache_port_priority                          : "+toString<Tpriority_t      >(_dcache_port_priority      )+"\n";
137    str+= toString(MSG_INFORMATION)+"   * dcache_port_load_balancing                    : "+toString<Tload_balancing_t>(_dcache_port_load_balancing)+"\n";
138
139    str+= toString(MSG_INFORMATION)+" -----[ Front_end ]--------------------------------\n";
140    str+= toString(MSG_INFORMATION)+"   * nb_front_end                                  : "+toString<uint32_t    >(_nb_front_end                    )+"\n";
141    for (uint32_t i=0; i<_nb_front_end; ++i)
142      {
143    str+= toString(MSG_INFORMATION)+"   * FRONT_END ["+toString<uint32_t>(i)+"]\n";
144    str+= toString(MSG_INFORMATION)+"     * nb_context                                  : "+toString<uint32_t    >(_nb_context                [i]   )+"\n";
145    str+= toString(MSG_INFORMATION)+"     * nb_decod_unit                               : "+toString<uint32_t    >(_nb_decod_unit             [i]   )+"\n";
146    str+= toString(MSG_INFORMATION)+"     * nb_inst_branch_predict                      : "+toString<uint32_t    >(_nb_inst_branch_predict    [i]   )+"\n";
147    str+= toString(MSG_INFORMATION)+"     * nb_inst_branch_decod                        : "+toString<uint32_t    >(_nb_inst_branch_decod      [i]   )+"\n";
148    str+= toString(MSG_INFORMATION)+"     * nb_inst_branch_update                       : "+toString<uint32_t    >(_nb_inst_branch_update     [i]   )+"\n";
149    str+= toString(MSG_INFORMATION)+"     * btb_size_queue                              : "+toString<uint32_t    >(_btb_size_queue            [i]   )+"\n";
150    str+= toString(MSG_INFORMATION)+"     * btb_associativity                           : "+toString<uint32_t    >(_btb_associativity         [i]   )+"\n";
151    str+= toString(MSG_INFORMATION)+"     * btb_size_counter                            : "+toString<uint32_t    >(_btb_size_counter          [i]   )+"\n";
152    str+= toString(MSG_INFORMATION)+"     * btb_victim_scheme                           : "+toString<Tvictim_t   >(_btb_victim_scheme         [i]   )+"\n";
153    str+= toString(MSG_INFORMATION)+"     * dir_predictor_scheme                        : "+toString<Tpredictor_t>(_dir_predictor_scheme      [i]   )+"\n";
154    for (uint32_t j=0; j<3; ++j)
155      {
156    str+= toString(MSG_INFORMATION)+"     * PREDICTOR ["+toString<uint32_t>(i)+"]["+toString<uint32_t>(j)+"]\n";
157    str+= toString(MSG_INFORMATION)+"       * dir_have_bht                              : "+toString<bool        >(_dir_have_bht              [i][j])+"\n";
158    str+= toString(MSG_INFORMATION)+"       * dir_bht_size_shifter                      : "+toString<uint32_t    >(_dir_bht_size_shifter      [i][j])+"\n";
159    str+= toString(MSG_INFORMATION)+"       * dir_bht_nb_shifter                        : "+toString<uint32_t    >(_dir_bht_nb_shifter        [i][j])+"\n";
160    str+= toString(MSG_INFORMATION)+"       * dir_have_pht                              : "+toString<bool        >(_dir_have_pht              [i][j])+"\n";
161    str+= toString(MSG_INFORMATION)+"       * dir_pht_size_counter                      : "+toString<uint32_t    >(_dir_pht_size_counter      [i][j])+"\n";
162    str+= toString(MSG_INFORMATION)+"       * dir_pht_nb_counter                        : "+toString<uint32_t    >(_dir_pht_nb_counter        [i][j])+"\n";
163    str+= toString(MSG_INFORMATION)+"       * dir_pht_size_address_share                : "+toString<uint32_t    >(_dir_pht_size_address_share[i][j])+"\n";
164      }
165      }
166
167    str+= toString(MSG_INFORMATION)+" -----[ OOO_Engine ]-------------------------------\n";
168    str+= toString(MSG_INFORMATION)+"   * nb_ooo_engine                                 : "+toString<uint32_t         >(_nb_ooo_engine              )+"\n";
169    for (uint32_t i=0; i<_nb_ooo_engine; ++i)
170      {
171    str+= toString(MSG_INFORMATION)+"   * OOO_ENGINE ["+toString<uint32_t>(i)+"]\n";
172    str+= toString(MSG_INFORMATION)+"     * nb_rename_unit                              : "+toString<uint32_t         >(_nb_rename_unit          [i])+"\n";
173    str+= toString(MSG_INFORMATION)+"     * nb_inst_issue                               : "+toString<uint32_t         >(_nb_inst_issue           [i])+"\n";
174    str+= toString(MSG_INFORMATION)+"     * nb_inst_reexecute                           : "+toString<uint32_t         >(_nb_inst_reexecute       [i])+"\n";
175    str+= toString(MSG_INFORMATION)+"     * nb_inst_commit                              : "+toString<uint32_t         >(_nb_inst_commit          [i])+"\n";
176    str+= toString(MSG_INFORMATION)+"     * nb_inst_branch_complete                     : "+toString<uint32_t         >(_nb_inst_branch_complete [i])+"\n";
177    str+= toString(MSG_INFORMATION)+"     * nb_rename_unit_select                       : "+toString<uint32_t         >(_nb_rename_unit_select   [i])+"\n";
178    str+= toString(MSG_INFORMATION)+"     * nb_execute_loop_select                      : "+toString<uint32_t         >(_nb_execute_loop_select  [i])+"\n";
179    str+= toString(MSG_INFORMATION)+"     * size_re_order_buffer                        : "+toString<uint32_t         >(_size_re_order_buffer    [i])+"\n";
180    str+= toString(MSG_INFORMATION)+"     * nb_re_order_buffer_bank                     : "+toString<uint32_t         >(_nb_re_order_buffer_bank [i])+"\n";
181    str+= toString(MSG_INFORMATION)+"     * commit_priority                             : "+toString<Tpriority_t      >(_commit_priority         [i])+"\n";
182    str+= toString(MSG_INFORMATION)+"     * commit_load_balancing                       : "+toString<Tload_balancing_t>(_commit_load_balancing   [i])+"\n";
183    str+= toString(MSG_INFORMATION)+"     * size_issue_queue                            : "+toString<uint32_t         >(_size_issue_queue        [i])+"\n";
184    str+= toString(MSG_INFORMATION)+"     * nb_issue_queue_bank                         : "+toString<uint32_t         >(_nb_issue_queue_bank     [i])+"\n";
185    str+= toString(MSG_INFORMATION)+"     * issue_priority                              : "+toString<Tpriority_t      >(_issue_priority          [i])+"\n";
186    str+= toString(MSG_INFORMATION)+"     * issue_load_balancing                        : "+toString<Tload_balancing_t>(_issue_load_balancing    [i])+"\n";
187    str+= toString(MSG_INFORMATION)+"     * size_reexecute_queue                        : "+toString<uint32_t         >(_size_reexecute_queue    [i])+"\n";
188    str+= toString(MSG_INFORMATION)+"     * reexecute_priority                          : "+toString<Tpriority_t      >(_reexecute_priority      [i])+"\n";
189    str+= toString(MSG_INFORMATION)+"     * reexecute_load_balancing                    : "+toString<Tload_balancing_t>(_reexecute_load_balancing[i])+"\n";
190      }
191
192    str+= toString(MSG_INFORMATION)+" -----[ Execute_loop ]-----------------------------\n";
193    str+= toString(MSG_INFORMATION)+"   * nb_execute_loop                               : "+toString<uint32_t   >(_nb_execute_loop                         )+"\n";
194    for (uint32_t i=0; i<_nb_execute_loop; ++i)
195      {
196    str+= toString(MSG_INFORMATION)+"   * EXECUTE_LOOP ["+toString<uint32_t>(i)+"]\n";
197    str+= toString(MSG_INFORMATION)+"     * nb_read_unit                                : "+toString<uint32_t   >(_nb_read_unit                         [i])+"\n";
198    str+= toString(MSG_INFORMATION)+"     * nb_execute_unit                             : "+toString<uint32_t   >(_nb_execute_unit                      [i])+"\n";
199    str+= toString(MSG_INFORMATION)+"     * nb_write_unit                               : "+toString<uint32_t   >(_nb_write_unit                        [i])+"\n";
200    str+= toString(MSG_INFORMATION)+"     * nb_gpr_bank                                 : "+toString<uint32_t   >(_nb_gpr_bank                          [i])+"\n";
201    str+= toString(MSG_INFORMATION)+"     * nb_gpr_port_read_by_bank                    : "+toString<uint32_t   >(_nb_gpr_port_read_by_bank             [i])+"\n";
202    str+= toString(MSG_INFORMATION)+"     * nb_gpr_port_write_by_bank                   : "+toString<uint32_t   >(_nb_gpr_port_write_by_bank            [i])+"\n";
203    str+= toString(MSG_INFORMATION)+"     * nb_spr_bank                                 : "+toString<uint32_t   >(_nb_spr_bank                          [i])+"\n";
204    str+= toString(MSG_INFORMATION)+"     * nb_spr_port_read_by_bank                    : "+toString<uint32_t   >(_nb_spr_port_read_by_bank             [i])+"\n";
205    str+= toString(MSG_INFORMATION)+"     * nb_spr_port_write_by_bank                   : "+toString<uint32_t   >(_nb_spr_port_write_by_bank            [i])+"\n";
206    str+= toString(MSG_INFORMATION)+"     * execution_unit_to_write_unit_priority       : "+toString<Tpriority_t>(_execution_unit_to_write_unit_priority[i])+"\n";
207    str+= toString(MSG_INFORMATION)+"     * read_unit_to_execution_unit_priority        : "+toString<Tpriority_t>(_read_unit_to_execution_unit_priority [i])+"\n";
208      }
209
210    str+= toString(MSG_INFORMATION)+" -----[ Link ]-------------------------------------\n";
211
212    for (uint32_t i=0; i<_nb_thread; ++i)
213    str+= toString(MSG_INFORMATION)+"   * link_context_with_thread                        ["+toString(i)+"] -> ["+toString(_link_context_with_thread               [i].first)+"]["+toString(_link_context_with_thread               [i].second)+"]\n";//[nb_thread]
214    for (uint32_t i=0; i<_nb_decod_bloc; ++i)
215    str+= toString(MSG_INFORMATION)+"   * link_decod_unit_with_decod_bloc                 ["+toString(i)+"] -> ["+toString(_link_decod_unit_with_decod_bloc        [i].first)+"]["+toString(_link_decod_unit_with_decod_bloc        [i].second)+"]\n";//[nb_decod_bloc]
216    for (uint32_t i=0; i<_nb_rename_bloc; ++i)
217    str+= toString(MSG_INFORMATION)+"   * link_rename_unit_with_rename_bloc               ["+toString(i)+"] -> ["+toString(_link_rename_unit_with_rename_bloc      [i].first)+"]["+toString(_link_rename_unit_with_rename_bloc      [i].second)+"]\n";//[nb_rename_bloc]
218    for (uint32_t i=0; i<_nb_read_bloc; ++i)
219    str+= toString(MSG_INFORMATION)+"   * link_read_unit_with_read_bloc                   ["+toString(i)+"] -> ["+toString(_link_read_unit_with_read_bloc          [i].first)+"]["+toString(_link_read_unit_with_read_bloc          [i].second)+"]\n";//[nb_read_bloc]
220    for (uint32_t i=0; i<_nb_write_bloc; ++i)
221    str+= toString(MSG_INFORMATION)+"   * link_write_unit_with_write_bloc                 ["+toString(i)+"] -> ["+toString(_link_write_unit_with_write_bloc        [i].first)+"]["+toString(_link_write_unit_with_write_bloc        [i].second)+"]\n";//[nb_write_bloc]
222    for (uint32_t i=0; i<_nb_functionnal_unit; ++i)
223    str+= toString(MSG_INFORMATION)+"   * link_execute_unit_with_functionnal_unit         ["+toString(i)+"] -> ["+toString(_link_execute_unit_with_functionnal_unit[i].first)+"]["+toString(_link_execute_unit_with_functionnal_unit[i].second)+"]\n";//[nb_functionnal_unit]
224    for (uint32_t i=0; i<_nb_load_store_unit;++i)
225    str+= toString(MSG_INFORMATION)+"   * link_execute_unit_with_load_store_unit          ["+toString(i)+"] -> ["+toString(_link_execute_unit_with_load_store_unit [i].first)+"]["+toString(_link_execute_unit_with_load_store_unit [i].second)+"]\n";//[nb_load_store_unit]
226
227    for (uint32_t i=0; i<_nb_thread; ++i)
228    str+= toString(MSG_INFORMATION)+"   * link_decod_bloc_with_thread                     ["+toString(i)+"] -> ["+toString(_link_decod_bloc_with_thread            [i])+"]\n";//[nb_thread]
229    for (uint32_t i=0; i<_nb_front_end; ++i)
230    str+= toString(MSG_INFORMATION)+"   * link_rename_bloc_with_front_end                 ["+toString(i)+"] -> ["+toString(_link_rename_bloc_with_front_end        [i])+"]\n";//[nb_front_end]
231    for (uint32_t i=0; i<_nb_thread; ++i)
232    str+= toString(MSG_INFORMATION)+"   * link_load_store_unit_with_thread                ["+toString(i)+"] -> ["+toString(_link_load_store_unit_with_thread       [i])+"]\n";//[nb_thread]
233    for (uint32_t i=0; i<_nb_thread; ++i)
234    str+= toString(MSG_INFORMATION)+"   * link_icache_port_with_thread                    ["+toString(i)+"] -> ["+toString(_link_icache_port_with_thread           [i])+"]\n";//[nb_thread]
235    for (uint32_t i=0; i<_nb_load_store_unit; ++i)
236      for (uint32_t j=0; j<_nb_cache_port[i]; ++j)
237    str+= toString(MSG_INFORMATION)+"   * link_dcache_port_with_load_store_unit           ["+toString(i)+"]["+toString(j)+"] -> ["+toString(_link_dcache_port_with_load_store_unit  [i][j])+"]\n";//[nb_load_store_unit][nb_cache_port]
238
239   
240    for (uint32_t i=0; i<_nb_read_bloc; ++i)
241      for (uint32_t j=0; j<_nb_load_store_unit; ++j)
242    str+= toString(MSG_INFORMATION)+"   * link_read_bloc_and_load_store_unit              ["+toString(i)+"]["+toString(j)+"] : "+toString(_link_read_bloc_and_load_store_unit  [i][j])+"\n";//[nb_read_bloc][nb_load_store_unit]
243    for (uint32_t i=0; i<_nb_read_bloc; ++i)
244      for (uint32_t j=0; j<_nb_functionnal_unit; ++j)
245    str+= toString(MSG_INFORMATION)+"   * link_read_bloc_and_functionnal_unit             ["+toString(i)+"]["+toString(j)+"] : "+toString(_link_read_bloc_and_functionnal_unit [i][j])+"\n";//[nb_read_bloc][nb_functionnal_unit]
246    for (uint32_t i=0; i<_nb_write_bloc; ++i)
247      for (uint32_t j=0; j<_nb_load_store_unit; ++j)
248    str+= toString(MSG_INFORMATION)+"   * link_write_bloc_and_load_store_unit             ["+toString(i)+"]["+toString(j)+"] : "+toString(_link_write_bloc_and_load_store_unit [i][j])+"\n";//[nb_write_bloc][nb_load_store_unit]
249    for (uint32_t i=0; i<_nb_write_bloc; ++i)
250      for (uint32_t j=0; j<_nb_functionnal_unit; ++j)
251    str+= toString(MSG_INFORMATION)+"   * link_write_bloc_and_functionnal_unit            ["+toString(i)+"]["+toString(j)+"] : "+toString(_link_write_bloc_and_functionnal_unit[i][j])+"\n";//[nb_write_bloc][nb_functionnal_unit]
252    for (uint32_t i=0; i<_nb_thread; ++i)
253      for (uint32_t j=0; j<_nb_functionnal_unit; ++j)
254    str+= toString(MSG_INFORMATION)+"   * link_thread_and_functionnal_unit                ["+toString(i)+"]["+toString(j)+"] : "+toString(_link_thread_and_functionnal_unit    [i][j])+"\n";//[nb_thread][nb_functionnal_unit]
255
256    str+= toString(MSG_INFORMATION)+" -----[ Dispatch ]---------------------------------\n";
257
258    for (uint32_t i=0; i<_nb_ooo_engine; ++i)
259      for (uint32_t j=0; j<_nb_inst_issue[i]; ++j)
260        for (uint32_t k=0; k<_nb_read_bloc; ++k)
261    str+= toString(MSG_INFORMATION)+"   * table_dispatch                                  ["+toString(i)+"]["+toString(j)+"]["+toString(k)+"] : "+toString(_table_dispatch                      [i][j][k])+"\n";//[nb_ooo_engine][nb_inst_issue][nb_read_bloc]
262
263    str+= toString(MSG_INFORMATION)+"   * dispatch_priority                             : "+toString<Tpriority_t      >(_dispatch_priority      )+"\n";
264    str+= toString(MSG_INFORMATION)+"   * dispatch_load_balancing                       : "+toString<Tload_balancing_t>(_dispatch_load_balancing);
265
266    log_end(Core,FUNCTION);
267   
268    return str;
269  };
270
271#undef  FUNCTION
272#define FUNCTION "Core::operator<<"
273  std::ostream& operator<< (std::ostream& output_stream ,
274                            morpheo::behavioural::core::Parameters & x)
275  {
276    log_begin(Core,FUNCTION);
277
278    output_stream << x.print(0);
279   
280    log_end(Core,FUNCTION);
281
282    return output_stream;
283  };
284
285}; // end namespace core
286}; // end namespace behavioural
287}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.