- Location:
- /trunk
- Files:
-
- 19 added
- 85 deleted
- 92 edited
Legend:
- Unmodified
- Added
- Removed
-
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/Makefile
r30 r20 8 8 9 9 #-----[ Directory ]---------------------------------------- 10 DIR_COMPONENT = . 11 include $(DIR_COMPONENT)/Makefile.defs 10 DIR_MORPHEO = ../../.. 12 11 13 12 #-----[ Library ]------------------------------------------ … … 20 19 @$(MAKE) all_component 21 20 22 include $(DIR_MORPHEO)/Behavioural/Makefile. flags21 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 23 22 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 24 23 include $(DIR_MORPHEO)/Behavioural/Makefile.Component 25 -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/Makefile
r30 r20 8 8 9 9 #-----[ Directory ]---------------------------------------- 10 DIR_COMPONENT = .. 11 include $(DIR_COMPONENT)/Makefile.defs 10 DIR_MORPHEO = ../../../.. 12 11 13 12 LIBRARY = $(Counter_LIBRARY) … … 25 24 26 25 include ../Makefile.deps 27 include $(DIR_MORPHEO)/Behavioural/Makefile. flags26 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 28 27 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 29 28 include $(DIR_MORPHEO)/Behavioural/Makefile.Selftest -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/Makefile
r30 r20 18 18 @$(MAKE) all_component 19 19 20 include $(DIR_MORPHEO)/Behavioural/Makefile. flags20 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 21 21 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 22 22 include $(DIR_MORPHEO)/Behavioural/Makefile.Component -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/Makefile
r30 r20 8 8 9 9 #-----[ Directory ]---------------------------------------- 10 DIR_COMPONENT = . 11 include $(DIR_COMPONENT)/Makefile.defs 10 DIR_MORPHEO = ../../../.. 12 11 13 12 #-----[ Library ]------------------------------------------ … … 20 19 @$(MAKE) all_component 21 20 22 include $(DIR_MORPHEO)/Behavioural/Makefile. flags21 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 23 22 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 24 23 include $(DIR_MORPHEO)/Behavioural/Makefile.Component -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/Makefile
r30 r20 24 24 25 25 include ../Makefile.deps 26 include $(DIR_MORPHEO)/Behavioural/Makefile. flags26 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 27 27 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 28 28 include $(DIR_MORPHEO)/Behavioural/Makefile.Selftest -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration.cfg
r30 r20 1 1 RegisterFile_Monolithic 2 28 *2 # nb_port_read2 1 8 *2 # nb_port_read 3 3 1 4 *2 # nb_port_write 4 32256 *2 # nb_word4 64 256 *2 # nb_word 5 5 32 32 *2 # size_word -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/mkf.info
r30 r20 1 1 2 # RegisterFile_ Monolithic_03 target_dep all RegisterFile_ Monolithic_0.ngc4 target_dep RegisterFile_ Monolithic_0.ngc RegisterFile_Monolithic_0.prj5 target_dep RegisterFile_ Monolithic_0.prj RegisterFile_Monolithic_0_Pack.vhdl RegisterFile_Monolithic_0.vhdl2 # RegisterFile_34 3 target_dep all RegisterFile_34.ngc 4 target_dep RegisterFile_34.ngc RegisterFile_34.prj 5 target_dep RegisterFile_34.prj RegisterFile_34_Pack.vhdl RegisterFile_34.vhdl 6 6 7 # RegisterFile_ Monolithic_108 target_dep all RegisterFile_ Monolithic_10.ngc9 target_dep RegisterFile_ Monolithic_10.ngc RegisterFile_Monolithic_10.prj10 target_dep RegisterFile_ Monolithic_10.prj RegisterFile_Monolithic_10_Pack.vhdl RegisterFile_Monolithic_10.vhdl7 # RegisterFile_35 8 target_dep all RegisterFile_35.ngc 9 target_dep RegisterFile_35.ngc RegisterFile_35.prj 10 target_dep RegisterFile_35.prj RegisterFile_35_Pack.vhdl RegisterFile_35.vhdl 11 11 12 # RegisterFile_Monolithic_1113 target_dep all RegisterFile_Monolithic_11.ngc14 target_dep RegisterFile_Monolithic_11.ngc RegisterFile_Monolithic_11.prj15 target_dep RegisterFile_Monolithic_11.prj RegisterFile_Monolithic_11_Pack.vhdl RegisterFile_Monolithic_11.vhdl16 17 # RegisterFile_Monolithic_1218 target_dep all RegisterFile_Monolithic_12.ngc19 target_dep RegisterFile_Monolithic_12.ngc RegisterFile_Monolithic_12.prj20 target_dep RegisterFile_Monolithic_12.prj RegisterFile_Monolithic_12_Pack.vhdl RegisterFile_Monolithic_12.vhdl21 22 # RegisterFile_Monolithic_1323 target_dep all RegisterFile_Monolithic_13.ngc24 target_dep RegisterFile_Monolithic_13.ngc RegisterFile_Monolithic_13.prj25 target_dep RegisterFile_Monolithic_13.prj RegisterFile_Monolithic_13_Pack.vhdl RegisterFile_Monolithic_13.vhdl26 27 # RegisterFile_Monolithic_1428 target_dep all RegisterFile_Monolithic_14.ngc29 target_dep RegisterFile_Monolithic_14.ngc RegisterFile_Monolithic_14.prj30 target_dep RegisterFile_Monolithic_14.prj RegisterFile_Monolithic_14_Pack.vhdl RegisterFile_Monolithic_14.vhdl31 32 # RegisterFile_Monolithic_1533 target_dep all RegisterFile_Monolithic_15.ngc34 target_dep RegisterFile_Monolithic_15.ngc RegisterFile_Monolithic_15.prj35 target_dep RegisterFile_Monolithic_15.prj RegisterFile_Monolithic_15_Pack.vhdl RegisterFile_Monolithic_15.vhdl36 37 # RegisterFile_Monolithic_1638 target_dep all RegisterFile_Monolithic_16.ngc39 target_dep RegisterFile_Monolithic_16.ngc RegisterFile_Monolithic_16.prj40 target_dep RegisterFile_Monolithic_16.prj RegisterFile_Monolithic_16_Pack.vhdl RegisterFile_Monolithic_16.vhdl41 42 # RegisterFile_Monolithic_1743 target_dep all RegisterFile_Monolithic_17.ngc44 target_dep RegisterFile_Monolithic_17.ngc RegisterFile_Monolithic_17.prj45 target_dep RegisterFile_Monolithic_17.prj RegisterFile_Monolithic_17_Pack.vhdl RegisterFile_Monolithic_17.vhdl46 47 # RegisterFile_Monolithic_1848 target_dep all RegisterFile_Monolithic_18.ngc49 target_dep RegisterFile_Monolithic_18.ngc RegisterFile_Monolithic_18.prj50 target_dep RegisterFile_Monolithic_18.prj RegisterFile_Monolithic_18_Pack.vhdl RegisterFile_Monolithic_18.vhdl51 52 # RegisterFile_Monolithic_1953 target_dep all RegisterFile_Monolithic_19.ngc54 target_dep RegisterFile_Monolithic_19.ngc RegisterFile_Monolithic_19.prj55 target_dep RegisterFile_Monolithic_19.prj RegisterFile_Monolithic_19_Pack.vhdl RegisterFile_Monolithic_19.vhdl56 57 # RegisterFile_Monolithic_158 target_dep all RegisterFile_Monolithic_1.ngc59 target_dep RegisterFile_Monolithic_1.ngc RegisterFile_Monolithic_1.prj60 target_dep RegisterFile_Monolithic_1.prj RegisterFile_Monolithic_10_Pack.vhdl RegisterFile_Monolithic_10.vhdl RegisterFile_Monolithic_11_Pack.vhdl RegisterFile_Monolithic_11.vhdl RegisterFile_Monolithic_12_Pack.vhdl RegisterFile_Monolithic_12.vhdl RegisterFile_Monolithic_13_Pack.vhdl RegisterFile_Monolithic_13.vhdl RegisterFile_Monolithic_14_Pack.vhdl RegisterFile_Monolithic_14.vhdl RegisterFile_Monolithic_15_Pack.vhdl RegisterFile_Monolithic_15.vhdl RegisterFile_Monolithic_16_Pack.vhdl RegisterFile_Monolithic_16.vhdl RegisterFile_Monolithic_17_Pack.vhdl RegisterFile_Monolithic_17.vhdl RegisterFile_Monolithic_18_Pack.vhdl RegisterFile_Monolithic_18.vhdl RegisterFile_Monolithic_19_Pack.vhdl RegisterFile_Monolithic_19.vhdl RegisterFile_Monolithic_1_Pack.vhdl RegisterFile_Monolithic_1.vhdl61 62 # RegisterFile_Monolithic_2063 target_dep all RegisterFile_Monolithic_20.ngc64 target_dep RegisterFile_Monolithic_20.ngc RegisterFile_Monolithic_20.prj65 target_dep RegisterFile_Monolithic_20.prj RegisterFile_Monolithic_20_Pack.vhdl RegisterFile_Monolithic_20.vhdl66 67 # RegisterFile_Monolithic_2168 target_dep all RegisterFile_Monolithic_21.ngc69 target_dep RegisterFile_Monolithic_21.ngc RegisterFile_Monolithic_21.prj70 target_dep RegisterFile_Monolithic_21.prj RegisterFile_Monolithic_21_Pack.vhdl RegisterFile_Monolithic_21.vhdl71 72 # RegisterFile_Monolithic_2273 target_dep all RegisterFile_Monolithic_22.ngc74 target_dep RegisterFile_Monolithic_22.ngc RegisterFile_Monolithic_22.prj75 target_dep RegisterFile_Monolithic_22.prj RegisterFile_Monolithic_22_Pack.vhdl RegisterFile_Monolithic_22.vhdl76 77 # RegisterFile_Monolithic_2378 target_dep all RegisterFile_Monolithic_23.ngc79 target_dep RegisterFile_Monolithic_23.ngc RegisterFile_Monolithic_23.prj80 target_dep RegisterFile_Monolithic_23.prj RegisterFile_Monolithic_23_Pack.vhdl RegisterFile_Monolithic_23.vhdl81 82 # RegisterFile_Monolithic_2483 target_dep all RegisterFile_Monolithic_24.ngc84 target_dep RegisterFile_Monolithic_24.ngc RegisterFile_Monolithic_24.prj85 target_dep RegisterFile_Monolithic_24.prj RegisterFile_Monolithic_24_Pack.vhdl RegisterFile_Monolithic_24.vhdl86 87 # RegisterFile_Monolithic_2588 target_dep all RegisterFile_Monolithic_25.ngc89 target_dep RegisterFile_Monolithic_25.ngc RegisterFile_Monolithic_25.prj90 target_dep RegisterFile_Monolithic_25.prj RegisterFile_Monolithic_25_Pack.vhdl RegisterFile_Monolithic_25.vhdl91 92 # RegisterFile_Monolithic_2693 target_dep all RegisterFile_Monolithic_26.ngc94 target_dep RegisterFile_Monolithic_26.ngc RegisterFile_Monolithic_26.prj95 target_dep RegisterFile_Monolithic_26.prj RegisterFile_Monolithic_26_Pack.vhdl RegisterFile_Monolithic_26.vhdl96 97 # RegisterFile_Monolithic_2798 target_dep all RegisterFile_Monolithic_27.ngc99 target_dep RegisterFile_Monolithic_27.ngc RegisterFile_Monolithic_27.prj100 target_dep RegisterFile_Monolithic_27.prj RegisterFile_Monolithic_27_Pack.vhdl RegisterFile_Monolithic_27.vhdl101 102 # RegisterFile_Monolithic_28103 target_dep all RegisterFile_Monolithic_28.ngc104 target_dep RegisterFile_Monolithic_28.ngc RegisterFile_Monolithic_28.prj105 target_dep RegisterFile_Monolithic_28.prj RegisterFile_Monolithic_28_Pack.vhdl RegisterFile_Monolithic_28.vhdl106 107 # RegisterFile_Monolithic_29108 target_dep all RegisterFile_Monolithic_29.ngc109 target_dep RegisterFile_Monolithic_29.ngc RegisterFile_Monolithic_29.prj110 target_dep RegisterFile_Monolithic_29.prj RegisterFile_Monolithic_29_Pack.vhdl RegisterFile_Monolithic_29.vhdl111 112 # RegisterFile_Monolithic_2113 target_dep all RegisterFile_Monolithic_2.ngc114 target_dep RegisterFile_Monolithic_2.ngc RegisterFile_Monolithic_2.prj115 target_dep RegisterFile_Monolithic_2.prj RegisterFile_Monolithic_20_Pack.vhdl RegisterFile_Monolithic_20.vhdl RegisterFile_Monolithic_21_Pack.vhdl RegisterFile_Monolithic_21.vhdl RegisterFile_Monolithic_22_Pack.vhdl RegisterFile_Monolithic_22.vhdl RegisterFile_Monolithic_23_Pack.vhdl RegisterFile_Monolithic_23.vhdl RegisterFile_Monolithic_24_Pack.vhdl RegisterFile_Monolithic_24.vhdl RegisterFile_Monolithic_25_Pack.vhdl RegisterFile_Monolithic_25.vhdl RegisterFile_Monolithic_26_Pack.vhdl RegisterFile_Monolithic_26.vhdl RegisterFile_Monolithic_27_Pack.vhdl RegisterFile_Monolithic_27.vhdl RegisterFile_Monolithic_28_Pack.vhdl RegisterFile_Monolithic_28.vhdl RegisterFile_Monolithic_29_Pack.vhdl RegisterFile_Monolithic_29.vhdl RegisterFile_Monolithic_2_Pack.vhdl RegisterFile_Monolithic_2.vhdl116 117 # RegisterFile_Monolithic_30118 target_dep all RegisterFile_Monolithic_30.ngc119 target_dep RegisterFile_Monolithic_30.ngc RegisterFile_Monolithic_30.prj120 target_dep RegisterFile_Monolithic_30.prj RegisterFile_Monolithic_30_Pack.vhdl RegisterFile_Monolithic_30.vhdl121 122 # RegisterFile_Monolithic_31123 target_dep all RegisterFile_Monolithic_31.ngc124 target_dep RegisterFile_Monolithic_31.ngc RegisterFile_Monolithic_31.prj125 target_dep RegisterFile_Monolithic_31.prj RegisterFile_Monolithic_31_Pack.vhdl RegisterFile_Monolithic_31.vhdl126 127 # RegisterFile_Monolithic_32128 target_dep all RegisterFile_Monolithic_32.ngc129 target_dep RegisterFile_Monolithic_32.ngc RegisterFile_Monolithic_32.prj130 target_dep RegisterFile_Monolithic_32.prj RegisterFile_Monolithic_32_Pack.vhdl RegisterFile_Monolithic_32.vhdl131 132 # RegisterFile_Monolithic_33133 target_dep all RegisterFile_Monolithic_33.ngc134 target_dep RegisterFile_Monolithic_33.ngc RegisterFile_Monolithic_33.prj135 target_dep RegisterFile_Monolithic_33.prj RegisterFile_Monolithic_33_Pack.vhdl RegisterFile_Monolithic_33.vhdl136 137 # RegisterFile_Monolithic_34138 target_dep all RegisterFile_Monolithic_34.ngc139 target_dep RegisterFile_Monolithic_34.ngc RegisterFile_Monolithic_34.prj140 target_dep RegisterFile_Monolithic_34.prj RegisterFile_Monolithic_34_Pack.vhdl RegisterFile_Monolithic_34.vhdl141 142 # RegisterFile_Monolithic_35143 target_dep all RegisterFile_Monolithic_35.ngc144 target_dep RegisterFile_Monolithic_35.ngc RegisterFile_Monolithic_35.prj145 target_dep RegisterFile_Monolithic_35.prj RegisterFile_Monolithic_35_Pack.vhdl RegisterFile_Monolithic_35.vhdl146 147 # RegisterFile_Monolithic_3148 target_dep all RegisterFile_Monolithic_3.ngc149 target_dep RegisterFile_Monolithic_3.ngc RegisterFile_Monolithic_3.prj150 target_dep RegisterFile_Monolithic_3.prj RegisterFile_Monolithic_30_Pack.vhdl RegisterFile_Monolithic_30.vhdl RegisterFile_Monolithic_31_Pack.vhdl RegisterFile_Monolithic_31.vhdl RegisterFile_Monolithic_32_Pack.vhdl RegisterFile_Monolithic_32.vhdl RegisterFile_Monolithic_33_Pack.vhdl RegisterFile_Monolithic_33.vhdl RegisterFile_Monolithic_34_Pack.vhdl RegisterFile_Monolithic_34.vhdl RegisterFile_Monolithic_35_Pack.vhdl RegisterFile_Monolithic_35.vhdl RegisterFile_Monolithic_3_Pack.vhdl RegisterFile_Monolithic_3.vhdl151 152 # RegisterFile_Monolithic_4153 target_dep all RegisterFile_Monolithic_4.ngc154 target_dep RegisterFile_Monolithic_4.ngc RegisterFile_Monolithic_4.prj155 target_dep RegisterFile_Monolithic_4.prj RegisterFile_Monolithic_4_Pack.vhdl RegisterFile_Monolithic_4.vhdl156 157 # RegisterFile_Monolithic_5158 target_dep all RegisterFile_Monolithic_5.ngc159 target_dep RegisterFile_Monolithic_5.ngc RegisterFile_Monolithic_5.prj160 target_dep RegisterFile_Monolithic_5.prj RegisterFile_Monolithic_5_Pack.vhdl RegisterFile_Monolithic_5.vhdl161 162 # RegisterFile_Monolithic_6163 target_dep all RegisterFile_Monolithic_6.ngc164 target_dep RegisterFile_Monolithic_6.ngc RegisterFile_Monolithic_6.prj165 target_dep RegisterFile_Monolithic_6.prj RegisterFile_Monolithic_6_Pack.vhdl RegisterFile_Monolithic_6.vhdl166 167 # RegisterFile_Monolithic_7168 target_dep all RegisterFile_Monolithic_7.ngc169 target_dep RegisterFile_Monolithic_7.ngc RegisterFile_Monolithic_7.prj170 target_dep RegisterFile_Monolithic_7.prj RegisterFile_Monolithic_7_Pack.vhdl RegisterFile_Monolithic_7.vhdl171 172 # RegisterFile_Monolithic_8173 target_dep all RegisterFile_Monolithic_8.ngc174 target_dep RegisterFile_Monolithic_8.ngc RegisterFile_Monolithic_8.prj175 target_dep RegisterFile_Monolithic_8.prj RegisterFile_Monolithic_8_Pack.vhdl RegisterFile_Monolithic_8.vhdl176 177 # RegisterFile_Monolithic_9178 target_dep all RegisterFile_Monolithic_9.ngc179 target_dep RegisterFile_Monolithic_9.ngc RegisterFile_Monolithic_9.prj180 target_dep RegisterFile_Monolithic_9.prj RegisterFile_Monolithic_9_Pack.vhdl RegisterFile_Monolithic_9.vhdl181 -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile
r30 r20 8 8 9 9 #-----[ Directory ]---------------------------------------- 10 DIR_COMPONENT = . 11 include $(DIR_COMPONENT)/Makefile.defs 10 DIR_MORPHEO = ../../../.. 12 11 13 12 #-----[ Library ]------------------------------------------ … … 20 19 @$(MAKE) all_component 21 20 22 include $(DIR_MORPHEO)/Behavioural/Makefile. flags21 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 23 22 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 24 23 include $(DIR_MORPHEO)/Behavioural/Makefile.Component -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/Makefile
r30 r20 8 8 9 9 #-----[ Directory ]---------------------------------------- 10 DIR_COMPONENT = . 11 include $(DIR_COMPONENT)/Makefile.defs 10 DIR_MORPHEO = ../../../../.. 12 11 13 12 #-----[ Library ]------------------------------------------ … … 20 19 @$(MAKE) all_component 21 20 22 include $(DIR_MORPHEO)/Behavioural/Makefile. flags21 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 23 22 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 24 23 include $(DIR_MORPHEO)/Behavioural/Makefile.Component -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/Makefile
r30 r20 8 8 9 9 #-----[ Directory ]---------------------------------------- 10 DIR_COMPONENT = .. 11 include $(DIR_COMPONENT)/Makefile.defs 10 DIR_MORPHEO = ../../../../../.. 12 11 13 12 LIBRARY = $(RegisterFile_Multi_Banked_Glue_LIBRARY) … … 24 23 library_clean : RegisterFile_Multi_Banked_Glue_library_clean 25 24 26 include $(DIR_COMPONENT)/Makefile.deps27 include $(DIR_MORPHEO)/Behavioural/Makefile. flags25 include ../Makefile.deps 26 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 28 27 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 29 28 include $(DIR_MORPHEO)/Behavioural/Makefile.Selftest -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/configuration.cfg
r30 r20 1 1 RegisterFile_Multi_Banked_Glue 2 11 11*2 # nb_port_read2 4 4 *2 # nb_port_read 3 3 4 4 *2 # nb_port_write 4 4 8 8 +1 # size_address 5 5 32 32 *2 # size_word 6 4 4*2 # nb_bank7 3 3*2 # nb_port_read_by_bank6 2 2 *2 # nb_bank 7 2 2 *2 # nb_port_read_by_bank 8 8 2 2 *2 # nb_port_write_by_bank 9 0 0+1 # crossbar9 0 1 +1 # crossbar -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/src/test.cpp
r30 r20 9 9 #define NB_ITERATION 16 10 10 11 #define TEXT(str) do {cout << "<" << name << "> : " << str << endl;} while (0)12 11 #define LABEL(str) do {cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} " << str << endl; _RegisterFile_Multi_Banked_Glue->vhdl_testbench_label(str);} while (0) 13 12 … … 19 18 morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::Parameters _param) 20 19 { 21 TEXT("Simulation SystemC");20 cout << "<" << name << "> : Simulation SystemC" << endl; 22 21 23 22 RegisterFile_Multi_Banked_Glue * _RegisterFile_Multi_Banked_Glue = new RegisterFile_Multi_Banked_Glue (name.c_str(), … … 193 192 ********************************************************/ 194 193 195 TEXT("Instanciation of _RegisterFile_Multi_Banked_Glue");194 cout << "<" << name << "> Instanciation of _RegisterFile_Multi_Banked_Glue" << endl; 196 195 197 196 (*(_RegisterFile_Multi_Banked_Glue->in_CLOCK)) (*(CLOCK)); … … 248 247 249 248 250 TEXT("Start Simulation ............");249 cout << "<" << name << "> Start Simulation ............" << endl; 251 250 252 251 /******************************************************** … … 266 265 267 266 uint32_t read_in_num_bank [_param._nb_port_read]; // Number of bank 268 Tcontrol_t read_is_busy [_param._nb_port_read]; 269 bool read_out_find [_param._nb_bank][_param._nb_port_read_by_bank]; 270 uint32_t read_out_port [_param._nb_bank][_param._nb_port_read_by_bank]; 271 267 //Tcontrol_t read_in_valid [_param._nb_port_read]; 272 268 Tcontrol_t read_in_ack [_param._nb_port_read]; // to test 273 269 Tdata_t read_in_data [_param._nb_port_read]; // to test 274 270 Tcontrol_t read_out_val [_param._nb_bank][_param._nb_port_read_by_bank]; 271 Tcontrol_t read_out_ack [_param._nb_bank][_param._nb_port_read_by_bank]; 275 272 Taddress_t read_out_address [_param._nb_bank][_param._nb_port_read_by_bank]; 276 Tcontrol_t read_select_val [_param._nb_bank][_param._nb_port_read_by_bank][_param._nb_port_read]; 273 Tcontrol_t read_is_busy [_param._nb_port_read]; 274 Tcontrol_t read_select_val [_param._nb_bank][_param._nb_port_read ]; 275 Tcontrol_t read_select_ack [_param._nb_bank][_param._nb_port_read ]; 277 276 278 277 LABEL("Loop of Test"); … … 282 281 LABEL("Iteration "+toString(iteration)); 283 282 284 //LABEL("Test read_in");283 LABEL("Test read_in"); 285 284 286 285 // Write in interface "read_in" … … 288 287 { 289 288 read_in_num_bank [i] = rand() % _param._nb_bank; 290 Tcontrol_t read_in_val = (rand() % 2) != 0;289 Tcontrol_t read_in_valid = (rand() % 2) != 0; 291 290 292 291 Taddress_t address = (read_in_num_bank[i] << _param._shift_address) | (gen_mask<Taddress_t>(_param._size_address-_param._shift_address) & i); 293 292 294 read_is_busy [i] = (read_in_val == 0); // invalid = busy 295 read_in_ack [i] = 0; // init 296 read_in_data [i] = 0; // init 297 READ_IN_VAL [i]->write(read_in_val); // write signal 298 READ_IN_ADDRESS [i]->write(address); // write signal 293 read_is_busy [i] = (read_in_valid == 0); 294 read_in_ack [i] = 0; 295 read_in_data [i] = 0; 296 READ_IN_VAL [i]->write(read_in_valid); 297 READ_IN_ADDRESS [i]->write(address); 298 299 for (uint32_t j=0; j<_param._nb_bank; j++) 300 read_select_ack [j][i] = 0; 299 301 } 300 302 303 for (uint32_t i=0; i<_param._nb_bank; i++) 304 for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++) 305 { 306 read_out_ack [i][j] = (rand() % 2) != 0; 307 READ_OUT_ACK [i][j]->write(read_out_ack [i][j]); 308 READ_OUT_DATA [i][j]->write((j<<1)|1); // (j<<1)|1 afin de n'avoir jamais 0 309 } 310 301 311 // compute the good read_select 302 312 for (uint32_t i=0; i<_param._nb_bank; i++) 303 313 for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++) 304 314 { 305 Tcontrol_t read_out_ack = (rand() % 2) != 0;306 READ_OUT_ACK [i][j]->write(read_out_ack);307 READ_OUT_DATA [i][j]->write((j<<1)|1); // (j<<1)|1 afin de n'avoir jamais 0308 309 read_out_find [i][j] = false;310 read_out_port [i][j] = 0;311 312 read_out_val [i][j] = 0;313 read_out_address [i][j] = 0;314 315 315 bool find = false; // have find a port_in to link with this port_out 316 316 for (uint32_t k=0; k<_param._nb_port_select_by_bank_read_port[j]; k++) 317 317 { 318 318 319 uint32_t num_port; // number of port 319 320 … … 322 323 num_port = k; 323 324 else 324 num_port = k*_param._nb_port_read_by_bank+j;325 326 read_select_val [i][ j][k] = read_out_ack and not read_is_busy [num_port] and (read_in_num_bank[num_port] == i); // select val if port is not busy and out accept a data327 Tcontrol_t read_select_ack = 0;328 329 // test a previousfind330 if (not ((read_out_ack == 0) || find))325 num_port = _param._link_port_read [i]; 326 327 read_select_val [i][num_port] = read_out_ack [i][j] && not read_is_busy [num_port]; 328 329 if ((read_out_ack [i][j] == 0) || find) 330 read_select_ack [i][num_port] = 0; // read_out is busy or already find 331 else 331 332 { 332 333 // find a busy port? 333 find = read_select_val;334 read_is_busy [num_port]|= find; // port became busy if find335 read_select_ack = find; // ack if find334 find = not read_is_busy [num_port]; 335 read_is_busy [num_port]|= find; 336 read_select_ack [i][num_port] = find; 336 337 337 338 if (find) 338 339 { 339 read_out_find [i][j] = true;340 read_out_port [i][j] = num_port;341 342 // know the good output343 340 read_in_ack [num_port] = 1; 344 341 read_in_data [num_port] = ((j<<1)|1); 345 342 read_out_val [i][j] = 1; 346 read_out_address [i][j] = ( i << _param._shift_address) | (gen_mask<Taddress_t>(_param._size_address-_param._shift_address) & num_port);343 read_out_address [i][j] = (read_in_num_bank[i] << _param._shift_address) | (gen_mask<Taddress_t>(_param._size_address-_param._shift_address) & i); 347 344 } 348 345 } 349 346 350 READ_SELECT_ACK [i][j][k]->write(read_select_ack );347 READ_SELECT_ACK [i][j][k]->write(read_select_ack [i][num_port]); 351 348 } 352 349 } … … 355 352 sc_start(1); 356 353 357 // test output 358 359 TEXT ("===== Test Output ====="); 360 for (uint32_t i=0; i<_param._nb_port_read; i++) 361 { 362 TEXT ("Read_in [" << i << "] : " 363 << READ_IN_VAL [i]->read() << "," 364 << read_in_ack [i] << " - " 365 << "Reg[" << READ_IN_ADDRESS [i]->read() << "] -> " 366 << read_in_data [i] << " " 367 << "{bank : " << read_in_num_bank[i] << "}" 368 ); 369 370 TEST (Tcontrol_t, read_in_ack [i], READ_IN_ACK [i]->read()); 371 if (READ_IN_VAL [i]->read() and READ_IN_ACK [i]->read()) 372 TEST (Tdata_t , read_in_data [i], READ_IN_DATA [i]->read()); 373 } 374 375 cout << endl; 376 for (uint32_t i=0; i<_param._nb_bank; i++) 377 for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++) 378 { 379 TEXT ("Read_out [" << i << "][" << j << "] : " 380 << read_out_val [i][j] << "," 381 << READ_OUT_ACK [i][j]->read() << " - " 382 << "Reg[" << read_out_address [i][j] << "] -> " 383 << READ_OUT_DATA [i][j]->read() << " - " 384 << "[" << read_out_find [i][j]<< " , " 385 << read_out_port [i][j] << "]" 386 ); 387 388 TEST (Tcontrol_t, read_out_val [i][j], READ_OUT_VAL [i][j]->read()); 389 if (READ_OUT_VAL [i][j]->read() and READ_OUT_ACK [i][j]->read()) 390 TEST (Taddress_t, read_out_address [i][j], READ_OUT_ADDRESS [i][j]->read()); 391 392 for (uint32_t k=0; k<_param._nb_port_select_by_bank_read_port[j]; k++) 393 { 394 uint32_t num_port; // number of port 395 396 // compute the good number of port 397 if (_param._crossbar == FULL_CROSSBAR) 398 num_port = k; 399 else 400 num_port = k*_param._nb_port_read_by_bank+j; 401 402 TEXT (" * Read_select [" << i << "][" << j << "][" << k << "] : " 403 << read_select_val [i][j][k] << "," 404 << READ_SELECT_ACK [i][j][k]->read() << " - " 405 << "link with read_in[" << num_port << "]" 406 ); 407 408 TEST (Tcontrol_t, read_select_val [i][j][k], READ_SELECT_VAL [i][j][k]->read()); 409 } 410 411 412 413 } 414 415 } 416 417 sc_start(0); 354 // // lot of test 355 // public : SC_OUT(Tcontrol_t) ** out_READ_IN_ACK ; 356 // public : SC_OUT(Tdata_t ) ** out_READ_IN_DATA ; 357 358 // public : SC_OUT(Tcontrol_t) **** out_READ_SELECT_VAL ; 359 360 // public : SC_OUT(Tcontrol_t) *** out_READ_OUT_VAL ; 361 // public : SC_OUT(Taddress_t) *** out_READ_OUT_ADDRESS ; 362 363 } 418 364 419 365 /******************************************************** … … 421 367 ********************************************************/ 422 368 423 TEXT("............ Stop Simulation");369 cout << "<" << name << "> ............ Stop Simulation" << endl; 424 370 425 371 delete CLOCK; 426 372 427 TEXT("delete read_in");428 373 for (uint32_t i=0; i<_param._nb_port_read; i++) 429 374 { 430 // TEXT("1, i " << i);431 375 delete READ_IN_VAL [i]; 432 // TEXT("2");433 376 delete READ_IN_ACK [i]; 434 // TEXT("3");435 377 delete READ_IN_ADDRESS [i]; 436 // TEXT("4");437 378 delete READ_IN_DATA [i]; 438 // TEXT("5");439 379 } 440 380 … … 444 384 delete READ_IN_DATA ; 445 385 446 TEXT("delete read_select");447 386 for (uint32_t i=0; i<_param._nb_bank; i++) 448 387 { … … 463 402 delete READ_SELECT_ACK; 464 403 465 TEXT("delete read_out");466 404 for (uint32_t i=0; i<_param._nb_bank; i++) 467 405 { … … 485 423 delete READ_OUT_DATA ; 486 424 487 TEXT("delete write_in");488 425 for (uint32_t i=0; i<_param._nb_port_write; i++) 489 426 { … … 499 436 delete WRITE_IN_DATA ; 500 437 501 TEXT("delete write_select");502 438 for (uint32_t i=0; i<_param._nb_bank; i++) 503 439 { … … 518 454 delete WRITE_SELECT_ACK; 519 455 520 TEXT("delete write_out");521 456 for (uint32_t i=0; i<_param._nb_bank; i++) 522 457 { … … 542 477 #endif 543 478 544 545 479 delete _RegisterFile_Multi_Banked_Glue; 546 480 } -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h
r30 r20 63 63 public : const uint32_t _shift_address ; 64 64 65 // A lot of table to the partial crossbar66 public : uint32_t * _link_port_ read_in_to_out;67 public : uint32_t * _link_port_read_in_to_select ; 68 public : uint32_t * _ link_port_write_in_to_out;69 public : uint32_t * _ link_port_write_in_to_select;65 public : uint32_t * _link_port_read ; 66 public : uint32_t * _link_port_write ; 67 68 public : uint32_t * _nb_port_select_by_bank_read_port ; 69 public : uint32_t * _nb_port_select_by_bank_write_port; 70 70 71 71 //-----[ methods ]----------------------------------------------------------- … … 82 82 public : ~Parameters () ; 83 83 84 public : string msg_error 84 public : string msg_error (void); 85 85 86 86 public : string print (uint32_t depth); -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h
r30 r20 119 119 120 120 #ifdef SYSTEMC 121 // function pointer122 public : uint32_t (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::*link_port_read_in_to_out ) (uint32_t, uint32_t);123 public : uint32_t (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::*link_port_read_in_to_select ) (uint32_t, uint32_t);124 public : uint32_t (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::*link_port_write_in_to_out ) (uint32_t, uint32_t);125 public : uint32_t (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::*link_port_write_in_to_select) (uint32_t, uint32_t);126 127 public : uint32_t full_crossbar_link_port_read_in_to_out (uint32_t num_port, uint32_t num_bank);128 public : uint32_t full_crossbar_link_port_read_in_to_select (uint32_t num_port, uint32_t num_bank);129 public : uint32_t full_crossbar_link_port_write_in_to_out (uint32_t num_port, uint32_t num_bank);130 public : uint32_t full_crossbar_link_port_write_in_to_select (uint32_t num_port, uint32_t num_bank);131 public : uint32_t partial_crossbar_link_port_read_in_to_out (uint32_t num_port, uint32_t num_bank);132 public : uint32_t partial_crossbar_link_port_read_in_to_select (uint32_t num_port, uint32_t num_bank);133 public : uint32_t partial_crossbar_link_port_write_in_to_out (uint32_t num_port, uint32_t num_bank);134 public : uint32_t partial_crossbar_link_port_write_in_to_select (uint32_t num_port, uint32_t num_bank);135 136 121 private : void allocation (void); 137 122 private : void deallocation (void); -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Parameters.cpp
r30 r20 31 31 _nb_port_write_by_bank (nb_port_write_by_bank), 32 32 _crossbar (crossbar ), 33 _shift_address ( _size_address-static_cast<uint32_t>(ceil(log2(_nb_bank))))33 _shift_address (static_cast<uint32_t>(ceil(log2(_nb_bank)))) 34 34 { 35 35 log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","Begin"); … … 39 39 // All port_src is connected with one port_dest on each bank 40 40 41 _link_port_read_in_to_out = new uint32_t [_nb_port_read ]; 42 _link_port_read_in_to_select = new uint32_t [_nb_port_read ]; 43 _link_port_write_in_to_out = new uint32_t [_nb_port_write]; 44 _link_port_write_in_to_select = new uint32_t [_nb_port_write]; 45 uint32_t _nb_port_select_by_bank_read_port [_nb_port_read_by_bank ]; 46 uint32_t _nb_port_select_by_bank_write_port [_nb_port_write_by_bank]; 47 48 // init 49 for (uint32_t i=0; i<_nb_port_read_by_bank ;i++) 50 _nb_port_select_by_bank_read_port [i] = 0; 51 52 for (uint32_t i=0; i<_nb_port_read ;i++) 53 { 54 uint32_t x = i%_nb_port_read_by_bank; 55 _link_port_read_in_to_out [i] = x; 56 _link_port_read_in_to_select [i] = _nb_port_select_by_bank_read_port [x]; 57 _nb_port_select_by_bank_read_port [x] ++; 58 } 41 _link_port_read = new uint32_t [_nb_port_read ]; 42 for (uint32_t i=0; i<_nb_port_read ; i++) 43 _link_port_read [i] = i%_nb_port_read_by_bank; 59 44 60 // init 61 for (uint32_t i=0; i<_nb_port_write_by_bank ;i++) 62 _nb_port_select_by_bank_write_port [i] = 0; 63 64 for (uint32_t i=0; i<_nb_port_write ;i++) 65 { 66 uint32_t x = i%_nb_port_write_by_bank; 67 _link_port_write_in_to_out [i] = x; 68 _link_port_write_in_to_select [i] = _nb_port_select_by_bank_write_port [x]; 69 _nb_port_select_by_bank_write_port [x] ++; 70 } 45 _link_port_write = new uint32_t [_nb_port_write]; 46 for (uint32_t i=0; i<_nb_port_write; i++) 47 _link_port_write [i] = i%_nb_port_write_by_bank; 71 48 } 72 49 // else : don't allocate 73 50 51 _nb_port_select_by_bank_read_port = new uint32_t [_nb_port_read_by_bank ]; 52 53 if (_crossbar == FULL_CROSSBAR) 54 // All port_src is connected with all port_dest on each bank 55 for (uint32_t i=0; i<_nb_port_read_by_bank ;i++) 56 _nb_port_select_by_bank_read_port [i] = _nb_port_read; 57 else 58 // All port_src is connected with one port_dest on each bank 59 { 60 for (uint32_t i=0; i<_nb_port_read_by_bank ;i++) 61 _nb_port_select_by_bank_read_port [i] = 0; 62 63 for (uint32_t i=0; i<_nb_port_read ;i++) 64 _nb_port_select_by_bank_read_port [_link_port_read [i]] ++; 65 } 66 67 _nb_port_select_by_bank_write_port = new uint32_t [_nb_port_write_by_bank]; 68 69 if (_crossbar == FULL_CROSSBAR) 70 // All port_src is connected with all port_dest on each bank 71 for (uint32_t i=0; i<_nb_port_write_by_bank ;i++) 72 _nb_port_select_by_bank_write_port [i] = _nb_port_write; 73 else 74 // All port_src is connected with one port_dest on each bank 75 { 76 for (uint32_t i=0; i<_nb_port_write_by_bank ;i++) 77 _nb_port_select_by_bank_write_port [i] = 0; 78 79 for (uint32_t i=0; i<_nb_port_write ;i++) 80 _nb_port_select_by_bank_write_port [_link_port_write[i]] ++; 81 } 82 74 83 test(); 75 84 log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","End"); … … 88 97 { 89 98 log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters (copy)","Begin"); 99 100 _nb_port_select_by_bank_read_port = new uint32_t [_nb_port_read_by_bank ]; 101 for (uint32_t i=0; i<_nb_port_read_by_bank; i++) 102 _nb_port_select_by_bank_read_port [i] = param._nb_port_select_by_bank_read_port [i]; 103 104 _nb_port_select_by_bank_write_port = new uint32_t [_nb_port_write_by_bank ]; 105 for (uint32_t i=0; i<_nb_port_write_by_bank; i++) 106 _nb_port_select_by_bank_write_port[i] = param._nb_port_select_by_bank_write_port [i]; 107 90 108 test(); 91 109 log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters (copy)","End"); -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue.cpp
r30 r20 33 33 log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"RegisterFile_Multi_Banked_Glue","Begin"); 34 34 35 #ifdef SYSTEMC36 // write function pointer37 if (_crossbar == PARTIAL_CROSSBAR)38 {39 link_port_read_in_to_out = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::partial_crossbar_link_port_read_in_to_out ;40 link_port_read_in_to_select = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::partial_crossbar_link_port_read_in_to_select ;41 link_port_write_in_to_out = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::partial_crossbar_link_port_write_in_to_out ;42 link_port_write_in_to_select = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::partial_crossbar_link_port_write_in_to_select;43 }44 else45 {46 link_port_read_in_to_out = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue:: full_crossbar_link_port_read_in_to_out ;47 link_port_read_in_to_select = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue:: full_crossbar_link_port_read_in_to_select ;48 link_port_write_in_to_out = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue:: full_crossbar_link_port_write_in_to_out ;49 link_port_write_in_to_select = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue:: full_crossbar_link_port_write_in_to_select;50 }51 #endif52 53 35 #ifdef STATISTICS 54 36 log_printf(INFO,RegisterFile_Multi_Banked_Glue,"RegisterFile_Multi_Banked_Glue","Allocation of statistics"); … … 84 66 85 67 allocation (); 86 68 87 69 #if defined(STATISTICS) or defined(VHDL_TESTBENCH) 88 70 log_printf(INFO,RegisterFile_Multi_Banked_Glue,"RegisterFile_Multi_Banked_Glue","Method - transition"); -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_genMealy_read_in.cpp
r30 r20 9 9 #include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h" 10 10 11 namespace morpheo {11 namespace morpheo { 12 12 namespace behavioural { 13 13 namespace generic { … … 16 16 namespace registerfile_multi_banked_glue { 17 17 18 18 19 void RegisterFile_Multi_Banked_Glue::genMealy_read_in (void) 19 20 { 20 21 log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"genMealy_read_in","Begin"); 21 22 22 for (uint32_t i=0; i<_param._nb_port_read; i++)23 for (uint32_t l=0; l<_param._nb_port_read; l++) 23 24 { 24 log_printf(ALL,RegisterFile_Multi_Banked_Glue,"genMealy_read_in","read_in [%d]",i);25 uint32_t num_bank = PORT_READ(in_READ_IN_ADDRESS [l])>>_param._shift_address; 25 26 26 uint32_t num_bank = PORT_READ(in_READ_IN_ADDRESS [i])>>_param._shift_address;27 uint32_t num_port_out = *link_port_read_in_to_out (i,num_bank);28 uint32_t num_port_select = *link_port_read_in_to_select (i,num_bank);29 30 if (_param._crossbar == FULL_CROSSBAR)31 {32 // scearch in all possible destination the good33 // if not found : num_port = 034 for (num_port = _param._nb_port_read_by_bank-1; num_port > 0; num_port --)35 {36 log_printf(ALL,RegisterFile_Multi_Banked_Glue,"genMealy_read_in","test read_out_port %d",num_port);37 38 for (uint32_t j=0; j<_param._nb_port_select_by_bank_read_port [num_port]; j++)39 {40 log_printf(ALL,RegisterFile_Multi_Banked_Glue,"genMealy_read_in","test read_out_select %d",j);41 if (PORT_READ(in_READ_SELECT_ACK [num_bank][num_port][j])==1)42 goto end_FULL_CROSSBAR;43 }44 }45 }46 47 end_FULL_CROSSBAR :48 49 log_printf(TRACE,RegisterFile_Multi_Banked_Glue,"genMealy_read_in","read_in [%d] address : %.8x - num_bank %d, num_port %d",i,static_cast<uint32_t>(PORT_READ(in_READ_IN_ADDRESS [i])),num_bank,num_port);50 51 PORT_WRITE(out_READ_IN_ACK [i],PORT_READ(in_READ_SELECT_ACK [num_bank][num_port]));52 PORT_WRITE(out_READ_IN_DATA [i],PORT_READ(in_READ_OUT_DATA [num_bank][num_port]));53 27 // (*(out_READ_IN_ACK [l])) (*(in_READ_IN_ADDRESS [i][j])); 54 28 // (*(out_READ_IN_DATA [l])) (*(in_READ_IN_ADDRESS [i][j])); 29 30 // for (uint32_t i=0; i<_param._nb_bank; i++) 31 // for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++) 32 // { 33 // (*(out_READ_IN_ACK [l])) (*(in_READ_OUT_ACK [i][j])); 34 // (*(out_READ_IN_DATA [l])) (*(in_READ_OUT_DATA [i][j])); 35 // for (uint32_t k=0; k<_param._nb_port_select_by_bank_read_port[j]; k++) 36 // { 37 // (*(out_READ_IN_ACK [l])) (*(in_READ_SELECT_ACK [i][j][k])); 38 // (*(out_READ_IN_DATA [l])) (*(in_READ_SELECT_ACK [i][j][k])); 39 // } 40 // } 55 41 } 56 42 -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/Makefile
r30 r20 24 24 25 25 include ../Makefile.deps 26 include $(DIR_MORPHEO)/Behavioural/Makefile. flags26 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 27 27 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 28 28 include $(DIR_MORPHEO)/Behavioural/Makefile.Selftest -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/Makefile
r30 r20 8 8 9 9 #-----[ Directory ]---------------------------------------- 10 DIR_COMPONENT = . 11 include $(DIR_COMPONENT)/Makefile.defs 10 DIR_MORPHEO = ../../../.. 12 11 13 12 #-----[ Library ]------------------------------------------ … … 20 19 @$(MAKE) all_component 21 20 22 include $(DIR_MORPHEO)/Behavioural/Makefile. flags21 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 23 22 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 24 23 include $(DIR_MORPHEO)/Behavioural/Makefile.Component -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/Makefile
r30 r20 24 24 25 25 include ../Makefile.deps 26 include $(DIR_MORPHEO)/Behavioural/Makefile. flags26 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 27 27 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 28 28 include $(DIR_MORPHEO)/Behavioural/Makefile.Selftest -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/configuration.cfg
r30 r20 1 1 Select_Priority_Fixed 2 1616 *2 # nb_entity3 0 0+1 # encoding_one_hot2 2 16 *2 # nb_entity 3 0 1 +1 # encoding_one_hot 4 4 1 1 +1 # encoding_compact -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h
r30 r20 19 19 #include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Parameters.h" 20 20 #include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Types.h" 21 #include "Behavioural/include/Interfaces.h"22 23 21 #ifdef STATISTICS 24 22 #include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Statistics.h" … … 61 59 private : Vhdl_Testbench * _vhdl_testbench; 62 60 #endif 63 64 private : Interfaces * interfaces;65 61 66 62 #ifdef SYSTEMC … … 117 113 #if VHDL 118 114 public : void vhdl (void); 119 private : void vhdl_port (Vhdl *& vhdl);120 private : void vhdl_declaration (Vhdl *& vhdl);121 private : void vhdl_body (Vhdl *& vhdl);115 private : void vhdl_port (Vhdl & vhdl); 116 private : void vhdl_declaration (Vhdl & vhdl); 117 private : void vhdl_body (Vhdl & vhdl); 122 118 #endif 123 119 -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed.cpp
r30 r20 32 32 log_printf(FUNC,Select_Priority_Fixed,"Select_Priority_Fixed","Begin"); 33 33 34 #ifdef SYSTEMC35 log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Allocation");36 37 allocation ();38 #endif39 40 #ifdef POSITION41 log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Position");42 43 44 #endif45 46 34 #ifdef STATISTICS 47 35 log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Allocation of statistics"); … … 60 48 // -> clock's signals 61 49 _vhdl_testbench = new Vhdl_Testbench (_name); 50 // _vhdl_testbench->set_clock ("in_CLOCK",false); 62 51 #endif 63 52 … … 69 58 #endif 70 59 60 #ifdef VHDL_TESTBENCH 61 _vhdl_testbench->set_clock ("in_CLOCK",true); 62 #endif 63 71 64 #ifdef SYSTEMC 65 log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Allocation"); 66 67 allocation (); 68 72 69 #if defined(STATISTICS) or defined(VHDL_TESTBENCH) 73 70 log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Method - transition"); … … 101 98 102 99 #endif 100 103 101 #endif 104 102 log_printf(FUNC,Select_Priority_Fixed,"Select_Priority_Fixed","End"); -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_allocation.cpp
r30 r20 15 15 namespace select_priority_fixed { 16 16 17 17 18 void Select_Priority_Fixed::allocation (void) 18 19 { … … 21 22 log_printf(FUNC,Select_Priority_Fixed,"allocation","Begin"); 22 23 23 interfaces = new Interfaces; 24 25 // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 26 Interface interface_ ("", IN, WEST); 27 28 in_CLOCK = interface_.set_signal_clk ("clock" ,1, PORT_VHDL_YES_TESTBENCH_NO); 29 in_NRESET = interface_.set_signal_in <Tcontrol_t> ("nreset",1); 24 in_CLOCK = new SC_CLOCK ("in_CLOCK "); 25 in_NRESET = new SC_IN (Tcontrol_t) ("in_NRESET"); 30 26 31 27 in_VAL = new SC_IN (Tcontrol_t) * [_param._nb_entity]; … … 35 31 for (uint32_t i=0; i<_param._nb_entity; i++) 36 32 { 37 in_VAL [i] = interface_.set_signal_in <Tcontrol_t> ("val_"+toString(i),1); 33 rename = " in_VAL_"+toString(i); 34 in_VAL [i] = new SC_IN (Tcontrol_t) (rename.c_str()); 35 38 36 if (_param._encoding_one_hot) 39 out_ACK [i] = interface_.set_signal_out <Tcontrol_t> ("ack_"+toString(i),1); 37 { 38 rename = "out_ACK_"+toString(i); 39 out_ACK [i] = new SC_OUT(Tcontrol_t) (rename.c_str()); 40 } 40 41 } 41 42 42 43 if (_param._encoding_compact) 43 44 { 44 out_ENTITY = interface_.set_signal_out <Tentity_t > ("entity" , _param._size_entity);45 out_ENTITY _ACK = interface_.set_signal_out <Tcontrol_t> ("entity_ack", 1);45 out_ENTITY_ACK = new SC_OUT(Tcontrol_t) ("out_entity_ack"); 46 out_ENTITY = new SC_OUT(Tentity_t) ("out_entity"); 46 47 } 47 48 48 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 49 49 … … 54 54 }; // end namespace select 55 55 }; // end namespace generic 56 56 57 }; // end namespace behavioural 57 58 }; // end namespace morpheo -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp
r30 r20 40 40 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 41 41 42 delete interfaces;43 44 42 log_printf(FUNC,Select_Priority_Fixed,"deallocation","End"); 45 43 }; -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl.cpp
r30 r20 20 20 { 21 21 log_printf(FUNC,Select_Priority_Fixed,"vhdl","Begin"); 22 Vhdl vhdl (_name); 22 23 23 Vhdl * vhdl = new Vhdl (_name); 24 25 vhdl->set_library_work (_name + "_Pack"); 24 vhdl.set_library_work (_name + "_Pack"); 26 25 27 26 vhdl_port (vhdl); … … 29 28 vhdl_body (vhdl); 30 29 31 vhdl ->generate_file();30 vhdl.generate_file(); 32 31 log_printf(FUNC,Select_Priority_Fixed,"vhdl","End"); 33 32 -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_body.cpp
r30 r20 16 16 17 17 18 void Select_Priority_Fixed::vhdl_body (Vhdl *& vhdl)18 void Select_Priority_Fixed::vhdl_body (Vhdl & vhdl) 19 19 { 20 20 log_printf(FUNC,Select_Priority_Fixed,"vhdl_body","Begin"); 21 vhdl ->set_body ("");21 vhdl.set_body (""); 22 22 23 vhdl ->set_body("internal_entity <=");23 vhdl.set_body("internal_entity <="); 24 24 for (uint32_t i=0; i<_param._nb_entity; i++) 25 25 { 26 vhdl ->set_body("\t"+std_logic_conv(_param._size_entity+1,i)+" when in_VAL_"+toString(i)+"='1' else");26 vhdl.set_body("\t"+std_logic_conv(_param._size_entity+1,i)+" when in_VAL_"+toString(i)+"='1' else"); 27 27 } 28 vhdl ->set_body("\t"+std_logic_conv(_param._size_entity+1,1<<_param._size_entity)+";");29 vhdl ->set_body ("");28 vhdl.set_body("\t"+std_logic_conv(_param._size_entity+1,1<<_param._size_entity)+";"); 29 vhdl.set_body (""); 30 30 31 31 if (_param._encoding_one_hot) 32 32 { 33 33 for (uint32_t i=0; i<_param._nb_entity; i++) 34 vhdl ->set_body("out_ACK_"+toString(i)+" <= '1' when internal_entity"+std_logic_range(_param._size_entity+1)+" = "+std_logic_conv(_param._size_entity+1,i)+" else '0';");35 vhdl ->set_body ("");34 vhdl.set_body("out_ACK_"+toString(i)+" <= '1' when internal_entity"+std_logic_range(_param._size_entity+1)+" = "+std_logic_conv(_param._size_entity+1,i)+" else '0';"); 35 vhdl.set_body (""); 36 36 } 37 37 38 38 if (_param._encoding_compact) 39 39 { 40 vhdl ->set_body ("out_ENTITY <= internal_entity"+std_logic_range(_param._size_entity-1, 0)+";");41 vhdl ->set_body ("out_ENTITY_ACK <= not internal_entity"+std_logic_range(_param._size_entity ,_param._size_entity)+";");40 vhdl.set_body ("out_ENTITY <= internal_entity"+std_logic_range(_param._size_entity-1, 0)+";"); 41 vhdl.set_body ("out_ENTITY_ACK <= not internal_entity"+std_logic_range(_param._size_entity ,_param._size_entity)+";"); 42 42 } 43 43 -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_declaration.cpp
r30 r20 16 16 17 17 18 void Select_Priority_Fixed::vhdl_declaration (Vhdl *& vhdl)18 void Select_Priority_Fixed::vhdl_declaration (Vhdl & vhdl) 19 19 { 20 20 log_printf(FUNC,Select_Priority_Fixed,"vhdl_declaration","Begin"); 21 21 22 vhdl ->set_signal("internal_entity",_param._size_entity+1);22 vhdl.set_signal("internal_entity",_param._size_entity+1); 23 23 24 24 log_printf(FUNC,Select_Priority_Fixed,"vhdl_declaration","End"); -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_port.cpp
r30 r20 9 9 #include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h" 10 10 11 namespace morpheo { 11 #ifdef VHDL_TESTBENCH 12 # define VHDL_SET_PORT(name,direction,size) do {vhdl.set_port (name,direction,size); _vhdl_testbench->set_port (name,direction,size);} while (0) 13 #else 14 # define VHDL_SET_PORT(name,direction,size) vhdl.set_port (name,direction,size) 15 #endif 16 17 namespace morpheo { 12 18 namespace behavioural { 13 19 namespace generic { … … 15 21 namespace select_priority_fixed { 16 22 17 void Select_Priority_Fixed::vhdl_port (Vhdl * & vhdl) 23 24 void Select_Priority_Fixed::vhdl_port (Vhdl & vhdl) 18 25 { 19 26 log_printf(FUNC,Select_Priority_Fixed,"vhdl_port","Begin"); 20 27 21 #ifdef VHDL 22 interfaces->set_port(vhdl); 23 #endif 24 #ifdef VHDL_TESTBENCH 25 interfaces->set_port(_vhdl_testbench); 26 _vhdl_testbench->set_clock ("in_CLOCK",true); 27 #endif 28 29 log_printf(FUNC,Select_Priority_Fixed,"vhdl_port","End"); 28 vhdl.set_port (" in_CLOCK ", IN, 1); 29 VHDL_SET_PORT (" in_NRESET", IN, 1); 30 31 for (uint32_t i=0; i<_param._nb_entity; i++) 32 { 33 VHDL_SET_PORT (" in_VAL_"+toString(i) , IN, 1); 34 if (_param._encoding_one_hot) 35 VHDL_SET_PORT ("out_ACK_"+toString(i) ,OUT, 1); 36 } 37 if (_param._encoding_compact) 38 { 39 VHDL_SET_PORT ("out_ENTITY ",OUT,_param._size_entity); 40 VHDL_SET_PORT ("out_ENTITY_ACK",OUT,1); 41 } 42 log_printf(FUNC,Select_Priority_Fixed,"vhdl_port","End"); 30 43 }; 31 44 -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/Makefile
r30 r20 8 8 9 9 #-----[ Directory ]---------------------------------------- 10 DIR_COMPONENT = . 11 include $(DIR_COMPONENT)/Makefile.defs 10 DIR_MORPHEO = ../../.. 12 11 13 12 #-----[ Library ]------------------------------------------ … … 20 19 @$(MAKE) all_component 21 20 22 include $(DIR_MORPHEO)/Behavioural/Makefile. flags21 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 23 22 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 24 23 include $(DIR_MORPHEO)/Behavioural/Makefile.Component -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/Makefile
r30 r20 24 24 25 25 include ../Makefile.deps 26 include $(DIR_MORPHEO)/Behavioural/Makefile. flags26 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 27 27 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 28 28 include $(DIR_MORPHEO)/Behavioural/Makefile.Selftest -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/Makefile
r30 r20 8 8 9 9 #-----[ Directory ]---------------------------------------- 10 DIR_COMPONENT = . 11 include $(DIR_COMPONENT)/Makefile.defs 10 DIR_MORPHEO = ../../../.. 12 11 13 12 #-----[ Library ]------------------------------------------ … … 19 18 @$(MAKE) all_component 20 19 21 include $(DIR_MORPHEO)/Behavioural/Makefile. flags20 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 22 21 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 23 22 include $(DIR_MORPHEO)/Behavioural/Makefile.Component -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/Makefile
r30 r20 24 24 25 25 include ../Makefile.deps 26 include $(DIR_MORPHEO)/Behavioural/Makefile. flags26 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 27 27 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 28 28 include $(DIR_MORPHEO)/Behavioural/Makefile.Selftest -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile
r30 r20 8 8 9 9 #-----[ Directory ]---------------------------------------- 10 DIR_COMPONENT = ./ 11 include $(DIR_COMPONENT)/Makefile.defs 10 DIR_MORPHEO = ../ 12 11 13 12 #-----[ Library ]------------------------------------------ … … 19 18 @$(MAKE) all_component 20 19 21 include $(DIR_MORPHEO)/Behavioural/Makefile. flags20 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 22 21 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 23 22 include $(DIR_MORPHEO)/Behavioural/Makefile.Component -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Component
r30 r20 1 #-----[ Directory ]---------------------------------------- 2 DIR_DOC = doc 1 #-----[ Variable ]----------------------------------------- 3 2 DIR_LIB = lib 4 3 DIR_TEST = SelfTest 5 4 6 #-----[ Variable ]-----------------------------------------7 5 OBJECTS = $(OBJECTS_COMMON) 8 6 9 #-----[ Rules ]--------------------------------------------7 #-----[ Directory ]---------------------------------------- 10 8 .PRECIOUS : $(DIR_LIB)/%.a 11 9 .NOPARALLEL : clean help … … 23 21 @$(MKDIR) $@ 24 22 25 document :26 @$(MAKE) --directory=$(DIR_DOC) --makefile=Makefile27 28 23 component_clean : 29 24 @$(RM) $(DIR_LIB) … … 33 28 @$(ECHO) "" 34 29 @$(ECHO) " * all_component : compile all c++ file and generate library" 35 @$(ECHO) " * document : Generate documantation"36 30 @$(ECHO) " * clean : Erase all generate files" 37 31 @$(ECHO) " * help : print this text" … … 45 39 @$(MAKE) common_clean 46 40 @$(MAKE) component_clean 47 @if $(TEST) -d $(DIR_DOC); then $(MAKE) --directory=$(DIR_DOC) --makefile=Makefile clean; fi 41 -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest
r30 r20 10 10 DIR_BIN = bin 11 11 DIR_LIB = ../lib 12 DIR_CFG_GEN = configuration_generated12 DIR_CFG_GEN = configuration_generated 13 13 DIR_CFG_USER = configuration 14 14 DIR_LOG = log -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.defs
r30 r20 4 4 # [ Description ] 5 5 # 6 # Makefile 6 7 7 #-----[ Directory ]---------------------------------------- 8 DIR_COMPONENT_MORPHEO = .. 9 DIR_MORPHEO = $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO) 8 #-----[ Simulator ]---------------------------------------- 9 SIMULATOR = systemcass_deps 10 11 # 3 simulators : 12 # systemc - SystemC 13 # systemcass - SystemCASS 14 # systemcass_deps - SystemCASS, and use port dependency information instead of sensitivity list 15 16 #-----[ Flags ]-------------------------------------------- 17 FLAGS = -DVHDL \ 18 -DVHDL_TESTBENCH \ 19 -DSYSTEMC \ 20 -DSTATISTICS \ 21 -DCONFIGURATION \ 22 -DDEBUG=DEBUG_ALL 23 24 # Flags : 25 # DEBUG={level} - Print Debug Message 26 # VHDL - To generate a vhdl's model 27 # SYSTEMC - To generate a systemc's model 28 # CONFIGURATION - To generate a configuration file (it's input of viewer) 29 # STATISTICS (need SYSTEMC) - In the simulation, generate a statistics's file 30 # VHDL_TESTBENCH (need SYSTEMC) - In the simulation, generate two testbench's file (input and ouput) to validate the vhdl's model -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.mkf
r30 r20 3 3 # 4 4 5 all: _Generic/RegisterFile/ RegisterFile_Monolithic/SelfTestGeneric/Select/Priority_Fixed/SelfTest5 all: _Generic/RegisterFile/SelfTest _Generic/Select/Priority_Fixed/SelfTest 6 6 7 _Generic/RegisterFile/ RegisterFile_Monolithic/SelfTest:8 gmake all -C Generic/RegisterFile/ RegisterFile_Monolithic/SelfTest7 _Generic/RegisterFile/SelfTest: 8 gmake all -C Generic/RegisterFile/SelfTest 9 9 10 Generic/Select/Priority_Fixed/SelfTest: 10 _Generic/Select/Priority_Fixed/SelfTest: 11 gmake all -C Generic/Select/Priority_Fixed/SelfTest 11 12 12 13 clean: 13 gmake clean -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest 14 gmake clean -C Generic/RegisterFile/SelfTest 15 gmake clean -C Generic/Select/Priority_Fixed/SelfTest 14 16 15 17 re: clean all 16 18 17 19 install: 18 gmake install -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest 20 gmake install -C Generic/RegisterFile/SelfTest 21 gmake install -C Generic/Select/Priority_Fixed/SelfTest 19 22 -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/Makefile
r30 r20 8 8 9 9 #-----[ Directory ]---------------------------------------- 10 DIR_COMPONENT = ./ 11 include $(DIR_COMPONENT)/Makefile.defs 10 DIR_MORPHEO = @DIR_MORPHEO 12 11 13 12 #-----[ Library ]------------------------------------------ … … 20 19 @$(MAKE) all_component 21 20 22 include $(DIR_MORPHEO)/Behavioural/Makefile. flags21 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 23 22 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 24 23 include $(DIR_MORPHEO)/Behavioural/Makefile.Component -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/Makefile
r30 r20 8 8 9 9 #-----[ Directory ]---------------------------------------- 10 DIR_COMPONENT = ../ 11 include $(DIR_COMPONENT)/Makefile.defs 10 DIR_MORPHEO = ../@DIR_MORPHEO 12 11 13 12 LIBRARY = $(@COMPONENT_LIBRARY) … … 25 24 26 25 include ../Makefile.deps 27 include $(DIR_MORPHEO)/Behavioural/Makefile. flags26 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 28 27 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 29 28 include $(DIR_MORPHEO)/Behavioural/Makefile.Selftest -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/VERSION
r30 r20 1 v0. 61 v0.5 2 2 3 3 0.5 modif vhdl_port et vhdl_testbench_port -> ajout d'une macro 4 0.6 ajout de la documentation -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Makefile
r30 r20 8 8 9 9 #-----[ Directory ]---------------------------------------- 10 DIR_COMPONENT = . 11 include $(DIR_COMPONENT)/Makefile.defs 10 DIR_MORPHEO = ../../../.. 12 11 13 12 #-----[ Library ]------------------------------------------ … … 20 19 @$(MAKE) all_component 21 20 22 include $(DIR_MORPHEO)/Behavioural/Makefile. flags21 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 23 22 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 24 23 include $(DIR_MORPHEO)/Behavioural/Makefile.Component -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/Makefile
r30 r20 8 8 9 9 #-----[ Directory ]---------------------------------------- 10 DIR_COMPONENT = . 11 include $(DIR_COMPONENT)/Makefile.defs 10 DIR_MORPHEO = ../../../../.. 12 11 13 12 #-----[ Library ]------------------------------------------ … … 20 19 @$(MAKE) all_component 21 20 22 include $(DIR_MORPHEO)/Behavioural/Makefile. flags21 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 23 22 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 24 23 include $(DIR_MORPHEO)/Behavioural/Makefile.Component -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/SelfTest/Makefile
r30 r20 24 24 25 25 include ../Makefile.deps 26 include $(DIR_MORPHEO)/Behavioural/Makefile. flags26 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 27 27 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 28 28 include $(DIR_MORPHEO)/Behavioural/Makefile.Selftest -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/SelfTest/Makefile
r30 r20 24 24 25 25 include ../Makefile.deps 26 include $(DIR_MORPHEO)/Behavioural/Makefile. flags26 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 27 27 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 28 28 include $(DIR_MORPHEO)/Behavioural/Makefile.Selftest -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/Makefile
r30 r20 8 8 9 9 #-----[ Directory ]---------------------------------------- 10 DIR_COMPONENT = . 11 include $(DIR_COMPONENT)/Makefile.defs 10 DIR_MORPHEO = ../../../../../.. 12 11 13 12 #-----[ Library ]------------------------------------------ … … 20 19 @$(MAKE) all_component 21 20 22 include $(DIR_MORPHEO)/Behavioural/Makefile. flags21 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 23 22 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 24 23 include $(DIR_MORPHEO)/Behavioural/Makefile.Component -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/SelfTest/Makefile
r30 r20 24 24 25 25 include ../Makefile.deps 26 include $(DIR_MORPHEO)/Behavioural/Makefile. flags26 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 27 27 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 28 28 include $(DIR_MORPHEO)/Behavioural/Makefile.Selftest -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Makefile
r30 r20 8 8 9 9 #-----[ Directory ]---------------------------------------- 10 DIR_COMPONENT = . 11 include $(DIR_COMPONENT)/Makefile.defs 10 DIR_MORPHEO = ../../../../.. 12 11 13 12 #-----[ Library ]------------------------------------------ … … 20 19 @$(MAKE) all_component 21 20 22 include $(DIR_MORPHEO)/Behavioural/Makefile. flags21 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 23 22 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 24 23 include $(DIR_MORPHEO)/Behavioural/Makefile.Component -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/Makefile
r30 r20 8 8 9 9 #-----[ Directory ]---------------------------------------- 10 DIR_COMPONENT = . 11 include $(DIR_COMPONENT)/Makefile.defs 10 DIR_MORPHEO = ../../../../../.. 12 11 13 12 #-----[ Library ]------------------------------------------ … … 20 19 @$(MAKE) all_component 21 20 22 include $(DIR_MORPHEO)/Behavioural/Makefile. flags21 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 23 22 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 24 23 include $(DIR_MORPHEO)/Behavioural/Makefile.Component -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest/Makefile
r30 r20 24 24 25 25 include ../Makefile.deps 26 include $(DIR_MORPHEO)/Behavioural/Makefile. flags26 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 27 27 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 28 28 include $(DIR_MORPHEO)/Behavioural/Makefile.Selftest -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/Makefile
r30 r20 24 24 25 25 include ../Makefile.deps 26 include $(DIR_MORPHEO)/Behavioural/Makefile. flags26 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 27 27 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 28 28 include $(DIR_MORPHEO)/Behavioural/Makefile.Selftest -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/Makefile
r30 r20 8 8 9 9 #-----[ Directory ]---------------------------------------- 10 DIR_COMPONENT = . 11 include $(DIR_COMPONENT)/Makefile.defs 10 DIR_MORPHEO = ../../../../../.. 12 11 13 12 #-----[ Library ]------------------------------------------ … … 20 19 @$(MAKE) all_component 21 20 22 include $(DIR_MORPHEO)/Behavioural/Makefile. flags21 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 23 22 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 24 23 include $(DIR_MORPHEO)/Behavioural/Makefile.Component -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/SelfTest/Makefile
r30 r20 24 24 25 25 include ../Makefile.deps 26 include $(DIR_MORPHEO)/Behavioural/Makefile. flags26 include $(DIR_MORPHEO)/Behavioural/Makefile.defs 27 27 include $(DIR_MORPHEO)/Behavioural/Makefile.Common 28 28 include $(DIR_MORPHEO)/Behavioural/Makefile.Selftest -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h
r30 r20 14 14 #include <iostream> 15 15 #include <list> 16 #include "Behavioural/include/Direction.h"17 16 #include "Include/ToString.h" 18 17 #include "Include/Debug.h" … … 22 21 namespace morpheo { 23 22 namespace behavioural { 23 24 typedef enum { IN, OUT, INOUT } direction_t; 24 25 25 26 string std_logic (uint32_t size); … … 44 45 // -----[ methods ]--------------------------------------------------- 45 46 public : Vhdl (string name); 46 public : 47 public : virtual ~Vhdl (); 47 48 48 49 public : void generate_file (void); -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/include/XML.h
r30 r20 40 40 public : bool singleton_end (void); 41 41 public : bool attribut (string name, string value); 42 public : bool insert_XML (XML xml );43 42 44 43 public : void generate_file (void); -
/trunk/IPs/systemC/processor/Morpheo/Behavioural/mkf.info
r30 r20 16 16 # build src directory content 17 17 #target_dep all Generic/Counter/SelfTest 18 target_dep all Generic/RegisterFile/ RegisterFile_Monolithic/SelfTest18 target_dep all Generic/RegisterFile/SelfTest 19 19 #target_dep all Generic/Shifter/SelfTest 20 20 target_dep all Generic/Select/Priority_Fixed/SelfTest -
/trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/common/bibliographie.bib
r30 r20 1214 1214 @article{2000_barroso, 1215 1215 title={{Piranha: a scalable architecture based on single-chip multiprocessing}}, 1216 author={Barroso, L.A. and al.},1216 author={Barroso, L.A. and Gharachorloo, K. and McNamara, R. and Nowatzyk, A. and Qadeer, S. and Sano, B. and Smith, S. and Stets, R. and Verghese, B.}, 1217 1217 journal={Proceedings of the 27th annual international symposium on Computer architecture}, 1218 1218 pages={282--293}, -
/trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/fr/root.tex
r30 r20 1 \begin{abstract} 2 Dans ce document nous allons étudier l'incidence du partage par les contextes matériels d'un processeur, de ces caches de niveau 1, de sa partie opérative et de sa partie exécutive. 3 Il s'agit d'une étude de performance, en terme d'exécution, utilisant les benchmarks SPECINT2000. 4 Nous montrons que le partage de la partie exécutive n'a que peu d'incidence sur les performances, alors que le partage des caches fait perdre 10\% de performances et que le partage de la partie opérative fait tomber les performances d'un facteur de 2,7 entre un CMP de degré 4 et un SMT de même degré. 5 6 \end{abstract} 7 8 %------------------------------------------------------------------------- 9 \Section{Introduction} 10 11 De nos jours, la capacité d'intégration augmente. 12 Un concepteur possède un ``tas'' de transistors toujours plus grand à sa disposition. 13 L'objectif des vingts dernières années était d'avoir un processeur monolithique pouvant extraire des programmes le plus d'ILP (Instruction Level Parallelism) possible. 14 Les études de David W. Wall \cite{1991_wall} montre que l'ILP moyen dans un programme est de 3-5 instructions. 15 Les mono-processeurs de la fin du XX ème siècles comme le MipsR10000 \cite{1996_yeager}, l'Alpha 21264 \cite{1998_kessler}, le Pentium 4 \cite{2001_hinton} ou encore l'Itanium 1 et 2 d'Intel (\cite{2000_sharangpani}, \cite{2003_mcnairy}) exploitent tous fortement l'ILP. 16 17 Dans le même laps de temps des systèmes CMP (Chip Multi Processors) firent leur apparition. 18 De telles puces peuvent exécuter plusieurs tâches simultanément. 19 Ces CMP exploitent le TLP (Thread Level Parallelism). 20 Dans cette catégorie nous pouvons citer le piranha de Compaq \cite{2000_barroso}, l'Hydra de Stanford \cite{2000_hammond}. 21 On peut également citer le Power4 \cite{2002_tendler} ou l'Alpha 21364 \cite{2002_mukherjee} qui sont des processeurs monolithiques mais conçus pour être intégrés dans un environnement multiprocesseur. 22 23 L'exploitation de l'ILP de manière aggressive, (prédiction de branchement, lancement désynchronisé) entraine une sous exploitation des ressources internes des processeurs. 24 Une technique consiste en l'éxecution de plusieurs contextes par coeur de processeur en exploitant le TLP. 25 Ceci est la technique du Multi-threading et de sa principale variante le SMT (Simultaneous multi threading). 26 C'est l'objet des travaux de recherches de l'équipe de Tullsen \cite{1996_tullsen}, \cite{1998_tullsen}. 27 Pour un ajout minime en surface (une duplication de quelques registres d'état, ajout de multiplexeurs pour sélectionner un contexte... ), nous pouvons avoir des processeurs mono-coeur multi-thread. 28 Cette technique est exploitée dans le Pentium 4 Hyper-Threading d'Intel \cite{2003_koufaty} (ajout de 5\% en surface pour un gain de performance de 30\%). 29 30 Il y a deux grands axes de recherches : 31 \begin{enumerate} 32 \item le CMP où chaque thread s'execute sur un coeur spécifique. 33 L'intégralité des ressources d'un coeur est mit à la disposition d'un thread. 34 Les ressources internes du coeur sont dédiées à un thread. 35 36 \item le SMT où tous les threads s'éxecutent dans un unique coeur. 37 Tous les threads entrent en compétition pour l'obtention des ressources d'un coeur. 38 Les ressources internes du coeur sont partagées entre plusieurs threads 39 \end{enumerate} 40 Entre ces deux axes, il y a une multitude de variation du degré de partage des ressources entre les tâches. 41 Ceci a pour conséquence l'émergence de CMP de SMT (plusieurs coeurs multi contexte). 42 Le POWER 5 \cite{2004_kalla} est un bi-coeurs où chaque coeur est SMT de degré 2. 43 De même pour le montecito d'Intel \cite{2005_mcnairy}. 44 Alors que le Niagara de Sun intègre 8 coeurs de CMT (Corse Grain Multi Threading) de degré 4 \cite{2005_kongetira}. 45 46 L'objectif de ce papier est d'analyser les performances d'exécution entre plusieurs partages des ressources d'un processeur. 47 Pour cela, nous allons voir dans la section \ref{experimentations} les expérimentations que nous avons réalisées, ainsi que celles qui ont déjà été effectuées. 48 Dans la section \ref{methodologie} nous allons montrer nos hypothèses de travail. 49 Enfin une section où nous allons interpréter les résultats. 50 51 %------------------------------------------------------------------------- 52 \Section{Expérimentations}\label{experimentations} 53 Le SMT est une solution faible-coût pour obtenir un processeur MT (multi-thread). 54 Les ressources sont intégralement partagées, dans le cas où il n'y a qu'un seul thread à exécuter, ce dernier pourra utiliser l'intégralité des ressources du processeur. 55 56 Malheureusement cette solution à deux problèmes importants. 57 58 Le premier est que la rapidité d'exécution d'un thread dépend des autres threads. 59 Ceci est dut à la compétition entre les threads pour obtenir les ressources. 60 Par exemple si tous les threads font des accès mémoires fréquents, l'unité mémoire va rapidement saturer. 61 62 Le deuxième problème est la pollution des ressources partagées. 63 Les meilleurs exemples sont les caches et le Buffer des destinations de branchement (BTB). 64 La gestion du SMT peut être gérer de manière très simple en concaténant le numéro du thread l'adresse de l'instruction ou de la donnée. 65 Dans ce cas, le cache peut évincer des lignes très utiles d'un thread au profit de lignes d'autres threads. 66 %De plus les actions comme le prefetch ou la prédiction de branchement risque de priver des threads de lignes utiles contre une hypothétique ligne utile pour le thread bénéficiaire. 67 68 Nous allons faire varier le degré de partage des ressources. 69 Des travaux équivalents ont été réalisés. 70 Dans \cite{2004_dolbeau}, ils étudient l'influence du partage des unités à latence longue (multiplication, division...), du prédicteur de branchement, ainsi que des caches Instructions et Données. 71 Pour ce faire, ils ont implémentés l'architecture {\bf CASH} (CMP And SMT Hybrid) qui consiste en 4 coeurs ce partageant les ressources cités. 72 Dans un autre article, \cite{2004_kumar}, il y a une étude en terme de performance d'exécution mais également en terme de surface. 73 Les blocs concernés sont les unités flottantes, les caches de premiers niveaux, et enfin les ports du crossbar reliant les Caches à la mémoire. 74 Ici l'équipe de Tullsen à validée leurs hypothèses sur un système à 8 coeurs. 75 Le partage des ressources ce fait entre deux coeurs voisins. 76 77 Leurs résultats ainsi que ceux que nous obtenons sont compatibles entre eux. 78 79 Notre approche consiste à tester l'incidence du partage des caches, des Unités d'exécutions et de la partie opérative. 80 81 Nous nommons les partages comme suit : 82 \begin{description} 83 \item[Cluster :] Les clusters ce partage les caches de niveaux 2 et les unités d'exécutions. 84 \item[Unité de lancement :] Les unités de lancement ce partage les ports des caches de niveaux 1 et les unités d'exécutions. 85 \item[Contexte :] Les contextes se partagent l'accès au décodeur, au Icache et au prédicteur de branchement. 86 \end{description} 87 88 L'expérimentation ce fait avec le générateur de processeur Morpheo (acronyme de ``Multi ORganisation for a Processor HEterogeneous and Open''). 89 Une vue d'ensemble de l'architecture résultante est donnée dans la figure \ref{MORPHEO_overview}. 90 91 \begin{figure}[h] 92 \begin{center} 93 \resizebox{8cm}{!}{ 94 \includegraphics{\dirschema/MORPHEO_overview.eps}} 95 \caption{\label{MORPHEO_overview}MORPHEO - Vue d'ensemble} 96 \end{center} 97 \end{figure} 98 99 Notre allons analyser l'incidence du partage des ressources au niveau Cluster, UL et Contexte dans un système à 4 Threads, pouvant lancer à chaque cycle 8 instructions. 100 Trois tableaux résument les caractéristiques communes de chaque instance ainsi que les paramètres spécifiques pour les configurations avec 1,2 et 4 coeurs. 101 (nous définissons un coeur étant équivalent à une UL). 102 Le troisième tableau résume le système mémoire. 103 104 \begin{table}[h] 105 \begin{center} 106 \begin{tabular}{|l|c|} 107 \hline 108 Unité d'exécutions & 8 \\ 109 Profondeur des Stations de Réservations & 4 \\ 110 Nombre de branchements spéculés & 8 \\ 111 Return Address Stack & 16 \\ 112 Réseau de by-pass & Complet \\ 113 Nombre de port de lecture & 12 \\ 114 Nombre de port d'écriture & 8 \\ 115 \hline 116 \end{tabular} 117 \end{center} 118 \caption{Caractéristiques communes} 119 \end{table} 120 121 \begin{table}[h] 122 \begin{center} 123 \begin{tabular}{|l|ccc|} 124 \hline 125 & 1 coeur & 2 coeurs & 4 coeurs \\ 126 \hline 127 Largeur du pipeline & 8 & 4 & 2 \\ 128 Taille-Ifetch\_queue & 8 & 4 & 2 \\ 129 Taille-Issue queue & 32 & 16 & 8 \\ 130 Taille-ReOrder Buffer & 128 & 64 & 32 \\ 131 Taille-Autres files & 16 & 8 & 4 \\ 132 Largeur des fenêtres & 16 & 8 & 4 \\ 133 Branch Target Buffer & 256 & 128 & 64 \\ 134 Méta prédicteur & 16k & 8k & 4k \\ 135 Banc de Registres & 256 & 128 & 64 \\ 136 \hline 137 \end{tabular} 138 \end{center} 139 \caption{Caractéristiques spécifiques} 140 \end{table} 141 142 \begin{table}[h] 143 144 \begin{center} 145 \begin{tabular}{|l|cc|} 146 \hline 147 & L1 & L2 \\ 148 & I/D séparé & unifié \\ 149 \hline 150 Taille & 8 ko \footnote{divisé par le nombre de cluster} & 2 Mo \\ 151 Nombre de lignes & 128 \footnote{divisé par le nombre de cluster} & 16k \\ 152 Nombre de mots/ligne & 16 & 32 \\ 153 Associativité & 4 voies & 4 voies \\ 154 Latence - Hit & 2 cycles & 6 cycles \\ 155 Pénalités - Miss & 4 cycles & 100 cycles \\ 156 \hline 157 \end{tabular} 158 \end{center} 159 \caption{Caractéristiques du système mémoire} 160 \end{table} 161 162 %(Le nombre de lignes du premier niveau de cache est divisé par le nombre de cluster). 163 164 165 %------------------------------------------------------------------------- 166 \Section{Méthodologie}\label{methodologie} 167 168 \subSection{Charge de travails} 169 170 Dans un premier temps, nous avons sélectionné 6 benchmarks parmi les SPECINT2000 (164.gzip, 175.vpr, 181.mcf, 255.vortex, 256.bzip2, 300.twolf). 171 %Nous ne les avons pas tout sélectionnés afin de ne pas avoir trop de simulations à effectuer et car tous les benchmarks ne fonctionnes pas (problème de compatibilité avec gcc 4 et avec notre modèle). 172 173 Chaque archtecture est soumise à une charge de travails composée de 15 simulations (Le nombre de simulations est décrit par la combinaison $C_{nb\_benchmarks}^{nb\_threads}$). 174 175 Pour les librairies standard (libc et libm) ainsi que les fonctions bas niveaux (read, write, open, close ...) qu'un système d'exploitation se doit d'offrir, nous utilisons la librairie {\it Newlib}. 176 177 \subSection{Simulation} 178 179 Pour les simulations, nous avons pris 14 instances de notre modèle. 180 Elles sont déterminées par le nombre de cluster (A), le nombre d'ULs de chaque cluster (B) et le nombre de contexte de chaque UL (C). 181 De plus chaque UL n'a accès qu'a un sous-ensemble distinct d'ALUs. 182 Ce nombre définit la taille du groupe (D). 183 Nous nommons une instance X$E$\_$A$\_$B$\_$C$-$D$ avec E=A*B*C. 184 185 %Le tableau suivant récapitules toutes les instances que nous avons sélectionnées. 186 187 % 188 %\begin{table}[h] 189 %\begin{center} 190 %\begin{tabular}{ccccc} 191 %Nom & Cluster & UL & Contexte & Taille groupe d'ALUs\\ 192 %X4-1\_1\_4-8 & 1 & 1 & 4 & 8\\ 193 %X4-1\_2\_2-8 & 1 & 2 & 2 & 8\\ 194 %X4-1\_2\_2-4 & 1 & 2 & 2 & 4\\ 195 %X4-1\_4\_1-8 & 1 & 4 & 1 & 8\\ 196 %X4-1\_4\_1-2 & 1 & 4 & 1 & 2\\ 197 %X4-2\_1\_2-8 & 2 & 1 & 2 & 8\\ 198 %X4-2\_1\_2-4 & 2 & 1 & 2 & 4\\ 199 %X4-2\_2\_1-8 & 2 & 2 & 1 & 8\\ 200 %X4-2\_2\_1-4 & 2 & 2 & 1 & 4\\ 201 %X4-2\_2\_1-2 & 2 & 2 & 1 & 2\\ 202 %X4-4\_1\_1-8 & 4 & 1 & 1 & 8\\ 203 %X4-4\_1\_1-4 & 4 & 1 & 1 & 4\\ 204 %X4-4\_1\_1-2 & 4 & 1 & 1 & 2\\ 205 %\end{tabular} 206 %\end{center} 207 % \caption{Instances sélectionnées} 208 %\end{table} 209 210 Chaque simulation ce fait sur 110 millions de cycles. 211 Les 10 premiers millions sont ignorés afin de chauffer les caches et les unités de prédictions. 212 Pour chaque instance, nous prenons le nombre d'instructions exécutées des 15 simulations. 213 Ce résultat est comparé à la moyenne des 6 benchmarks exécutés dans la version Single Thread du processeur (exécution séquentielle des 6 benchmarks avec la même instance). 214 215 Nous pouvons remarquer que les instances ne vont pas être comparées avec une instance de référence, mais seront comparées avec l'accéllération de la version MT par rapport à la version ST. 216 Ceci à la bonne propriété d'avoir une borne maximale à l'accélération qui est le nombre de thread (ici 4). 217 218 %------------------------------------------------------------------------- 219 \Section{Résultat}\label{resultat} 220 221 La simulation nous fournit le graphe \ref{simulation_all} 222 223 \begin{figure}[h] 224 \begin{center} 225 \resizebox{8cm}{!}{ 226 \includegraphics{\dirschema/simulation_all}} 227 \label{simulation_all} 228 \end{center} 229 \end{figure} 230 231 Première constatation simple : plus on dédit les ressources, plus on approche de l'accélération maximale. 232 La version du X4\_4\_1\_1-2 ne partage que les caches de niveau L2, et est donc une version CMP pure, atteint une accélération de 3,92. 233 Alors que la version X4-1\_1\_4-8 qui est un SMT pur à une accélération de 1,46. 234 235 En terme de performance, il y a une accélération de 2,7 entre la version CMP et la version SMT. 236 Attention dans l'interprétation des résultats, car ici nous ne comparons qu'en terme de performances l'incidence du partage des ressources matérielles. 237 Pour que l'étude soit complète, nous devons aussi ajouter l'augmentation de la surface entre la version MT et la version ST. 238 Ensuite il faudrait comparer le rapport entre l'augmentation de la performance sur le coût matériel. 239 Nous pouvons néanmoins faire une étude abstraite du coût en surface. 240 Le rapport de surface entre la version MT et ST de l'instance X4-4\_1\_1-2 est de 4. 241 Ceci donne un rapport performance/surface pour la version CMP de degré 4 de 0,98. 242 Pour le SMT, nous réutilisons les estimations d'Intel pour le Pentium 4 HT \cite{2003_koufaty}. 243 Trois contextes de plus nous amène à 15\% de surface en plus. 244 Ce qui donne un rapport de surface entre la version MT et ST de l'instance X4\_1\_1\_4-8 de 1,15. 245 Dans ce cas, le rapport performance/surface pour la version SMT de degré 4 nous donne 1,27. 246 Ce qui donne l'avantage à une implémentation SMT. 247 248 Pour le partage du cache, nous analyserons les 3 instances suivantes : 249 \begin{itemize} 250 \item X4-4\_1\_1-2 avec 4 Icaches et Dcaches L1 de 2k chacun et accessible par un seul thread . L'accélération de 3,92. 251 \item X4-2\_2\_1-2 avec 2 Icaches et Dcaches L1 de 4k chacun et accessible par deux threads. L'accélération de 3,63. 252 \item X4-1\_4\_1-2 avec 1 Icache et Dcache L1 de 8k chacun et accessible par quatre threads. L'accélération de 3,27. 253 \end{itemize} 254 255 Le partage du cache induit des conflits d'accès au port. 256 Dans le premier cas, il y a 4 ports d'accès au Icache de largeur de deux instructions. 257 Alors que dans le troisième cas, il n'y a qu'un port de largeur de 8 instructions. 258 Les paquets de 8 instructions permettent de mieux exploiter l'ILP mais moins le TLP : chaque contexte accède au cache tous les 4 cycles. 259 Nous notons aussi que le partage du cache entraîne un effet de bord qui est le pourrissement du contenu du cache par les autres threads. 260 Ainsi qu'un allongement du temps de réponses des échecs d'accès au cache du au plus grand nombre de miss et à la plus grande longueur des lignes. 261 Le cache, optimisé pour tirer parti de la localité spatiale et temporelle d'un flot d'instructions ou de données se retrouve maintenant confrontés à plusieurs flots. 262 263 Pour le partage de la partie exécutive, nous pouvons observer les instances suivantes : 264 \begin{itemize} 265 \item X4-2\_2\_1-2 où il y a 4 groupes de 2 ALUs et chacune est accessible par 1 Threads. L'accélération est de 3,63. 266 \item X4-2\_2\_1-4 où il y a 2 groupes de 4 ALUs et chacune est accessible par 2 Threads. L'accélération est de 3,41. 267 \item X4-2\_2\_1-8 où il y a 1 groupe de 8 ALUs et est accessible par 4 Threads. L'accélération est de 3,38. 268 \end{itemize} 269 270 Le partage des unités d'exécutions n'influe que légèrement sur les performances. 271 Les ressources sont mieux utilisées. 272 Or il y a une augmentation de la sensibilité du aux erreurs de routages (envoie vers une ALUs surchargés alors que d'autres ALUs sont en famine). 273 Ceci est également du à notre politique de routage actuel qui est un round robin classique. 274 Notons que dans le cas où il y aurait plus d'un contexte par coeur, le partage des unités d'exécutions est favorable. 275 Par exemple X4-1\_2\_2-8 et X4-1\_2\_2-4 qui ont une accélération de 2,37 alors que les instances X4-2\_1\_2-8 et X4-2\_1\_2-4 ont respectivement une accélération de 2,51 et 2,4. 276 Ceci est la conséquece d'une meilleur exploitation du TLP. 277 La fenêtre de lancement est mieux utilisé et le réseau de routage à plus d'instructions à sa disposition. 278 279 % Il y a aussi une hétérogénéité des instructions longues. 280 281 Pour le partage opérative, voyons les instances suivantes : 282 \begin{itemize} 283 \item X4-1\_1\_4-8, 1 cluster possédant chacun 1 UL avec 4 contextes chacun. L'accélération est de 1,46. 284 \item X4-1\_2\_2-8, 1 cluster possédant chacun 2 ULs avec 2 contextes chacun. L'accélération est de 2,37. 285 \item X4-1\_4\_1-8, 1 cluster possédant chacun 4 ULs avec 1 contexte chacun. L'accélération est de 2,94. 286 \item X4-2\_1\_2-8, 2 clusters possédant chacun 1 UL avec 2 contextes chacun. L'accélération est de 2,51. 287 \item X4-2\_2\_1-8, 2 clusters possédant chacun 2 ULs avec 1 contexte chacun. L'accélération est de 3,38. 288 \item X4-4\_1\_1-8, 4 clusters possédant chacun 1 UL avec 1 contexte chacun. L'accélération est de 3,94. 289 \end{itemize} 290 291 Le partage de la partie opérative donne des résultats très disparates et demande une analyse plus poussée des résultats. 292 Nous pouvons néanmoins dire qu'il y a une augmentation de la sensibilité des instructions de synchronisation et d'accès aux registres spéciaux (nous imposons qu'avant d'accèder au registre spéciaux, le pipeline doit être vide). 293 Il y a également une augmentation des miss de spéculations du au partage du prédicteur de branchement. 294 Ceci implique qu'il y a une augmentation des instructions inutiles dans le pipeline. 295 Elles représentent 6,12\% des instructions dans X4-1\_1\_4-8, alors qu'elles ne représentent que 2,17\% dans l'instance X4-4\_1\_1-8. 296 Ceci est aussi du à la largeur du pipeline et donc à la sous exploitation de L'ILP. 297 Lors du décodage, nous choisissons de manière round robin la fetch queue contenant un paquet. 298 Dans l'instance X4-4\_1\_1-8, 4 décodeurs décodent chacun en moyenne 1,63 instructions sur des paquets de 2 instructions (soit un total de 6,52 instructions), alors que dans l'instance X4-1\_1\_4-8, 1 décodeur prend un paquet de 8 instructions et décode en moyenne 3,7 instructions. 299 La cause venant à des paquets d'instructions devant être alignés et à la présence de branchements. 300 301 %------------------------------------------------------------------------- 302 \Section{Conclusion} 303 304 Cette étude à démontrer un fait déjà acquis, que l'accélération entre la version MT et la version ST d'un processeur diminue avec l'augmentation du partage des ressources. 305 Notre modèle de processeur étant encore en cours de développement, nous nous destinons à fournir un modèle VHDL synthétisable. 306 Ainsi la prochaine étude portera sur le coût surfacique du partage des ressources matérielles et ainsi déterminer quel degré de partage apporte le meilleur rapport performance/surface. 307 1 \input{\dirroot/01_abstract} 2 \input{\dirroot/02_introduction} 3 \input{\dirroot/03_experimentation.tex} 4 \input{\dirroot/04_methodologie.tex} 5 \input{\dirroot/05_resultat.tex} 6 \input{\dirroot/06_conclusion.tex} 308 7 \bibliography{\dircommon/bibliographie} -
/trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/presentation-internal_seminary_overview/fr/root.tex
r30 r20 1 \section{ Motivations}1 \section{Besoins} 2 2 3 3 \ContentsCurrent 4 4 5 \slidetitle{Motivations} 6 { 7 Sécurité du hardware : 8 \begin{description} 9 \item[Ancienne tendance :] IPs (Intellectual Propritie) fermées labelisés sécuritaires. 10 \item[Nouvelle tendance :] Ouverture des IPs, intégration de System On Chip (SOC) 11 \end{description} 12 } 13 { 5 \slidetitle{Besoins} 6 {Besoins pour les processeurs embarquées : 14 7 15 } 16 17 18 19 %\section{Besoins} 8 \begin{itemize} 9 \item Maîtrise du système 10 \item Souplesse 11 \item Performance 12 \end{itemize} 13 } 14 { 15 Où : téléphone portable, baladeur mp3/vidéo, automobile ... 16 17 \begin{description} 18 \item[Maitrise du système :] Les processeurs généralistes sont utilisés dans un vaste échantillon d'application. Ceci touche également la sécurité. 19 \item[Souplesse :] Pour un concepteur de système embarqués : bien dimensionner son système 20 \item[Performance :] Application cible de plus en plus gourmande en ressources : beaucoup de threads avec des impératifs de rapidité. 21 \end{description} 22 } 23 24 \subsection{Maîtrise du système} 25 \slidetitle{Besoin de la Maîtrise du système} 26 { 27 {\bf Plate-forme de confiance totale} 28 29 \begin{itemize} 30 \item Projet Open 31 \item ISA Open 32 \item Instructions customisables 33 \end{itemize} 34 } 35 { 36 Morpheo s'inscrit dans le cadre du projet plate-forme de confiance totale. 37 38 Instructions customisables : possibilité à l'utilisateur de rajouter de nouvelles instructions. Comme par exemple pour le chiffrement ou le déchiffrement ... 39 % On doit supposer que la mémoire d'instruction et de donnée ce trouve en milieu accéssible par les pirates. Leur chiffrement en devient obligatoire. 20 40 % 21 %\ContentsCurrent 22 % 23 %\slidetitle{Besoins} 24 % {Besoins pour les processeurs embarquées : 41 % En hard dans le proc? cache? interconnect? I/O? 42 } 43 44 45 \subsection{Souplesse} 46 \slidetitle{Besoin de Souplesse} 47 { 48 {\bf Adapation aux besoins des concepteurs} 49 50 \begin{itemize} 51 \item Processeur hautement paramètrables 52 \item Ressources internes hétérogènes 53 \item FPGA 54 \end{itemize} 55 } 56 { 57 Souplesse : s'adapter aux besoins des concepteur de SoC. 58 59 \begin{description} 60 \item[Paramètrables :] Fournir un grand jeu de paramètres afin de satisfaire les contraintes du concepteur 61 \item[Hétérogènes :] En découle des paramètres 62 \item[FPGA :] Cible de + en + utilisé, Si mappage possible sur les ressources limités d'un FPGA, alors possible également sur un ASIC 63 \end{description} 64 } 65 66 \subsection{Performance} 67 \slidetitle{Besoin de Performance (1) - ILP vs TLP} 68 { 69 {\bf Exploitation des différentes formes de parallélisme} 70 71 Paquet d'instruction pouvant s'éxecuter en parallèle : 72 \begin{itemize} 73 \item {\it Intra flot} : exploitation de l'ILP\newline limitation intrasèque au soft (3-5 instructions) 74 \item {\it Inter flot} : exploitation du TLP \newline limitation intrasèque au système cible 75 \end{itemize} 76 } 77 { 78 \begin{itemize} 79 \item ILP : superscalaire, OutOfOrder, Spéculation 80 \item TLP : CMP, SMT 81 \end{itemize} 82 } 83 84 \slidetitle{Besoin de Performance (2) - CMP vs SMT} 85 { 86 \printgraph{GENERAL_type_of_multi_thread}{0.5} 87 88 % (schéma) 25 89 % 26 % \begin{itemize} 27 % \item Maîtrise du système 28 % \item Souplesse 29 % \item Performance 30 % \end{itemize} 31 % } 32 % { 33 % Où : téléphone portable, baladeur mp3/vidéo, automobile ... 34 % 35 % \begin{description} 36 % \item[Maitrise du système :] Les processeurs généralistes sont utilisés dans un vaste échantillon d'application. Ceci touche également la sécurité. 37 % \item[Souplesse :] Pour un concepteur de système embarqués : bien dimensionner son système 38 % \item[Performance :] Application cible de plus en plus gourmande en ressources : beaucoup de threads avec des impératifs de rapidité. 39 % \end{description} 40 % } 41 % 42 %\subsection{Maîtrise du système} 43 %\slidetitle{Besoin de la Maîtrise du système} 44 % { 45 % {\bf Plate-forme de confiance totale} 46 % 47 % \begin{itemize} 48 % \item Projet Open 49 % \item ISA Open 50 % \item Instructions customisables 51 % \end{itemize} 52 % } 53 % { 54 % Morpheo s'inscrit dans le cadre du projet plate-forme de confiance totale. 55 % 56 % Instructions customisables : possibilité à l'utilisateur de rajouter de nouvelles instructions. Comme par exemple pour le chiffrement ou le déchiffrement ... 57 %% On doit supposer que la mémoire d'instruction et de donnée ce trouve en milieu accéssible par les pirates. Leur chiffrement en devient obligatoire. 58 %% 59 %% En hard dans le proc? cache? interconnect? I/O? 60 % } 61 % 62 % 63 %\subsection{Souplesse} 64 %\slidetitle{Besoin de Souplesse} 65 % { 66 % {\bf Adapation aux besoins des concepteurs} 67 % 68 % \begin{itemize} 69 % \item Processeur hautement paramètrables 70 % \item Ressources internes hétérogènes 71 % \item FPGA 72 % \end{itemize} 73 % } 74 % { 75 % Souplesse : s'adapter aux besoins des concepteur de SoC. 76 % 77 % \begin{description} 78 % \item[Paramètrables :] Fournir un grand jeu de paramètres afin de satisfaire les contraintes du concepteur 79 % \item[Hétérogènes :] En découle des paramètres 80 % \item[FPGA :] Cible de + en + utilisé, Si mappage possible sur les ressources limités d'un FPGA, alors possible également sur un ASIC 81 % \end{description} 82 % } 83 % 84 %\subsection{Performance} 85 %\slidetitle{Besoin de Performance (1) - ILP vs TLP} 86 % { 87 % {\bf Exploitation des différentes formes de parallélisme} 88 % 89 % Paquet d'instruction pouvant s'éxecuter en parallèle : 90 % \begin{itemize} 91 % \item {\it Intra flot} : exploitation de l'ILP\newline limitation intrasèque au soft (3-5 instructions) 92 % \item {\it Inter flot} : exploitation du TLP \newline limitation intrasèque au système cible 93 % \end{itemize} 94 % } 95 % { 96 % \begin{itemize} 97 % \item ILP : superscalaire, OutOfOrder, Spéculation 98 % \item TLP : CMP, SMT 99 % \end{itemize} 100 % } 101 % 102 %\slidetitle{Besoin de Performance (2) - CMP vs SMT} 103 % { 104 % \printgraph{GENERAL_type_of_multi_thread}{0.5} 105 % 106 %% (schéma) 107 %% 108 %% Comparaison théorique de 5 types d'architectures : 109 %% ||Mono Coeur ||Mono Contexte ||Largeur infini||Idéal || 110 %% ||Mono Coeur ||Mono Contexte ||Largeur 4 ||Monolithique|| 111 %% ||Multi Coeur d'ordre 4||Mono Contexte ||Largeur 1 ||CMP || 112 %% ||Mono Coeur ||Multi Contexte d'ordre 4||Largeur 4 ||SMT || 113 %% ||Multi coeur d'ordre 2||Multi Contexte d'ordre 2||Largeur 2 ||CMP de SMT || 114 % } 115 % { 116 % \begin{itemize} 117 % \item A et B : 17 instructions en 7 UT idéale 118 % \item (1) : 14 UT 119 % \item (2) : 17 UT, 34 slot vide, occupation 50\% 120 % \item (3) : 12 UT, 14 slot vide, occupation 70\% 121 % \item (4) : 11 UT, 10 slot vide, occupation 77\% 122 % \end{itemize} 123 % } 124 %\slidetitle{Besoin de Performance (3) - Entre le CMP et le SMT} 125 % { 126 % \begin{description} 127 % \item[CMP :] L'intégralité des ressources d'un coeur sont dédiées à un contexte. 128 % \item[SMT :] L'intégralité des ressources d'un coeur sont partagées entre tous les contextes. 129 % \item[Hybride :] Multitude de possibilité de partage des ressources internes.\\ 130 % Une ressource est soit dédiée à un contexte soit partagée entre un certain nombre de contextes. 131 % \end{description} 132 % } 133 % { 134 % Définir ce qu'est une ressource : ALU, predicteur de branchement, cache ... 135 % } 136 % 137 % 138 %\section{Solution} 139 %\ContentsCurrent 140 %\subsection{Initiatives actuelles} 141 %\slidetitle{Initiatives actuelles} 142 % { 143 % Tous les processeurs sont des RISC scalaires. 144 % 145 % \begin{description} 146 % \item[OpenRISC 1200 :] 32 bits, 5 étages. Jusqu'à 8 contextes. 147 % \item[Leon 2 :] 32 bits, 5 étages. 148 % \item[Leon 3 :] Leon 2 en 7 étages. 149 % \item[OpenSparcS1 :] 1 coeur 64bits, 6 étages et CMT 4. 150 % \item[OpenSparcT1 :] OpenSparcS1 avec 8 coeurs. Version OpenSource du Niagara. 151 % \item[Micro32 :] 32 bits, 6 étages. 152 % \item[OpenFire :] 32 bits, 3 étages. Dérivés du MicroBlaze 153 % \item[aeMB :] 32 bits, 3 étages. Dérivés du MicroBlaze 154 % \end{description} 155 % } 156 % { 157 % \begin{description} 158 % \item[OpenRISC 1200 :] Présence icache, dcache, immu, dmmu. Taille des caches, des opérandes, du banc de registres. Matériel spécifique : div, rotate, mul, mac. 159 % \item[Leon 2 et 3 :] Présence de div, mul, mac, floating point. Taille du banc de registres . Nombre de load delai. Configuration avancé du cache et de la MMU (fetch, decod, execute, memory, write) (fetch, decod, register access, execute, memory, exception, write) 160 % \item[OpenSparc :] Présence de la Stream Processing Unit (cryptographie), 1 seul thread par coeur. 161 % \item[Micro32 :] Présence icache, dcache, debug. Taille des caches. Matériel spécifique : div, rotate, mul pipeline, extension de signes. 162 % \item[OpenFire :] 3 étages (Fetch, Decod, Execute). Faiblement configurable (largeur des données, espace d'addressage, presence de mul et de cmp). Aucun support de caches 163 % \item[aeMB :] 3 étages (Fetch, Decod, Execute). Support de caches. Pas configurable (Juste la largeur de l'espace d'addressage) 164 % \end{description} 165 % } 166 % 167 %\slide { 168 % \printgraph{GENERAL_Art_of_State-Comparaison}{0.8} 169 % } 170 % { 171 % } 172 %\subsection{Solution proposée} 173 %\slidetitle{Solution proposée} 174 % { 175 % \begin{itemize} 176 % \item Partir d'une micro-architecture HighPerf. 177 % \item Ajout de la gestion du multi-thread. 178 % \item Rendre paramétrable les ressources internes. 179 % \item Mappage des instances de ce générateur de processeur sur les ressources limitées d'un FPGA. 180 % \end{itemize} 181 % } 182 % { 183 % Pentium 4, MipsR10000, Power5 184 % } 185 % 186 %\subsection{Métrique} 187 %\slidetitle{Métrique} 188 % { 189 % \begin{itemize} 190 % \item Obtenir le meilleur compromis Performance / Complexité. 191 % \begin{itemize} 192 % \item Performance : nombre de cycles nécessaire pour éxecuter les Benchmarks. 193 % \item Compléxité : surface occupée du FPGA. 194 % \end{itemize} 195 % \item Obtenir le meilleur partage des ressources entre les contextes matériels. (Gain Performance / Coût surface). 196 % \begin{itemize} 197 % \item Gain en performance : rapport entre la performance MT sur la performance ST. 198 % \item Coût en surface : rapport entre la surface MT sur la surface ST. 199 % \end{itemize} 200 % \end{itemize} 201 % } 202 % { 203 % benchmark : SPECINT2k, Dhrystone 204 % 205 % FPGA : virtex5LX 330 206 % } 207 % 208 %\section{Morpheo} 209 %\ContentsCurrent 210 % 211 %\subsection{Micro Architecture} 212 %\slidetitle{Micro Architecture : Overview} 213 % { 214 % \printgraph{MORPHEO_micro_architecture-overview}{0.48} 215 % } 216 % { 217 % 3 grandes parties : 218 % \begin{description} 219 % \item[Front end :] Amène des paquets d'instructions en séquence, et les décodes. Calcules les addresses suivantes (spéculation) et maintiens l'état des threads (idle, wait, run ...) 220 % \item[Out Of Order Engine :] Renome les registres (annulations des dépendances RAW, WAW et WAR). Re Order Buffer : mettre à jour l'état du contexte dans l'ordre d'arrivé des threads. 221 % \item[Execution Loop :] Boucle ``Read, execute, Write''. Ainsi que les bypass. Instructions peuvent ce lancer dans le désordres. 222 % \end{description} 223 % } 224 % 225 %\slidetitle{Micro Architecture : Front end} 226 % { 227 % \printgraph{MORPHEO_micro_architecture-front_end}{0.7} 228 % } 229 % { 230 % } 231 % 232 %\slidetitle{Micro Architecture : Out Of Order Engine} 233 % { 234 % \printgraph{MORPHEO_micro_architecture-out_of_order_engine}{0.7} 235 % } 236 % { 237 % } 238 % 239 %\slidetitle{Micro Architecture : Execution Loop} 240 % { 241 % \printgraph{MORPHEO_micro_architecture-execute_loop}{0.7} 242 % } 243 % { 244 % } 245 % 246 %\subsection{Méthodologie} 247 %\slidetitle{Service proposé} 248 % { 249 % \printgraph{MORPHEO_service}{0.75} 250 % } 251 % { 252 % libMorpheo : 253 % \begin{itemize} 254 % \item Simulation systemC 255 % \begin{itemize} 256 % \item TestBench Vhdl 257 % \item Statistiques lors de la simulation 258 % \end{itemize} 259 % \item Vhdl : synthétisable sur FPGA 260 % \item Positions: Point d'entrée d'un outil de visualisation architectural (Stage M1) 261 % \end{itemize} 262 % } 263 % 264 %\slidetitle{Méthodologie - Boucle d'Iteration} 265 % { 266 % \printgraph{MORPHEO_methodologie}{0.3} 267 % } 268 % { 269 % \begin{enumerate} 270 % \item SystemC 271 % \begin{enumerate} 272 % \item Ecriture du modèle systemC 273 % \item Ecriture d'un TestBench pour le systemc - goto 1.1 274 % \end{enumerate} 275 % \item VHDL 276 % \begin{enumerate} 277 % \item Ecriture du vhdl 278 % \item Validation de la stricte compatibilité entre le systemC et le Vhdl - goto 2.1 ou 1.1 279 % \end{enumerate} 280 % \item FPGA 281 % \begin{enumerate} 282 % \item Synthèse sur FPGA - goto 2.1, 1.1 283 % \item Mappage sur FPGA 284 % \end{enumerate} 285 % \end{enumerate} 286 % } 287 % 288 %\subsection{Perspective} 289 %\slidetitle{Comment remplir nos journées?} 290 % { 291 % Il "reste" à faire ... 292 % } 293 % { 294 % } 90 % Comparaison théorique de 5 types d'architectures : 91 % ||Mono Coeur ||Mono Contexte ||Largeur infini||Idéal || 92 % ||Mono Coeur ||Mono Contexte ||Largeur 4 ||Monolithique|| 93 % ||Multi Coeur d'ordre 4||Mono Contexte ||Largeur 1 ||CMP || 94 % ||Mono Coeur ||Multi Contexte d'ordre 4||Largeur 4 ||SMT || 95 % ||Multi coeur d'ordre 2||Multi Contexte d'ordre 2||Largeur 2 ||CMP de SMT || 96 } 97 { 98 \begin{itemize} 99 \item A et B : 17 instructions en 7 UT idéale 100 \item (1) : 14 UT 101 \item (2) : 17 UT, 34 slot vide, occupation 50\% 102 \item (3) : 12 UT, 14 slot vide, occupation 70\% 103 \item (4) : 11 UT, 10 slot vide, occupation 77\% 104 \end{itemize} 105 } 106 \slidetitle{Besoin de Performance (3) - Entre le CMP et le SMT} 107 { 108 \begin{description} 109 \item[CMP :] L'intégralité des ressources d'un coeur sont dédiées à un contexte. 110 \item[SMT :] L'intégralité des ressources d'un coeur sont partagées entre tous les contextes. 111 \item[Hybride :] Multitude de possibilité de partage des ressources internes.\\ 112 Une ressource est soit dédiée à un contexte soit partagée entre un certain nombre de contextes. 113 \end{description} 114 } 115 { 116 Définir ce qu'est une ressource : ALU, predicteur de branchement, cache ... 117 } 118 119 120 \section{Solution} 121 \ContentsCurrent 122 \subsection{Initiatives actuelles} 123 \slidetitle{Initiatives actuelles} 124 { 125 Tous les processeurs sont des RISC scalaires. 126 127 \begin{description} 128 \item[OpenRISC 1200 :] 32 bits, 5 étages. Jusqu'à 8 contextes. 129 \item[Leon 2 :] 32 bits, 5 étages. 130 \item[Leon 3 :] Leon 2 en 7 étages. 131 \item[OpenSparcS1 :] 1 coeur 64bits, 6 étages et CMT 4. 132 \item[OpenSparcT1 :] OpenSparcS1 avec 8 coeurs. Version OpenSource du Niagara. 133 \item[Micro32 :] 32 bits, 6 étages. 134 \item[OpenFire :] 32 bits, 3 étages. Dérivés du MicroBlaze 135 \item[aeMB :] 32 bits, 3 étages. Dérivés du MicroBlaze 136 \end{description} 137 } 138 { 139 \begin{description} 140 \item[OpenRISC 1200 :] Présence icache, dcache, immu, dmmu. Taille des caches, des opérandes, du banc de registres. Matériel spécifique : div, rotate, mul, mac. 141 \item[Leon 2 et 3 :] Présence de div, mul, mac, floating point. Taille du banc de registres . Nombre de load delai. Configuration avancé du cache et de la MMU (fetch, decod, execute, memory, write) (fetch, decod, register access, execute, memory, exception, write) 142 \item[OpenSparc :] Présence de la Stream Processing Unit (cryptographie), 1 seul thread par coeur. 143 \item[Micro32 :] Présence icache, dcache, debug. Taille des caches. Matériel spécifique : div, rotate, mul pipeline, extension de signes. 144 \item[OpenFire :] 3 étages (Fetch, Decod, Execute). Faiblement configurable (largeur des données, espace d'addressage, presence de mul et de cmp). Aucun support de caches 145 \item[aeMB :] 3 étages (Fetch, Decod, Execute). Support de caches. Pas configurable (Juste la largeur de l'espace d'addressage) 146 \end{description} 147 } 148 149 \slide { 150 \printgraph{GENERAL_Art_of_State-Comparaison}{0.8} 151 } 152 { 153 } 154 \subsection{Solution proposée} 155 \slidetitle{Solution proposée} 156 { 157 \begin{itemize} 158 \item Partir d'une micro-architecture HighPerf. 159 \item Ajout de la gestion du multi-thread. 160 \item Rendre paramétrable les ressources internes. 161 \item Mappage des instances de ce générateur de processeur sur les ressources limitées d'un FPGA. 162 \end{itemize} 163 } 164 { 165 Pentium 4, MipsR10000, Power5 166 } 167 168 \subsection{Métrique} 169 \slidetitle{Métrique} 170 { 171 \begin{itemize} 172 \item Obtenir le meilleur compromis Performance / Complexité. 173 \begin{itemize} 174 \item Performance : nombre de cycles nécessaire pour éxecuter les Benchmarks. 175 \item Compléxité : surface occupée du FPGA. 176 \end{itemize} 177 \item Obtenir le meilleur partage des ressources entre les contextes matériels. (Gain Performance / Coût surface). 178 \begin{itemize} 179 \item Gain en performance : rapport entre la performance MT sur la performance ST. 180 \item Coût en surface : rapport entre la surface MT sur la surface ST. 181 \end{itemize} 182 \end{itemize} 183 } 184 { 185 benchmark : SPECINT2k, Dhrystone 186 187 FPGA : virtex5LX 330 188 } 189 190 \section{Morpheo} 191 \ContentsCurrent 192 193 \subsection{Micro Architecture} 194 \slidetitle{Micro Architecture : Overview} 195 { 196 \printgraph{MORPHEO_micro_architecture-overview}{0.48} 197 } 198 { 199 3 grandes parties : 200 \begin{description} 201 \item[Front end :] Amène des paquets d'instructions en séquence, et les décodes. Calcules les addresses suivantes (spéculation) et maintiens l'état des threads (idle, wait, run ...) 202 \item[Out Of Order Engine :] Renome les registres (annulations des dépendances RAW, WAW et WAR). Re Order Buffer : mettre à jour l'état du contexte dans l'ordre d'arrivé des threads. 203 \item[Execution Loop :] Boucle ``Read, execute, Write''. Ainsi que les bypass. Instructions peuvent ce lancer dans le désordres. 204 \end{description} 205 } 206 207 \slidetitle{Micro Architecture : Front end} 208 { 209 \printgraph{MORPHEO_micro_architecture-front_end}{0.7} 210 } 211 { 212 } 213 214 \slidetitle{Micro Architecture : Out Of Order Engine} 215 { 216 \printgraph{MORPHEO_micro_architecture-out_of_order_engine}{0.7} 217 } 218 { 219 } 220 221 \slidetitle{Micro Architecture : Execution Loop} 222 { 223 \printgraph{MORPHEO_micro_architecture-execute_loop}{0.7} 224 } 225 { 226 } 227 228 \subsection{Méthodologie} 229 \slidetitle{Service proposé} 230 { 231 \printgraph{MORPHEO_service}{0.75} 232 } 233 { 234 libMorpheo : 235 \begin{itemize} 236 \item Simulation systemC 237 \begin{itemize} 238 \item TestBench Vhdl 239 \item Statistiques lors de la simulation 240 \end{itemize} 241 \item Vhdl : synthétisable sur FPGA 242 \item Positions: Point d'entrée d'un outil de visualisation architectural (Stage M1) 243 \end{itemize} 244 } 245 246 \slidetitle{Méthodologie - Boucle d'Iteration} 247 { 248 \printgraph{MORPHEO_methodologie}{0.3} 249 } 250 { 251 \begin{enumerate} 252 \item SystemC 253 \begin{enumerate} 254 \item Ecriture du modèle systemC 255 \item Ecriture d'un TestBench pour le systemc - goto 1.1 256 \end{enumerate} 257 \item VHDL 258 \begin{enumerate} 259 \item Ecriture du vhdl 260 \item Validation de la stricte compatibilité entre le systemC et le Vhdl - goto 2.1 ou 1.1 261 \end{enumerate} 262 \item FPGA 263 \begin{enumerate} 264 \item Synthèse sur FPGA - goto 2.1, 1.1 265 \item Mappage sur FPGA 266 \end{enumerate} 267 \end{enumerate} 268 } 269 270 \subsection{Perspective} 271 \slidetitle{Comment remplir nos journées?} 272 { 273 Il "reste" à faire ... 274 } 275 { 276 } 295 277 296 278 \slide{}{} -
/trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Graph/simulation_all.dat
r30 r20 1 1.46 # x04_w08-01_e08-01 X4-1_1_4-8 2 2.37 # x04_w08-04_e08-01 X4-1_2_2-8 3 2.37 # x04_w08-04_e08-07 X4-1_2_2-4 4 2.94 # x04_w08-07_e08-01 X4-1_4_1-8 5 3.27 # x04_w08-07_e08-15 X4-1_4_1-2 6 2.51 # x04_w08-08_e08-01 X4-2_1_2-8 7 2.4 # x04_w08-08_e08-07 X4-2_1_2-4 8 3.38 # x04_w08-11_e08-01 X4-2_2_1-8 9 3.41 # x04_w08-11_e08-07b X4-2_2_1-4 10 3.63 # x04_w08-11_e08-15 X4-2_2_1-2 11 3.94 # x04_w08-15_e08-01 X4-4_1_1-8 12 3.88 # x04_w08-15_e08-07 X4-4_1_1-4 13 3.92 # x04_w08-15_e08-15 X4-4_1_1-2 1 1.46 # x04_w08-01_e08-01 2 2.37 # x04_w08-04_e08-01 3 2.37 # x04_w08-04_e08-07 4 2.94 # x04_w08-07_e08-01 5 3.27 # x04_w08-07_e08-15 6 2.51 # x04_w08-08_e08-01 7 2.4 # x04_w08-08_e08-07 8 3.38 # x04_w08-11_e08-01 9 3.64 # x04_w08-11_e08-07a 10 3.41 # x04_w08-11_e08-07b 11 3.63 # x04_w08-11_e08-15 12 3.94 # x04_w08-15_e08-01 13 3.88 # x04_w08-15_e08-07 14 3.92 # x04_w08-15_e08-15 -
/trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Graph/simulation_all.p
r30 r20 16 16 set yrange [0:4] 17 17 18 set xtics rotate by -25 ('X4-1_1_4-8' 0 , \ 19 'X4-1_2_2-8' 1 , \ 20 'X4-1_2_2-4' 2 , \ 21 'X4-1_4_1-8' 3 , \ 22 'X4-1_4_1-2' 4 , \ 23 'X4-2_1_2-8' 5 , \ 24 'X4-2_1_2-4' 6 , \ 25 'X4-2_2_1-8' 7 , \ 26 'X4-2_2_1-4' 8 , \ 27 'X4-2_2_1-2' 9 , \ 28 'X4-4_1_1-8' 10, \ 29 'X4-4_1_1-4' 11, \ 30 'X4-4_1_1-2' 12 ) 18 set xtics rotate by -25 ('x04\_w08-01\_e08-01 ' 0 , \ 19 'x04\_w08-04\_e08-01 ' 1 , \ 20 'x04\_w08-04\_e08-07 ' 2 , \ 21 'x04\_w08-07\_e08-01 ' 3 , \ 22 'x04\_w08-07\_e08-15 ' 4 , \ 23 'x04\_w08-08\_e08-01 ' 5 , \ 24 'x04\_w08-08\_e08-07 ' 6 , \ 25 'x04\_w08-11\_e08-01 ' 7 , \ 26 'x04\_w08-11\_e08-07a' 8 , \ 27 'x04\_w08-11\_e08-07b' 9 , \ 28 'x04\_w08-11\_e08-15 ' 10, \ 29 'x04\_w08-15\_e08-01 ' 11, \ 30 'x04\_w08-15\_e08-07 ' 12, \ 31 'x04\_w08-15\_e08-15 ' 13 \ 32 ) 31 33 32 34 plot "simulation_all.dat" notitle -
/trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Makefile
r30 r20 9 9 #-------------------------------------------------------------------------------- 10 10 11 TYPE_DOC = ("doc" "ppt" "poster")11 TYPE_DOC = ("doc" "ppt") 12 12 13 13 DEFAULT_LANG = fr … … 32 32 DIR_SCHEMA_JPG = Schema_jpg 33 33 DIR_TEX = Source 34 35 #--------------------------------------------------------------------------------36 # Directory37 #--------------------------------------------------------------------------------38 ENV_LATEX = $(EXPORT) TEXINPUTS=$(DIR_INCLUDE):$$TEXINPUTS39 LATEX_WITH_ENV = $(ENV_LATEX); $(LATEX)40 34 41 35 #-------------------------------------------------------------------------------- … … 99 93 @$(ECHO) "Génération du fichier $*.dvi" 100 94 @#touch $(patsubst %.tex,%.ind,$<) 101 @$(LATEX _WITH_ENV) $<102 @$(LATEX _WITH_ENV) $< > /dev/null95 @$(LATEX) $< 96 @$(LATEX) $< > /dev/null 103 97 @#$(MAKEINDEX) $(patsubst %.tex,%.idx,$<) 104 98 @citation=`$(GREP) "citation" $*.aux`; \ … … 106 100 $(BIBTEX) $* ; \ 107 101 fi 108 @$(LATEX _WITH_ENV) $< > /dev/null109 @$(LATEX _WITH_ENV) $< > /dev/null102 @$(LATEX) $< > /dev/null 103 @$(LATEX) $< > /dev/null 110 104 111 105 #-------------------------------------------------------------------------------- -
/trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/presentation-internal_seminary_overview.sty
r30 r20 2 2 %\def\review{\number\day/\number\month/\number\year\xspace} 3 3 4 \title{Séminaire interne :\newline Processeur libre, haute performance et paramètrable}4 \title{Séminaire interne :\newline Processeur libre, haute performance et hautement paramètrable} 5 5 6 \institute{ DépartementSOC - Laboratoire d'information de Paris VI - France}6 \institute{Equipe SOC - Laboratoire d'information de Paris VI - France} 7 7 8 8 \author{Mathieu Rosière} -
/trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_micro_architecture-execute_loop.fig
r30 r20 1 #FIG 3.2 1 #FIG 3.2 Produced by xfig version 3.2.5-alpha5 2 2 Landscape 3 3 Center … … 13 13 4 1 0 50 -1 -1 10 0.0000 4 105 510 7920 6030 memory\001 14 14 4 1 0 50 -1 -1 10 0.0000 4 105 255 7920 5895 read\001 15 4 1 0 50 -1 -1 10 0.0000 4 1 05345 7920 6165 queue\00115 4 1 0 50 -1 -1 10 0.0000 4 120 345 7920 6165 queue\001 16 16 -6 17 17 6 10260 6390 10980 6840 … … 29 29 8280 6840 7560 6840 7560 6390 8280 6390 8280 6840 30 30 4 1 0 50 -1 -1 10 0.0000 4 105 255 7920 6570 read\001 31 4 1 0 50 -1 -1 10 0.0000 4 1 05345 7920 6750 queue\00131 4 1 0 50 -1 -1 10 0.0000 4 120 345 7920 6750 queue\001 32 32 -6 33 33 6 8640 6390 9360 6840 … … 36 36 4 1 0 50 -1 -1 10 0.0000 4 105 690 9000 6570 reservation\001 37 37 4 1 0 50 -1 -1 10 0.0000 4 105 435 9000 6750 station\001 38 -6 39 6 7380 7200 13860 7920 40 2 2 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 5 41 7380 7200 13860 7200 13860 7920 7380 7920 7380 7200 42 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5 43 13680 7740 13680 7380 7560 7380 7560 7740 13680 7740 44 4 1 0 50 -1 -1 10 0.0000 4 135 480 10620 7605 register\001 38 45 -6 39 46 2 2 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 5 … … 119 126 3 0 1.00 60.00 120.00 120 127 10620 5760 10620 5130 121 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5122 13680 7740 13680 7380 7560 7380 7560 7740 13680 7740123 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5124 13680 8280 13680 7920 7560 7920 7560 8280 13680 8280125 2 2 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 5126 7380 7200 13860 7200 13860 8460 7380 8460 7380 7200127 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2128 3 0 1.00 60.00 120.00129 12780 7335 12780 7920130 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2131 3 0 1.00 60.00 120.00132 8505 7380 8505 7920133 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2134 3 0 1.00 60.00 120.00135 8415 7380 8415 7920136 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2137 3 0 1.00 60.00 120.00138 3 0 1.00 60.00 120.00139 7560 8100 7200 8100140 128 4 1 0 50 -1 -1 10 1.5708 4 105 360 9945 6615 select\001 141 129 4 1 0 50 -1 -1 10 1.5708 4 105 360 11385 6300 select\001 142 4 1 0 50 -1 -1 10 0.0000 4 1 05345 12240 6435 queue\001130 4 1 0 50 -1 -1 10 0.0000 4 120 345 12240 6435 queue\001 143 131 4 1 0 50 -1 -1 10 0.0000 4 105 345 12240 6255 write\001 144 132 4 1 0 50 -1 -1 10 0.0000 4 90 465 13320 6255 execute\001 145 4 1 0 50 -1 -1 10 0.0000 4 1 05345 13320 6435 queue\001146 4 0 0 50 -1 -1 10 0.0000 4 1 35405 8820 5355 bypass\001133 4 1 0 50 -1 -1 10 0.0000 4 120 345 13320 6435 queue\001 134 4 0 0 50 -1 -1 10 0.0000 4 150 405 8820 5355 bypass\001 147 135 4 1 0 50 -1 -1 10 0.0000 4 105 420 10620 5085 Dcache\001 148 136 4 2 0 50 -1 -1 10 0.0000 4 90 465 13995 6660 execute\001 149 137 4 0 0 50 -1 -1 10 0.0000 4 75 435 7245 6345 rename\001 150 4 1 0 50 -1 -1 10 0.0000 4 135 480 10620 7605 register\001151 4 1 0 50 -1 -1 10 0.0000 4 105 630 10620 8145 status list\001152 4 0 0 50 -1 -1 10 0.0000 4 150 855 7290 8415 register_state\001 -
/trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_micro_architecture-out_of_order_engine.fig
r30 r20 1 #FIG 3.2 1 #FIG 3.2 Produced by xfig version 3.2.5-alpha5 2 2 Landscape 3 3 Center … … 8 8 -2 9 9 1200 2 10 6 4590 5400 5310 5850 11 2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5 12 5310 5850 4590 5850 4590 5400 5310 5400 5310 5850 13 4 1 0 50 -1 -1 10 0.0000 4 105 315 4950 5670 RAT\001 14 -6 10 15 6 7020 3600 7740 4050 11 16 6 7020 3600 7740 4050 … … 21 26 4 1 0 50 -1 -1 10 0.0000 4 105 315 7380 3150 State\001 22 27 -6 23 6 5130 5400 5850 5850 24 2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5 25 5850 5850 5130 5850 5130 5400 5850 5400 5850 5850 26 4 1 0 50 -1 -1 10 0.0000 4 105 315 5490 5670 RAT\001 27 -6 28 6 6750 5985 7470 6435 28 6 6210 5985 6930 6435 29 29 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5 30 7470 6435 6750 6435 6750 5985 7470 5985 7470 643531 4 1 0 50 -1 -1 10 0.0000 4 105 375 7110 6345 RAW\00132 4 1 0 50 -1 -1 10 0.0000 4 105 375 7110 6165 Check\00130 6930 6435 6210 6435 6210 5985 6930 5985 6930 6435 31 4 1 0 50 -1 -1 10 0.0000 4 105 375 6570 6345 RAW\001 32 4 1 0 50 -1 -1 10 0.0000 4 105 375 6570 6165 Check\001 33 33 -6 34 34 1 3 0 1 0 7 50 -1 0 3.000 1 0.0000 7652 5222 30 30 7652 5222 7682 5218 35 1 3 0 1 0 7 50 -1 0 3.000 1 0.0000 7665 5764 30 30 7665 5764 7695 5760 35 2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2 36 3 0 1.00 60.00 120.00 37 4230 6210 6210 6210 38 2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5 39 5310 5040 4590 5040 4590 4590 5310 4590 5310 5040 40 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5 41 6390 5850 5670 5850 5670 5400 6390 5400 6390 5850 42 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5 43 7470 5850 6750 5850 6750 5400 7470 5400 7470 5850 36 44 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 37 45 3 0 1.00 60.00 120.00 38 7470 6210 7830 6210 46 4950 5850 4950 6210 47 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 48 3 0 1.00 60.00 120.00 49 6930 6210 7830 6210 50 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 51 3 0 1.00 60.00 120.00 52 7110 6210 7110 5850 39 53 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5 40 54 8550 6435 7830 6435 7830 5985 8550 5985 8550 6435 … … 44 58 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 45 59 3 0 1.00 60.00 120.00 60 6750 5625 6390 5625 61 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 62 3 0 1.00 60.00 120.00 63 7110 4050 7110 5400 64 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 65 3 0 1.00 60.00 120.00 66 7110 4815 5310 4815 67 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 68 3 0 1.00 60.00 120.00 46 69 8910 3825 7740 3825 47 70 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 48 71 3 0 1.00 60.00 120.00 72 7110 4320 4230 4320 73 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 74 3 0 1.00 60.00 120.00 49 75 7650 6210 7650 4050 76 2 2 2 1 0 7 50 -1 -1 3.000 0 0 7 0 0 5 77 8730 6570 4410 6570 4410 4410 8730 4410 8730 6570 50 78 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2 51 79 3 0 1.00 60.00 120.00 … … 56 84 2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 1 0 3 57 85 3 0 1.00 60.00 120.00 58 7650 5220 5670 5220 5670 5400 59 2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2 60 3 0 1.00 60.00 120.00 61 4770 6210 6750 6210 62 2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5 63 5850 5040 5130 5040 5130 4590 5850 4590 5850 5040 64 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5 65 6930 5850 6210 5850 6210 5400 6930 5400 6930 5850 86 7650 5220 5130 5220 5130 5400 66 87 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 67 88 3 0 1.00 60.00 120.00 68 5490 5850 5490 621089 4770 5040 4770 5400 69 90 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 70 91 3 0 1.00 60.00 120.00 71 7110 4320 4770 4320 72 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 73 3 0 1.00 60.00 120.00 74 5310 5040 5310 5400 75 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 76 3 0 1.00 60.00 120.00 77 6570 5850 6570 6210 78 2 2 2 1 0 7 50 -1 -1 3.000 0 0 7 0 0 5 79 8730 6570 4950 6570 4950 4410 8730 4410 8730 6570 80 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3 81 3 0 1.00 60.00 120.00 82 7110 4050 7110 4815 5850 4815 83 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5 84 8550 5850 7830 5850 7830 5400 8550 5400 8550 5850 85 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 86 3 0 1.00 60.00 120.00 87 7650 5760 7830 5760 88 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3 89 3 0 1.00 60.00 120.00 90 7110 4815 7110 5490 7830 5490 91 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 92 3 0 1.00 60.00 120.00 93 7830 5625 6930 5625 94 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2 95 3 0 1.00 60.00 120.00 96 3 0 1.00 60.00 120.00 97 8550 5625 8910 5625 92 6030 5850 6030 6210 93 4 1 0 50 -1 -1 10 0.0000 4 105 315 4950 4770 RAT\001 94 4 1 0 50 -1 -1 10 0.0000 4 150 450 4950 4950 Update\001 95 4 1 0 50 -1 -1 10 0.0000 4 105 270 6030 5580 Free\001 96 4 1 0 50 -1 -1 10 0.0000 4 105 255 6030 5805 List\001 97 4 1 0 50 -1 -1 10 0.0000 4 105 390 7110 5580 Status\001 98 4 1 0 50 -1 -1 10 0.0000 4 105 255 7110 5775 List\001 98 99 4 1 0 50 -1 -1 10 0.0000 4 105 480 8190 6165 Rename\001 99 4 1 0 50 -1 -1 10 0.0000 4 1 05345 8190 6345 queue\001100 4 1 0 50 -1 -1 10 0.0000 4 120 345 8190 6345 queue\001 100 101 4 2 0 50 -1 -1 10 0.0000 4 75 435 8865 5940 rename\001 102 4 0 0 50 -1 -1 10 0.0000 4 150 405 4275 4230 update\001 103 4 0 0 50 -1 -1 10 0.0000 4 105 345 4275 6165 decod\001 101 104 4 0 0 50 -1 -1 10 0.0000 4 105 360 7695 4770 insert\001 105 4 2 0 50 -1 -1 10 0.0000 4 105 345 7065 4770 retire\001 102 106 4 2 0 50 -1 -1 10 0.0000 4 90 465 8865 3780 execute\001 103 4 1 0 50 -1 -1 10 0.0000 4 105 315 5490 4770 RAT\001104 4 1 0 50 -1 -1 10 0.0000 4 135 450 5490 4950 Update\001105 4 1 0 50 -1 -1 10 0.0000 4 105 270 6570 5580 Free\001106 4 1 0 50 -1 -1 10 0.0000 4 105 255 6570 5805 List\001107 4 0 0 50 -1 -1 10 0.0000 4 135 405 4815 4230 update\001108 4 0 0 50 -1 -1 10 0.0000 4 105 345 4815 6165 decod\001109 4 2 0 50 -1 -1 10 0.0000 4 105 345 7065 4770 retire\001110 4 1 0 50 -1 -1 10 0.0000 4 105 390 8190 5535 Status\001111 4 1 0 50 -1 -1 10 0.0000 4 105 255 8190 5670 List\001112 4 1 0 50 -1 -1 10 0.0000 4 135 540 8190 5805 Manager\001113 4 2 0 50 -1 -1 10 0.0000 4 150 855 8865 5355 register_state\001 -
/trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_service.fig
r30 r20 1 #FIG 3.2 1 #FIG 3.2 Produced by xfig version 3.2.5-alpha5 2 2 Landscape 3 3 Center … … 8 8 -2 9 9 1200 2 10 5 1 0 1 0 29 50 -1 20 0.000 0 1 0 0 4575.000 2100.000 4350 2400 4575 2475 4800 240011 5 1 0 1 0 2 48 -1 40 0.000 0 0 0 0 5025.000 2700.000 4800 2400 5025 2325 5250 240012 10 6 3675 4050 4725 4650 13 11 5 1 0 1 0 2 50 -1 20 0.000 0 1 0 0 3975.000 4200.000 3750 4500 3975 4575 4200 4500 … … 33 31 2 1 0 1 0 31 50 -1 20 0.000 0 0 7 0 0 4 34 32 6150 4500 6150 4050 7050 4050 7050 4500 33 -6 34 6 4350 1950 5250 2550 35 5 1 0 1 0 29 50 -1 20 0.000 0 1 0 0 4575.000 2100.000 4350 2400 4575 2475 4800 2400 36 5 1 0 1 0 2 48 -1 40 0.000 0 0 0 0 5025.000 2700.000 4800 2400 5025 2325 5250 2400 37 2 1 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 4 38 4350 2400 4350 1950 5250 1950 5250 2400 39 4 1 0 50 -1 -1 10 0.0000 4 105 255 4800 2325 .gen\001 40 4 1 0 50 -1 -1 10 0.0000 4 120 675 4800 2100 G\351n\351rateur\001 35 41 -6 36 42 6 5550 1950 6450 2550 … … 81 87 2 4 0 1 0 4 50 -1 20 0.000 0 0 7 0 0 5 82 88 5850 4050 4950 4050 4950 4500 5850 4500 5850 4050 83 2 1 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 4 84 4350 2400 4350 1950 5250 1950 5250 2400 85 4 1 0 50 -1 -1 10 0.0000 4 135 570 5400 3225 Morpheo\001 89 4 1 0 50 -1 -1 10 0.0000 4 150 570 5400 3225 Morpheo\001 86 90 4 1 0 50 -1 -1 10 0.0000 4 105 435 4200 4275 VHDL\001 87 91 4 1 0 50 -1 -1 10 0.0000 4 105 435 4800 5475 VHDL\001 … … 89 93 4 1 0 50 -1 -1 10 0.0000 4 105 585 6000 5325 Statistics\001 90 94 4 1 0 50 -1 -1 10 0.0000 4 105 585 6600 4200 Positions\001 91 4 1 0 50 -1 -1 10 0.0000 4 1 05255 6600 4425 .pos\00195 4 1 0 50 -1 -1 10 0.0000 4 120 255 6600 4425 .pos\001 92 96 4 1 0 50 -1 -1 10 0.0000 4 105 465 7500 3225 Viewer\001 93 97 4 1 0 50 -1 -1 10 0.0000 4 135 555 5400 4275 SystemC\001 94 4 1 0 50 -1 -1 10 0.0000 4 105 255 4800 2325 .gen\00195 4 1 0 50 -1 -1 10 0.0000 4 105 615 4800 2100 Generator\001 -
/trunk/IPs/systemC/processor/Morpheo/Makefile
r30 r20 1 include $( MORPHEO_TOPLEVEL)/Makefile.tools1 include $(SOC)/Makefile.tools 2 2 3 3 #-----[ Directory ]---------------------------------------------------- … … 72 72 @$(ECHO) "" 73 73 @$(ECHO) "Delete temporary files "$(PWD) 74 @$(RM) *~75 74 # @$(MAKE) clean_rec DIR_CLEAN=. 76 75 -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/include/BaseP.h
r30 r20 22 22 string comment; 23 23 int level; 24 25 24 protected: 26 25 … … 29 28 morpheo::tools::viewer::bdd::Entity *getEntity(); 30 29 morpheo::tools::viewer::bdd::Architecture *getArchitecture(); 31 QList<morpheo::tools::viewer::bdd::Component> * getComponent();30 QList<morpheo::tools::viewer::bdd::Component> *BaseP::getComponent(); 32 31 33 32 BaseP(); 34 BaseP(BaseP *p);35 33 ~BaseP (); 36 34 void setComment(string s); … … 39 37 int getLevel(); 40 38 void setLevel (int v); 41 int getSchema();42 39 };//end class BaseP 43 40 -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/include/BaseV.h
r30 r20 28 28 //accesseurs 29 29 morpheo::tools::viewer::bdd::BaseP get_BasePos(string v); 30 morpheo::tools::viewer::bdd::Signal *getSignal( morpheo::tools::viewer::bdd::BaseP *top,string c,PortMap *dest);30 morpheo::tools::viewer::bdd::Signal *getSignal(string c,PortMap *dest); 31 31 QList<morpheo::tools::viewer::bdd::BaseP> *getBaseP(); 32 32 //morpheo::tools::viewer::bdd::Param get_Param(string v); -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/include/Entity.h
r30 r20 27 27 28 28 public: 29 Entity(string n, string t,int l);29 Entity(string n,int l); 30 30 ~Entity(); 31 31 string getComment(); 32 32 string getName(); 33 string getType();34 33 void setComment(string s); 35 34 int getSchema(); -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseP_accessors.cpp
r30 r20 13 13 comment=s; 14 14 } 15 void BaseP::setLevel(int s){16 level=s;17 }18 19 15 void BaseP::setArchitecture(Architecture *a) 20 16 { … … 39 35 return comment; 40 36 } 41 int BaseP::getLevel()42 {43 return level;44 }45 37 46 38 QList<morpheo::tools::viewer::bdd::Component> *BaseP::getComponent() … … 49 41 } 50 42 51 int BaseP::getSchema(){return ent->getSchema();}52 43 };//end bdd 53 44 };//end viewer -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseP_alloc.cpp
r30 r20 15 15 } 16 16 17 BaseP::BaseP(BaseP *p){18 *this=p;19 }20 21 17 };//end bdd 22 18 };//end viewer -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_accessors.cpp
r30 r20 10 10 namespace bdd{ 11 11 12 12 void BaseV::setComment(string s){ 13 13 comment=s; 14 14 } -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_afficheBaseConsole.cpp
r30 r20 1 /*1 /* 2 2 * 3 3 * [desc.] … … 13 13 = pos->begin(); it != pos->end(); ++it) 14 14 { 15 16 15 morpheo::tools::viewer::bdd::Entity *test=(it->getEntity()); 17 16 string n2=test->getName(); … … 19 18 cout << n << endl ; 20 19 cout << "----Entity-----------------------------------------" <<endl; 21 cout << "Entity name:"<< n2 <<" level:"<< it->getLevel()<< endl;20 cout << "Entity name:"<< n2<< endl; 22 21 cout << "------------------ports east-----------------------" <<endl; 23 22 … … 101 100 cout << "port :" << it3->getPort() <<endl; 102 101 cout << "comment :" << it3->getComment() <<endl; 103 104 102 103 105 104 106 105 } 107 106 } 108 107 }//if 109 cout << endl<< "************ fin BASEP *******************"<<endl <<endl;110 111 108 }//for 112 109 113 110 } 114 111 -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_getSignal.cpp
r30 r20 9 9 namespace viewer{ 10 10 namespace bdd{ 11 /* 12 * search and find the signal 13 * top : actual component is viewed on screen 14 * c: the component (source) which is connected to the dest 15 * dest : the port destination informations 16 */ 17 morpheo::tools::viewer::bdd::Signal *BaseV::getSignal(BaseP *top,string c,morpheo::tools::viewer::bdd::PortMap *dest) 11 12 morpheo::tools::viewer::bdd::Signal *BaseV::getSignal(string c,morpheo::tools::viewer::bdd::PortMap *dest) 18 13 { 19 14 int srcX,srcY,destX,destY; 20 Architecture *aa= top->getArchitecture();15 Architecture *aa=((pos->operator[](0)).getArchitecture()); 21 16 morpheo::tools::viewer::bdd::Component x=aa->getComponent(c); 22 17 // cout << dest->getName() <<endl; … … 24 19 srcX=p->get_x(); 25 20 srcY=p->get_y(); 26 // cout << dest->getComponent() <<endl;21 // cout << dest->getComponent() <<endl; 27 22 morpheo::tools::viewer::bdd::BaseP res=get_BasePos(dest->getComponent()); 28 23 morpheo::tools::viewer::bdd::Port *pm=(res.getEntity())->searchPort(dest->getPort()); -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_searchComponent.cpp
r30 r20 1 2 1 /* 3 2 * … … 12 11 13 12 morpheo::tools::viewer::bdd::BaseP BaseV::get_BasePos(string v){ 14 int tmp=listcomp->indexOf(v,0); 15 if(tmp==-1){ 16 cout << "not found\n"; 17 return NULL; 18 } 19 else 20 return pos->operator[](tmp); 13 return pos->operator[](listcomp->indexOf(v,0)); 21 14 } 22 15 -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/Component_accessors.cpp
r30 r20 16 16 string Component::getComment(){ return comment;} 17 17 string Component::getName(){ return name;} 18 string Component::getType(){ return type;}18 string Component::getType(){ return type;} 19 19 int Component::get_x(){return pos_x+size_x;} 20 20 int Component::get_y(){return pos_y+size_y;} -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/Entity_accessors.cpp
r30 r20 18 18 19 19 string Entity::getName(){ return name;} 20 string Entity::getType(){ return type;}21 20 22 21 int Entity::getSchema(){return schema;} -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/Entity_alloc.cpp
r30 r20 11 11 12 12 13 Entity::Entity(string n, string t,int l)13 Entity::Entity(string n,int l) 14 14 :ListePorts() 15 15 { 16 16 name=n; 17 17 schema=l; 18 type=t; 18 19 19 } 20 20 -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/include/window.h
r30 r20 14 14 15 15 #include <iostream> 16 #include <cmath>17 #include <sstream>18 16 #include <qstring.h> 19 17 #include <qapplication.h> … … 38 36 #include <qtreeview.h> 39 37 #include <qdirmodel.h> 40 #include <qevent.h>41 #include <qfiledialog.h>42 43 38 44 39 #include "Tools/Viewer/Parser/include/parser.h" … … 49 44 #define EAST 2 50 45 #define WEST 3 51 52 #define MARGEX 5053 #define MARGEY 7054 46 55 47 using namespace morpheo::tools::viewer::parser; … … 70 62 71 63 Window(QString name); 72 void _setParse(Parse *p); //parse the base73 void _init_file(); //search component and port before drawing64 void _setParse(Parse *p); 65 void _init_file(); 74 66 private slots: 75 67 76 void _open(); //open a file 77 void _open_error(); 68 void _open(); 69 void _open_end(); 70 void _open_error(); 78 71 79 void _save(); //save a file72 void _save(); 80 73 void _saveAs(); 81 74 void _saveAsOk(); 82 83 void _close(); //close a file 84 85 void _quit(); //quit a file 75 void _close(); 76 void _quit(); 86 77 void _quit2(); 87 88 void _zoomIn(); //zoom for the architecture view 78 void _zoomIn(); 89 79 void _zoomOut(); 90 80 void _defautZoom(); 81 void _level(); 82 void _informations(); 83 void _parameters(); 84 void _about(); 91 85 92 void _level(); 93 void _informations(); //show or hide informations window 94 void _parameters(); //show or hide parameters window 95 void _about(); //about the programm 96 void _component_name(); //show or hide the components name 97 void _signal_name(); //show or hide the signals name 86 private: 98 87 99 void _back();//return to the previous view 100 void _cancel_selection(); 101 void _apply(); 88 void wparameters(); 89 void winformations(); 90 void paintEvent( QPaintEvent * ); 91 void repaint(); 92 void drawPort(int x,int y,int pos,string dir); 102 93 103 protected : 104 void mousePressEvent (QMouseEvent *); //mouse handler when mouse pressed 105 void mouseMoveEvent (QMouseEvent *); //mouse handler in other case 106 private : 107 void wparameters(); // parameters window builder 108 void winformations(); //informations window builder 109 void paintEvent( QPaintEvent * ); //drawing panel 110 void repaint(); //repaint the panel with current parameters 111 void drawPort(int x,int y,int pos,string dir); //draw the components ports 112 void write_name(string name); //write the name of the component clicked name in the informations window 113 void write_comment(string comment); 114 void write_type(string t); 115 116 QList <Port> port_east; //ports lists 94 QList <Port> port_east; 117 95 QList <Port> port_west; 118 96 QList <Port> port_north; … … 120 98 QList <Component> *compo; 121 99 122 QWidget *wparam; //windows widget (informations, parameters, open, save ...)100 QWidget *wparam; 123 101 QWidget *winfo; 124 102 QWidget *ws; 125 103 QWidget *wq; 104 QWidget *wo; 126 105 QWidget *wa; 127 106 128 QWidget *mess_charg; 129 QWidget *mess; 130 QBoxLayout *informations; //informations box 131 QBoxLayout *parameters; //parameters box 132 133 Parse *parse; //the parser 134 BaseV *base; //the current BaseV 135 BaseP p; //the current BaseP 136 Entity *entity; //entity of current base 137 Coord *c; 107 Parse *parse; 108 BaseV *base; 109 BaseP p; 110 Entity *entity; 111 Coord *c; 138 112 139 113 QPainter painter; … … 141 115 QStatusBar *status; 142 116 143 QLineEdit *file_name; //retrieve the name user wants to open from the open window144 QString current_name; //name of the current file opened117 QLineEdit *file_name; 118 QString current_name; 145 119 146 /*items of the informations window*/ 147 QLabel *lname;//name of the component clicked 148 QLabel *ln; 149 QLineEdit *comment;//comment associated with the component clicked 150 QLabel *lt; 151 QLabel *ltype;//type of the component 152 153 int level; //level of architecture 154 int mouseX; //mouse position 155 int mouseY; 156 157 int window_height; //main window size 120 int window_height; 158 121 int window_width; 159 int margeX;//size of the marge 122 int panel_heigth; 123 int panel_width; 124 int margeX; 160 125 int margeY; 161 int portX; //port size, position and size of components, used when drawing the architecture126 int portX; 162 127 int portY; 163 128 int posX; … … 166 131 int tailleY; 167 132 168 int cpt_level; 169 QString tab[50]; 170 171 QString father;//father name 172 QString current;//name of the current architecture visible 173 174 bool save_as; 133 bool save_as; 175 134 bool first_save; 176 bool info_open; //know if the informations window opened or not 177 bool param_open; //know if the parameters window opened or not 178 bool is_save; //know if the file has been saved 179 bool paint; //(re)paint or not 180 bool wq_open; //know if Quit/Open ( 2 windows possible)/Save window is open 135 bool info_open; 136 bool param_open; 137 bool is_save; 138 bool paint; 139 bool wq_open; 140 bool wo_open; 141 bool ws_open; 181 142 bool wa_open; 182 bool quit_demand;//know if user clicked on "quit" (used for saving file before quit) 183 bool file_open;//know if a file is still open (used if user wants to open another file) 184 bool signalName;//show or hide signals name 185 bool componentName;//show or hide components name 186 bool charg_open;//back chargement message box opened or not 187 bool mess_open;//chargment message box opened or not 188 bool component_clicked;//if user clicked on a component to modify its parameters 189 190 143 bool quit_demand; 144 bool file_open; 145 bool is_parse; 191 146 }; 192 147 }; -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_drawAll.cpp
r30 r20 7 7 void Window::paintEvent( QPaintEvent * ) 8 8 { 9 9 10 /*draw window size*/ 10 11 setMinimumSize(600,600); 11 12 int schema; 13 QString t; 14 12 15 13 if(paint){ 14 16 15 painter.begin(this); 17 16 painter.setPen(Qt::blue); 18 painter.drawRect(MARGEX,MARGEY,MARGEX+450,MARGEY+450); 19 17 painter.drawRect(margeX,margeY,margeX+450,margeY+450); 20 18 21 19 for(QList<Port>::iterator it=port_east.begin(); it!=port_east.end(); ++it){ 22 20 portX = it->get_x(); 23 21 portY = it->get_y(); 24 drawPort(portX + MARGEX,portY + MARGEY ,EAST,it->getDirection()); 25 22 drawPort(portX + margeX,portY + margeY ,EAST,it->getDirection()); 26 23 } 27 24 … … 29 26 portX = it->get_x() ; 30 27 portY = it->get_y() ; 31 drawPort(portX + MARGEX,portY + MARGEY, WEST, it->getDirection()); 32 28 drawPort(portX + margeX,portY + margeY, WEST, it->getDirection()); 33 29 } 34 30 … … 36 32 portX = it->get_x() ; 37 33 portY = it->get_y() ; 38 drawPort(portX + MARGEX ,portY+MARGEY,NORTH,it->getDirection()); 39 34 drawPort(portX + margeX ,portY+margeY,NORTH,it->getDirection()); 40 35 } 41 36 … … 43 38 portX = it->get_x() ; 44 39 portY = it->get_y() ; 45 drawPort(portX + MARGEX,portY+MARGEY,SOUTH,it->getDirection()); 40 drawPort(portX + margeX,portY+margeY,SOUTH,it->getDirection()); 41 } 46 42 47 } 48 43 49 44 if(p.getArchitecture()!=NULL){ 50 45 compo = p.getComponent(); 51 46 for(QList<Component>::iterator it=compo->begin();it!=compo->end();++it){ 52 47 Coord *co = it->get_Position(); 53 posX = co->get_hg_x()+ MARGEX;54 posY = co->get_hg_y()+ MARGEY;48 posX = co->get_hg_x()+margeX; 49 posY = co->get_hg_y()+margeY; 55 50 tailleX = co->get_size_x(); 56 51 tailleY = co->get_size_y(); 57 58 t=QString::fromStdString(it->getType()).toLower(); 59 BaseP tp = base->get_BasePos(t.toStdString()); 60 if(&tp != NULL){ 61 schema=tp.getSchema(); 62 switch(schema){ 63 case 0: 64 painter.drawRect(posX,posY,tailleX,tailleY); 65 break; 66 case 1: 67 painter.drawEllipse(posX,posY,tailleX,tailleY); 68 break; 69 case 2: 70 painter.drawRect(posX,posY,tailleX,tailleY); 71 painter.drawLine(posX+tailleX/4,posY+tailleY,posX+tailleX/4,posY); 72 painter.drawLine(posX+tailleX/2,posY+tailleY,posX+tailleX/2,posY); 73 painter.drawLine(posX+3*tailleX/4,posY+tailleY,posX+3*tailleX/4,posY); 74 break; 75 case 3: 76 painter.drawRect(posX,posY,tailleX,tailleY); 77 painter.drawLine(posX,posY+tailleY,posX+tailleX/2,posY+tailleY/2); 78 painter.drawLine(posX+tailleX,posY+tailleY,posX+tailleX/2,posY+tailleY/2); 79 break; 80 } 81 } 82 83 if (componentName){ 84 QString compo_name = QString::fromStdString(it->getName()); 85 painter.drawText(posX , posY + tailleY/2,compo_name); 86 } 52 painter.drawRect(posX,posY,tailleX,tailleY); 87 53 Coord *co2=new Coord( co->get_hg_x() + tailleX/2, co->get_hg_y() + tailleY/2,tailleX/2,tailleY/2); 88 89 54 QList<Port> ports2=(it->getPortEast(co2)); 90 55 for (QList<Port>::iterator it2=ports2.begin();it2!=ports2.end();++it2) … … 93 58 portX =it2->get_x(); 94 59 portY =it2->get_y(); 95 drawPort(portX + MARGEX,portY+MARGEY , EAST,it2->getDirection());60 drawPort(portX + margeX,portY+margeY , EAST,it2->getDirection()); 96 61 } 97 62 ports2=(it->getPortWest(co)); … … 101 66 portX =it2->get_x(); 102 67 portY =it2->get_y(); 103 drawPort(portX + MARGEX ,portY+MARGEY ,WEST,it2->getDirection());68 drawPort(portX + margeX ,portY+margeY ,WEST,it2->getDirection()); 104 69 } 105 70 ports2=(it->getPortNorth(co)); … … 109 74 portX =it2->get_x(); 110 75 portY =it2->get_y(); 111 drawPort(portX + MARGEX ,portY+MARGEY,NORTH,it2->getDirection());76 drawPort(portX + margeX ,portY+margeY,NORTH,it2->getDirection()); 112 77 113 78 } … … 118 83 portX =it2->get_x(); 119 84 portY =it2->get_y(); 120 drawPort(portX + MARGEX ,portY+MARGEY,SOUTH,it2->getDirection());85 drawPort(portX + margeX ,portY+margeY,SOUTH,it2->getDirection()); 121 86 122 87 } 123 88 painter.setPen(Qt::red); 124 89 QList<PortMap> *pm=it->getPortMap(); 125 90 //init_grid(); 126 91 for (QList<PortMap>::iterator it3=pm->begin();it3!=pm->end();++it3) 127 92 { 128 Signal *s=base->getSignal(&p,it->getName(),new PortMap(*it3)); 129 painter.drawLine(s->get_src_x()+MARGEX,s->get_src_y()+MARGEY,s->get_dest_x()+MARGEX,s->get_dest_y()+MARGEY); 130 131 if(signalName){ 132 QString signal_name = QString::fromStdString(it3->getName()); 133 if(s->get_src_x() > s->get_dest_x()) 134 painter.drawText(s->get_dest_x() + MARGEX - 40 ,s->get_dest_y() + MARGEY-10, signal_name); 135 if(s->get_src_x() < s->get_dest_x()) 136 painter.drawText(s->get_dest_x() + MARGEX - 40 ,s->get_dest_y() + MARGEY-10, signal_name); 137 } 138 93 Signal *s=base->getSignal(it->getType(),new PortMap(*it3)); 94 painter.drawLine(s->get_src_x()+margeX,s->get_src_y()+margeY,s->get_dest_x()+margeX,s->get_dest_y()+margeY); 95 //p1 = new Point(s->get_src_x()+2*margeX,s->get_src_y()+2*margeY,NULL,FREE,0); 96 //p2 = new Point(s->get_dest_x()+margeX,s->get_dest_y()+margeY,NULL,FREE,0); 97 // grid[p1->getX()][p1->getY()] = p1; 98 //grid[p2->getX()][p2->getY()] = p2; 99 100 101 //drawSignal(p1,p2); 102 //p1 = NULL;p2 = NULL; 139 103 } 140 if(charg_open){141 charg_open = false;142 mess_charg->close();143 }144 104 painter.setPen(Qt::blue); 145 105 } 146 106 } 147 107 painter.end(); 108 109 148 110 } 149 if(mess_open){150 mess_open = false;151 mess->close();152 }153 111 } 154 112 -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_informations_window.cpp
r30 r20 10 10 { 11 11 winfo = new QWidget(); 12 informations = new QBoxLayout(QBoxLayout::TopToBottom,0); 12 QBoxLayout *informations = new QBoxLayout(QBoxLayout::LeftToRight,0); 13 winfo->resize(200,450); 13 14 winfo->setWindowTitle("informations"); 14 winfo->setFixedSize(350,292); 15 winfo->move(628,50); 16 17 QBoxLayout *bname = new QBoxLayout(QBoxLayout::LeftToRight,0); 18 ln = new QLabel(); 19 ln->setText(""); 20 lname = new QLabel(); 21 lname->setText(""); 22 bname->addWidget(ln); 23 bname->addWidget(lname); 24 25 QBoxLayout *btype = new QBoxLayout(QBoxLayout::LeftToRight,0); 26 lt = new QLabel(); 27 lt->setText(""); 28 ltype = new QLabel(); 29 ltype->setText(""); 30 btype->addWidget(lt); 31 btype->addWidget(ltype); 32 33 comment = new QLineEdit(); 34 comment->setText(""); 35 comment->setReadOnly(true); 36 37 QPushButton *noselect = new QPushButton("cancel selection",wparam); 38 QPushButton *back = new QPushButton("back",wparam); 39 connect(back,SIGNAL(clicked()),this,SLOT(_back())); 40 connect(noselect,SIGNAL(clicked()),this,SLOT(_cancel_selection())); 41 42 informations->addLayout(bname); 43 informations->addLayout(btype); 44 informations->addWidget(comment); 45 informations->addWidget(noselect); 46 informations->addWidget(back); 47 15 winfo->setFixedSize(200,620); 16 winfo->move(608,0); 48 17 winfo->setLayout(informations); 49 18 winfo->show(); 50 19 } 51 20 52 void Window::write_comment(string cm){53 QString c = QString::fromStdString(cm);54 comment->setText(c);55 comment->show();56 }57 21 58 void Window::write_name(string name){59 QString n = QString::fromStdString(name);60 lname->setText(n);61 }62 63 void Window::write_type(string type){64 lt->setText("type");65 QString n = QString::fromStdString(type);66 ltype->setText(n);67 }68 69 void Window::_cancel_selection(){70 component_clicked = false;71 } -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_main.cpp
r30 r20 18 18 if(argc>2){ 19 19 cout << "error : argument must be a file name or nothing" << endl; 20 cout << "usage : Viewer [file]" << endl;21 20 return 0; 22 21 } 23 22 24 23 Parse *par = new Parse(); 25 24 26 25 27 26 QApplication *a=new QApplication (argc,argv); 28 27 29 if(argc == 2){30 if(par->open_file(argv[1] ,0)==-1){28 if(argc == 2){ 29 if(par->open_file(argv[1])==-1){ 31 30 cout << "file doesn't exist or is not a valid format" << endl; 32 31 exit(1); -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_main_window.cpp
r30 r20 10 10 { 11 11 paint = false; 12 is_parse = false; 12 13 window_height = 620; 13 window_width = 620; 14 charg_open = false; 15 mess_open = false; 16 component_clicked = false; 17 cpt_level=0; 14 window_width = 600; 15 margeX = 50; 16 margeY = 70; 18 17 19 18 /*menu bar*/ … … 79 78 connect(paramAct,SIGNAL(triggered()),this,SLOT(_parameters())); 80 79 81 82 QAction *compoNameAct;83 compoNameAct = new QAction(tr("&components name"),this);84 connect(compoNameAct,SIGNAL(triggered()),this,SLOT(_component_name()));85 86 QAction *signalNameAct;87 signalNameAct = new QAction(tr("&signals name"),this);88 connect(signalNameAct,SIGNAL(triggered()),this,SLOT(_signal_name()));89 90 80 /*add the menu "tools" to the menu bar*/ 91 81 tools = menu_bar->addMenu(tr("&Tools")); 92 //tools->addAction(zoomInAct); 93 //tools->addAction(zoomOutAct); 94 //tools->addAction(defautZoomAct); 95 tools->addAction(compoNameAct); 96 tools->addAction(signalNameAct); 97 //tools->addAction(levelAct); 82 tools->addAction(zoomInAct); 83 tools->addAction(zoomOutAct); 84 tools->addAction(defautZoomAct); 85 tools->addAction(levelAct); 98 86 tools->addAction(infoAct); 99 87 tools->addAction(paramAct); … … 108 96 help->addAction(aboutAct); 109 97 98 110 99 /*add the menu bar to the main window*/ 111 100 this->setMenuWidget(menu_bar); … … 119 108 120 109 /*defaut position*/ 121 this->move(0, 50);110 this->move(0,0); 122 111 123 112 /*main window title*/ … … 136 125 137 126 /*little windows (open, save...), closed at init*/ 127 wo_open = false; 138 128 wq_open = false; 129 ws_open = false; 139 130 wa_open = false; 140 141 /*signals and components name hidden*/142 signalName = false;143 componentName = false;144 131 145 132 /*file unsaved at init*/ … … 147 134 first_save = false; //first_save = true for a new file 148 135 136 149 137 current_name = name; 150 138 if(current_name != NULL){ … … 154 142 file_open = false; 155 143 paint = false; 156 is_save = true;144 is_save = false; 157 145 } 158 146 } -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_parameters_window.cpp
r30 r20 10 10 { 11 11 wparam = new QWidget(); 12 parameters = new QBoxLayout(QBoxLayout::TopToBottom,0); 12 QBoxLayout *parameters = new QBoxLayout(QBoxLayout::LeftToRight,0); 13 wparam->resize(200,450); 13 14 wparam->setWindowTitle("parameters"); 14 wparam->setFixedSize(350,300); 15 wparam->move(628,370); 16 17 18 QPushButton *apply = new QPushButton("apply",wparam); 19 connect(apply,SIGNAL(clicked()),this,SLOT(_apply())); 20 21 parameters->addWidget(apply); 22 15 wparam->setFixedSize(200,620); 16 wparam->move(816,0); 23 17 wparam->setLayout(parameters); 24 18 wparam->show(); … … 26 20 27 21 28 void Window::_apply(){ 29 cout << "apply\n"; 30 } 22 -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_setParse.cpp
r30 r20 11 11 if(p) 12 12 parse=p; 13 13 else 14 cout<<"eee"; 14 15 } -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Makefile
r30 r20 1 1 ############################################################################# 2 2 # Makefile for building: bin/Viewer 3 # Generated by qmake (2.01a) (Qt 4.2.2) on: Sun May 20 18:09:0820073 # Generated by qmake (2.01a) (Qt 4.2.2) on: Wed May 2 14:27:25 2007 4 4 # Project: Viewer.pro 5 5 # Template: app app … … 93 93 Bdd/src/ListePorts_searchPort.cpp \ 94 94 Parser/src/Parse_alloc.cpp \ 95 Parser/src/Parse_closeBaseV.cpp \96 Parser/src/Parse_accessors.cpp \97 95 Parser/src/Parse_parser_pos.cpp \ 98 96 Parser/src/Parse_getBaseV.cpp \ … … 100 98 Parser/src/Parse_open_file.cpp \ 101 99 Graphics/src/Graphics_main.cpp \ 102 Graphics/src/Graphics_file_actions.cpp \ 103 Graphics/src/Graphics_tools_actions.cpp \ 104 Graphics/src/Graphics_about_actions.cpp \ 100 Graphics/src/Graphics_window_actions.cpp \ 105 101 Graphics/src/Graphics_main_window.cpp \ 106 102 Graphics/src/Graphics_informations_window.cpp \ … … 108 104 Graphics/src/Graphics_parameters_window.cpp \ 109 105 Graphics/src/Graphics_setParse.cpp \ 110 Graphics/src/Graphics_drawAll.cpp \ 111 Graphics/src/Graphics_mouseEvent.cpp moc_window.cpp 106 Graphics/src/Graphics_drawAll.cpp moc_window.cpp 112 107 OBJECTS = obj/Architecture_accessors.o \ 113 108 obj/BaseP_accessors.o \ … … 157 152 obj/ListePorts_searchPort.o \ 158 153 obj/Parse_alloc.o \ 159 obj/Parse_closeBaseV.o \160 obj/Parse_accessors.o \161 154 obj/Parse_parser_pos.o \ 162 155 obj/Parse_getBaseV.o \ … … 164 157 obj/Parse_open_file.o \ 165 158 obj/Graphics_main.o \ 166 obj/Graphics_file_actions.o \ 167 obj/Graphics_tools_actions.o \ 168 obj/Graphics_about_actions.o \ 159 obj/Graphics_window_actions.o \ 169 160 obj/Graphics_main_window.o \ 170 161 obj/Graphics_informations_window.o \ … … 173 164 obj/Graphics_setParse.o \ 174 165 obj/Graphics_drawAll.o \ 175 obj/Graphics_mouseEvent.o \176 166 obj/moc_window.o 177 167 DIST = /dsk/l1/misc/kane/qt-x11-opensource-4.2.2/mkspecs/common/unix.conf \ … … 268 258 dist: 269 259 @$(CHK_DIR_EXISTS) obj/Viewer1.0.0 || $(MKDIR) obj/Viewer1.0.0 270 $(COPY_FILE) --parents $(SOURCES) $(DIST) obj/Viewer1.0.0/ && $(COPY_FILE) --parents Bdd/include/Architecture.h Bdd/include/BaseP.h Bdd/include/BaseV.h Bdd/include/Component.h Bdd/include/Coord.h Bdd/include/Entity.h Bdd/include/ListePorts.h Bdd/include/Port.h Bdd/include/PortMap.h Bdd/include/Signal.h Graphics/include/window.h Parser/include/parser.h obj/Viewer1.0.0/ && $(COPY_FILE) --parents Bdd/src/Architecture_accessors.cpp Bdd/src/BaseP_accessors.cpp Bdd/src/Architecture_addComponent.cpp Bdd/src/Architecture_alloc.cpp Bdd/src/Architecture_searchComponent.cpp Bdd/src/Architecture_unalloc.cpp Bdd/src/BaseP_alloc.cpp Bdd/src/BaseP_unalloc.cpp Bdd/src/BaseV_accessors.cpp Bdd/src/BaseV_addBaseP.cpp Bdd/src/BaseV_addParam.cpp Bdd/src/BaseV_afficheBaseConsole.cpp Bdd/src/BaseV_alloc.cpp Bdd/src/BaseV_searchComponent.cpp Bdd/src/BaseV_unalloc.cpp Bdd/src/Component_accessors.cpp Bdd/src/Component_addPortMap.cpp Bdd/src/Component_alloc.cpp Bdd/src/Component_getPosition.cpp Bdd/src/Component_unalloc.cpp Bdd/src/Coord_alloc.cpp Bdd/src/Coord_unalloc.cpp Bdd/src/Signal_unalloc.cpp Bdd/src/ListePorts_getPortSouth.cpp Bdd/src/Port_accessors.cpp Bdd/src/Signal_alloc.cpp Bdd/src/Port_alloc.cpp Bdd/src/Signal_accessors.cpp Bdd/src/Coord_accessors.cpp Bdd/src/Port_unalloc.cpp Bdd/src/ListePorts_getPortEast.cpp Bdd/src/BaseV_getSignal.cpp Bdd/src/PortMap_alloc.cpp Bdd/src/Entity_alloc.cpp Bdd/src/PortMap_unalloc.cpp Bdd/src/ListePorts_alloc.cpp Bdd/src/PortMap_accessors.cpp Bdd/src/ListePorts_unalloc.cpp Bdd/src/ListePorts_countPort.cpp Bdd/src/ListePorts_getPortWest.cpp Bdd/src/Entity_unalloc.cpp Bdd/src/ListePorts_getPortNorth.cpp Bdd/src/Entity_accessors.cpp Bdd/src/ListePorts_addPort.cpp Bdd/src/ListePorts_accessors.cpp Bdd/src/ListePorts_searchPort.cpp Parser/src/Parse_alloc.cpp Parser/src/Parse_ closeBaseV.cpp Parser/src/Parse_accessors.cpp Parser/src/Parse_parser_pos.cpp Parser/src/Parse_getBaseV.cpp Parser/src/Parse_unalloc.cpp Parser/src/Parse_open_file.cpp Graphics/src/Graphics_main.cpp Graphics/src/Graphics_file_actions.cpp Graphics/src/Graphics_tools_actions.cpp Graphics/src/Graphics_about_actions.cpp Graphics/src/Graphics_main_window.cpp Graphics/src/Graphics_informations_window.cpp Graphics/src/Graphics_drawPort.cpp Graphics/src/Graphics_parameters_window.cpp Graphics/src/Graphics_setParse.cpp Graphics/src/Graphics_drawAll.cpp Graphics/src/Graphics_mouseEvent.cpp obj/Viewer1.0.0/ && (cd `dirname obj/Viewer1.0.0` && $(TAR) Viewer1.0.0.tar Viewer1.0.0 && $(COMPRESS) Viewer1.0.0.tar) && $(MOVE) `dirname obj/Viewer1.0.0`/Viewer1.0.0.tar.gz . && $(DEL_FILE) -r obj/Viewer1.0.0260 $(COPY_FILE) --parents $(SOURCES) $(DIST) obj/Viewer1.0.0/ && $(COPY_FILE) --parents Bdd/include/Architecture.h Bdd/include/BaseP.h Bdd/include/BaseV.h Bdd/include/Component.h Bdd/include/Coord.h Bdd/include/Entity.h Bdd/include/ListePorts.h Bdd/include/Port.h Bdd/include/PortMap.h Bdd/include/Signal.h Graphics/include/window.h Parser/include/parser.h obj/Viewer1.0.0/ && $(COPY_FILE) --parents Bdd/src/Architecture_accessors.cpp Bdd/src/BaseP_accessors.cpp Bdd/src/Architecture_addComponent.cpp Bdd/src/Architecture_alloc.cpp Bdd/src/Architecture_searchComponent.cpp Bdd/src/Architecture_unalloc.cpp Bdd/src/BaseP_alloc.cpp Bdd/src/BaseP_unalloc.cpp Bdd/src/BaseV_accessors.cpp Bdd/src/BaseV_addBaseP.cpp Bdd/src/BaseV_addParam.cpp Bdd/src/BaseV_afficheBaseConsole.cpp Bdd/src/BaseV_alloc.cpp Bdd/src/BaseV_searchComponent.cpp Bdd/src/BaseV_unalloc.cpp Bdd/src/Component_accessors.cpp Bdd/src/Component_addPortMap.cpp Bdd/src/Component_alloc.cpp Bdd/src/Component_getPosition.cpp Bdd/src/Component_unalloc.cpp Bdd/src/Coord_alloc.cpp Bdd/src/Coord_unalloc.cpp Bdd/src/Signal_unalloc.cpp Bdd/src/ListePorts_getPortSouth.cpp Bdd/src/Port_accessors.cpp Bdd/src/Signal_alloc.cpp Bdd/src/Port_alloc.cpp Bdd/src/Signal_accessors.cpp Bdd/src/Coord_accessors.cpp Bdd/src/Port_unalloc.cpp Bdd/src/ListePorts_getPortEast.cpp Bdd/src/BaseV_getSignal.cpp Bdd/src/PortMap_alloc.cpp Bdd/src/Entity_alloc.cpp Bdd/src/PortMap_unalloc.cpp Bdd/src/ListePorts_alloc.cpp Bdd/src/PortMap_accessors.cpp Bdd/src/ListePorts_unalloc.cpp Bdd/src/ListePorts_countPort.cpp Bdd/src/ListePorts_getPortWest.cpp Bdd/src/Entity_unalloc.cpp Bdd/src/ListePorts_getPortNorth.cpp Bdd/src/Entity_accessors.cpp Bdd/src/ListePorts_addPort.cpp Bdd/src/ListePorts_accessors.cpp Bdd/src/ListePorts_searchPort.cpp Parser/src/Parse_alloc.cpp Parser/src/Parse_parser_pos.cpp Parser/src/Parse_getBaseV.cpp Parser/src/Parse_unalloc.cpp Parser/src/Parse_open_file.cpp Graphics/src/Graphics_main.cpp Graphics/src/Graphics_window_actions.cpp Graphics/src/Graphics_main_window.cpp Graphics/src/Graphics_informations_window.cpp Graphics/src/Graphics_drawPort.cpp Graphics/src/Graphics_parameters_window.cpp Graphics/src/Graphics_setParse.cpp Graphics/src/Graphics_drawAll.cpp obj/Viewer1.0.0/ && (cd `dirname obj/Viewer1.0.0` && $(TAR) Viewer1.0.0.tar Viewer1.0.0 && $(COMPRESS) Viewer1.0.0.tar) && $(MOVE) `dirname obj/Viewer1.0.0`/Viewer1.0.0.tar.gz . && $(DEL_FILE) -r obj/Viewer1.0.0 271 261 272 262 … … 453 443 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Parse_alloc.o Parser/src/Parse_alloc.cpp 454 444 455 obj/Parse_closeBaseV.o: Parser/src/Parse_closeBaseV.cpp456 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Parse_closeBaseV.o Parser/src/Parse_closeBaseV.cpp457 458 obj/Parse_accessors.o: Parser/src/Parse_accessors.cpp459 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Parse_accessors.o Parser/src/Parse_accessors.cpp460 461 445 obj/Parse_parser_pos.o: Parser/src/Parse_parser_pos.cpp 462 446 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Parse_parser_pos.o Parser/src/Parse_parser_pos.cpp … … 474 458 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_main.o Graphics/src/Graphics_main.cpp 475 459 476 obj/Graphics_file_actions.o: Graphics/src/Graphics_file_actions.cpp Graphics/include/window.h 477 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_file_actions.o Graphics/src/Graphics_file_actions.cpp 478 479 obj/Graphics_tools_actions.o: Graphics/src/Graphics_tools_actions.cpp Graphics/include/window.h 480 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_tools_actions.o Graphics/src/Graphics_tools_actions.cpp 481 482 obj/Graphics_about_actions.o: Graphics/src/Graphics_about_actions.cpp Graphics/include/window.h 483 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_about_actions.o Graphics/src/Graphics_about_actions.cpp 460 obj/Graphics_window_actions.o: Graphics/src/Graphics_window_actions.cpp Graphics/include/window.h 461 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_window_actions.o Graphics/src/Graphics_window_actions.cpp 484 462 485 463 obj/Graphics_main_window.o: Graphics/src/Graphics_main_window.cpp Graphics/include/window.h … … 501 479 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_drawAll.o Graphics/src/Graphics_drawAll.cpp 502 480 503 obj/Graphics_mouseEvent.o: Graphics/src/Graphics_mouseEvent.cpp Graphics/include/window.h504 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_mouseEvent.o Graphics/src/Graphics_mouseEvent.cpp505 506 481 obj/moc_window.o: moc_window.cpp 507 482 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_window.o moc_window.cpp -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/include/parser.h
r30 r20 17 17 #include "Tools/Viewer/Bdd/include/PortMap.h" 18 18 19 #define LEVEL_MAX 8 19 20 20 21 21 using namespace std; … … 32 32 string s; 33 33 string absolutePath; 34 string toplevel;35 34 35 protected: 36 36 morpheo::tools::viewer::bdd::BaseV *base; 37 37 morpheo::tools::viewer::bdd::BaseP *pos; 38 morpheo::tools::viewer::bdd::Entity *ent[LEVEL_MAX]; 39 morpheo::tools::viewer::bdd::Architecture *arch[LEVEL_MAX]; 40 morpheo::tools::viewer::bdd::Component *ctemp[LEVEL_MAX]; 41 42 protected: 38 morpheo::tools::viewer::bdd::Entity *ent; 39 morpheo::tools::viewer::bdd::Architecture *arch; 40 morpheo::tools::viewer::bdd::Component *ctemp; 41 // morpheo::tools::viewer::bdd::Param *param; 42 43 43 44 44 45 public: … … 46 47 Parse(void); 47 48 ~Parse(void); 48 void parser_pos(QDomNode n ,int level);49 50 int open_file(string name ,int level);49 void parser_pos(QDomNode n); 50 //void ParseParam(void); 51 int open_file(string name); 51 52 //void saveFile(string name); 52 53 morpheo::tools::viewer::bdd::BaseV *getBaseV(); 53 string getTopLevelName(); 54 string getAbsolutePath(); 55 /*Close and erase baseV*/ 56 void closeBaseV(); 54 55 57 56 //void refresh(); 58 57 -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_open_file.cpp
r30 r20 10 10 namespace parser{ 11 11 12 int Parse::open_file(string name,int level){ 12 int Parse::open_file(string name){ 13 QFile file(QString::fromStdString(name)); 14 QString tmppath=QString::fromStdString(name); 13 15 14 QFile file(QString::fromStdString(name));15 QString testname,testname2;16 QString tmppath=QString::fromStdString(name);17 16 QString path=tmppath.left(tmppath.lastIndexOf('/',-1,Qt::CaseSensitive)+1); 17 18 18 absolutePath=path.toStdString(); 19 testname=tmppath.right(tmppath.lastIndexOf('.',-1,Qt::CaseSensitive)-1); 20 testname2=testname.left(testname.lastIndexOf('.',-1,Qt::CaseSensitive)); 21 22 if(tmppath.contains('-') && level==0) //file not top level (first open file) 23 { 24 testname2=testname2.left(testname2.lastIndexOf('-',-1,Qt::CaseSensitive)); 25 } 26 27 19 28 20 if( !file.open( QIODevice::ReadOnly ) ) 29 21 { … … 52 44 #endif 53 45 //BaseP 54 if(!base){ 55 base=new morpheo::tools::viewer::bdd::BaseV(); 56 toplevel=testname2.toStdString(); 57 } 46 if(!base) 47 base=new morpheo::tools::viewer::bdd::BaseV(); 58 48 pos=new morpheo::tools::viewer::bdd::BaseP(); 59 49 //base->addBaseP(pos); 60 parser_pos(root.firstChild() ,level);50 parser_pos(root.firstChild()); 61 51 62 52 } 53 return 0; 63 54 64 // delete pos; 65 //delete ctemp; 66 return 0; 55 67 56 } 68 57 -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_parser_pos.cpp
r30 r20 10 10 namespace parser{ 11 11 12 void Parse::parser_pos(QDomNode n,int level){ 13 string fichier; 12 void Parse::parser_pos(QDomNode n){ 14 13 while( !n.isNull() ) 15 14 { … … 26 25 //BaseP 27 26 pos->setComment(e.text().toStdString()); 28 pos->setLevel(level);29 30 27 } 31 28 if (e.tagName() == "entity" ) 32 29 { 33 30 #ifdef DBUG_PARSE 34 31 cout << "entity" <<endl; 35 32 cout << e.attribute("name","").toStdString() <<endl; 36 33 #endif 37 38 ent[level]=new morpheo::tools::viewer::bdd::Entity\ 34 ent=new morpheo::tools::viewer::bdd::Entity\ 39 35 (e.attribute("name","").toStdString(),\ 40 e.attribute("type","").toStdString(),\41 36 e.attribute("schema","").toInt(0,10)); 42 s=e.attribute("name","").toStdString(); 43 pos->setEntity(ent[level]); 44 45 parser_pos(n.firstChild(),level); 37 s=e.attribute("type","").toStdString(); 38 pos->setEntity(ent); 39 parser_pos(n.firstChild()); 46 40 47 41 if((n.nextSiblingElement()).tagName() !="architecture") … … 65 59 e.attribute("localisation","").toStdString()); 66 60 p->setComment(e.text().toStdString()); 67 ent [level]->addport(p);61 ent->addport(p); 68 62 } 69 63 if (e.tagName() == "architecture" ) … … 72 66 cout << "architecture" <<endl; 73 67 #endif 74 arch [level]=new morpheo::tools::viewer::bdd::Architecture();75 pos->setArchitecture(arch [level]);68 arch=new morpheo::tools::viewer::bdd::Architecture(); 69 pos->setArchitecture(arch); 76 70 77 71 base->addBaseP(pos,s); 78 72 79 parser_pos(n.firstChild() ,level);73 parser_pos(n.firstChild()); 80 74 } 81 75 if (e.tagName() == "component" ) … … 92 86 e.attribute("size_x","").toInt(0,10),\ 93 87 e.attribute("size_y","").toInt(0,10)); 94 ctemp[level]=comp;95 arch[level]->addComponent(ctemp[level], e.attribute("name","").toStdString());88 arch->addComponent(comp, e.attribute("type","").toStdString()); 89 ctemp=comp; 96 90 97 fichier=absolutePath; 98 fichier.append(ent[level]->getName()); 99 fichier.append("-"); 100 fichier.append((e.attribute("type","").toLower()).toStdString()); 91 string fichier=absolutePath; 92 fichier.append(e.attribute("type","").toStdString()); 101 93 fichier.append(".pos"); 102 #ifdef DBUG_PARSE 103 cout << fichier <<endl; 104 #endif 105 if(open_file(fichier,level+1)==-1) 106 exit(1); 107 108 parser_pos(n.firstChild(),level); 109 94 #ifdef DBUG_PARSE 95 cout << fichier <<endl; 96 #endif 97 open_file(fichier); 98 parser_pos(n.firstChild()); 110 99 //ajout ptr Port du sous composant 111 BaseP pt=base->get_BasePos( (e.attribute("type","").toLower()).toStdString());100 BaseP pt=base->get_BasePos(e.attribute("type","").toStdString()); 112 101 QList<Port> *sspor= (pt.getEntity())->getPort(); 113 102 for(QList<Port>::iterator it=sspor->begin();it!=sspor->end();++it) 114 ctemp [level]->addport(new Port(*it));103 ctemp->addport(new Port(*it)); 115 104 116 105 } … … 126 115 e.attribute("port","").toStdString()); 127 116 128 ctemp [level]->addPortMap(p);117 ctemp->addPortMap(p); 129 118 130 119 } -
/trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Viewer.pro
r30 r20 40 40 Bdd/include/Entity.h \ 41 41 Bdd/include/ListePorts.h \ 42 # Bdd/include/ListV.h \ 42 43 Bdd/include/Port.h \ 43 44 Bdd/include/PortMap.h \ 44 45 Bdd/include/Signal.h \ 46 # Graphics/include/point.h \ 45 47 Graphics/include/window.h \ 46 48 Parser/include/parser.h … … 92 94 Bdd/src/ListePorts_accessors.cpp \ 93 95 Bdd/src/ListePorts_searchPort.cpp \ 94 Parser/src/Parse_alloc.cpp \ 95 Parser/src/Parse_closeBaseV.cpp \ 96 Parser/src/Parse_accessors.cpp \ 96 Parser/src/Parse_alloc.cpp \ 97 97 Parser/src/Parse_parser_pos.cpp \ 98 98 Parser/src/Parse_getBaseV.cpp \ … … 100 100 Parser/src/Parse_open_file.cpp \ 101 101 Graphics/src/Graphics_main.cpp \ 102 Graphics/src/Graphics_file_actions.cpp \ 103 Graphics/src/Graphics_tools_actions.cpp \ 104 Graphics/src/Graphics_about_actions.cpp \ 102 Graphics/src/Graphics_window_actions.cpp \ 105 103 Graphics/src/Graphics_main_window.cpp \ 106 104 Graphics/src/Graphics_informations_window.cpp \ … … 108 106 Graphics/src/Graphics_parameters_window.cpp \ 109 107 Graphics/src/Graphics_setParse.cpp \ 110 Graphics/src/Graphics_drawAll.cpp \ 111 Graphics/src/Graphics_mouseEvent.cpp 112 108 Graphics/src/Graphics_drawAll.cpp -
/trunk/Makefile.tools
r30 r20 1 #----------------------------------------------------------2 1 #-----[ Unix Commands ]------------------------------------ 3 #----------------------------------------------------------4 5 2 ECHO = echo 6 3 EXPORT = export … … 42 39 VIEWPDF_FS = acroread 43 40 44 #----------------------------------------------------------45 41 #-----[ tools ]-------------------------------------------- 46 #---------------------------------------------------------- 47 48 include $(MORPHEO_TOPLEVEL)/Makefile.tools_path 42 SOCLIB = /users/outil/soc/soclib/ 43 SYSTEMC_systemc = /users/outil/systemc/systemc-2.1.v1/ 44 SYSTEMC_systemcass = /users/outil/systemc/systemcass/systemcass/latest/i686-Linux.SLA4x/ 45 SYSTEMC_systemcass_deps = $(SYSTEMC_systemcass) 46 XILINX = /dsk/l1/misc/Xilinx91i/ 47 MODELTECH = /users/outil/m1archi/modeltech/ 48 OR1K = ../../Tools/or32-elf/ 49 NEWLIB = ../../Tools/newlib-1.14.0 49 50 50 51 #-----[ soclib ]------------------------------------------- … … 81 82 82 83 #-----[ Modeltech ]---------------------------------------- 83 MODELTECH_ENV = export LM_LICENSE_FILE= $(MODELTECH_LICENCE)/license.anacad84 MODELTECH_ENV = export LM_LICENSE_FILE=/users/soft/mentor/licence/etc/license.anacad 84 85 MODELTECH_BIN = $(MODELTECH)/bin 85 86 MODELTECH_VLIB = $(MODELTECH_ENV); $(MODELTECH_BIN)/vlib
Note: See TracChangeset
for help on using the changeset viewer.