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

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

1) Platforms : add new organization for test
2) Load_Store_Unit : add array to count nb_check in store_queue
3) Issue_queue and Core_Glue : rewrite the issue network
4) Special_Register_Unit : add reset value to register CID
5) Softwares : add multicontext test
6) Softwares : add SPECINT
7) Softwares : add MiBench?
7) Read_queue : inhib access for r0
8) Change Core_Glue (network) - dont yet support priority and load balancing scheme

  • Property svn:keywords set to Id
File size: 25.8 KB
Line 
1/*
2 * $Id: Parameters_print.cpp 117 2009-05-16 14:42:39Z 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)+"     * decod_queue_scheme                          : "+toString<multi_front_end::front_end::decod_unit::decod_queue::Tdecod_queue_scheme_t>
62                                                                                                                       (_decod_queue_scheme           [i])+"\n";
63    str+= toString(MSG_INFORMATION)+"     * nb_inst_decod                               : "+toString<uint32_t         >(_nb_inst_decod                [i])+"\n";
64    str+= toString(MSG_INFORMATION)+"     * nb_context_select                           : "+toString<uint32_t         >(_nb_context_select            [i])+"\n";
65    str+= toString(MSG_INFORMATION)+"     * context_select_priority                     : "+toString<Tpriority_t      >(_context_select_priority      [i])+"\n";
66    str+= toString(MSG_INFORMATION)+"     * context_select_load_balancing               : "+toString<Tload_balancing_t>(_context_select_load_balancing[i])+"\n";
67      }
68
69    str+= toString(MSG_INFORMATION)+" -----[ Rename bloc ]------------------------------\n";
70    str+= toString(MSG_INFORMATION)+"   * nb_rename_bloc                                : "+toString<uint32_t>(_nb_rename_bloc)+"\n";
71    for (uint32_t i=0; i<_nb_rename_bloc; ++i)
72      {
73    str+= toString(MSG_INFORMATION)+"   * RENAME_BLOC ["+toString<uint32_t>(i)+"]\n";
74    str+= toString(MSG_INFORMATION)+"     * nb_inst_insert                              : "+toString<uint32_t         >(_nb_inst_insert                   [i])+"\n";
75    str+= toString(MSG_INFORMATION)+"     * nb_inst_retire                              : "+toString<uint32_t         >(_nb_inst_retire                   [i])+"\n";
76    str+= toString(MSG_INFORMATION)+"     * rename_select_priority                      : "+toString<Tpriority_t      >(_rename_select_priority           [i])+"\n";
77    str+= toString(MSG_INFORMATION)+"     * rename_select_load_balancing                : "+toString<Tload_balancing_t>(_rename_select_load_balancing     [i])+"\n";
78    str+= toString(MSG_INFORMATION)+"     * rename_select_nb_front_end_select           : "+toString<uint32_t         >(_rename_select_nb_front_end_select[i])+"\n";
79    str+= toString(MSG_INFORMATION)+"     * nb_general_register                         : "+toString<uint32_t         >(_nb_general_register              [i])+"\n";
80    str+= toString(MSG_INFORMATION)+"     * nb_special_register                         : "+toString<uint32_t         >(_nb_special_register              [i])+"\n";
81    str+= toString(MSG_INFORMATION)+"     * nb_reg_free                                 : "+toString<uint32_t         >(_nb_reg_free                      [i])+"\n";
82    str+= toString(MSG_INFORMATION)+"     * nb_rename_unit_bank                         : "+toString<uint32_t         >(_nb_rename_unit_bank              [i])+"\n";
83//     str+= toString(MSG_INFORMATION)+"     * size_read_counter                           : "+toString<uint32_t         >(_size_read_counter                [i])+"\n";
84      }
85
86    str+= toString(MSG_INFORMATION)+" -----[ Read bloc ]--------------------------------\n";
87    str+= toString(MSG_INFORMATION)+"   * nb_read_bloc                                  : "+toString<uint32_t>(_nb_read_bloc                         )+"\n";
88    for (uint32_t i=0; i<_nb_read_bloc; ++i)
89      {
90    str+= toString(MSG_INFORMATION)+"   * READ_BLOC ["+toString<uint32_t>(i)+"]\n";
91    str+= toString(MSG_INFORMATION)+"     * size_read_queue                             : "+toString<uint32_t>(_size_read_queue                   [i])+"\n";
92    str+= toString(MSG_INFORMATION)+"     * size_reservation_station                    : "+toString<uint32_t>(_size_reservation_station          [i])+"\n";
93    str+= toString(MSG_INFORMATION)+"     * nb_inst_retire_reservation_station          : "+toString<uint32_t>(_nb_inst_retire_reservation_station[i])+"\n";
94      }
95
96    str+= toString(MSG_INFORMATION)+" -----[ Write bloc ]-------------------------------\n";
97    str+= toString(MSG_INFORMATION)+"   * nb_write_bloc                                 : "+toString<uint32_t>(_nb_write_bloc        )+"\n";
98    for (uint32_t i=0; i<_nb_write_bloc; ++i)
99      {
100    str+= toString(MSG_INFORMATION)+"   * WRITE_BLOC ["+toString<uint32_t>(i)+"]\n";
101    str+= toString(MSG_INFORMATION)+"     * size_write_queue                            : "+toString<uint32_t>(_size_write_queue  [i])+"\n";
102    str+= toString(MSG_INFORMATION)+"     * size_execute_queue                          : "+toString<uint32_t>(_size_execute_queue[i])+"\n";
103    str+= toString(MSG_INFORMATION)+"     * nb_bypass_write                             : "+toString<uint32_t>(_nb_bypass_write   [i])+"\n";
104      }
105
106    str+= toString(MSG_INFORMATION)+" -----[ Load_store_unit ]--------------------------\n";
107    str+= toString(MSG_INFORMATION)+"   * nb_load_store_unit                            : "+toString<uint32_t>(_nb_load_store_unit              )+"\n";
108    for (uint32_t i=0; i<_nb_load_store_unit; ++i)
109      {
110    str+= toString(MSG_INFORMATION)+"   * LOAD_STORE_UNIT ["+toString<uint32_t>(i)+"]\n";
111    str+= toString(MSG_INFORMATION)+"     * size_store_queue                            : "+toString<uint32_t>(_size_store_queue             [i])+"\n";
112    str+= toString(MSG_INFORMATION)+"     * size_load_queue                             : "+toString<uint32_t>(_size_load_queue              [i])+"\n";
113    str+= toString(MSG_INFORMATION)+"     * size_speculative_access_queue               : "+toString<uint32_t>(_size_speculative_access_queue[i])+"\n";
114    str+= toString(MSG_INFORMATION)+"     * nb_port_check                               : "+toString<uint32_t>(_nb_port_check                [i])+"\n";
115    str+= toString(MSG_INFORMATION)+"     * speculative_load                            : "+toString<multi_execute_loop::execute_loop::Tspeculative_load_t>(_speculative_load             [i])+"\n";
116    str+= toString(MSG_INFORMATION)+"     * nb_bypass_memory                            : "+toString<uint32_t>(_nb_bypass_memory             [i])+"\n";
117    str+= toString(MSG_INFORMATION)+"     * nb_cache_port                               : "+toString<uint32_t>(_nb_cache_port                [i])+"\n";
118    str+= toString(MSG_INFORMATION)+"     * nb_inst_memory                              : "+toString<uint32_t>(_nb_inst_memory               [i])+"\n";
119      }
120
121    str+= toString(MSG_INFORMATION)+" -----[ Functionnal_unit ]-------------------------\n";
122    str+= toString(MSG_INFORMATION)+"   * nb_functionnal_unit                           : "+toString<uint32_t>(_nb_functionnal_unit         )+"\n";
123    for (uint32_t i=0; i<_nb_functionnal_unit; ++i)
124      {
125    str+= toString(MSG_INFORMATION)+"   * FUNCTIONNAL_UNIT ["+toString<uint32_t>(i)+"]\n";
126    str+= toString(MSG_INFORMATION)+"   * nb_inst_functionnal_unit                      : "+toString<uint32_t>(_nb_inst_functionnal_unit [i])+"\n";
127      }
128
129//multi_execute_loop::execute_loop::execute_timing_t *** timing; //[nb_functionnal_unit][nb_type][nb_operation]
130
131    str+= toString(MSG_INFORMATION)+" -----[ Icache_Access ]----------------------------\n";
132    str+= toString(MSG_INFORMATION)+"   * nb_icache_port                                : "+toString<uint32_t         >(_nb_icache_port            )+"\n";
133    str+= toString(MSG_INFORMATION)+"   * icache_port_priority                          : "+toString<Tpriority_t      >(_icache_port_priority      )+"\n";
134    str+= toString(MSG_INFORMATION)+"   * icache_port_load_balancing                    : "+toString<Tload_balancing_t>(_icache_port_load_balancing)+"\n";
135
136    str+= toString(MSG_INFORMATION)+" -----[ Dcache_Access ]----------------------------\n";
137    str+= toString(MSG_INFORMATION)+"   * nb_dcache_port                                : "+toString<uint32_t         >(_nb_dcache_port            )+"\n";
138    str+= toString(MSG_INFORMATION)+"   * dcache_port_priority                          : "+toString<Tpriority_t      >(_dcache_port_priority      )+"\n";
139    str+= toString(MSG_INFORMATION)+"   * dcache_port_load_balancing                    : "+toString<Tload_balancing_t>(_dcache_port_load_balancing)+"\n";
140
141    str+= toString(MSG_INFORMATION)+" -----[ Front_end ]--------------------------------\n";
142    str+= toString(MSG_INFORMATION)+"   * nb_front_end                                  : "+toString<uint32_t    >(_nb_front_end                    )+"\n";
143    for (uint32_t i=0; i<_nb_front_end; ++i)
144      {
145    str+= toString(MSG_INFORMATION)+"   * FRONT_END ["+toString<uint32_t>(i)+"]\n";
146    str+= toString(MSG_INFORMATION)+"     * nb_context                                  : "+toString<uint32_t    >(_nb_context                [i]   )+"\n";
147    str+= toString(MSG_INFORMATION)+"     * nb_decod_unit                               : "+toString<uint32_t    >(_nb_decod_unit             [i]   )+"\n";
148    str+= toString(MSG_INFORMATION)+"     * nb_inst_branch_predict                      : "+toString<uint32_t    >(_nb_inst_branch_predict    [i]   )+"\n";
149    str+= toString(MSG_INFORMATION)+"     * nb_inst_branch_decod                        : "+toString<uint32_t    >(_nb_inst_branch_decod      [i]   )+"\n";
150    str+= toString(MSG_INFORMATION)+"     * nb_inst_branch_update                       : "+toString<uint32_t    >(_nb_inst_branch_update     [i]   )+"\n";
151    str+= toString(MSG_INFORMATION)+"     * btb_size_queue                              : "+toString<uint32_t    >(_btb_size_queue            [i]   )+"\n";
152    str+= toString(MSG_INFORMATION)+"     * btb_associativity                           : "+toString<uint32_t    >(_btb_associativity         [i]   )+"\n";
153    str+= toString(MSG_INFORMATION)+"     * btb_size_counter                            : "+toString<uint32_t    >(_btb_size_counter          [i]   )+"\n";
154    str+= toString(MSG_INFORMATION)+"     * btb_victim_scheme                           : "+toString<Tvictim_t   >(_btb_victim_scheme         [i]   )+"\n";
155    str+= toString(MSG_INFORMATION)+"     * dir_predictor_scheme                        : "+toString<Tpredictor_t>(_dir_predictor_scheme      [i]   )+"\n";
156    for (uint32_t j=0; j<3; ++j)
157      {
158    str+= toString(MSG_INFORMATION)+"     * PREDICTOR ["+toString<uint32_t>(i)+"]["+toString<uint32_t>(j)+"]\n";
159    str+= toString(MSG_INFORMATION)+"       * dir_have_bht                              : "+toString<bool        >(_dir_have_bht              [i][j])+"\n";
160    str+= toString(MSG_INFORMATION)+"       * dir_bht_size_shifter                      : "+toString<uint32_t    >(_dir_bht_size_shifter      [i][j])+"\n";
161    str+= toString(MSG_INFORMATION)+"       * dir_bht_nb_shifter                        : "+toString<uint32_t    >(_dir_bht_nb_shifter        [i][j])+"\n";
162    str+= toString(MSG_INFORMATION)+"       * dir_have_pht                              : "+toString<bool        >(_dir_have_pht              [i][j])+"\n";
163    str+= toString(MSG_INFORMATION)+"       * dir_pht_size_counter                      : "+toString<uint32_t    >(_dir_pht_size_counter      [i][j])+"\n";
164    str+= toString(MSG_INFORMATION)+"       * dir_pht_nb_counter                        : "+toString<uint32_t    >(_dir_pht_nb_counter        [i][j])+"\n";
165    str+= toString(MSG_INFORMATION)+"       * dir_pht_size_address_share                : "+toString<uint32_t    >(_dir_pht_size_address_share[i][j])+"\n";
166      }
167      }
168
169    str+= toString(MSG_INFORMATION)+" -----[ OOO_Engine ]-------------------------------\n";
170    str+= toString(MSG_INFORMATION)+"   * nb_ooo_engine                                 : "+toString<uint32_t         >(_nb_ooo_engine              )+"\n";
171    for (uint32_t i=0; i<_nb_ooo_engine; ++i)
172      {
173    str+= toString(MSG_INFORMATION)+"   * OOO_ENGINE ["+toString<uint32_t>(i)+"]\n";
174    str+= toString(MSG_INFORMATION)+"     * nb_rename_unit                              : "+toString<uint32_t         >(_nb_rename_unit          [i])+"\n";
175    str+= toString(MSG_INFORMATION)+"     * nb_inst_issue_queue                         : "+toString<uint32_t         >(_nb_inst_issue_queue     [i])+"\n";
176    str+= toString(MSG_INFORMATION)+"     * nb_inst_issue_slot                          : "+toString<uint32_t         >(_nb_inst_issue_slot      [i])+"\n";
177    str+= toString(MSG_INFORMATION)+"     * nb_inst_reexecute                           : "+toString<uint32_t         >(_nb_inst_reexecute       [i])+"\n";
178    str+= toString(MSG_INFORMATION)+"     * nb_inst_commit                              : "+toString<uint32_t         >(_nb_inst_commit          [i])+"\n";
179    str+= toString(MSG_INFORMATION)+"     * nb_inst_branch_complete                     : "+toString<uint32_t         >(_nb_inst_branch_complete [i])+"\n";
180    str+= toString(MSG_INFORMATION)+"     * nb_rename_unit_select                       : "+toString<uint32_t         >(_nb_rename_unit_select   [i])+"\n";
181    str+= toString(MSG_INFORMATION)+"     * nb_execute_loop_select                      : "+toString<uint32_t         >(_nb_execute_loop_select  [i])+"\n";
182    str+= toString(MSG_INFORMATION)+"     * size_re_order_buffer                        : "+toString<uint32_t         >(_size_re_order_buffer    [i])+"\n";
183    str+= toString(MSG_INFORMATION)+"     * nb_re_order_buffer_bank                     : "+toString<uint32_t         >(_nb_re_order_buffer_bank [i])+"\n";
184    str+= toString(MSG_INFORMATION)+"     * commit_priority                             : "+toString<Tpriority_t      >(_commit_priority         [i])+"\n";
185    str+= toString(MSG_INFORMATION)+"     * commit_load_balancing                       : "+toString<Tload_balancing_t>(_commit_load_balancing   [i])+"\n";
186    str+= toString(MSG_INFORMATION)+"     * size_issue_queue                            : "+toString<uint32_t         >(_size_issue_queue        [i])+"\n";
187    str+= toString(MSG_INFORMATION)+"     * issue_queue_scheme                          : "+toString<multi_ooo_engine::ooo_engine::issue_queue::Tissue_queue_scheme_t>
188                                                                                                                       (_issue_queue_scheme      [i])+"\n";
189    str+= toString(MSG_INFORMATION)+"     * nb_issue_queue_bank                         : "+toString<uint32_t         >(_nb_issue_queue_bank     [i])+"\n";
190    str+= toString(MSG_INFORMATION)+"     * issue_priority                              : "+toString<Tpriority_t      >(_issue_priority          [i])+"\n";
191    str+= toString(MSG_INFORMATION)+"     * issue_load_balancing                        : "+toString<Tload_balancing_t>(_issue_load_balancing    [i])+"\n";
192    str+= toString(MSG_INFORMATION)+"     * size_reexecute_queue                        : "+toString<uint32_t         >(_size_reexecute_queue    [i])+"\n";
193    str+= toString(MSG_INFORMATION)+"     * reexecute_priority                          : "+toString<Tpriority_t      >(_reexecute_priority      [i])+"\n";
194    str+= toString(MSG_INFORMATION)+"     * reexecute_load_balancing                    : "+toString<Tload_balancing_t>(_reexecute_load_balancing[i])+"\n";
195      }
196
197    str+= toString(MSG_INFORMATION)+" -----[ Execute_loop ]-----------------------------\n";
198    str+= toString(MSG_INFORMATION)+"   * nb_execute_loop                               : "+toString<uint32_t   >(_nb_execute_loop                         )+"\n";
199    for (uint32_t i=0; i<_nb_execute_loop; ++i)
200      {
201    str+= toString(MSG_INFORMATION)+"   * EXECUTE_LOOP ["+toString<uint32_t>(i)+"]\n";
202    str+= toString(MSG_INFORMATION)+"     * nb_read_unit                                : "+toString<uint32_t   >(_nb_read_unit                         [i])+"\n";
203    str+= toString(MSG_INFORMATION)+"     * nb_execute_unit                             : "+toString<uint32_t   >(_nb_execute_unit                      [i])+"\n";
204    str+= toString(MSG_INFORMATION)+"     * nb_write_unit                               : "+toString<uint32_t   >(_nb_write_unit                        [i])+"\n";
205    str+= toString(MSG_INFORMATION)+"     * nb_gpr_bank                                 : "+toString<uint32_t   >(_nb_gpr_bank                          [i])+"\n";
206    str+= toString(MSG_INFORMATION)+"     * nb_gpr_port_read_by_bank                    : "+toString<uint32_t   >(_nb_gpr_port_read_by_bank             [i])+"\n";
207    str+= toString(MSG_INFORMATION)+"     * nb_gpr_port_write_by_bank                   : "+toString<uint32_t   >(_nb_gpr_port_write_by_bank            [i])+"\n";
208    str+= toString(MSG_INFORMATION)+"     * nb_spr_bank                                 : "+toString<uint32_t   >(_nb_spr_bank                          [i])+"\n";
209    str+= toString(MSG_INFORMATION)+"     * nb_spr_port_read_by_bank                    : "+toString<uint32_t   >(_nb_spr_port_read_by_bank             [i])+"\n";
210    str+= toString(MSG_INFORMATION)+"     * nb_spr_port_write_by_bank                   : "+toString<uint32_t   >(_nb_spr_port_write_by_bank            [i])+"\n";
211    str+= toString(MSG_INFORMATION)+"     * execution_unit_to_write_unit_priority       : "+toString<Tpriority_t>(_execution_unit_to_write_unit_priority[i])+"\n";
212    str+= toString(MSG_INFORMATION)+"     * read_unit_to_execution_unit_priority        : "+toString<Tpriority_t>(_read_unit_to_execution_unit_priority [i])+"\n";
213      }
214
215    str+= toString(MSG_INFORMATION)+" -----[ Link ]-------------------------------------\n";
216
217    for (uint32_t i=0; i<_nb_thread; ++i)
218    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]
219    for (uint32_t i=0; i<_nb_decod_bloc; ++i)
220    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]
221    for (uint32_t i=0; i<_nb_rename_bloc; ++i)
222    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]
223    for (uint32_t i=0; i<_nb_read_bloc; ++i)
224    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]
225    for (uint32_t i=0; i<_nb_write_bloc; ++i)
226    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]
227    for (uint32_t i=0; i<_nb_functionnal_unit; ++i)
228    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]
229    for (uint32_t i=0; i<_nb_load_store_unit;++i)
230    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]
231
232    for (uint32_t i=0; i<_nb_thread; ++i)
233    str+= toString(MSG_INFORMATION)+"   * link_decod_bloc_with_thread                     ["+toString(i)+"] -> ["+toString(_link_decod_bloc_with_thread            [i])+"]\n";//[nb_thread]
234    for (uint32_t i=0; i<_nb_front_end; ++i)
235    str+= toString(MSG_INFORMATION)+"   * link_rename_bloc_with_front_end                 ["+toString(i)+"] -> ["+toString(_link_rename_bloc_with_front_end        [i])+"]\n";//[nb_front_end]
236    for (uint32_t i=0; i<_nb_thread; ++i)
237    str+= toString(MSG_INFORMATION)+"   * link_load_store_unit_with_thread                ["+toString(i)+"] -> ["+toString(_link_load_store_unit_with_thread       [i])+"]\n";//[nb_thread]
238    for (uint32_t i=0; i<_nb_thread; ++i)
239    str+= toString(MSG_INFORMATION)+"   * link_icache_port_with_thread                    ["+toString(i)+"] -> ["+toString(_link_icache_port_with_thread           [i])+"]\n";//[nb_thread]
240    for (uint32_t i=0; i<_nb_load_store_unit; ++i)
241      for (uint32_t j=0; j<_nb_cache_port[i]; ++j)
242    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]
243
244   
245    for (uint32_t i=0; i<_nb_read_bloc; ++i)
246      for (uint32_t j=0; j<_nb_load_store_unit; ++j)
247    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]
248    for (uint32_t i=0; i<_nb_read_bloc; ++i)
249      for (uint32_t j=0; j<_nb_functionnal_unit; ++j)
250    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]
251    for (uint32_t i=0; i<_nb_write_bloc; ++i)
252      for (uint32_t j=0; j<_nb_load_store_unit; ++j)
253    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]
254    for (uint32_t i=0; i<_nb_write_bloc; ++i)
255      for (uint32_t j=0; j<_nb_functionnal_unit; ++j)
256    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]
257    for (uint32_t i=0; i<_nb_thread; ++i)
258      for (uint32_t j=0; j<_nb_functionnal_unit; ++j)
259    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]
260
261    str+= toString(MSG_INFORMATION)+" -----[ Dispatch ]---------------------------------\n";
262
263    for (uint32_t i=0; i<_nb_ooo_engine; ++i)
264      for (uint32_t j=0; j<_nb_inst_issue_slot[i]; ++j)
265        for (uint32_t k=0; k<_nb_read_bloc; ++k)
266    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]
267
268    str+= toString(MSG_INFORMATION)+"   * dispatch_priority                             : "+toString<Tpriority_t      >(_dispatch_priority      )+"\n";
269    str+= toString(MSG_INFORMATION)+"   * dispatch_load_balancing                       : "+toString<Tload_balancing_t>(_dispatch_load_balancing);
270
271    log_end(Core,FUNCTION);
272   
273    return str;
274  };
275
276#undef  FUNCTION
277#define FUNCTION "Core::operator<<"
278  std::ostream& operator<< (std::ostream& output_stream ,
279                            morpheo::behavioural::core::Parameters & x)
280  {
281    log_begin(Core,FUNCTION);
282
283    output_stream << x.print(0);
284   
285    log_end(Core,FUNCTION);
286
287    return output_stream;
288  };
289
290}; // end namespace core
291}; // end namespace behavioural
292}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.