source: trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_createParam.cpp @ 81

Last change on this file since 81 was 81, checked in by rosiere, 16 years ago
  • Finish Environment (and test)
  • Continue predictor_unit
  • Add external tools
  • svn keyword "Id" set
  • Property svn:keywords set to Id
File size: 9.9 KB
Line 
1/*
2 *
3 * [desc.]
4 */
5#include "Tools/Viewer/Parser/include/parser.h"
6
7namespace morpheo{
8namespace tools{
9namespace viewer{
10namespace parser{
11
12  morpheo::tools::viewer::bdd::Param *Parse::createAddP(string namegrp,string nameparam)
13  {
14    morpheo::tools::viewer::bdd::Param *p;
15    morpheo::tools::viewer::bdd::LimitParam lp=base->searchLimitParam(nameparam);
16    if(lp.getName()=="")
17      p=new morpheo::tools::viewer::bdd::Param(nameparam,0,namegrp);
18    else
19      p=new morpheo::tools::viewer::bdd::Param(nameparam,lp.getDefault(),namegrp);
20    return p;
21  }
22
23  void Parse::createParam(){
24    int i,j,k,l;
25    morpheo::tools::viewer::bdd::LimitParam lp;
26    morpheo::tools::viewer::bdd::Group *g;
27    morpheo::tools::viewer::bdd::Param *p;
28    g=new morpheo::tools::viewer::bdd::Group("core",0);
29    g->addParam(createAddP("core","size_data"));
30    base->addGroup(g);
31   
32    g=new morpheo::tools::viewer::bdd::Group("cache_unit",1);
33    base->addGroup(g);
34   
35    g=new morpheo::tools::viewer::bdd::Group("icache",2);
36    lp=base->searchLimitParam("nb_icache");
37    for(i=0;i<lp.getDefault();i++)
38       {
39         p=new morpheo::tools::viewer::bdd::Param("id",i,"icache");
40         g->addParam(p);
41         g->addParam(createAddP("icache","arbiter"));
42         g->addParam(createAddP("icache","nb_port"));
43       }
44    base->addGroup(g);
45   
46    g=new morpheo::tools::viewer::bdd::Group("dcache",2);
47    lp=base->searchLimitParam("nb_dcache");
48    for(i=0;i<lp.getDefault();i++)
49      {
50        p=new morpheo::tools::viewer::bdd::Param("id",i,"dcache");
51        g->addParam(p);
52        g->addParam(createAddP("dcache","arbiter"));
53        g->addParam(createAddP("dcache","nb_port"));
54      }
55    base->addGroup(g);
56   
57    lp=base->searchLimitParam("nb_front_end");
58    j=lp.getDefault();
59    for(i=0;i<j;i++)
60      {
61        g=new morpheo::tools::viewer::bdd::Group("front_end",1);
62        p=new morpheo::tools::viewer::bdd::Param("id",i,"front_end");
63        g->addParam(p);
64        g->addParam(createAddP("front_end","link_icache"));
65        g->addParam(createAddP("front_end","link_out_of_order_engine"));
66        base->addGroup(g);
67        //
68        g=new morpheo::tools::viewer::bdd::Group("fetch_unit",2);
69        base->addGroup(g);
70        //
71        lp=base->searchLimitParam("nb_ifetch");
72        k=lp.getDefault();
73        for(l=0;l<k;l++)
74          {
75            g=new morpheo::tools::viewer::bdd::Group("ifetch",3);
76            p=new morpheo::tools::viewer::bdd::Param("id",i,"ifetch");
77            g->addParam(p);
78            g->addParam(createAddP("ifetch","nb_inst"));
79            g->addParam(createAddP("ifetch","size_queue"));
80            g->addParam(createAddP("ifetch","link_decod"));
81            base->addGroup(g);
82          }
83        //
84        g=new morpheo::tools::viewer::bdd::Group("prediction_unit",2);
85        g->addParam(createAddP("prediction_unit","arbiter"));
86        g->addParam(createAddP("prediction_unit","nb_prediction"));
87        g->addParam(createAddP("prediction_unit","nb_branch_complete"));
88        base->addGroup(g);
89        //
90        g=new morpheo::tools::viewer::bdd::Group("branch_target_buffer",3);
91        g->addParam(createAddP("branch_target_buffer","size_queue"));
92        g->addParam(createAddP("branch_target_buffer","associativity"));
93        base->addGroup(g);
94        //
95        g=new morpheo::tools::viewer::bdd::Group("return_adress_stack",3);
96        g->addParam(createAddP("return_adress_stack","size_queue"));
97        base->addGroup(g);
98        //
99        g=new morpheo::tools::viewer::bdd::Group("branch_context",3);
100        g->addParam(createAddP("branch_context","size_queue"));
101        base->addGroup(g);
102       
103        //
104        g=new morpheo::tools::viewer::bdd::Group("meta_predictor",3);
105        g->addParam(createAddP("meta_predictor","have_meta_predictor"));
106
107        g->addParam(createAddP("meta_predictor","predictor_0_have_bht"));
108        g->addParam(createAddP("meta_predictor","predictor_0_bht_size_shifter"));
109        g->addParam(createAddP("meta_predictor","predictor_0_bht_nb_shifter"));
110        g->addParam(createAddP("meta_predictor","predictor_0_have_pht"));
111        g->addParam(createAddP("meta_predictor","predictor_0_pht_size_counter"));
112        g->addParam(createAddP("meta_predictor","predictor_0_pht_nb_counter"));
113        g->addParam(createAddP("meta_predictor","predictor_0_pht_size_address_share"));
114       
115        g->addParam(createAddP("meta_predictor","predictor_1_have_bht"));
116        g->addParam(createAddP("meta_predictor","predictor_1_bht_size_shifter"));
117        g->addParam(createAddP("meta_predictor","predictor_1_bht_nb_shifter"));
118        g->addParam(createAddP("meta_predictor","predictor_1_have_pht"));
119        g->addParam(createAddP("meta_predictor","predictor_1_pht_size_counter"));
120        g->addParam(createAddP("meta_predictor","predictor_1_pht_nb_counter"));
121        g->addParam(createAddP("meta_predictor","predictor_1_pht_size_address_share"));
122       
123        g->addParam(createAddP("meta_predictor","predictor_2_have_bht"));
124        g->addParam(createAddP("meta_predictor","predictor_2_bht_size_shifter"));
125        g->addParam(createAddP("meta_predictor","predictor_2_bht_nb_shifter"));
126        g->addParam(createAddP("meta_predictor","predictor_2_have_pht"));
127        g->addParam(createAddP("meta_predictor","predictor_2_pht_size_counter"));
128        g->addParam(createAddP("meta_predictor","predictor_2_pht_nb_counter"));
129        g->addParam(createAddP("meta_predictor","predictor_2_pht_size_address_share"));
130       
131        base->addGroup(g);
132        //
133        g=new morpheo::tools::viewer::bdd::Group("decod_unit",2);
134        base->addGroup(g);
135        //
136        lp=base->searchLimitParam("nb_decod");
137        k=lp.getDefault();
138        for(l=0;l<k;l++)
139          {
140            g=new morpheo::tools::viewer::bdd::Group("decod",3);
141            p=new morpheo::tools::viewer::bdd::Param("id",i,"decod");
142            g->addParam(p);
143            g->addParam(createAddP("decod","arbiter"));
144            g->addParam(createAddP("decod","nb_branch_decod"));
145            g->addParam(createAddP("decod","nb_inst"));
146            g->addParam(createAddP("decod","size_queue"));
147            g->addParam(createAddP("decod","link_rename"));
148            base->addGroup(g);
149          }
150      }//end front_end
151
152    lp=base->searchLimitParam("nb_out_of_order_engine");
153    j=lp.getDefault();
154    for(i=0;i<j;i++)
155      {
156        g=new morpheo::tools::viewer::bdd::Group("out_of_order_engine",1);
157        p=new morpheo::tools::viewer::bdd::Param("id",i,"out_of_order_engine");
158        g->addParam(p);
159        g->addParam(createAddP("out_of_order_engine","link_execution_loop"));
160
161        base->addGroup(g);
162
163        g=new morpheo::tools::viewer::bdd::Group("rename",2);
164        g->addParam(createAddP("rename","arbiter"));
165        g->addParam(createAddP("rename","nb_inst"));
166        g->addParam(createAddP("rename","size_queue"));
167        g->addParam(createAddP("rename","size_windows"));
168        g->addParam(createAddP("rename","nb_gpr_physical"));
169        g->addParam(createAddP("rename","nb_gpr_free"));
170        g->addParam(createAddP("rename","nb_spr_physical"));
171        g->addParam(createAddP("rename","nb_spr_free"));
172        base->addGroup(g);
173
174        g=new morpheo::tools::viewer::bdd::Group("commit",2);
175        g->addParam(createAddP("commit","arbiter"));
176        g->addParam(createAddP("commit","nb_inst"));
177        g->addParam(createAddP("commit","size_queue"));
178        g->addParam(createAddP("commit","size_windows"));
179        g->addParam(createAddP("commit","commit_out_of_order_thread"));
180        base->addGroup(g);
181       
182      }//end out_of_order
183
184    lp=base->searchLimitParam("nb_execution_loop");
185    j=lp.getDefault();
186    for(i=0;i<j;i++)
187      {
188        g=new morpheo::tools::viewer::bdd::Group("execution_loop",1);
189        p=new morpheo::tools::viewer::bdd::Param("id",i,"execution_loop");
190        g->addParam(p);
191        g->addParam(createAddP("execution_loop","link_dcache"));
192        base->addGroup(g);
193
194        g=new morpheo::tools::viewer::bdd::Group("read_unit",2);
195        base->addGroup(g);
196
197        lp=base->searchLimitParam("nb_reservation_station");
198        k=lp.getDefault();
199        for(l=0;l<k;l++)
200          {
201            g=new morpheo::tools::viewer::bdd::Group("reservation_station",3);
202            p=new morpheo::tools::viewer::bdd::Param("id",i,"reservation_station");
203            g->addParam(p);
204            g->addParam(createAddP("reservation_station","size_queue"));
205            g->addParam(createAddP("reservation_station","one_queue"));
206            base->addGroup(g);
207           
208            g=new morpheo::tools::viewer::bdd::Group("link",4);
209            p=new morpheo::tools::viewer::bdd::Param("id",0,"link");
210            g->addParam(p);
211            base->addGroup(g);
212           
213          }
214            g=new morpheo::tools::viewer::bdd:: Group("memory_unit",2);
215            g->addParam(createAddP("memory_unit","size_queue"));
216            g->addParam(createAddP("memory_unit","one_queue"));
217            g->addParam(createAddP("memory_unit","nb_inst"));
218            g->addParam(createAddP("memory_unit","size_windows"));
219            g->addParam(createAddP("memory_unit","bypass_memory_out"));
220            g->addParam(createAddP("memory_unit","keep_data"));
221            g->addParam(createAddP("memory_unit","speculated_memory_read"));
222            base->addGroup(g);
223           
224            g=new morpheo::tools::viewer::bdd::Group("link",3);
225            p=new morpheo::tools::viewer::bdd::Param("id",0,"link");
226            g->addParam(p);
227            base->addGroup(g);
228
229        g=new morpheo::tools::viewer::bdd::Group("execution_unit",2);
230        base->addGroup(g);
231
232        lp=base->searchLimitParam("nb_execution");
233        k=lp.getDefault();
234        for(l=0;l<k;l++)
235          {
236            g=new morpheo::tools::viewer::bdd::Group("execution",3);
237            p=new morpheo::tools::viewer::bdd::Param("id",i,"execution");
238            g->addParam(p);
239            g->addParam(createAddP("execution","type_mul"));
240            g->addParam(createAddP("execution","type_div"));
241            g->addParam(createAddP("execution","type_ext"));
242            g->addParam(createAddP("execution","type_ff1"));
243            g->addParam(createAddP("execution","type_fl1"));
244            base->addGroup(g);
245           
246          }
247       
248        g=new morpheo::tools::viewer::bdd:: Group("write_unit",2);
249        base->addGroup(g);
250
251        lp=base->searchLimitParam("nb_writeback");
252        k=lp.getDefault();
253        for(l=0;l<k;l++)
254          {
255            g=new morpheo::tools::viewer::bdd::Group("writeback",3);
256            p=new morpheo::tools::viewer::bdd::Param("id",i,"writeback");
257            g->addParam(p);
258            g->addParam(createAddP("writeback","size_queue"));
259            g->addParam(createAddP("writeback","one_queue"));
260            g->addParam(createAddP("writeback","bypass_execute_gpr"));
261            g->addParam(createAddP("writeback","bypass_execute_spr"));
262            g->addParam(createAddP("writeback","bypass_memory_in"));
263            base->addGroup(g);
264
265            g=new morpheo::tools::viewer::bdd::Group("link",4);
266            p=new morpheo::tools::viewer::bdd::Param("id",0,"link");
267            g->addParam(p);
268            base->addGroup(g);
269           
270          }
271       
272           
273       
274      }//end execution_loop
275   
276     
277   }
278
279
280};//end parser
281};//end viewer
282};//end tools
283};//end morpheo
Note: See TracBrowser for help on using the repository browser.