Ignore:
Timestamp:
Dec 10, 2008, 7:31:39 PM (16 years ago)
Author:
rosiere
Message:

Almost complete design
with Test and test platform

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Execute_loop_deallocation.cpp

    r81 r88  
     1
    12/*
    23 * $Id$
     
    78
    89#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/include/Execute_loop.h"
    9 
     10#include "Behavioural/include/Allocation.h"
    1011namespace morpheo                    {
    1112namespace behavioural {
     
    2122    log_printf(FUNC,Execute_loop,FUNCTION,"Begin");
    2223
    23     if (_usage & USE_SYSTEMC)
     24    if (usage_is_set(_usage,USE_SYSTEMC))
    2425      {
    2526        delete     in_CLOCK ;
    2627        delete     in_NRESET;
    2728
    28         // ~~~~~[ Interface "execute_loop_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    29         delete []  in_EXECUTE_LOOP_IN_VAL                  ;
    30         delete [] out_EXECUTE_LOOP_IN_ACK                  ;
    31         if (_param->_have_port_context_id)
    32         delete []  in_EXECUTE_LOOP_IN_CONTEXT_ID           ;
    33         if (_param->_have_port_front_end_id)
    34         delete []  in_EXECUTE_LOOP_IN_FRONT_END_ID         ;
    35         if (_param->_have_port_ooo_engine_id)
    36         delete []  in_EXECUTE_LOOP_IN_OOO_ENGINE_ID        ;
    37         if (_param->_have_port_packet_id)
    38         delete []  in_EXECUTE_LOOP_IN_PACKET_ID            ;
    39         delete []  in_EXECUTE_LOOP_IN_OPERATION            ;
    40         delete []  in_EXECUTE_LOOP_IN_TYPE                 ;
    41         delete []  in_EXECUTE_LOOP_IN_STORE_QUEUE_PTR_WRITE;
    42         if (_param->_have_port_load_queue_ptr)
    43         delete []  in_EXECUTE_LOOP_IN_LOAD_QUEUE_PTR_WRITE ;
    44         delete []  in_EXECUTE_LOOP_IN_HAS_IMMEDIAT         ;
    45         delete []  in_EXECUTE_LOOP_IN_IMMEDIAT             ;
    46         delete []  in_EXECUTE_LOOP_IN_READ_RA              ;
    47         delete []  in_EXECUTE_LOOP_IN_NUM_REG_RA           ;
    48         delete []  in_EXECUTE_LOOP_IN_READ_RB              ;
    49         delete []  in_EXECUTE_LOOP_IN_NUM_REG_RB           ;
    50         delete []  in_EXECUTE_LOOP_IN_READ_RC              ;
    51         delete []  in_EXECUTE_LOOP_IN_NUM_REG_RC           ;
    52         delete []  in_EXECUTE_LOOP_IN_WRITE_RD             ;
    53         delete []  in_EXECUTE_LOOP_IN_NUM_REG_RD           ;
    54         delete []  in_EXECUTE_LOOP_IN_WRITE_RE             ;
    55         delete []  in_EXECUTE_LOOP_IN_NUM_REG_RE           ;
     29        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_VAL                  ,_param->_nb_read_unit,1);
     30        DELETE1_SIGNAL(out_EXECUTE_LOOP_IN_ACK                  ,_param->_nb_read_unit,1);
     31        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_CONTEXT_ID           ,_param->_nb_read_unit,_param->_size_context_id);
     32        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_FRONT_END_ID         ,_param->_nb_read_unit,_param->_size_front_end_id);
     33        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_OOO_ENGINE_ID        ,_param->_nb_read_unit,_param->_size_ooo_engine_id);
     34        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_PACKET_ID            ,_param->_nb_read_unit,_param->_size_rob_ptr  );
     35        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_OPERATION            ,_param->_nb_read_unit,_param->_size_operation);
     36        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_TYPE                 ,_param->_nb_read_unit,_param->_size_type);         
     37        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_STORE_QUEUE_PTR_WRITE,_param->_nb_read_unit,_param->_size_store_queue_ptr);
     38        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_LOAD_QUEUE_PTR_WRITE ,_param->_nb_read_unit,_param->_size_load_queue_ptr);
     39        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_HAS_IMMEDIAT         ,_param->_nb_read_unit,1);
     40        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_IMMEDIAT             ,_param->_nb_read_unit,_param->_size_general_data);
     41        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_READ_RA              ,_param->_nb_read_unit,1);
     42        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_NUM_REG_RA           ,_param->_nb_read_unit,_param->_size_general_register);
     43        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_READ_RB              ,_param->_nb_read_unit,1);
     44        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_NUM_REG_RB           ,_param->_nb_read_unit,_param->_size_general_register);
     45        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_READ_RC              ,_param->_nb_read_unit,1);
     46        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_NUM_REG_RC           ,_param->_nb_read_unit,_param->_size_special_register);
     47        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_WRITE_RD             ,_param->_nb_read_unit,1);
     48        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_NUM_REG_RD           ,_param->_nb_read_unit,_param->_size_general_register);
     49        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_WRITE_RE             ,_param->_nb_read_unit,1);
     50        DELETE1_SIGNAL( in_EXECUTE_LOOP_IN_NUM_REG_RE           ,_param->_nb_read_unit,_param->_size_special_register);
     51       
     52        DELETE1_SIGNAL(out_EXECUTE_LOOP_OUT_VAL          ,_param->_nb_write_unit,1);
     53        DELETE1_SIGNAL( in_EXECUTE_LOOP_OUT_ACK          ,_param->_nb_write_unit,1);
     54        DELETE1_SIGNAL(out_EXECUTE_LOOP_OUT_CONTEXT_ID   ,_param->_nb_write_unit,_param->_size_context_id);
     55        DELETE1_SIGNAL(out_EXECUTE_LOOP_OUT_FRONT_END_ID ,_param->_nb_write_unit,_param->_size_front_end_id);
     56        DELETE1_SIGNAL(out_EXECUTE_LOOP_OUT_OOO_ENGINE_ID,_param->_nb_write_unit,_param->_size_ooo_engine_id);
     57        DELETE1_SIGNAL(out_EXECUTE_LOOP_OUT_PACKET_ID    ,_param->_nb_write_unit,_param->_size_rob_ptr  );
     58//      DELETE1_SIGNAL(out_EXECUTE_LOOP_OUT_OPERATION    ,_param->_nb_write_unit,_param->_size_operation);
     59//      DELETE1_SIGNAL(out_EXECUTE_LOOP_OUT_TYPE         ,_param->_nb_write_unit,_param->_size_type);
     60        DELETE1_SIGNAL(out_EXECUTE_LOOP_OUT_FLAGS        ,_param->_nb_write_unit,_param->_size_special_data);
     61        DELETE1_SIGNAL(out_EXECUTE_LOOP_OUT_EXCEPTION    ,_param->_nb_write_unit,_param->_size_exception);
     62        DELETE1_SIGNAL(out_EXECUTE_LOOP_OUT_NO_SEQUENCE  ,_param->_nb_write_unit,1);
     63        DELETE1_SIGNAL(out_EXECUTE_LOOP_OUT_ADDRESS      ,_param->_nb_write_unit,_param->_size_general_data);
     64        DELETE1_SIGNAL(out_EXECUTE_LOOP_OUT_DATA         ,_param->_nb_write_unit,_param->_size_general_data);
     65       
     66        DELETE2_SIGNAL(out_DCACHE_REQ_VAL       , _param->_nb_load_store_unit, _param->_nb_cache_port[it1],1                                  );
     67        DELETE2_SIGNAL( in_DCACHE_REQ_ACK       , _param->_nb_load_store_unit, _param->_nb_cache_port[it1],1                                  );
     68        DELETE2_SIGNAL(out_DCACHE_REQ_CONTEXT_ID, _param->_nb_load_store_unit, _param->_nb_cache_port[it1],_param->_max_size_dcache_context_id);
     69        DELETE2_SIGNAL(out_DCACHE_REQ_PACKET_ID , _param->_nb_load_store_unit, _param->_nb_cache_port[it1],_param->_max_size_dcache_packet_id );
     70        DELETE2_SIGNAL(out_DCACHE_REQ_ADDRESS   , _param->_nb_load_store_unit, _param->_nb_cache_port[it1],_param->_size_general_data         );
     71        DELETE2_SIGNAL(out_DCACHE_REQ_TYPE      , _param->_nb_load_store_unit, _param->_nb_cache_port[it1],_param->_size_dcache_type          );
     72        DELETE2_SIGNAL(out_DCACHE_REQ_WDATA     , _param->_nb_load_store_unit, _param->_nb_cache_port[it1],_param->_size_general_data         );
     73                                                                                                                                                     
     74        DELETE2_SIGNAL( in_DCACHE_RSP_VAL       , _param->_nb_load_store_unit, _param->_nb_cache_port[it1],1                                  );
     75        DELETE2_SIGNAL(out_DCACHE_RSP_ACK       , _param->_nb_load_store_unit, _param->_nb_cache_port[it1],1                                  );
     76        DELETE2_SIGNAL( in_DCACHE_RSP_CONTEXT_ID, _param->_nb_load_store_unit, _param->_nb_cache_port[it1],_param->_max_size_dcache_context_id);
     77        DELETE2_SIGNAL( in_DCACHE_RSP_PACKET_ID , _param->_nb_load_store_unit, _param->_nb_cache_port[it1],_param->_max_size_dcache_packet_id );
     78        DELETE2_SIGNAL( in_DCACHE_RSP_RDATA     , _param->_nb_load_store_unit, _param->_nb_cache_port[it1],_param->_size_general_data         );
     79        DELETE2_SIGNAL( in_DCACHE_RSP_ERROR     , _param->_nb_load_store_unit, _param->_nb_cache_port[it1],_param->_size_dcache_error         );
     80       
     81        DELETE2_SIGNAL( in_INSERT_ROB_VAL       ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1],1                             );
     82        DELETE2_SIGNAL(out_INSERT_ROB_ACK       ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1],1                             );
     83        DELETE2_SIGNAL( in_INSERT_ROB_RD_USE    ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1],1                             );
     84        DELETE2_SIGNAL( in_INSERT_ROB_RD_NUM_REG,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1],_param->_size_general_register);
     85        DELETE2_SIGNAL( in_INSERT_ROB_RE_USE    ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1],1                             );
     86        DELETE2_SIGNAL( in_INSERT_ROB_RE_NUM_REG,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1],_param->_size_special_register);
     87       
     88//         DELETE2_SIGNAL( in_RETIRE_ROB_VAL           ,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1],1                             );
     89//         DELETE2_SIGNAL(out_RETIRE_ROB_ACK           ,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1],1                             );
     90//         DELETE2_SIGNAL( in_RETIRE_ROB_RD_OLD_USE    ,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1],1                             );
     91//         DELETE2_SIGNAL( in_RETIRE_ROB_RD_OLD_NUM_REG,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1],_param->_size_general_register);
     92//         DELETE2_SIGNAL( in_RETIRE_ROB_RD_NEW_USE    ,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1],1                             );
     93//         DELETE2_SIGNAL( in_RETIRE_ROB_RD_NEW_NUM_REG,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1],_param->_size_general_register);
     94//         DELETE2_SIGNAL( in_RETIRE_ROB_RE_OLD_USE    ,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1],1                             );
     95//         DELETE2_SIGNAL( in_RETIRE_ROB_RE_OLD_NUM_REG,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1],_param->_size_special_register);
     96//         DELETE2_SIGNAL( in_RETIRE_ROB_RE_NEW_USE    ,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1],1                             );
     97//         DELETE2_SIGNAL( in_RETIRE_ROB_RE_NEW_NUM_REG,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1],_param->_size_special_register);
     98      }
    5699
    57         // ~~~~~[ Interface "execute_loop_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    58         delete [] out_EXECUTE_LOOP_OUT_VAL                 ;
    59         delete []  in_EXECUTE_LOOP_OUT_ACK                 ;
    60         if (_param->_have_port_context_id)
    61         delete [] out_EXECUTE_LOOP_OUT_CONTEXT_ID          ;
    62         if (_param->_have_port_front_end_id)
    63         delete [] out_EXECUTE_LOOP_OUT_FRONT_END_ID        ;
    64         if (_param->_have_port_ooo_engine_id)
    65         delete [] out_EXECUTE_LOOP_OUT_OOO_ENGINE_ID       ;
    66         if (_param->_have_port_packet_id)
    67         delete [] out_EXECUTE_LOOP_OUT_PACKET_ID           ;
    68       //delete [] out_EXECUTE_LOOP_OUT_OPERATION           ;
    69       //delete [] out_EXECUTE_LOOP_OUT_TYPE                ;
    70         delete [] out_EXECUTE_LOOP_OUT_FLAGS               ;
    71         delete [] out_EXECUTE_LOOP_OUT_EXCEPTION           ;
    72         delete [] out_EXECUTE_LOOP_OUT_NO_SEQUENCE         ;
    73         delete [] out_EXECUTE_LOOP_OUT_ADDRESS             ;
    74 
    75         // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    76         delete [] out_DCACHE_REQ_VAL                       ;
    77         delete []  in_DCACHE_REQ_ACK                       ;
    78         if (_param->_have_port_dcache_context_id)
    79         delete [] out_DCACHE_REQ_CONTEXT_ID                ;
    80         delete [] out_DCACHE_REQ_PACKET_ID                 ;
    81         delete [] out_DCACHE_REQ_ADDRESS                   ;
    82         delete [] out_DCACHE_REQ_TYPE                      ;
    83         delete [] out_DCACHE_REQ_WDATA                     ;
    84 
    85         // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    86         delete []  in_DCACHE_RSP_VAL                       ;
    87         delete [] out_DCACHE_RSP_ACK                       ;
    88         if (_param->_have_port_dcache_context_id)
    89         delete []  in_DCACHE_RSP_CONTEXT_ID                ;
    90         delete []  in_DCACHE_RSP_PACKET_ID                 ;
    91         delete []  in_DCACHE_RSP_RDATA                     ;
    92         delete []  in_DCACHE_RSP_ERROR                     ;
    93    
    94         // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    95         delete []  in_INSERT_ROB_VAL                       ;
    96         delete [] out_INSERT_ROB_ACK                       ;
    97         delete []  in_INSERT_ROB_RD_USE                    ;
    98         delete []  in_INSERT_ROB_RD_NUM_REG                ;
    99         delete []  in_INSERT_ROB_RE_USE                    ;
    100         delete []  in_INSERT_ROB_RE_NUM_REG                ;
    101 
    102         // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    103         delete []  in_RETIRE_ROB_VAL                       ;
    104         delete [] out_RETIRE_ROB_ACK                       ;
    105         delete []  in_RETIRE_ROB_RD_OLD_USE                ;
    106         delete []  in_RETIRE_ROB_RD_OLD_NUM_REG            ;
    107         delete []  in_RETIRE_ROB_RD_NEW_USE                ;
    108         delete []  in_RETIRE_ROB_RD_NEW_NUM_REG            ;
    109         delete []  in_RETIRE_ROB_RE_OLD_USE                ;
    110         delete []  in_RETIRE_ROB_RE_OLD_NUM_REG            ;
    111         delete []  in_RETIRE_ROB_RE_NEW_USE                ;
    112         delete []  in_RETIRE_ROB_RE_NEW_NUM_REG            ;
    113       }
    114    
    115100    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    116101    delete    _component;
     102    delete    _component_glue                        ;
    117103    delete [] _component_read_unit                   ;
    118104    delete [] _component_functionnal_unit            ;
    119105    delete [] _component_load_store_unit             ;
    120106    delete [] _component_write_unit                  ;
    121     delete [] _component_read_unit_to_execution_unit ;
    122     delete [] _component_execution_unit_to_write_unit;
    123     delete [] _component_register_unit               ;
     107    delete   _component_read_unit_to_execution_unit ;
     108    delete   _component_execution_unit_to_write_unit;
     109    delete   _component_register_unit               ;
    124110   
    125111    log_printf(FUNC,Execute_loop,FUNCTION,"End");
     
    129115}; // end namespace multi_execute_loop
    130116}; // end namespace core
    131 
    132117}; // end namespace behavioural
    133118}; // end namespace morpheo             
Note: See TracChangeset for help on using the changeset viewer.