Changeset 112 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit
- Timestamp:
- Mar 18, 2009, 11:36:26 PM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_allocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 50 51 out_CONST_1 = interface->set_signal_out <Tcontrol_t> ("const_1",1); 51 52 52 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 53 in_GPR_READ_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 54 out_GPR_READ_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 55 if (_param->_have_port_ooo_engine_id == true) 56 in_GPR_READ_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_gpr_read]; 57 out_GPR_READ_DATA = new SC_OUT(Tgeneral_data_t ) * [_param->_nb_gpr_read]; 58 out_GPR_READ_DATA_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 59 60 out_GPR_READ_REGISTERFILE_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 61 in_GPR_READ_REGISTERFILE_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 62 in_GPR_READ_REGISTERFILE_DATA = new SC_IN (Tgeneral_data_t ) ** [_param->_nb_ooo_engine]; 63 64 out_GPR_READ_STATUS_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 65 in_GPR_READ_STATUS_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 66 in_GPR_READ_STATUS_DATA_VAL = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 67 68 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 69 { 70 out_GPR_READ_REGISTERFILE_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 71 in_GPR_READ_REGISTERFILE_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 72 in_GPR_READ_REGISTERFILE_DATA [i] = new SC_IN (Tgeneral_data_t ) * [_param->_nb_gpr_read]; 73 74 out_GPR_READ_STATUS_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 75 in_GPR_READ_STATUS_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 76 in_GPR_READ_STATUS_DATA_VAL [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 77 } 78 79 for (uint32_t j=0; j<_param->_nb_gpr_read; j++) 80 { 81 Interface_fifo * interface = _interfaces->set_interface("gpr_read_"+toString(j) 82 #ifdef POSITION 83 ,IN 84 ,NORTH, 85 "Interface to read generalist register" 86 #endif 87 ); 88 89 in_GPR_READ_VAL [j] = interface->set_signal_valack_in (VAL); 90 out_GPR_READ_ACK [j] = interface->set_signal_valack_out (ACK); 91 if (_param->_have_port_ooo_engine_id == true) 92 in_GPR_READ_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id", _param->_size_ooo_engine_id); 93 out_GPR_READ_DATA [j] = interface->set_signal_out<Tgeneral_data_t> ("data" , _param->_size_general_data); 94 out_GPR_READ_DATA_VAL [j] = interface->set_signal_out<Tcontrol_t > ("data_val" , 1); 95 96 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 97 { 98 { 99 Interface_fifo * interface = _interfaces->set_interface("gpr_read_registerfile_"+toString(i)+"_"+toString(j) 100 #ifdef POSITION 101 ,IN 102 ,NORTH, 103 "Interface to read generalist register - from/to register file" 104 #endif 105 ); 106 107 out_GPR_READ_REGISTERFILE_VAL [i][j] = interface->set_signal_valack_out (VAL); 108 in_GPR_READ_REGISTERFILE_ACK [i][j] = interface->set_signal_valack_in (ACK); 109 in_GPR_READ_REGISTERFILE_DATA [i][j] = interface->set_signal_in <Tgeneral_data_t> ("data" , _param->_size_general_data); 110 } 111 { 112 Interface_fifo * interface = _interfaces->set_interface("gpr_read_status_"+toString(i)+"_"+toString(j) 113 #ifdef POSITION 114 ,IN 115 ,NORTH, 116 "Interface to read generalist register - from/to status" 117 #endif 118 ); 119 120 121 out_GPR_READ_STATUS_VAL [i][j] = interface->set_signal_valack_out (VAL); 122 in_GPR_READ_STATUS_ACK [i][j] = interface->set_signal_valack_in (ACK); 123 in_GPR_READ_STATUS_DATA_VAL [i][j] = interface->set_signal_in <Tcontrol_t > ("data_val" , 1); 124 } 125 } 126 } 127 128 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 129 in_SPR_READ_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 130 out_SPR_READ_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 131 if (_param->_have_port_ooo_engine_id == true) 132 in_SPR_READ_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_spr_read]; 133 out_SPR_READ_DATA = new SC_OUT(Tspecial_data_t ) * [_param->_nb_spr_read]; 134 out_SPR_READ_DATA_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 135 136 out_SPR_READ_REGISTERFILE_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 137 in_SPR_READ_REGISTERFILE_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 138 in_SPR_READ_REGISTERFILE_DATA = new SC_IN (Tspecial_data_t ) ** [_param->_nb_ooo_engine]; 139 140 out_SPR_READ_STATUS_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 141 in_SPR_READ_STATUS_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 142 in_SPR_READ_STATUS_DATA_VAL = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 143 144 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 145 { 146 out_SPR_READ_REGISTERFILE_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 147 in_SPR_READ_REGISTERFILE_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 148 in_SPR_READ_REGISTERFILE_DATA [i] = new SC_IN (Tspecial_data_t ) * [_param->_nb_spr_read]; 149 150 out_SPR_READ_STATUS_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 151 in_SPR_READ_STATUS_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 152 in_SPR_READ_STATUS_DATA_VAL [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 153 } 154 155 for (uint32_t j=0; j<_param->_nb_spr_read; j++) 156 { 157 Interface_fifo * interface = _interfaces->set_interface("spr_read_"+toString(j) 158 #ifdef POSITION 159 ,IN 160 ,NORTH, 161 "Interface to read special register" 162 #endif 163 ); 164 165 in_SPR_READ_VAL [j] = interface->set_signal_valack_in (VAL); 166 out_SPR_READ_ACK [j] = interface->set_signal_valack_out (ACK); 167 if (_param->_have_port_ooo_engine_id == true) 168 in_SPR_READ_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id", _param->_size_ooo_engine_id); 169 out_SPR_READ_DATA [j] = interface->set_signal_out<Tspecial_data_t> ("data" , _param->_size_special_data); 170 out_SPR_READ_DATA_VAL [j] = interface->set_signal_out<Tcontrol_t > ("data_val" , 1); 171 172 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 173 { 174 { 175 Interface_fifo * interface = _interfaces->set_interface("spr_read_registerfile_"+toString(i)+"_"+toString(j) 176 #ifdef POSITION 177 ,IN 178 ,NORTH, 179 "Interface to read special register - from/to register file" 180 #endif 181 ); 182 183 out_SPR_READ_REGISTERFILE_VAL [i][j] = interface->set_signal_valack_out (VAL); 184 in_SPR_READ_REGISTERFILE_ACK [i][j] = interface->set_signal_valack_in (ACK); 185 in_SPR_READ_REGISTERFILE_DATA [i][j] = interface->set_signal_in <Tspecial_data_t> ("data" , _param->_size_special_data); 186 } 187 { 188 Interface_fifo * interface = _interfaces->set_interface("spr_read_status_"+toString(i)+"_"+toString(j) 189 #ifdef POSITION 190 ,IN 191 ,NORTH, 192 "Interface to read special register - from/to status" 193 #endif 194 ); 195 196 197 out_SPR_READ_STATUS_VAL [i][j] = interface->set_signal_valack_out (VAL); 198 in_SPR_READ_STATUS_ACK [i][j] = interface->set_signal_valack_in (ACK); 199 in_SPR_READ_STATUS_DATA_VAL [i][j] = interface->set_signal_in <Tcontrol_t > ("data_val" , 1); 200 } 201 } 202 } 203 204 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 205 in_GPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 206 out_GPR_WRITE_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_write]; 207 if (_param->_have_port_ooo_engine_id == true) 208 in_GPR_WRITE_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_gpr_write]; 209 210 out_GPR_WRITE_REGISTERFILE_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 211 in_GPR_WRITE_REGISTERFILE_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 212 213 out_GPR_WRITE_STATUS_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 214 in_GPR_WRITE_STATUS_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 215 216 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 217 { 218 out_GPR_WRITE_REGISTERFILE_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_write]; 219 in_GPR_WRITE_REGISTERFILE_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 220 221 out_GPR_WRITE_STATUS_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_write]; 222 in_GPR_WRITE_STATUS_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 223 } 224 225 for (uint32_t j=0; j<_param->_nb_gpr_write; j++) 226 { 227 Interface_fifo * interface = _interfaces->set_interface("gpr_write_"+toString(j) 228 #ifdef POSITION 229 ,IN 230 ,NORTH, 231 "Interface to write generalist register" 232 #endif 233 ); 234 235 in_GPR_WRITE_VAL [j] = interface->set_signal_valack_in (VAL); 236 out_GPR_WRITE_ACK [j] = interface->set_signal_valack_out (ACK); 237 if (_param->_have_port_ooo_engine_id == true) 238 in_GPR_WRITE_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id", _param->_size_ooo_engine_id); 239 240 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 241 { 242 { 243 Interface_fifo * interface = _interfaces->set_interface("gpr_write_registerfile_"+toString(i)+"_"+toString(j) 244 #ifdef POSITION 245 ,IN 246 ,NORTH, 247 "Interface to write generalist register - from/to register file" 248 #endif 249 ); 250 251 out_GPR_WRITE_REGISTERFILE_VAL [i][j] = interface->set_signal_valack_out (VAL); 252 in_GPR_WRITE_REGISTERFILE_ACK [i][j] = interface->set_signal_valack_in (ACK); 253 } 254 { 255 Interface_fifo * interface = _interfaces->set_interface("gpr_write_status_"+toString(i)+"_"+toString(j) 256 #ifdef POSITION 257 ,IN 258 ,NORTH, 259 "Interface to write generalist register - from/to status" 260 #endif 261 ); 262 263 264 out_GPR_WRITE_STATUS_VAL [i][j] = interface->set_signal_valack_out (VAL); 265 in_GPR_WRITE_STATUS_ACK [i][j] = interface->set_signal_valack_in (ACK); 266 } 267 } 268 } 269 270 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 271 in_SPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 272 out_SPR_WRITE_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_write]; 273 if (_param->_have_port_ooo_engine_id == true) 274 in_SPR_WRITE_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_spr_write]; 275 276 out_SPR_WRITE_REGISTERFILE_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 277 in_SPR_WRITE_REGISTERFILE_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 278 279 out_SPR_WRITE_STATUS_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 280 in_SPR_WRITE_STATUS_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 281 282 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 283 { 284 out_SPR_WRITE_REGISTERFILE_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_write]; 285 in_SPR_WRITE_REGISTERFILE_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 286 287 out_SPR_WRITE_STATUS_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_write]; 288 in_SPR_WRITE_STATUS_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 289 } 290 291 for (uint32_t j=0; j<_param->_nb_spr_write; j++) 292 { 293 Interface_fifo * interface = _interfaces->set_interface("spr_write_"+toString(j) 294 #ifdef POSITION 295 ,IN 296 ,NORTH, 297 "Interface to write special register" 298 #endif 299 ); 300 301 in_SPR_WRITE_VAL [j] = interface->set_signal_valack_in (VAL); 302 out_SPR_WRITE_ACK [j] = interface->set_signal_valack_out (ACK); 303 if (_param->_have_port_ooo_engine_id == true) 304 in_SPR_WRITE_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id", _param->_size_ooo_engine_id); 305 306 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 307 { 308 { 309 Interface_fifo * interface = _interfaces->set_interface("spr_write_registerfile_"+toString(i)+"_"+toString(j) 310 #ifdef POSITION 311 ,IN 312 ,NORTH, 313 "Interface to write special register - from/to register file" 314 #endif 315 ); 316 317 out_SPR_WRITE_REGISTERFILE_VAL [i][j] = interface->set_signal_valack_out (VAL); 318 in_SPR_WRITE_REGISTERFILE_ACK [i][j] = interface->set_signal_valack_in (ACK); 319 } 320 { 321 Interface_fifo * interface = _interfaces->set_interface("spr_write_status_"+toString(i)+"_"+toString(j) 322 #ifdef POSITION 323 ,IN 324 ,NORTH, 325 "Interface to write special register - from/to status" 326 #endif 327 ); 328 329 330 out_SPR_WRITE_STATUS_VAL [i][j] = interface->set_signal_valack_out (VAL); 331 in_SPR_WRITE_STATUS_ACK [i][j] = interface->set_signal_valack_in (ACK); 332 } 333 } 334 } 335 336 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 337 in_INSERT_ROB_VAL = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine]; 338 out_INSERT_ROB_ACK = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine]; 339 in_INSERT_ROB_RD_USE = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine]; 340 in_INSERT_ROB_RE_USE = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine]; 341 out_INSERT_ROB_GPR_STATUS_VAL = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine]; 342 in_INSERT_ROB_GPR_STATUS_ACK = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine]; 343 out_INSERT_ROB_SPR_STATUS_VAL = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine]; 344 in_INSERT_ROB_SPR_STATUS_ACK = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine]; 345 346 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 347 { 348 uint32_t x=_param->_nb_inst_insert_rob [i]; 349 350 in_INSERT_ROB_VAL [i] = new SC_IN (Tcontrol_t) * [x]; 351 out_INSERT_ROB_ACK [i] = new SC_OUT(Tcontrol_t) * [x]; 352 in_INSERT_ROB_RD_USE [i] = new SC_IN (Tcontrol_t) * [x]; 353 in_INSERT_ROB_RE_USE [i] = new SC_IN (Tcontrol_t) * [x]; 354 out_INSERT_ROB_GPR_STATUS_VAL [i] = new SC_OUT(Tcontrol_t) * [x]; 355 in_INSERT_ROB_GPR_STATUS_ACK [i] = new SC_IN (Tcontrol_t) * [x]; 356 out_INSERT_ROB_SPR_STATUS_VAL [i] = new SC_OUT(Tcontrol_t) * [x]; 357 in_INSERT_ROB_SPR_STATUS_ACK [i] = new SC_IN (Tcontrol_t) * [x]; 358 359 for (uint32_t j=0; j<x; j++) 360 { 361 { 362 Interface_fifo * interface = _interfaces->set_interface("insert_rob_"+toString(i)+"_"+toString(j) 363 #ifdef POSITION 364 ,IN 365 ,WEST 366 ,"Interface to update status (insert)" 367 #endif 368 ); 369 370 in_INSERT_ROB_VAL [i][j] = interface->set_signal_valack_in (VAL); 371 out_INSERT_ROB_ACK [i][j] = interface->set_signal_valack_out(ACK); 372 in_INSERT_ROB_RD_USE [i][j] = interface->set_signal_in <Tcontrol_t> ("rd_use", 1); 373 in_INSERT_ROB_RE_USE [i][j] = interface->set_signal_in <Tcontrol_t> ("re_use", 1); 374 } 375 { 376 Interface_fifo * interface = _interfaces->set_interface("insert_rob_gpr_status_"+toString(i)+"_"+toString(j) 377 #ifdef POSITION 378 ,IN 379 ,EAST 380 ,"Interface to update status (insert)" 381 #endif 382 ); 383 384 out_INSERT_ROB_GPR_STATUS_VAL [i][j] = interface->set_signal_valack_out(VAL); 385 in_INSERT_ROB_GPR_STATUS_ACK [i][j] = interface->set_signal_valack_in (ACK); 386 } 387 { 388 Interface_fifo * interface = _interfaces->set_interface("insert_rob_spr_status_"+toString(i)+"_"+toString(j) 389 #ifdef POSITION 390 ,IN 391 ,EAST 392 ,"Interface to update status (insert)" 393 #endif 394 ); 395 396 out_INSERT_ROB_SPR_STATUS_VAL [i][j] = interface->set_signal_valack_out(VAL); 397 in_INSERT_ROB_SPR_STATUS_ACK [i][j] = interface->set_signal_valack_in (ACK); 398 } 399 } 400 } 53 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 54 { 55 ALLOC1_INTERFACE_BEGIN("gpr_read",IN,NORTH,_("Interface to read generalist register"),_param->_nb_gpr_read); 56 57 ALLOC1_VALACK_IN ( in_GPR_READ_VAL ,VAL); 58 ALLOC1_VALACK_OUT(out_GPR_READ_ACK ,ACK); 59 ALLOC1_SIGNAL_IN ( in_GPR_READ_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t , _param->_size_ooo_engine_id); 60 ALLOC1_SIGNAL_OUT(out_GPR_READ_DATA ,"data" ,Tgeneral_data_t, _param->_size_general_data); 61 ALLOC1_SIGNAL_OUT(out_GPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t , 1); 62 63 ALLOC1_INTERFACE_END(_param->_nb_gpr_read); 64 } 65 66 { 67 ALLOC2_INTERFACE_BEGIN("gpr_read_registerfile",IN,NORTH,_("Interface to read generalist register - from/to register file"),_param->_nb_ooo_engine,_param->_nb_gpr_read); 68 69 ALLOC2_VALACK_OUT(out_GPR_READ_REGISTERFILE_VAL ,VAL); 70 ALLOC2_VALACK_IN ( in_GPR_READ_REGISTERFILE_ACK ,ACK); 71 ALLOC2_SIGNAL_IN ( in_GPR_READ_REGISTERFILE_DATA,"data",Tgeneral_data_t,_param->_size_general_data); 72 73 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_gpr_read); 74 } 75 76 { 77 ALLOC2_INTERFACE_BEGIN("gpr_read_status",IN,NORTH,_("Interface to read generalist register - from/to register file"),_param->_nb_ooo_engine,_param->_nb_gpr_read); 78 79 ALLOC2_VALACK_OUT(out_GPR_READ_STATUS_VAL ,VAL); 80 ALLOC2_VALACK_IN ( in_GPR_READ_STATUS_ACK ,ACK); 81 ALLOC2_SIGNAL_IN ( in_GPR_READ_STATUS_DATA_VAL,"data_val",Tcontrol_t,1); 82 83 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_gpr_read); 84 } 85 86 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 87 { 88 ALLOC1_INTERFACE_BEGIN("spr_read",IN,NORTH,_("Interface to read generalist register"),_param->_nb_spr_read); 89 90 ALLOC1_VALACK_IN ( in_SPR_READ_VAL ,VAL); 91 ALLOC1_VALACK_OUT(out_SPR_READ_ACK ,ACK); 92 ALLOC1_SIGNAL_IN ( in_SPR_READ_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t , _param->_size_ooo_engine_id); 93 ALLOC1_SIGNAL_OUT(out_SPR_READ_DATA ,"data" ,Tspecial_data_t, _param->_size_special_data); 94 ALLOC1_SIGNAL_OUT(out_SPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t , 1); 95 96 ALLOC1_INTERFACE_END(_param->_nb_spr_read); 97 } 98 99 { 100 ALLOC2_INTERFACE_BEGIN("spr_read_registerfile",IN,NORTH,_("Interface to read generalist register - from/to register file"),_param->_nb_ooo_engine,_param->_nb_spr_read); 101 102 ALLOC2_VALACK_OUT(out_SPR_READ_REGISTERFILE_VAL ,VAL); 103 ALLOC2_VALACK_IN ( in_SPR_READ_REGISTERFILE_ACK ,ACK); 104 ALLOC2_SIGNAL_IN ( in_SPR_READ_REGISTERFILE_DATA,"data",Tspecial_data_t,_param->_size_special_data); 105 106 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_spr_read); 107 } 108 109 { 110 ALLOC2_INTERFACE_BEGIN("spr_read_status",IN,NORTH,_("Interface to read generalist register - from/to status"),_param->_nb_ooo_engine,_param->_nb_spr_read); 111 112 ALLOC2_VALACK_OUT(out_SPR_READ_STATUS_VAL ,VAL); 113 ALLOC2_VALACK_IN ( in_SPR_READ_STATUS_ACK ,ACK); 114 ALLOC2_SIGNAL_IN ( in_SPR_READ_STATUS_DATA_VAL,"data_val",Tcontrol_t,1); 115 116 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_spr_read); 117 } 118 119 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 120 { 121 ALLOC1_INTERFACE_BEGIN("gpr_write",IN,NORTH,_("Interface to write generalist register"),_param->_nb_gpr_write); 122 123 ALLOC1_VALACK_IN ( in_GPR_WRITE_VAL ,VAL); 124 ALLOC1_VALACK_OUT(out_GPR_WRITE_ACK ,ACK); 125 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t, _param->_size_ooo_engine_id); 126 127 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 128 } 129 130 { 131 ALLOC2_INTERFACE_BEGIN("gpr_write_registerfile",IN,NORTH,_("Interface to write generalist register - from/to registerfile"),_param->_nb_ooo_engine,_param->_nb_gpr_write); 132 133 ALLOC2_VALACK_OUT(out_GPR_WRITE_REGISTERFILE_VAL,VAL); 134 ALLOC2_VALACK_IN ( in_GPR_WRITE_REGISTERFILE_ACK,ACK); 135 136 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_gpr_write); 137 } 138 139 { 140 ALLOC2_INTERFACE_BEGIN("gpr_write_status",IN,NORTH,_("Interface to write generalist register - from/to status"),_param->_nb_ooo_engine,_param->_nb_gpr_write); 141 142 ALLOC2_VALACK_OUT(out_GPR_WRITE_STATUS_VAL,VAL); 143 ALLOC2_VALACK_IN ( in_GPR_WRITE_STATUS_ACK,ACK); 144 145 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_gpr_write); 146 } 147 148 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 149 { 150 ALLOC1_INTERFACE_BEGIN("spr_write",IN,NORTH,_("Interface to write generalist register"),_param->_nb_spr_write); 151 152 ALLOC1_VALACK_IN ( in_SPR_WRITE_VAL ,VAL); 153 ALLOC1_VALACK_OUT(out_SPR_WRITE_ACK ,ACK); 154 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t, _param->_size_ooo_engine_id); 155 156 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 157 } 158 159 { 160 ALLOC2_INTERFACE_BEGIN("spr_write_registerfile",IN,NORTH,_("Interface to write generalist register - from/to registerfile"),_param->_nb_ooo_engine,_param->_nb_spr_write); 161 162 ALLOC2_VALACK_OUT(out_SPR_WRITE_REGISTERFILE_VAL,VAL); 163 ALLOC2_VALACK_IN ( in_SPR_WRITE_REGISTERFILE_ACK,ACK); 164 165 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_spr_write); 166 } 167 168 { 169 ALLOC2_INTERFACE_BEGIN("spr_write_status",IN,NORTH,_("Interface to write generalist register - from/to status"),_param->_nb_ooo_engine,_param->_nb_spr_write); 170 171 ALLOC2_VALACK_OUT(out_SPR_WRITE_STATUS_VAL,VAL); 172 ALLOC2_VALACK_IN ( in_SPR_WRITE_STATUS_ACK,ACK); 173 174 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_spr_write); 175 } 176 177 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 178 { 179 ALLOC2_INTERFACE_BEGIN("insert_rob",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 180 181 _ALLOC2_VALACK_IN ( in_INSERT_ROB_VAL ,VAL ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 182 _ALLOC2_VALACK_OUT(out_INSERT_ROB_ACK ,ACK ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 183 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_USE,"rd_use",Tcontrol_t, 1,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 184 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_USE,"re_use",Tcontrol_t, 1,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 185 186 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 187 } 188 189 { 190 ALLOC2_INTERFACE_BEGIN("insert_rob_gpr_status",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 191 192 _ALLOC2_VALACK_OUT(out_INSERT_ROB_GPR_STATUS_VAL,VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 193 _ALLOC2_VALACK_IN ( in_INSERT_ROB_GPR_STATUS_ACK,ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 194 195 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 196 } 197 198 { 199 ALLOC2_INTERFACE_BEGIN("insert_rob_spr_status",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 200 201 _ALLOC2_VALACK_OUT(out_INSERT_ROB_SPR_STATUS_VAL,VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 202 _ALLOC2_VALACK_IN ( in_INSERT_ROB_SPR_STATUS_ACK,ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 203 204 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 205 } 401 206 402 207 // // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 26 27 { 27 28 //#if defined(STATISTICS) or defined(VHDL_TESTBENCH) 28 delete 29 delete in_CLOCK ; 29 30 //#endif 30 delete in_NRESET; 31 delete in_NRESET; 32 delete out_CONST_0; 33 delete out_CONST_1; 31 34 32 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 33 delete [] in_GPR_READ_VAL ; 34 delete [] out_GPR_READ_ACK ; 35 if (_param->_have_port_ooo_engine_id == true) 36 delete [] in_GPR_READ_OOO_ENGINE_ID ; 37 delete [] out_GPR_READ_DATA ; 38 delete [] out_GPR_READ_DATA_VAL ; 35 DELETE1_SIGNAL( in_GPR_READ_VAL ,_param->_nb_gpr_read,1 ); 36 DELETE1_SIGNAL(out_GPR_READ_ACK ,_param->_nb_gpr_read,1 ); 37 DELETE1_SIGNAL( in_GPR_READ_OOO_ENGINE_ID ,_param->_nb_gpr_read,_param->_size_ooo_engine_id); 38 DELETE1_SIGNAL(out_GPR_READ_DATA ,_param->_nb_gpr_read,_param->_size_general_data); 39 DELETE1_SIGNAL(out_GPR_READ_DATA_VAL ,_param->_nb_gpr_read,1); 40 41 DELETE2_SIGNAL(out_GPR_READ_REGISTERFILE_VAL ,_param->_nb_ooo_engine,_param->_nb_gpr_read,1 ); 42 DELETE2_SIGNAL( in_GPR_READ_REGISTERFILE_ACK ,_param->_nb_ooo_engine,_param->_nb_gpr_read,1 ); 43 DELETE2_SIGNAL( in_GPR_READ_REGISTERFILE_DATA,_param->_nb_ooo_engine,_param->_nb_gpr_read,_param->_size_general_data); 39 44 40 delete [] out_GPR_READ_REGISTERFILE_VAL;41 delete [] in_GPR_READ_REGISTERFILE_ACK;42 delete [] in_GPR_READ_REGISTERFILE_DATA;45 DELETE2_SIGNAL(out_GPR_READ_STATUS_VAL ,_param->_nb_ooo_engine,_param->_nb_gpr_read,1 ); 46 DELETE2_SIGNAL( in_GPR_READ_STATUS_ACK ,_param->_nb_ooo_engine,_param->_nb_gpr_read,1 ); 47 DELETE2_SIGNAL( in_GPR_READ_STATUS_DATA_VAL,_param->_nb_ooo_engine,_param->_nb_gpr_read,1); 43 48 44 delete [] out_GPR_READ_STATUS_VAL ; 45 delete [] in_GPR_READ_STATUS_ACK ; 46 delete [] in_GPR_READ_STATUS_DATA_VAL ; 49 DELETE1_SIGNAL( in_SPR_READ_VAL ,_param->_nb_spr_read,1 ); 50 DELETE1_SIGNAL(out_SPR_READ_ACK ,_param->_nb_spr_read,1 ); 51 DELETE1_SIGNAL( in_SPR_READ_OOO_ENGINE_ID ,_param->_nb_spr_read,_param->_size_ooo_engine_id); 52 DELETE1_SIGNAL(out_SPR_READ_DATA ,_param->_nb_spr_read,_param->_size_special_data); 53 DELETE1_SIGNAL(out_SPR_READ_DATA_VAL ,_param->_nb_spr_read,1); 54 55 DELETE2_SIGNAL(out_SPR_READ_REGISTERFILE_VAL ,_param->_nb_ooo_engine,_param->_nb_spr_read,1 ); 56 DELETE2_SIGNAL( in_SPR_READ_REGISTERFILE_ACK ,_param->_nb_ooo_engine,_param->_nb_spr_read,1 ); 57 DELETE2_SIGNAL( in_SPR_READ_REGISTERFILE_DATA,_param->_nb_ooo_engine,_param->_nb_spr_read,_param->_size_special_data); 58 59 DELETE2_SIGNAL(out_SPR_READ_STATUS_VAL ,_param->_nb_ooo_engine,_param->_nb_spr_read,1 ); 60 DELETE2_SIGNAL( in_SPR_READ_STATUS_ACK ,_param->_nb_ooo_engine,_param->_nb_spr_read,1 ); 61 DELETE2_SIGNAL( in_SPR_READ_STATUS_DATA_VAL,_param->_nb_ooo_engine,_param->_nb_spr_read,1); 62 63 DELETE1_SIGNAL( in_GPR_WRITE_VAL ,_param->_nb_gpr_write,1 ); 64 DELETE1_SIGNAL(out_GPR_WRITE_ACK ,_param->_nb_gpr_write,1 ); 65 DELETE1_SIGNAL( in_GPR_WRITE_OOO_ENGINE_ID,_param->_nb_gpr_write,_param->_size_ooo_engine_id); 47 66 67 68 DELETE2_SIGNAL(out_GPR_WRITE_REGISTERFILE_VAL,_param->_nb_ooo_engine,_param->_nb_gpr_write,1 ); 69 DELETE2_SIGNAL( in_GPR_WRITE_REGISTERFILE_ACK,_param->_nb_ooo_engine,_param->_nb_gpr_write,1 ); 48 70 49 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 50 delete [] in_SPR_READ_VAL ; 51 delete [] out_SPR_READ_ACK ; 52 if (_param->_have_port_ooo_engine_id == true) 53 delete [] in_SPR_READ_OOO_ENGINE_ID ; 54 delete [] out_SPR_READ_DATA ; 55 delete [] out_SPR_READ_DATA_VAL ; 71 DELETE2_SIGNAL(out_GPR_WRITE_STATUS_VAL,_param->_nb_ooo_engine,_param->_nb_gpr_write,1 ); 72 DELETE2_SIGNAL( in_GPR_WRITE_STATUS_ACK,_param->_nb_ooo_engine,_param->_nb_gpr_write,1 ); 56 73 57 delete [] out_SPR_READ_REGISTERFILE_VAL;58 delete [] in_SPR_READ_REGISTERFILE_ACK;59 delete [] in_SPR_READ_REGISTERFILE_DATA;74 DELETE1_SIGNAL( in_SPR_WRITE_VAL ,_param->_nb_spr_write,1 ); 75 DELETE1_SIGNAL(out_SPR_WRITE_ACK ,_param->_nb_spr_write,1 ); 76 DELETE1_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID,_param->_nb_spr_write,_param->_size_ooo_engine_id); 60 77 61 delete [] out_SPR_READ_STATUS_VAL ; 62 delete [] in_SPR_READ_STATUS_ACK ; 63 delete [] in_SPR_READ_STATUS_DATA_VAL ; 78 DELETE2_SIGNAL(out_SPR_WRITE_REGISTERFILE_VAL,_param->_nb_ooo_engine,_param->_nb_spr_write,1 ); 79 DELETE2_SIGNAL( in_SPR_WRITE_REGISTERFILE_ACK,_param->_nb_ooo_engine,_param->_nb_spr_write,1 ); 64 80 65 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 66 delete [] in_GPR_WRITE_VAL ; 67 delete [] out_GPR_WRITE_ACK ; 68 if (_param->_have_port_ooo_engine_id == true) 69 delete [] in_GPR_WRITE_OOO_ENGINE_ID ; 81 DELETE2_SIGNAL(out_SPR_WRITE_STATUS_VAL,_param->_nb_ooo_engine,_param->_nb_spr_write,1 ); 82 DELETE2_SIGNAL( in_SPR_WRITE_STATUS_ACK,_param->_nb_ooo_engine,_param->_nb_spr_write,1 ); 70 83 71 delete [] out_GPR_WRITE_REGISTERFILE_VAL ; 72 delete [] in_GPR_WRITE_REGISTERFILE_ACK ; 84 DELETE2_SIGNAL( in_INSERT_ROB_VAL ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 85 DELETE2_SIGNAL(out_INSERT_ROB_ACK ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 86 DELETE2_SIGNAL( in_INSERT_ROB_RD_USE,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 87 DELETE2_SIGNAL( in_INSERT_ROB_RE_USE,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 73 88 74 delete [] out_GPR_WRITE_STATUS_VAL;75 delete [] in_GPR_WRITE_STATUS_ACK;89 DELETE2_SIGNAL(out_INSERT_ROB_GPR_STATUS_VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 90 DELETE2_SIGNAL( in_INSERT_ROB_GPR_STATUS_ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 76 91 77 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 78 delete [] in_SPR_WRITE_VAL ; 79 delete [] out_SPR_WRITE_ACK ; 80 if (_param->_have_port_ooo_engine_id == true) 81 delete [] in_SPR_WRITE_OOO_ENGINE_ID ; 82 83 delete [] out_SPR_WRITE_REGISTERFILE_VAL ; 84 delete [] in_SPR_WRITE_REGISTERFILE_ACK ; 85 86 delete [] out_SPR_WRITE_STATUS_VAL ; 87 delete [] in_SPR_WRITE_STATUS_ACK ; 88 89 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 90 delete [] in_INSERT_ROB_VAL ; 91 delete [] out_INSERT_ROB_ACK ; 92 delete [] in_INSERT_ROB_RD_USE ; 93 delete [] in_INSERT_ROB_RE_USE ; 94 delete [] out_INSERT_ROB_GPR_STATUS_VAL ; 95 delete [] in_INSERT_ROB_GPR_STATUS_ACK ; 96 delete [] out_INSERT_ROB_SPR_STATUS_VAL ; 97 delete [] in_INSERT_ROB_SPR_STATUS_ACK ; 98 99 // // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 100 // delete [] in_RETIRE_ROB_VAL ; 101 // delete [] out_RETIRE_ROB_ACK ; 102 // delete [] in_RETIRE_ROB_RD_OLD_USE ; 103 // delete [] in_RETIRE_ROB_RD_NEW_USE ; 104 // delete [] in_RETIRE_ROB_RE_OLD_USE ; 105 // delete [] in_RETIRE_ROB_RE_NEW_USE ; 106 // delete [] out_RETIRE_ROB_GPR_STATUS_OLD_VAL ; 107 // delete [] out_RETIRE_ROB_GPR_STATUS_NEW_VAL ; 108 // delete [] in_RETIRE_ROB_GPR_STATUS_OLD_ACK ; 109 // delete [] in_RETIRE_ROB_GPR_STATUS_NEW_ACK ; 110 // delete [] out_RETIRE_ROB_SPR_STATUS_OLD_VAL ; 111 // delete [] out_RETIRE_ROB_SPR_STATUS_NEW_VAL ; 112 // delete [] in_RETIRE_ROB_SPR_STATUS_OLD_ACK ; 113 // delete [] in_RETIRE_ROB_SPR_STATUS_NEW_ACK ; 92 DELETE2_SIGNAL(out_INSERT_ROB_SPR_STATUS_VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 93 DELETE2_SIGNAL( in_INSERT_ROB_SPR_STATUS_ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 114 94 } 115 95 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_allocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/include/Register_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 52 53 53 54 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 54 in_GPR_READ_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 55 out_GPR_READ_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 56 if (_param->_have_port_ooo_engine_id == true) 57 in_GPR_READ_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_gpr_read]; 58 in_GPR_READ_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_read]; 59 out_GPR_READ_DATA = new SC_OUT(Tgeneral_data_t ) * [_param->_nb_gpr_read]; 60 out_GPR_READ_DATA_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 61 62 for (uint32_t i=0; i<_param->_nb_gpr_read; i++) 63 { 64 Interface_fifo * interface = _interfaces->set_interface("gpr_read_"+toString(i) 65 #ifdef POSITION 66 ,IN 67 ,NORTH 68 ,"Interface to read the register file" 69 #endif 70 ); 71 72 in_GPR_READ_VAL [i]= interface->set_signal_valack_in (VAL); 73 out_GPR_READ_ACK [i]= interface->set_signal_valack_out (ACK); 74 if (_param->_have_port_ooo_engine_id == true) 75 in_GPR_READ_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t > ("ooo_engine_id" , _param->_size_ooo_engine_id); 76 in_GPR_READ_NUM_REG [i]= interface->set_signal_in <Tgeneral_address_t> ("num_reg" , _param->_size_gpr_address); 77 out_GPR_READ_DATA [i]= interface->set_signal_out<Tgeneral_data_t > ("data" , _param->_size_general_data); 78 out_GPR_READ_DATA_VAL [i]= interface->set_signal_out<Tcontrol_t > ("data_val" , 1); 79 } 55 { 56 ALLOC1_INTERFACE_BEGIN("gpr_read",IN,NORTH,_("Interface to read the register file"),_param->_nb_gpr_read); 57 58 ALLOC1_VALACK_IN ( in_GPR_READ_VAL ,VAL); 59 ALLOC1_VALACK_OUT(out_GPR_READ_ACK ,ACK); 60 ALLOC1_SIGNAL_IN ( in_GPR_READ_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 61 ALLOC1_SIGNAL_IN ( in_GPR_READ_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_gpr_address); 62 ALLOC1_SIGNAL_OUT(out_GPR_READ_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 63 ALLOC1_SIGNAL_OUT(out_GPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 64 65 ALLOC1_INTERFACE_END(_param->_nb_gpr_read); 66 } 80 67 81 68 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 82 in_GPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 83 out_GPR_WRITE_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_write]; 84 if (_param->_have_port_ooo_engine_id == true) 85 in_GPR_WRITE_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_gpr_write]; 86 in_GPR_WRITE_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write]; 87 in_GPR_WRITE_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_gpr_write]; 88 89 for (uint32_t i=0; i<_param->_nb_gpr_write; i++) 90 { 91 Interface_fifo * interface = _interfaces->set_interface("gpr_write_"+toString(i) 92 #ifdef POSITION 93 ,IN 94 ,NORTH, 95 "Interface to write the register file" 96 #endif 97 ); 98 99 in_GPR_WRITE_VAL [i]= interface->set_signal_valack_in (VAL); 100 out_GPR_WRITE_ACK [i]= interface->set_signal_valack_out (ACK); 101 if (_param->_have_port_ooo_engine_id == true) 102 in_GPR_WRITE_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t > ("ooo_engine_id" , _param->_size_ooo_engine_id); 103 in_GPR_WRITE_NUM_REG [i]= interface->set_signal_in <Tgeneral_address_t> ("num_reg" , _param->_size_gpr_address); 104 in_GPR_WRITE_DATA [i]= interface->set_signal_in <Tgeneral_data_t > ("data" , _param->_size_general_data); 105 } 69 { 70 ALLOC1_INTERFACE_BEGIN("gpr_write",IN,NORTH,_("Interface to write the register file"),_param->_nb_gpr_write); 71 72 ALLOC1_VALACK_IN ( in_GPR_WRITE_VAL ,VAL); 73 ALLOC1_VALACK_OUT(out_GPR_WRITE_ACK ,ACK); 74 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 75 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_gpr_address); 76 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 77 78 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 79 } 106 80 107 81 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 108 in_SPR_READ_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 109 out_SPR_READ_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 110 if (_param->_have_port_ooo_engine_id == true) 111 in_SPR_READ_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_spr_read]; 112 in_SPR_READ_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_read]; 113 out_SPR_READ_DATA = new SC_OUT(Tspecial_data_t ) * [_param->_nb_spr_read]; 114 out_SPR_READ_DATA_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 115 116 for (uint32_t i=0; i<_param->_nb_spr_read; i++) 117 { 118 Interface_fifo * interface = _interfaces->set_interface("spr_read_"+toString(i) 119 #ifdef POSITION 120 ,IN 121 ,NORTH, 122 "Interface to read the register file" 123 #endif 124 ); 125 126 in_SPR_READ_VAL [i]= interface->set_signal_valack_in (VAL); 127 out_SPR_READ_ACK [i]= interface->set_signal_valack_out (ACK); 128 if (_param->_have_port_ooo_engine_id == true) 129 in_SPR_READ_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t > ("ooo_engine_id" , _param->_size_ooo_engine_id); 130 in_SPR_READ_NUM_REG [i]= interface->set_signal_in <Tspecial_address_t> ("num_reg" , _param->_size_spr_address); 131 out_SPR_READ_DATA [i]= interface->set_signal_out<Tspecial_data_t > ("data" , _param->_size_special_data); 132 out_SPR_READ_DATA_VAL [i]= interface->set_signal_out<Tcontrol_t > ("data_val" , 1); 133 } 82 { 83 ALLOC1_INTERFACE_BEGIN("spr_read",IN,NORTH,_("Interface to read the register file"),_param->_nb_spr_read); 84 85 ALLOC1_VALACK_IN ( in_SPR_READ_VAL ,VAL); 86 ALLOC1_VALACK_OUT(out_SPR_READ_ACK ,ACK); 87 ALLOC1_SIGNAL_IN ( in_SPR_READ_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 88 ALLOC1_SIGNAL_IN ( in_SPR_READ_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_spr_address); 89 ALLOC1_SIGNAL_OUT(out_SPR_READ_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data); 90 ALLOC1_SIGNAL_OUT(out_SPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 91 92 ALLOC1_INTERFACE_END(_param->_nb_spr_read); 93 } 134 94 135 95 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 136 in_SPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 137 out_SPR_WRITE_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_write]; 138 if (_param->_have_port_ooo_engine_id == true) 139 in_SPR_WRITE_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_spr_write]; 140 in_SPR_WRITE_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write]; 141 in_SPR_WRITE_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_spr_write]; 142 143 for (uint32_t i=0; i<_param->_nb_spr_write; i++) 144 { 145 Interface_fifo * interface = _interfaces->set_interface("spr_write_"+toString(i) 146 #ifdef POSITION 147 ,IN 148 ,NORTH, 149 "Interface to write the register file" 150 #endif 151 ); 152 153 in_SPR_WRITE_VAL [i]= interface->set_signal_valack_in (VAL); 154 out_SPR_WRITE_ACK [i]= interface->set_signal_valack_out (ACK); 155 if (_param->_have_port_ooo_engine_id == true) 156 in_SPR_WRITE_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t > ("ooo_engine_id" , _param->_size_ooo_engine_id); 157 in_SPR_WRITE_NUM_REG [i]= interface->set_signal_in <Tspecial_address_t> ("num_reg" , _param->_size_spr_address); 158 in_SPR_WRITE_DATA [i]= interface->set_signal_in <Tspecial_data_t > ("data" , _param->_size_special_data); 159 } 160 161 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 162 in_INSERT_ROB_VAL = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 163 out_INSERT_ROB_ACK = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 164 in_INSERT_ROB_RD_USE = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 165 in_INSERT_ROB_RD_NUM_REG = new SC_IN (Tgeneral_address_t) ** [_param->_nb_ooo_engine]; 166 in_INSERT_ROB_RE_USE = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 167 in_INSERT_ROB_RE_NUM_REG = new SC_IN (Tspecial_address_t) ** [_param->_nb_ooo_engine]; 168 169 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 170 { 171 uint32_t x=_param->_nb_inst_insert_rob [i]; 172 173 in_INSERT_ROB_VAL [i] = new SC_IN (Tcontrol_t ) * [x]; 174 out_INSERT_ROB_ACK [i] = new SC_OUT(Tcontrol_t ) * [x]; 175 in_INSERT_ROB_RD_USE [i] = new SC_IN (Tcontrol_t ) * [x]; 176 in_INSERT_ROB_RD_NUM_REG [i] = new SC_IN (Tgeneral_address_t) * [x]; 177 in_INSERT_ROB_RE_USE [i] = new SC_IN (Tcontrol_t ) * [x]; 178 in_INSERT_ROB_RE_NUM_REG [i] = new SC_IN (Tspecial_address_t) * [x]; 179 180 for (uint32_t j=0; j<x; j++) 181 { 182 Interface_fifo * interface = _interfaces->set_interface("insert_rob_"+toString(i)+"_"+toString(j) 183 #ifdef POSITION 184 ,IN 185 ,WEST 186 ,"Interface to update status (insert)" 187 #endif 188 ); 189 190 191 in_INSERT_ROB_VAL [i][j] = interface->set_signal_valack_in (VAL); 192 out_INSERT_ROB_ACK [i][j] = interface->set_signal_valack_out (ACK); 193 in_INSERT_ROB_RD_USE [i][j] = interface->set_signal_in <Tcontrol_t > ("rd_use" , 1); 194 in_INSERT_ROB_RD_NUM_REG [i][j] = interface->set_signal_in <Tgeneral_address_t> ("rd_num_reg", _param->_size_gpr_address); 195 in_INSERT_ROB_RE_USE [i][j] = interface->set_signal_in <Tcontrol_t > ("re_use" , 1); 196 in_INSERT_ROB_RE_NUM_REG [i][j] = interface->set_signal_in <Tspecial_address_t> ("re_num_reg", _param->_size_spr_address); 197 198 } 199 } 96 { 97 ALLOC1_INTERFACE_BEGIN("spr_write",IN,NORTH,_("Interface to write the register file"),_param->_nb_spr_write); 98 99 ALLOC1_VALACK_IN ( in_SPR_WRITE_VAL ,VAL); 100 ALLOC1_VALACK_OUT(out_SPR_WRITE_ACK ,ACK); 101 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 102 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_spr_address); 103 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data); 104 105 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 106 } 107 108 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 109 { 110 ALLOC2_INTERFACE_BEGIN("insert_rob",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 111 112 _ALLOC2_VALACK_IN ( in_INSERT_ROB_VAL ,VAL ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 113 _ALLOC2_VALACK_OUT(out_INSERT_ROB_ACK ,ACK ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 114 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_USE ,"rd_use" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 115 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_NUM_REG,"rd_num_reg",Tgeneral_address_t,_param->_size_gpr_address,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 116 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_USE ,"re_use" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 117 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_NUM_REG,"re_num_reg",Tspecial_address_t,_param->_size_spr_address,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 118 119 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 120 } 200 121 201 122 // // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/include/Register_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 24 25 if (usage_is_set(_usage,USE_SYSTEMC)) 25 26 { 26 //#if defined(STATISTICS) or defined(VHDL_TESTBENCH) 27 delete in_CLOCK ; 28 //#endif 29 delete in_NRESET; 27 delete in_CLOCK ; 28 delete in_NRESET; 30 29 31 delete [] in_GPR_READ_VAL ; 32 delete [] out_GPR_READ_ACK ; 33 if (_param->_have_port_ooo_engine_id == true) 34 delete [] in_GPR_READ_OOO_ENGINE_ID ; 35 delete [] in_GPR_READ_NUM_REG ; 36 delete [] out_GPR_READ_DATA ; 37 delete [] out_GPR_READ_DATA_VAL ; 38 delete [] in_GPR_WRITE_VAL ; 39 delete [] out_GPR_WRITE_ACK ; 40 if (_param->_have_port_ooo_engine_id == true) 41 delete [] in_GPR_WRITE_OOO_ENGINE_ID ; 42 delete [] in_GPR_WRITE_NUM_REG ; 43 delete [] in_GPR_WRITE_DATA ; 44 delete [] in_SPR_READ_VAL ; 45 delete [] out_SPR_READ_ACK ; 46 if (_param->_have_port_ooo_engine_id == true) 47 delete [] in_SPR_READ_OOO_ENGINE_ID ; 48 delete [] in_SPR_READ_NUM_REG ; 49 delete [] out_SPR_READ_DATA ; 50 delete [] out_SPR_READ_DATA_VAL ; 51 delete [] in_SPR_WRITE_VAL ; 52 delete [] out_SPR_WRITE_ACK ; 53 if (_param->_have_port_ooo_engine_id == true) 54 delete [] in_SPR_WRITE_OOO_ENGINE_ID ; 55 delete [] in_SPR_WRITE_NUM_REG ; 56 delete [] in_SPR_WRITE_DATA ; 57 delete [] in_INSERT_ROB_VAL ; 58 delete [] out_INSERT_ROB_ACK ; 59 delete [] in_INSERT_ROB_RD_USE ; 60 delete [] in_INSERT_ROB_RD_NUM_REG ; 61 delete [] in_INSERT_ROB_RE_USE ; 62 delete [] in_INSERT_ROB_RE_NUM_REG ; 30 DELETE1_SIGNAL( in_GPR_READ_VAL ,_param->_nb_gpr_read,1); 31 DELETE1_SIGNAL(out_GPR_READ_ACK ,_param->_nb_gpr_read,1); 32 DELETE1_SIGNAL( in_GPR_READ_OOO_ENGINE_ID ,_param->_nb_gpr_read,_param->_size_ooo_engine_id); 33 DELETE1_SIGNAL( in_GPR_READ_NUM_REG ,_param->_nb_gpr_read,_param->_size_gpr_address); 34 DELETE1_SIGNAL(out_GPR_READ_DATA ,_param->_nb_gpr_read,_param->_size_general_data); 35 DELETE1_SIGNAL(out_GPR_READ_DATA_VAL ,_param->_nb_gpr_read,1); 36 37 DELETE1_SIGNAL( in_GPR_WRITE_VAL ,_param->_nb_gpr_write,1); 38 DELETE1_SIGNAL(out_GPR_WRITE_ACK ,_param->_nb_gpr_write,1); 39 DELETE1_SIGNAL( in_GPR_WRITE_OOO_ENGINE_ID,_param->_nb_gpr_write,_param->_size_ooo_engine_id); 40 DELETE1_SIGNAL( in_GPR_WRITE_NUM_REG ,_param->_nb_gpr_write,_param->_size_gpr_address); 41 DELETE1_SIGNAL( in_GPR_WRITE_DATA ,_param->_nb_gpr_write,_param->_size_general_data); 42 43 DELETE1_SIGNAL( in_SPR_READ_VAL ,_param->_nb_spr_read,1); 44 DELETE1_SIGNAL(out_SPR_READ_ACK ,_param->_nb_spr_read,1); 45 DELETE1_SIGNAL( in_SPR_READ_OOO_ENGINE_ID ,_param->_nb_spr_read,_param->_size_ooo_engine_id); 46 DELETE1_SIGNAL( in_SPR_READ_NUM_REG ,_param->_nb_spr_read,_param->_size_spr_address); 47 DELETE1_SIGNAL(out_SPR_READ_DATA ,_param->_nb_spr_read,_param->_size_special_data); 48 DELETE1_SIGNAL(out_SPR_READ_DATA_VAL ,_param->_nb_spr_read,1); 49 50 DELETE1_SIGNAL( in_SPR_WRITE_VAL ,_param->_nb_spr_write,1); 51 DELETE1_SIGNAL(out_SPR_WRITE_ACK ,_param->_nb_spr_write,1); 52 DELETE1_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID,_param->_nb_spr_write,_param->_size_ooo_engine_id); 53 DELETE1_SIGNAL( in_SPR_WRITE_NUM_REG ,_param->_nb_spr_write,_param->_size_spr_address); 54 DELETE1_SIGNAL( in_SPR_WRITE_DATA ,_param->_nb_spr_write,_param->_size_special_data); 55 56 DELETE2_SIGNAL( in_INSERT_ROB_VAL ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 57 DELETE2_SIGNAL(out_INSERT_ROB_ACK ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 58 DELETE2_SIGNAL( in_INSERT_ROB_RD_USE ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 59 DELETE2_SIGNAL( in_INSERT_ROB_RD_NUM_REG ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],_param->_size_gpr_address); 60 DELETE2_SIGNAL( in_INSERT_ROB_RE_USE ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 61 DELETE2_SIGNAL( in_INSERT_ROB_RE_NUM_REG ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],_param->_size_spr_address); 62 63 63 // delete [] in_RETIRE_ROB_VAL ; 64 64 // delete [] out_RETIRE_ROB_ACK ;
Note: See TracChangeset
for help on using the changeset viewer.