Changeset 112 for trunk/IPs/systemC


Ignore:
Timestamp:
Mar 18, 2009, 11:36:26 PM (16 years ago)
Author:
rosiere
Message:

1) Stat_list : fix retire old and new register bug
2) Stat_list : remove read_counter and valid flag, because validation of destination is in retire step (not in commit step)
3) Model : add class Model (cf Morpheo.sim)
4) Allocation : alloc_interface_begin and alloc_interface_end to delete temporary array.
5) Script : add distexe.sh
6) Add Comparator, Multiplier, Divider. But this component are not implemented
7) Software : add Dhrystone

Location:
trunk/IPs/systemC
Files:
151 added
1 deleted
259 edited
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/Environment/src/Environment.cpp

    r88 r112  
    325325    delete [] DCACHE_RSP_ERROR      ;
    326326
     327    delete [] context_stop;
    327328    delete [] write_dram;
    328329    delete [] read_dram [0];
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/include/Parameters.h

    r111 r112  
    5353  public : uint32_t              * _nb_reg_free                                   ;//[nb_rename_bloc]
    5454  public : uint32_t              * _nb_rename_unit_bank                           ;//[nb_rename_bloc]
    55   public : uint32_t              * _size_read_counter                             ;//[nb_rename_bloc]
     55//   public : uint32_t              * _size_read_counter                             ;//[nb_rename_bloc]
    5656 
    5757    // Read bloc
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Configuration_header.cpp

    r98 r112  
    5959    str += toString(MSG_INFORMATION)+_("                         Kamel    Chekkal   - VHDL\n"    );
    6060    str += toString(MSG_INFORMATION)+_("                         Stéphane Dubuisson - XMLLight\n");
     61    str += toString(MSG_INFORMATION)+_("                         Ramsis   Farhat    - VHDL\n"    );
    6162    str += toString(MSG_INFORMATION)+_("                         Vincent  Moulu     - VHDL\n"    );
    6263    str += toString(MSG_INFORMATION)+"\n";
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Instance.cpp

    r111 r112  
    150150        DELETE1(_param->_size_reservation_station               ,_param->_nb_read_bloc);
    151151        DELETE1(_param->_size_read_queue                        ,_param->_nb_read_bloc);
    152         DELETE1(_param->_size_read_counter                      ,_param->_nb_rename_bloc);
     152//         DELETE1(_param->_size_read_counter                      ,_param->_nb_rename_bloc);
    153153        DELETE1(_param->_nb_rename_unit_bank                    ,_param->_nb_rename_bloc);
    154154        DELETE1(_param->_nb_reg_free                            ,_param->_nb_rename_bloc);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Instance_fromInternalStructure.cpp

    r111 r112  
    113113    ALLOC1(_param->_nb_reg_free                      ,uint32_t         ,_param->_nb_rename_bloc);
    114114    ALLOC1(_param->_nb_rename_unit_bank              ,uint32_t         ,_param->_nb_rename_bloc);
    115     ALLOC1(_param->_size_read_counter                ,uint32_t         ,_param->_nb_rename_bloc);
     115//     ALLOC1(_param->_size_read_counter                ,uint32_t         ,_param->_nb_rename_bloc);
    116116
    117117    for (uint32_t i=0; i<_param->_nb_rename_bloc; ++i)
     
    128128        _param->_nb_reg_free                       [i] = fromString<uint32_t         > (getParam("nb_reg_free"                      , "rename_bloc",toString(i).c_str(),""));
    129129        _param->_nb_rename_unit_bank               [i] = fromString<uint32_t         > (getParam("nb_rename_unit_bank"              , "rename_bloc",toString(i).c_str(),""));
    130         _param->_size_read_counter                 [i] = fromString<uint32_t         > (getParam("size_read_counter"                , "rename_bloc",toString(i).c_str(),""));
     130//         _param->_size_read_counter                 [i] = fromString<uint32_t         > (getParam("size_read_counter"                , "rename_bloc",toString(i).c_str(),""));
    131131      }   
    132132
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Simulator_fromFile.cpp

    r110 r112  
    77
    88#include "Behavioural/Configuration/include/Simulator.h"
     9#include "Behavioural/include/Simulation.h"
    910#include "Common/include/FromString.h"
    1011#include <fstream>
     
    8081            testNodeName   (xml,"component");
    8182            testSingleton  (xml,true);
     83
     84            attributes_t      attributes = xml->getAttributes();
     85           
     86            std::string       value_name  = getAttribute(xml,attributes,"name" );
     87            model_type_t      value_model = fromString<model_type_t     >(getAttribute(xml,attributes,"model"));
     88            debug_verbosity_t value_debug = fromString<debug_verbosity_t>(getAttribute(xml,attributes,"debug"));
     89           
     90            testAttributesEmpty(xml,attributes);
     91           
     92            _model.set_model(value_name, value_model, value_debug);
    8293          }
    8394      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_allocation.cpp

    r111 r112  
    5656    // ~~~~~[ Interface : "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
    5757    {
    58       ALLOC2_INTERFACE("rename",SOUTH,OUT,_("Request between the decod unit and the rename unit"),_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     58      ALLOC2_INTERFACE_BEGIN("rename",SOUTH,OUT,_("Request between the decod unit and the rename unit"),_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    5959
    6060      _ALLOC2_SIGNAL_OUT(out_RENAME_FRONT_END_ID                       ,"FRONT_END_ID"         ,Tcontext_t        ,_param->_size_front_end_id,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     61
     62      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    6163    }
    6264
    6365    // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6466    {
    65       ALLOC2_INTERFACE("branch_complete_front_end",SOUTH,OUT,_("Branch complete : request between commit unit and prediction unit"),_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
     67      ALLOC2_INTERFACE_BEGIN("branch_complete_front_end",SOUTH,OUT,_("Branch complete : request between commit unit and prediction unit"),_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
    6668   
    6769      _ALLOC2_SIGNAL_OUT(out_BRANCH_COMPLETE_FRONT_END_VAL             ,"VAL"                  ,Tcontrol_t        ,1                                ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
     
    7274      _ALLOC2_SIGNAL_OUT(out_BRANCH_COMPLETE_FRONT_END_NO_SEQUENCE     ,"NO_SEQUENCE"          ,Tcontrol_t        ,1                                ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
    7375      _ALLOC2_SIGNAL_IN ( in_BRANCH_COMPLETE_FRONT_END_MISS_PREDICTION ,"MISS_PREDICTION"      ,Tcontrol_t        ,1                                ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
    74     }
    75     {
    76       ALLOC2_INTERFACE("branch_complete_ooo_engine",SOUTH,IN ,_("Branch complete : request between commit unit and prediction unit"),_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
     76
     77      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
     78
     79    }
     80    {
     81      ALLOC2_INTERFACE_BEGIN("branch_complete_ooo_engine",SOUTH,IN ,_("Branch complete : request between commit unit and prediction unit"),_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
    7782
    7883      _ALLOC2_SIGNAL_IN ( in_BRANCH_COMPLETE_OOO_ENGINE_VAL            ,"VAL"                  ,Tcontrol_t        ,1                                ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
     
    8489      _ALLOC2_SIGNAL_IN ( in_BRANCH_COMPLETE_OOO_ENGINE_NO_SEQUENCE    ,"NO_SEQUENCE"          ,Tcontrol_t        ,1                                ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
    8590      _ALLOC2_SIGNAL_OUT(out_BRANCH_COMPLETE_OOO_ENGINE_MISS_PREDICTION,"MISS_PREDICTION"      ,Tcontrol_t        ,1                                ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
    86     }
     91   
     92      ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
     93}
    8794
    8895    // ~~~~~[ Interface : "commit_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8996    {
    90       ALLOC1_INTERFACE("commit_event_front_end",SOUTH,OUT,_("Commit event : request between commit unit and context state"),_param->_nb_front_end);
     97      ALLOC1_INTERFACE_BEGIN("commit_event_front_end",SOUTH,OUT,_("Commit event : request between commit unit and context state"),_param->_nb_front_end);
    9198
    9299      ALLOC1_SIGNAL_OUT(out_COMMIT_EVENT_FRONT_END_VAL                ,"VAL"                  ,Tcontrol_t        ,1);
     
    101108      ALLOC1_SIGNAL_OUT(out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR_VAL   ,"ADDRESS_EEAR_VAL"     ,Tcontrol_t        ,1);
    102109      ALLOC1_SIGNAL_OUT(out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR       ,"ADDRESS_EEAR"         ,Tgeneral_data_t   ,_param->_size_general_data);
    103     }
    104 
    105     {
    106       ALLOC1_INTERFACE("commit_event_ooo_engine",SOUTH,IN ,_("Commit event : request between commit unit and context state"),_param->_nb_ooo_engine);
     110
     111      ALLOC1_INTERFACE_END(_param->_nb_front_end);
     112    }
     113
     114    {
     115      ALLOC1_INTERFACE_BEGIN("commit_event_ooo_engine",SOUTH,IN ,_("Commit event : request between commit unit and context state"),_param->_nb_ooo_engine);
    107116
    108117      ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_OOO_ENGINE_VAL               ,"VAL"                  ,Tcontrol_t        ,1);
     
    118127      ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL  ,"ADDRESS_EEAR_VAL"     ,Tcontrol_t        ,1);
    119128      ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ,"ADDRESS_EEAR"         ,Tgeneral_data_t   ,_param->_size_general_data);
     129
     130      ALLOC1_INTERFACE_END(_param->_nb_ooo_engine);
    120131    }
    121132
    122133    // ~~~~~[ Interface : "issue" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    123134    {
    124       ALLOC2_INTERFACE("issue_ooo_engine",SOUTH,IN ,_("Issue : request between rename unit and execute loop"),_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
     135      ALLOC2_INTERFACE_BEGIN("issue_ooo_engine",SOUTH,IN ,_("Issue : request between rename unit and execute loop"),_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    125136
    126137      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_VAL                      ,"VAL"                  ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
     
    145156      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_WRITE_RE                 ,"WRITE_RE"             ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    146157      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_NUM_REG_RE               ,"NUM_REG_RE"           ,Tspecial_address_t,_param->_size_special_register,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    147     }
    148 
    149     {
    150       ALLOC2_INTERFACE("issue_execute_loop",SOUTH,OUT,_("Issue : request between rename unit and execute loop"),_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
     158
     159      ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
     160    }
     161
     162    {
     163      ALLOC2_INTERFACE_BEGIN("issue_execute_loop",SOUTH,OUT,_("Issue : request between rename unit and execute loop"),_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
    151164
    152165      _ALLOC2_SIGNAL_OUT(out_ISSUE_EXECUTE_LOOP_VAL                    ,"VAL"                  ,Tcontrol_t        ,1                             ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
     
    172185      _ALLOC2_SIGNAL_OUT(out_ISSUE_EXECUTE_LOOP_WRITE_RE               ,"WRITE_RE"             ,Tcontrol_t        ,1                             ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
    173186      _ALLOC2_SIGNAL_OUT(out_ISSUE_EXECUTE_LOOP_NUM_REG_RE             ,"NUM_REG_RE"           ,Tspecial_address_t,_param->_size_special_register,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
     187
     188      ALLOC2_INTERFACE_END(_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
    174189    }
    175190
    176191    // ~~~~~[ Interface "execute_loop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    177192    {
    178       ALLOC3_INTERFACE("execute_ooo_engine",SOUTH,OUT,_("Execute : request between execute loop and commit unit"),_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
     193      ALLOC3_INTERFACE_BEGIN("execute_ooo_engine",SOUTH,OUT,_("Execute : request between execute loop and commit unit"),_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
    179194
    180195      _ALLOC3_SIGNAL_OUT(out_EXECUTE_OOO_ENGINE_VAL                    ,"VAL"                  ,Tcontrol_t        ,1                         ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
     
    190205      _ALLOC3_SIGNAL_OUT(out_EXECUTE_OOO_ENGINE_ADDRESS                ,"ADDRESS"              ,Taddress_t        ,_param->_size_instruction_address,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
    191206      _ALLOC3_SIGNAL_OUT(out_EXECUTE_OOO_ENGINE_DATA                   ,"DATA"                 ,Tgeneral_data_t   ,_param->_size_general_data,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
    192     }
    193 
    194     {
    195       ALLOC2_INTERFACE("execute_execute_loop",SOUTH,IN ,_("Execute : request between execute loop and commit unit"),_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
     207
     208      ALLOC3_INTERFACE_END(_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
     209    }
     210
     211    {
     212      ALLOC2_INTERFACE_BEGIN("execute_execute_loop",SOUTH,IN ,_("Execute : request between execute loop and commit unit"),_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
    196213
    197214      _ALLOC2_SIGNAL_IN ( in_EXECUTE_EXECUTE_LOOP_VAL                  ,"VAL"                  ,Tcontrol_t        ,1                          ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
     
    208225      _ALLOC2_SIGNAL_IN ( in_EXECUTE_EXECUTE_LOOP_ADDRESS              ,"ADDRESS"              ,Taddress_t        ,_param->_size_instruction_address,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
    209226      _ALLOC2_SIGNAL_IN ( in_EXECUTE_EXECUTE_LOOP_DATA                 ,"DATA"                 ,Tgeneral_data_t   ,_param->_size_general_data ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
     227   
     228      ALLOC2_INTERFACE_END(_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
    210229    }
    211230
    212231    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    213232    {
    214       ALLOC2_INTERFACE("insert_ooo_engine",SOUTH,IN ,_("Insert"),_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
     233      ALLOC2_INTERFACE_BEGIN("insert_ooo_engine",SOUTH,IN ,_("Insert"),_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
    215234     
    216235      _ALLOC2_SIGNAL_IN ( in_INSERT_OOO_ENGINE_VAL       ,"VAL"       ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
     
    220239      _ALLOC2_SIGNAL_IN ( in_INSERT_OOO_ENGINE_RE_USE    ,"RE_USE"    ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
    221240      _ALLOC2_SIGNAL_IN ( in_INSERT_OOO_ENGINE_RE_NUM_REG,"RE_NUM_REG",Tspecial_address_t,_param->_size_special_register,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
    222     }
    223    
    224     {
    225       ALLOC3_INTERFACE("insert_execute_loop",SOUTH,IN ,_("Insert"),_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
     241
     242      ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
     243    }
     244   
     245    {
     246      ALLOC3_INTERFACE_BEGIN("insert_execute_loop",SOUTH,IN ,_("Insert"),_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
    226247     
    227248      _ALLOC3_SIGNAL_OUT(out_INSERT_EXECUTE_LOOP_VAL       ,"VAL"       ,Tcontrol_t        ,1                             ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
     
    231252      _ALLOC3_SIGNAL_OUT(out_INSERT_EXECUTE_LOOP_RE_USE    ,"RE_USE"    ,Tcontrol_t        ,1                             ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
    232253      _ALLOC3_SIGNAL_OUT(out_INSERT_EXECUTE_LOOP_RE_NUM_REG,"RE_NUM_REG",Tspecial_address_t,_param->_size_special_register,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
     254
     255      ALLOC3_INTERFACE_END(_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
    233256    }
    234257
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Dcache_Access/src/Dcache_Access_allocation.cpp

    r88 r112  
    5656    // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5757    {
    58       ALLOC1_INTERFACE("dcache_req", OUT, NORTH, _("Request to data cache"),_param->_nb_dcache_port);
     58      ALLOC1_INTERFACE_BEGIN("dcache_req", OUT, NORTH, _("Request to data cache"),_param->_nb_dcache_port);
    5959     
    6060      ALLOC1_VALACK_OUT(out_DCACHE_REQ_VAL         ,VAL);
     
    6565      ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_WDATA       ,"wdata"    ,Tdcache_data_t       ,_param->_size_data);
    6666      ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_TYPE        ,"type"     ,Tdcache_type_t       ,_param->_size_dcache_type);
     67
     68      ALLOC1_INTERFACE_END(param->_nb_dcache_port);
    6769    }
    6870                                                                           
    6971    // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    7072    {
    71       ALLOC1_INTERFACE("dcache_rsp", IN , NORTH, _("Respons from data cache"),_param->_nb_dcache_port);
     73      ALLOC1_INTERFACE_BEGIN("dcache_rsp", IN , NORTH, _("Respons from data cache"),_param->_nb_dcache_port);
    7274
    7375      ALLOC1_VALACK_IN ( in_DCACHE_RSP_VAL         ,VAL);
     
    7779      ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_RDATA       ,"rdata"    ,Tdcache_data_t       ,_param->_size_data);
    7880      ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_ERROR       ,"error"    ,Tdcache_error_t      ,_param->_size_dcache_error);
     81
     82      ALLOC1_INTERFACE_END(_param->_nb_dcache_port);
    7983    }
    8084
    8185    // ~~~~~[ Interface "lsq_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8286    {
    83       ALLOC3_INTERFACE("lsq_req", IN, SOUTH, _("Request from load_store queue"), _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]);
     87      ALLOC3_INTERFACE_BEGIN("lsq_req", IN, SOUTH, _("Request from load_store queue"), _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]);
    8488
    8589      _ALLOC3_VALACK_IN ( in_LSQ_REQ_VAL            ,VAL, _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]);
     
    9094      _ALLOC3_SIGNAL_IN ( in_LSQ_REQ_WDATA          ,"wdata"    ,Tdcache_data_t       ,_param->_size_data                , _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]);
    9195      _ALLOC3_SIGNAL_IN ( in_LSQ_REQ_TYPE           ,"type"     ,Tdcache_type_t       ,_param->_size_dcache_type         , _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]);
     96
     97      ALLOC3_INTERFACE_END(_param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]);
    9298    }
    9399
    94100    // ~~~~~[ Interface "lsq_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    95101    {
    96       ALLOC3_INTERFACE("lsq_rsp",OUT, SOUTH, _("Respons to load_store queue"), _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]);
     102      ALLOC3_INTERFACE_BEGIN("lsq_rsp",OUT, SOUTH, _("Respons to load_store queue"), _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]);
    97103     
    98104      _ALLOC3_VALACK_OUT(out_LSQ_RSP_VAL            ,VAL, _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]);
     
    102108      _ALLOC3_SIGNAL_OUT(out_LSQ_RSP_RDATA          ,"rdata"    ,Tdcache_data_t       ,_param->_size_data                , _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]);
    103109      _ALLOC3_SIGNAL_OUT(out_LSQ_RSP_ERROR          ,"error"    ,Tdcache_error_t      ,_param->_size_dcache_error       , _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]);
     110
     111      ALLOC3_INTERFACE_END(_param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]);
    104112    }
    105113
     
    108116    if (usage_is_set(_usage,USE_SYSTEMC))
    109117      {
    110         _internal_DCACHE_REQ_NB_ACCESS         = new uint32_t [_param->_nb_dcache_port];
    111         _internal_DCACHE_REQ_NB_ACCESS_CONFLIT = new uint32_t [_param->_nb_dcache_port];
     118        ALLOC1(_internal_DCACHE_REQ_NB_ACCESS        ,uint32_t,_param->_nb_dcache_port);
     119        ALLOC1(_internal_DCACHE_REQ_NB_ACCESS_CONFLIT,uint32_t,_param->_nb_dcache_port);
    112120      }
    113121#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Dcache_Access/src/Dcache_Access_deallocation.cpp

    r88 r112  
    5858        // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959#ifdef STATISTICS
    60         delete [] _internal_DCACHE_REQ_NB_ACCESS        ;
    61         delete [] _internal_DCACHE_REQ_NB_ACCESS_CONFLIT;
     60        DELETE1(_internal_DCACHE_REQ_NB_ACCESS        ,_param->_nb_dcache_port);
     61        DELETE1(_internal_DCACHE_REQ_NB_ACCESS_CONFLIT,_param->_nb_dcache_port);
    6262#endif
    6363      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Icache_Access/SelfTest/src/test.cpp

    r88 r112  
    119119      if (_param->_have_port_packet_id [i][j])
    120120        {
    121         INSTANCE_SC_SIGNAL(_Icache_Access, in_CONTEXT_REQ_PACKET_ID [i][j]);
    122         INSTANCE_SC_SIGNAL(_Icache_Access,out_CONTEXT_RSP_PACKET_ID [i][j]);
     121        INSTANCE0_SC_SIGNAL(_Icache_Access, in_CONTEXT_REQ_PACKET_ID [i][j]);
     122        INSTANCE0_SC_SIGNAL(_Icache_Access,out_CONTEXT_RSP_PACKET_ID [i][j]);
    123123      }
    124124
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Icache_Access/src/Icache_Access_allocation.cpp

    r88 r112  
    5656    // ~~~~~[ Interface "icache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5757    {
    58       ALLOC1_INTERFACE("icache_req",WEST,OUT,_("Request to instruction cache"),_param->_nb_icache_port);
     58      ALLOC1_INTERFACE_BEGIN("icache_req",WEST,OUT,_("Request to instruction cache"),_param->_nb_icache_port);
    5959     
    6060      ALLOC1_VALACK_OUT(out_ICACHE_REQ_VAL         ,VAL);
     
    6464      ALLOC1_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS     ,"address"  ,Ticache_address_t    ,_param->_size_address         );
    6565      ALLOC1_SIGNAL_OUT(out_ICACHE_REQ_TYPE        ,"type"     ,Ticache_type_t       ,_param->_size_icache_type     );
     66
     67      ALLOC1_INTERFACE_END(_param->_nb_icache_port);
    6668    }
    6769
    6870    // ~~~~~[ Interface "icache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    6971    {
    70       ALLOC1_INTERFACE("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_param->_nb_icache_port);
     72      ALLOC1_INTERFACE_BEGIN("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_param->_nb_icache_port);
    7173
    7274      ALLOC1_VALACK_IN ( in_ICACHE_RSP_VAL         ,VAL);
     
    7577      ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_PACKET_ID   ,"packet_id"  ,Tpacket_t            ,_param->_size_icache_packet_id);
    7678      ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_ERROR       ,"error"      ,Ticache_error_t      ,_param->_size_icache_error    );
     79
     80      ALLOC1_INTERFACE_END(_param->_nb_icache_port);
    7781    }
    7882    {
    79       // NOTE : max_nb_instruction is too wide ...
    80       ALLOC2_INTERFACE("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_param->_nb_icache_port,_param->_icache_nb_instruction[it1]);
     83      ALLOC2_INTERFACE_BEGIN("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_param->_nb_icache_port,_param->_icache_nb_instruction[it1]);
    8184
    8285      _ALLOC2_SIGNAL_IN ( in_ICACHE_RSP_INSTRUCTION ,"instruction",Ticache_instruction_t,_param->_size_instruction,_param->_nb_icache_port,_param->_icache_nb_instruction[it1]);
     86
     87      ALLOC2_INTERFACE_END(_param->_nb_icache_port,_param->_icache_nb_instruction[it1]);
    8388    }
    8489
    8590    // ~~~~~[ Interface "context_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8691    {
    87       ALLOC2_INTERFACE("context_req",EAST,IN ,_("Request from context_unit."),_param->_nb_front_end, _param->_nb_context[it1]);
     92      ALLOC2_INTERFACE_BEGIN("context_req",EAST,IN ,_("Request from context_unit."),_param->_nb_front_end, _param->_nb_context[it1]);
    8893
    8994      _ALLOC2_VALACK_IN ( in_CONTEXT_REQ_VAL        ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
     
    9398      _ALLOC2_SIGNAL_IN ( in_CONTEXT_REQ_ADDRESS    ,"address"    ,Ticache_address_t    ,_param->_size_address            ,_param->_nb_front_end, _param->_nb_context[it1]);
    9499      _ALLOC2_SIGNAL_IN ( in_CONTEXT_REQ_TYPE       ,"type"       ,Ticache_type_t       ,_param->_size_icache_type        ,_param->_nb_front_end, _param->_nb_context[it1]);
     100
     101      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    95102    }
    96103
    97104    // ~~~~~[ Interface "context_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    98105    {
    99       ALLOC2_INTERFACE("context_rsp",EAST,OUT,_("Respons to context_unit."),_param->_nb_front_end, _param->_nb_context[it1]);
     106      ALLOC2_INTERFACE_BEGIN("context_rsp",EAST,OUT,_("Respons to context_unit."),_param->_nb_front_end, _param->_nb_context[it1]);
    100107
    101108      _ALLOC2_VALACK_OUT(out_CONTEXT_RSP_VAL        ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
     
    104111      _ALLOC2_SIGNAL_OUT(out_CONTEXT_RSP_PACKET_ID  ,"packet_id"  ,Tpacket_t            ,_param->_size_packet_id[it1][it2],_param->_nb_front_end, _param->_nb_context[it1]);
    105112      _ALLOC2_SIGNAL_OUT(out_CONTEXT_RSP_ERROR      ,"error"      ,Ticache_error_t      ,_param->_size_icache_error       ,_param->_nb_front_end, _param->_nb_context[it1]);
     113
     114      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    106115    }
    107116    {
    108       ALLOC3_INTERFACE("context_rsp",EAST,OUT,_("Respons to context_unit."),_param->_nb_front_end, _param->_nb_context[it1],_param->_nb_instruction[it1][it2]);
     117      ALLOC3_INTERFACE_BEGIN("context_rsp",EAST,OUT,_("Respons to context_unit."),_param->_nb_front_end, _param->_nb_context[it1],_param->_nb_instruction[it1][it2]);
    109118
    110119      _ALLOC3_SIGNAL_OUT(out_CONTEXT_RSP_INSTRUCTION,"instruction",Ticache_instruction_t,_param->_size_instruction,_param->_nb_front_end, _param->_nb_context[it1],_param->_nb_instruction[it1][it2]);
     120
     121      ALLOC3_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1],_param->_nb_instruction[it1][it2]);
    111122    }
    112123
     
    115126        // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    116127#ifdef STATISTICS
    117         _internal_ICACHE_REQ_NB_ACCESS         = new uint32_t [_param->_nb_icache_port];
    118         _internal_ICACHE_REQ_NB_ACCESS_CONFLIT = new uint32_t [_param->_nb_icache_port];
     128        ALLOC1(_internal_ICACHE_REQ_NB_ACCESS        ,uint32_t,_param->_nb_icache_port);
     129        ALLOC1(_internal_ICACHE_REQ_NB_ACCESS_CONFLIT,uint32_t,_param->_nb_icache_port);
    119130#endif
    120131      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Icache_Access/src/Icache_Access_deallocation.cpp

    r88 r112  
    5656        // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5757#ifdef STATISTICS
    58         delete [] _internal_ICACHE_REQ_NB_ACCESS        ;
    59         delete [] _internal_ICACHE_REQ_NB_ACCESS_CONFLIT;
     58        DELETE1(_internal_ICACHE_REQ_NB_ACCESS        ,_param->_nb_icache_port);
     59        DELETE1(_internal_ICACHE_REQ_NB_ACCESS_CONFLIT,_param->_nb_icache_port);
    6060#endif
    6161      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Execute_loop_Glue/src/Execute_loop_Glue_allocation.cpp

    r88 r112  
    5858    // -----[ Interface "gpr_write_write_unit" ]--------------------------
    5959    {
    60       ALLOC1_INTERFACE("gpr_write_write_unit", IN, EAST, _("General register write (from write_unit)"), _param->_nb_gpr_write);
     60      ALLOC1_INTERFACE_BEGIN("gpr_write_write_unit", IN, EAST, _("General register write (from write_unit)"), _param->_nb_gpr_write);
    6161     
    6262      ALLOC1_VALACK_IN ( in_GPR_WRITE_WRITE_UNIT_VAL               ,VAL);
     
    6565      ALLOC1_SIGNAL_IN ( in_GPR_WRITE_WRITE_UNIT_NUM_REG           ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
    6666      ALLOC1_SIGNAL_IN ( in_GPR_WRITE_WRITE_UNIT_DATA              ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data);
     67
     68      ALLOC1_INTERFACE_END(_param->_nb_gpr_write);
    6769    }
    6870
    6971    // -----[ Interface "gpr_write_register_file" ]-----------------------
    7072    {
    71       ALLOC1_INTERFACE("gpr_write_register_file",OUT,SOUTH, _("General register write (to register file)"), _param->_nb_gpr_write);
     73      ALLOC1_INTERFACE_BEGIN("gpr_write_register_file",OUT,SOUTH, _("General register write (to register file)"), _param->_nb_gpr_write);
    7274
    7375      ALLOC1_VALACK_OUT(out_GPR_WRITE_REGISTER_FILE_VAL            ,VAL);                                                         
     
    7678      ALLOC1_SIGNAL_OUT(out_GPR_WRITE_REGISTER_FILE_NUM_REG        ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
    7779      ALLOC1_SIGNAL_OUT(out_GPR_WRITE_REGISTER_FILE_DATA           ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data);
     80
     81      ALLOC1_INTERFACE_END(_param->_nb_gpr_write);
    7882    }
    7983
    8084    // -----[ Interface "gpr_write_read_unit" ]---------------------------
    8185    {
    82       ALLOC1_INTERFACE("gpr_write_read_unit",OUT,SOUTH, _("General register write (to read unit)"), _param->_nb_gpr_write);
     86      ALLOC1_INTERFACE_BEGIN("gpr_write_read_unit",OUT,SOUTH, _("General register write (to read unit)"), _param->_nb_gpr_write);
    8387
    8488      ALLOC1_VALACK_OUT(out_GPR_WRITE_READ_UNIT_VAL                ,VAL);                                                         
     
    8690      ALLOC1_SIGNAL_OUT(out_GPR_WRITE_READ_UNIT_NUM_REG            ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
    8791      ALLOC1_SIGNAL_OUT(out_GPR_WRITE_READ_UNIT_DATA               ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data);
     92
     93      ALLOC1_INTERFACE_END(_param->_nb_gpr_write);
    8894    }
    8995
    9096    // -----[ Interface "spr_write_write_unit" ]--------------------------
    9197    {
    92       ALLOC1_INTERFACE("spr_write_write_unit", IN, EAST, _("Special register write (from write_unit)"), _param->_nb_spr_write);
     98      ALLOC1_INTERFACE_BEGIN("spr_write_write_unit", IN, EAST, _("Special register write (from write_unit)"), _param->_nb_spr_write);
    9399     
    94100      ALLOC1_VALACK_IN ( in_SPR_WRITE_WRITE_UNIT_VAL               ,VAL);
     
    97103      ALLOC1_SIGNAL_IN ( in_SPR_WRITE_WRITE_UNIT_NUM_REG           ,"num_reg"      ,Tspecial_address_t,_param->_size_special_register);
    98104      ALLOC1_SIGNAL_IN ( in_SPR_WRITE_WRITE_UNIT_DATA              ,"data"         ,Tspecial_data_t   ,_param->_size_special_data);
     105
     106      ALLOC1_INTERFACE_END(_param->_nb_spr_write);
    99107    }
    100108
    101109    // -----[ Interface "spr_write_register_file" ]-----------------------
    102110    {
    103       ALLOC1_INTERFACE("spr_write_register_file",OUT,SOUTH, _("Special register write (to register file)"), _param->_nb_spr_write);
     111      ALLOC1_INTERFACE_BEGIN("spr_write_register_file",OUT,SOUTH, _("Special register write (to register file)"), _param->_nb_spr_write);
    104112
    105113      ALLOC1_VALACK_OUT(out_SPR_WRITE_REGISTER_FILE_VAL            ,VAL);                                                         
     
    108116      ALLOC1_SIGNAL_OUT(out_SPR_WRITE_REGISTER_FILE_NUM_REG        ,"num_reg"      ,Tspecial_address_t,_param->_size_special_register);
    109117      ALLOC1_SIGNAL_OUT(out_SPR_WRITE_REGISTER_FILE_DATA           ,"data"         ,Tspecial_data_t   ,_param->_size_special_data);
     118
     119      ALLOC1_INTERFACE_END(_param->_nb_spr_write);
    110120    }
    111121
    112122    // -----[ Interface "spr_write_read_unit" ]---------------------------
    113123    {
    114       ALLOC1_INTERFACE("spr_write_read_unit",OUT,SOUTH, _("Special register write (to read unit)"), _param->_nb_spr_write);
     124      ALLOC1_INTERFACE_BEGIN("spr_write_read_unit",OUT,SOUTH, _("Special register write (to read unit)"), _param->_nb_spr_write);
    115125
    116126      ALLOC1_VALACK_OUT(out_SPR_WRITE_READ_UNIT_VAL                ,VAL);                                                         
     
    118128      ALLOC1_SIGNAL_OUT(out_SPR_WRITE_READ_UNIT_NUM_REG            ,"num_reg"      ,Tspecial_address_t,_param->_size_special_register);
    119129      ALLOC1_SIGNAL_OUT(out_SPR_WRITE_READ_UNIT_DATA               ,"data"         ,Tspecial_data_t   ,_param->_size_special_data);
     130
     131      ALLOC1_INTERFACE_END(_param->_nb_spr_write);
    120132    }
    121133
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_allocation.cpp

    r101 r112  
    77
    88#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Functionnal_unit.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    5051    // ~~~~~[ Interface : "execute_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5152
    52      {
    53       Interface_fifo * interface = _interfaces->set_interface("execute_in"
    54 #ifdef POSITION
    55                                                               ,IN
    56                                                               ,WEST,
    57                                                               "Input of Functionnal Unit"
    58 #endif
    59                                                               );
    60 
    61        in_EXECUTE_IN_VAL           = interface->set_signal_valack_in  (VAL);
    62       out_EXECUTE_IN_ACK           = interface->set_signal_valack_out (ACK);
    63       if (_param->_have_port_context_id)
    64        in_EXECUTE_IN_CONTEXT_ID    = interface->set_signal_in <Tcontext_t        > ("context_id"   , _param->_size_context_id   );
    65       if (_param->_have_port_front_end_id)
    66        in_EXECUTE_IN_FRONT_END_ID  = interface->set_signal_in <Tcontext_t        > ("front_end_id" , _param->_size_front_end_id );
    67       if (_param->_have_port_ooo_engine_id)
    68        in_EXECUTE_IN_OOO_ENGINE_ID = interface->set_signal_in <Tcontext_t        > ("ooo_engine_id", _param->_size_ooo_engine_id);
    69       if (_param->_have_port_rob_ptr)
    70        in_EXECUTE_IN_PACKET_ID     = interface->set_signal_in <Tpacket_t         > ("packet_id"    , _param->_size_rob_ptr    );
    71        in_EXECUTE_IN_OPERATION     = interface->set_signal_in <Toperation_t      > ("operation"    , _param->_size_operation    );
    72        in_EXECUTE_IN_TYPE          = interface->set_signal_in <Ttype_t           > ("type"         , _param->_size_type         );
    73        in_EXECUTE_IN_STORE_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("store_queue_ptr_write",_param->_size_store_queue_ptr);
    74        if (_param->_have_port_load_queue_ptr)
    75        in_EXECUTE_IN_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_in <Tlsq_ptr_t> ("load_queue_ptr_write" ,_param->_size_load_queue_ptr);
    76        in_EXECUTE_IN_HAS_IMMEDIAT  = interface->set_signal_in <Tcontrol_t        > ("has_immediat" , 1);
    77        in_EXECUTE_IN_IMMEDIAT      = interface->set_signal_in <Tgeneral_data_t   > ("immediat"     , _param->_size_general_data);
    78        in_EXECUTE_IN_DATA_RA       = interface->set_signal_in <Tgeneral_data_t   > ("data_ra"      , _param->_size_general_data);
    79        in_EXECUTE_IN_DATA_RB       = interface->set_signal_in <Tgeneral_data_t   > ("data_rb"      , _param->_size_general_data);
    80        in_EXECUTE_IN_DATA_RC       = interface->set_signal_in <Tspecial_data_t   > ("data_rc"      , _param->_size_special_data);
    81        in_EXECUTE_IN_WRITE_RD      = interface->set_signal_in <Tcontrol_t        > ("write_rd"     , 1);
    82        in_EXECUTE_IN_NUM_REG_RD    = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rd"   , _param->_size_general_register);
    83        in_EXECUTE_IN_WRITE_RE      = interface->set_signal_in <Tcontrol_t        > ("write_re"     , 1);
    84        in_EXECUTE_IN_NUM_REG_RE    = interface->set_signal_in <Tspecial_address_t> ("num_reg_re"   , _param->_size_special_register);
     53    {
     54      ALLOC0_INTERFACE_BEGIN("execute_in",IN,WEST,"Input of Functionnal Unit");
     55
     56      ALLOC0_VALACK_IN ( in_EXECUTE_IN_VAL                   ,VAL);
     57      ALLOC0_VALACK_OUT(out_EXECUTE_IN_ACK                   ,ACK);
     58      ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_CONTEXT_ID            ,"context_id"           ,Tcontext_t        , _param->_size_context_id   );
     59      ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_FRONT_END_ID          ,"front_end_id"         ,Tcontext_t        , _param->_size_front_end_id );
     60      ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_OOO_ENGINE_ID         ,"ooo_engine_id"        ,Tcontext_t        , _param->_size_ooo_engine_id);
     61      ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_PACKET_ID             ,"packet_id"            ,Tpacket_t         , _param->_size_rob_ptr    );
     62      ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_OPERATION             ,"operation"            ,Toperation_t      , _param->_size_operation    );
     63      ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_TYPE                  ,"type"                 ,Ttype_t           , _param->_size_type         );
     64      ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_STORE_QUEUE_PTR_WRITE ,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr);
     65      ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_LOAD_QUEUE_PTR_WRITE  ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr);
     66      ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_HAS_IMMEDIAT          ,"has_immediat"         ,Tcontrol_t        , 1);
     67      ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_IMMEDIAT              ,"immediat"             ,Tgeneral_data_t   , _param->_size_general_data);
     68      ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_DATA_RA               ,"data_ra"              ,Tgeneral_data_t   , _param->_size_general_data);
     69      ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_DATA_RB               ,"data_rb"              ,Tgeneral_data_t   , _param->_size_general_data);
     70      ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_DATA_RC               ,"data_rc"              ,Tspecial_data_t   , _param->_size_special_data);
     71      ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_WRITE_RD              ,"write_rd"             ,Tcontrol_t        , 1);
     72      ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_NUM_REG_RD            ,"num_reg_rd"           ,Tgeneral_address_t, _param->_size_general_register);
     73      ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_WRITE_RE              ,"write_re"             ,Tcontrol_t        , 1);
     74      ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_NUM_REG_RE            ,"num_reg_re"           ,Tspecial_address_t, _param->_size_special_register);
     75
     76      ALLOC0_INTERFACE_END();
    8577     }
    8678    // ~~~~~[ Interface : "execute_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     
    8779     {
    88        Interface_fifo * interface = _interfaces->set_interface("execute_out"
    89 #ifdef POSITION
    90                                                                ,IN
    91                                                                ,EAST,
    92                                                                "Output of Functionnal Unit"
    93 #endif
    94                                                                );
    95 
    96        out_EXECUTE_OUT_VAL            = interface->set_signal_valack_out (VAL);
    97         in_EXECUTE_OUT_ACK            = interface->set_signal_valack_in  (ACK);
    98        if (_param->_have_port_context_id)
    99        out_EXECUTE_OUT_CONTEXT_ID     = interface->set_signal_out<Tcontext_t        > ("context_id"   ,_param->_size_context_id   );
    100        if (_param->_have_port_front_end_id)
    101        out_EXECUTE_OUT_FRONT_END_ID   = interface->set_signal_out<Tcontext_t        > ("front_end_id" ,_param->_size_front_end_id );
    102        if (_param->_have_port_ooo_engine_id)
    103        out_EXECUTE_OUT_OOO_ENGINE_ID  = interface->set_signal_out<Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id);
    104        if (_param->_have_port_rob_ptr)
    105        out_EXECUTE_OUT_PACKET_ID      = interface->set_signal_out<Tpacket_t         > ("packet_id"    ,_param->_size_rob_ptr    );
    106      //out_EXECUTE_OUT_OPERATION      = interface->set_signal_out<Toperation_t      > ("operation"    ,_param->_size_operation    );
    107      //out_EXECUTE_OUT_TYPE           = interface->set_signal_out<Ttype_t           > ("type"         ,_param->_size_type         );
    108        out_EXECUTE_OUT_WRITE_RD       = interface->set_signal_out<Tcontrol_t        > ("write_rd"     ,1);
    109        out_EXECUTE_OUT_NUM_REG_RD     = interface->set_signal_out<Tgeneral_address_t> ("num_reg_rd"   ,_param->_size_general_register);
    110        out_EXECUTE_OUT_DATA_RD        = interface->set_signal_out<Tgeneral_data_t   > ("data_rd"      ,_param->_size_general_data);
    111        out_EXECUTE_OUT_WRITE_RE       = interface->set_signal_out<Tcontrol_t        > ("write_re"     ,1);
    112        out_EXECUTE_OUT_NUM_REG_RE     = interface->set_signal_out<Tspecial_address_t> ("num_reg_re"   ,_param->_size_special_register);
    113        out_EXECUTE_OUT_DATA_RE        = interface->set_signal_out<Tspecial_data_t   > ("data_re"      ,_param->_size_special_data);
    114        out_EXECUTE_OUT_EXCEPTION      = interface->set_signal_out<Texception_t      > ("exception"    ,_param->_size_exception);
    115        out_EXECUTE_OUT_NO_SEQUENCE    = interface->set_signal_out<Tcontrol_t        > ("no_sequence"  ,1);
    116        out_EXECUTE_OUT_ADDRESS        = interface->set_signal_out<Taddress_t        > ("address"      ,_param->_size_instruction_address);
     80       ALLOC0_INTERFACE_BEGIN("execute_out",IN,EAST,"Output of Functionnal Unit");
     81
     82       ALLOC0_VALACK_OUT(out_EXECUTE_OUT_VAL            ,VAL);
     83       ALLOC0_VALACK_IN ( in_EXECUTE_OUT_ACK            ,ACK);
     84       ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_CONTEXT_ID     ,"context_id"   ,Tcontext_t        ,_param->_size_context_id   );
     85       ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_FRONT_END_ID   ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id );
     86       ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_OOO_ENGINE_ID  ,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id);
     87       ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_PACKET_ID      ,"packet_id"    ,Tpacket_t         ,_param->_size_rob_ptr    );
     88     //ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_OPERATION      ,"operation"    ,Toperation_t      ,_param->_size_operation    );
     89     //ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_TYPE           ,"type"         ,Ttype_t           ,_param->_size_type         );
     90       ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_WRITE_RD       ,"write_rd"     ,Tcontrol_t        ,1);
     91       ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_NUM_REG_RD     ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register);
     92       ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_DATA_RD        ,"data_rd"      ,Tgeneral_data_t   ,_param->_size_general_data);
     93       ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_WRITE_RE       ,"write_re"     ,Tcontrol_t        ,1);
     94       ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_NUM_REG_RE     ,"num_reg_re"   ,Tspecial_address_t,_param->_size_special_register);
     95       ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_DATA_RE        ,"data_re"      ,Tspecial_data_t   ,_param->_size_special_data);
     96       ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_EXCEPTION      ,"exception"    ,Texception_t      ,_param->_size_exception);
     97       ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_NO_SEQUENCE    ,"no_sequence"  ,Tcontrol_t        ,1);
     98       ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_ADDRESS        ,"address"      ,Taddress_t        ,_param->_size_instruction_address);
     99
     100       ALLOC0_INTERFACE_END();
    117101     }
    118102
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_deallocation.cpp

    r97 r112  
    77
    88#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Functionnal_unit.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2930        delete    in_NRESET;
    3031       
    31         delete  in_EXECUTE_IN_VAL           ;
    32         delete out_EXECUTE_IN_ACK           ;
    33         if (_param->_have_port_context_id)
    34         delete  in_EXECUTE_IN_CONTEXT_ID    ;
    35         if (_param->_have_port_front_end_id)
    36         delete  in_EXECUTE_IN_FRONT_END_ID  ;
    37         if (_param->_have_port_ooo_engine_id)
    38         delete  in_EXECUTE_IN_OOO_ENGINE_ID ;
    39         if (_param->_have_port_rob_ptr)
    40         delete  in_EXECUTE_IN_PACKET_ID     ;
    41         delete  in_EXECUTE_IN_OPERATION     ;
    42         delete  in_EXECUTE_IN_TYPE          ;
    43         delete  in_EXECUTE_IN_STORE_QUEUE_PTR_WRITE;
    44         if (_param->_have_port_load_queue_ptr)
    45         delete  in_EXECUTE_IN_LOAD_QUEUE_PTR_WRITE ;
    46         delete  in_EXECUTE_IN_HAS_IMMEDIAT  ;
    47         delete  in_EXECUTE_IN_IMMEDIAT      ;
    48         delete  in_EXECUTE_IN_DATA_RA       ;
    49         delete  in_EXECUTE_IN_DATA_RB       ;
    50         delete  in_EXECUTE_IN_DATA_RC       ;
    51         delete  in_EXECUTE_IN_WRITE_RD      ;
    52         delete  in_EXECUTE_IN_NUM_REG_RD    ;
    53         delete  in_EXECUTE_IN_WRITE_RE      ;
    54         delete  in_EXECUTE_IN_NUM_REG_RE    ;
     32        DELETE0_SIGNAL( in_EXECUTE_IN_VAL                   ,1);
     33        DELETE0_SIGNAL(out_EXECUTE_IN_ACK                   ,1);
     34        DELETE0_SIGNAL( in_EXECUTE_IN_CONTEXT_ID            , _param->_size_context_id   );
     35        DELETE0_SIGNAL( in_EXECUTE_IN_FRONT_END_ID          , _param->_size_front_end_id );
     36        DELETE0_SIGNAL( in_EXECUTE_IN_OOO_ENGINE_ID         , _param->_size_ooo_engine_id);
     37        DELETE0_SIGNAL( in_EXECUTE_IN_PACKET_ID             , _param->_size_rob_ptr    );
     38        DELETE0_SIGNAL( in_EXECUTE_IN_OPERATION             , _param->_size_operation    );
     39        DELETE0_SIGNAL( in_EXECUTE_IN_TYPE                  , _param->_size_type         );
     40        DELETE0_SIGNAL( in_EXECUTE_IN_STORE_QUEUE_PTR_WRITE ,_param->_size_store_queue_ptr);
     41        DELETE0_SIGNAL( in_EXECUTE_IN_LOAD_QUEUE_PTR_WRITE  ,_param->_size_load_queue_ptr);
     42        DELETE0_SIGNAL( in_EXECUTE_IN_HAS_IMMEDIAT          , 1);
     43        DELETE0_SIGNAL( in_EXECUTE_IN_IMMEDIAT              , _param->_size_general_data);
     44        DELETE0_SIGNAL( in_EXECUTE_IN_DATA_RA               , _param->_size_general_data);
     45        DELETE0_SIGNAL( in_EXECUTE_IN_DATA_RB               , _param->_size_general_data);
     46        DELETE0_SIGNAL( in_EXECUTE_IN_DATA_RC               , _param->_size_special_data);
     47        DELETE0_SIGNAL( in_EXECUTE_IN_WRITE_RD              , 1);
     48        DELETE0_SIGNAL( in_EXECUTE_IN_NUM_REG_RD            , _param->_size_general_register);
     49        DELETE0_SIGNAL( in_EXECUTE_IN_WRITE_RE              , 1);
     50        DELETE0_SIGNAL( in_EXECUTE_IN_NUM_REG_RE            , _param->_size_special_register);
    5551
    56         delete out_EXECUTE_OUT_VAL            ;
    57         delete  in_EXECUTE_OUT_ACK            ;
    58         if (_param->_have_port_context_id)
    59         delete out_EXECUTE_OUT_CONTEXT_ID     ;
    60         if (_param->_have_port_front_end_id)
    61         delete out_EXECUTE_OUT_FRONT_END_ID   ;
    62         if (_param->_have_port_ooo_engine_id)
    63         delete out_EXECUTE_OUT_OOO_ENGINE_ID  ;
    64         if (_param->_have_port_rob_ptr)
    65         delete out_EXECUTE_OUT_PACKET_ID      ;
    66 //      delete out_EXECUTE_OUT_OPERATION      ;
    67 //      delete out_EXECUTE_OUT_TYPE           ;
    68         delete out_EXECUTE_OUT_WRITE_RD       ;
    69         delete out_EXECUTE_OUT_NUM_REG_RD     ;
    70         delete out_EXECUTE_OUT_DATA_RD        ;
    71         delete out_EXECUTE_OUT_WRITE_RE       ;
    72         delete out_EXECUTE_OUT_NUM_REG_RE     ;
    73         delete out_EXECUTE_OUT_DATA_RE        ;
    74         delete out_EXECUTE_OUT_EXCEPTION      ;
    75         delete out_EXECUTE_OUT_NO_SEQUENCE    ;
    76         delete out_EXECUTE_OUT_ADDRESS        ;
     52        DELETE0_SIGNAL(out_EXECUTE_OUT_VAL            ,1);
     53        DELETE0_SIGNAL( in_EXECUTE_OUT_ACK            ,1);
     54        DELETE0_SIGNAL(out_EXECUTE_OUT_CONTEXT_ID     ,_param->_size_context_id   );
     55        DELETE0_SIGNAL(out_EXECUTE_OUT_FRONT_END_ID   ,_param->_size_front_end_id );
     56        DELETE0_SIGNAL(out_EXECUTE_OUT_OOO_ENGINE_ID  ,_param->_size_ooo_engine_id);
     57        DELETE0_SIGNAL(out_EXECUTE_OUT_PACKET_ID      ,_param->_size_rob_ptr    );
     58      //DELETE0_SIGNAL(out_EXECUTE_OUT_OPERATION      ,_param->_size_operation    );
     59      //DELETE0_SIGNAL(out_EXECUTE_OUT_TYPE           ,_param->_size_type         );
     60        DELETE0_SIGNAL(out_EXECUTE_OUT_WRITE_RD       ,1);
     61        DELETE0_SIGNAL(out_EXECUTE_OUT_NUM_REG_RD     ,_param->_size_general_register);
     62        DELETE0_SIGNAL(out_EXECUTE_OUT_DATA_RD        ,_param->_size_general_data);
     63        DELETE0_SIGNAL(out_EXECUTE_OUT_WRITE_RE       ,1);
     64        DELETE0_SIGNAL(out_EXECUTE_OUT_NUM_REG_RE     ,_param->_size_special_register);
     65        DELETE0_SIGNAL(out_EXECUTE_OUT_DATA_RE        ,_param->_size_special_data);
     66        DELETE0_SIGNAL(out_EXECUTE_OUT_EXCEPTION      ,_param->_size_exception);
     67        DELETE0_SIGNAL(out_EXECUTE_OUT_NO_SEQUENCE    ,1);
     68        DELETE0_SIGNAL(out_EXECUTE_OUT_ADDRESS        ,_param->_size_instruction_address);
    7769
    7870        // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_allocation.cpp

    r97 r112  
    5454    // ~~~~~[ Interface "memory_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5555    {
    56       ALLOC1_INTERFACE("memory_in",IN,WEST,_("Instruction from Reservations station"),_param->_nb_inst_memory);
     56      ALLOC1_INTERFACE_BEGIN("memory_in",IN,WEST,_("Instruction from Reservations station"),_param->_nb_inst_memory);
    5757
    5858      ALLOC1_VALACK_IN ( in_MEMORY_IN_VAL                  ,VAL);
     
    7575      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                                  );
    7676      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register     );
     77   
     78      ALLOC1_INTERFACE_END(_param->_nb_inst_memory);
    7779    }
    7880
    7981    // ~~~~~[ Interface "memory_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8082    {
    81       ALLOC1_INTERFACE("memory_out",OUT,EAST,_("Instruction to write queue"),_param->_nb_inst_memory);
     83      ALLOC1_INTERFACE_BEGIN("memory_out",OUT,EAST,_("Instruction to write queue"),_param->_nb_inst_memory);
    8284
    8385      ALLOC1_VALACK_OUT(out_MEMORY_OUT_VAL          ,VAL);
     
    98100      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_NO_SEQUENCE  ,"no_sequence"   ,Tcontrol_t        ,1                              );
    99101      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_ADDRESS      ,"address"       ,Taddress_t        ,_param->_size_instruction_address);
     102   
     103      ALLOC1_INTERFACE_END(_param->_nb_inst_memory);
    100104    }
    101105
    102106    // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    103107    {
    104       ALLOC1_INTERFACE("dcache_req",OUT,NORTH,_("Request port to dcache"),_param->_nb_cache_port);
     108      ALLOC1_INTERFACE_BEGIN("dcache_req",OUT,NORTH,_("Request port to dcache"),_param->_nb_cache_port);
    105109
    106110      ALLOC1_VALACK_OUT(out_DCACHE_REQ_VAL        ,VAL);
     
    111115      ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_TYPE       ,"type"      ,Tdcache_type_t   ,_param->_size_dcache_type );
    112116      ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_WDATA      ,"wdata"     ,Tdcache_data_t   ,_param->_size_general_data);
     117   
     118      ALLOC1_INTERFACE_END(_param->_nb_cache_port);
    113119    }
    114120
    115121    // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    116122    {
    117       ALLOC1_INTERFACE("dcache_rsp",IN,NORTH,_("Respons port from dcache"),_param->_nb_cache_port);
     123      ALLOC1_INTERFACE_BEGIN("dcache_rsp",IN,NORTH,_("Respons port from dcache"),_param->_nb_cache_port);
    118124
    119125      ALLOC1_VALACK_IN ( in_DCACHE_RSP_VAL        ,VAL);
     
    123129      ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_RDATA      ,"rdata"     ,Tdcache_data_t ,_param->_size_general_data);
    124130      ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_ERROR      ,"error"     ,Tdcache_error_t,_param->_size_dcache_error);
     131
     132      ALLOC1_INTERFACE_END(_param->_nb_cache_port);
    125133    }
    126134    // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    127135
    128136    {
    129       ALLOC1_INTERFACE("bypass_memory",OUT,NORTH,_("Bypass between the load queue and the reservation station"),_param->_nb_bypass_memory);
     137      ALLOC1_INTERFACE_BEGIN("bypass_memory",OUT,NORTH,_("Bypass between the load queue and the reservation station"),_param->_nb_bypass_memory);
    130138           
    131139      ALLOC1_VALACK_OUT(out_BYPASS_MEMORY_VAL           ,VAL);
     
    133141      ALLOC1_SIGNAL_OUT(out_BYPASS_MEMORY_NUM_REG       ,"num_reg"      ,Tgeneral_address_t, _param->_size_general_register);
    134142      ALLOC1_SIGNAL_OUT(out_BYPASS_MEMORY_DATA          ,"data"         ,Tgeneral_data_t   , _param->_size_general_data    );
     143
     144      ALLOC1_INTERFACE_END(_param->_nb_bypass_memory);
    135145    }
    136146
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_transition.cpp

    r110 r112  
    596596
    597597                          // check find a bypass. A speculative load have been committed : report a speculation miss.
    598                           if ((_load_queue[index_load]._check_hit != 0)// and
    599 //                               (_load_queue[index_load]._write_rd  == 0)
     598                          if ((_load_queue[index_load]._check_hit != 0) and
     599                              (_load_queue[index_load]._write_rd  == 0) // is commit
    600600                              )
    601601                            {
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp

    r88 r112  
    88
    99#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h"
     10#include "Behavioural/include/Allocation.h"
    1011
    1112namespace morpheo                    {
     
    5051    // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5152    {
    52       Interface_fifo * interface = _interfaces->set_interface("read_queue_in"
    53 #ifdef POSITION
    54                                                               ,IN
    55                                                               ,EAST
    56                                                               ,"Input of read_queue"
    57 #endif
    58                                                               );
     53      ALLOC0_INTERFACE_BEGIN("read_queue_in",IN,EAST,"Input of read_queue");
    5954
    60        in_READ_QUEUE_IN_VAL            = interface->set_signal_valack_in        ("val"    , VAL);
    61       out_READ_QUEUE_IN_ACK            = interface->set_signal_valack_out       ("ack"    , ACK);
    62       if(_param->_have_port_context_id  )
    63        in_READ_QUEUE_IN_CONTEXT_ID     = interface->set_signal_in  <Tcontext_t        > ("context_id"   ,_param->_size_context_id       );
    64       if(_param->_have_port_front_end_id)
    65        in_READ_QUEUE_IN_FRONT_END_ID   = interface->set_signal_in  <Tcontext_t        > ("front_end_id" ,_param->_size_front_end_id     );
    66        if(_param->_have_port_ooo_engine_id)
    67          in_READ_QUEUE_IN_OOO_ENGINE_ID  = interface->set_signal_in  <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id    );
    68       if(_param->_have_port_rob_ptr      )
    69        in_READ_QUEUE_IN_ROB_ID         = interface->set_signal_in  <Tpacket_t         > ("rob_id"      ,_param->_size_rob_ptr           );
    70        in_READ_QUEUE_IN_OPERATION      = interface->set_signal_in  <Toperation_t      > ("operation"   ,_param->_size_operation        );
    71        in_READ_QUEUE_IN_TYPE           = interface->set_signal_in  <Ttype_t           > ("type"        ,_param->_size_type             );
    72        in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE = interface->set_signal_in  <Tlsq_ptr_t> ("store_queue_ptr_write", _param->_size_store_queue_ptr);
    73        if (_param->_have_port_load_queue_ptr)
    74        in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_in  <Tlsq_ptr_t> ("load_queue_ptr_write" , _param->_size_load_queue_ptr);
    75        in_READ_QUEUE_IN_HAS_IMMEDIAT   = interface->set_signal_in  <Tcontrol_t        > ("has_immediat",1                             );
    76        in_READ_QUEUE_IN_IMMEDIAT       = interface->set_signal_in  <Tgeneral_data_t   > ("immediat"    ,_param->_size_general_data     );
    77        in_READ_QUEUE_IN_READ_RA        = interface->set_signal_in  <Tcontrol_t        > ("read_ra"     ,1                             );
    78        in_READ_QUEUE_IN_NUM_REG_RA     = interface->set_signal_in  <Tgeneral_address_t> ("num_reg_ra"  ,_param->_size_general_register );
    79        in_READ_QUEUE_IN_READ_RB        = interface->set_signal_in  <Tcontrol_t        > ("read_rb"     ,1                             );
    80        in_READ_QUEUE_IN_NUM_REG_RB     = interface->set_signal_in  <Tgeneral_address_t> ("num_reg_rb"  ,_param->_size_general_register );
    81        in_READ_QUEUE_IN_READ_RC        = interface->set_signal_in  <Tcontrol_t        > ("read_rc"     ,1                             );
    82        in_READ_QUEUE_IN_NUM_REG_RC     = interface->set_signal_in  <Tspecial_address_t> ("num_reg_rc"  ,_param->_size_special_register );
    83        in_READ_QUEUE_IN_WRITE_RD       = interface->set_signal_in  <Tcontrol_t        > ("write_rd"    ,1                             );
    84        in_READ_QUEUE_IN_NUM_REG_RD     = interface->set_signal_in  <Tgeneral_address_t> ("num_reg_rd"  ,_param->_size_general_register );
    85        in_READ_QUEUE_IN_WRITE_RE       = interface->set_signal_in  <Tcontrol_t        > ("write_re"    ,1                             );
    86        in_READ_QUEUE_IN_NUM_REG_RE     = interface->set_signal_in  <Tspecial_address_t> ("num_reg_re"  ,_param->_size_special_register );     
    87      }
     55      ALLOC0_VALACK_IN ( in_READ_QUEUE_IN_VAL                  ,VAL);
     56      ALLOC0_VALACK_OUT(out_READ_QUEUE_IN_ACK                  ,ACK);
     57      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_CONTEXT_ID           ,"context_id"           ,Tcontext_t        ,_param->_size_context_id      );
     58      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_FRONT_END_ID         ,"front_end_id"         ,Tcontext_t        ,_param->_size_front_end_id    );
     59      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_OOO_ENGINE_ID        ,"ooo_engine_id"        ,Tcontext_t        ,_param->_size_ooo_engine_id   );
     60      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_ROB_ID               ,"rob_id"               ,Tpacket_t         ,_param->_size_rob_ptr         );
     61      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation       );
     62      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type            );
     63      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr);
     64      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr);
     65      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1                             );
     66      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_IMMEDIAT             ,"immediat"             ,Tgeneral_data_t   ,_param->_size_general_data    );
     67      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_READ_RA              ,"read_ra"              ,Tcontrol_t        ,1                             );
     68      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RA           ,"num_reg_ra"           ,Tgeneral_address_t,_param->_size_general_register);
     69      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_READ_RB              ,"read_rb"              ,Tcontrol_t        ,1                             );
     70      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RB           ,"num_reg_rb"           ,Tgeneral_address_t,_param->_size_general_register);
     71      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_READ_RC              ,"read_rc"              ,Tcontrol_t        ,1                             );
     72      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RC           ,"num_reg_rc"           ,Tspecial_address_t,_param->_size_special_register);
     73      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_WRITE_RD             ,"write_rd"             ,Tcontrol_t        ,1                             );
     74      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RD           ,"num_reg_rd"           ,Tgeneral_address_t,_param->_size_general_register);
     75      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                             );
     76      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register);     
     77     
     78      ALLOC0_INTERFACE_END();
     79    }
    8880
    8981    // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    9082    {
    91       Interface_fifo * interface = _interfaces->set_interface("read_queue_out"
    92 #ifdef POSITION
    93                                                                ,OUT
    94                                                                ,EAST
    95                                                                ,"Input of read_queue"
    96 #endif
    97                                                                );
     83      ALLOC0_INTERFACE_BEGIN("read_queue_out",OUT,EAST,"Input of read_queue");
    9884     
    99       out_READ_QUEUE_OUT_VAL            = interface->set_signal_valack_out       ("val"    , VAL);
    100        in_READ_QUEUE_OUT_ACK            = interface->set_signal_valack_in        ("ack"    , ACK);
    101 
    102       if(_param->_have_port_context_id  )
    103         out_READ_QUEUE_OUT_CONTEXT_ID     = interface->set_signal_out <Tcontext_t        > ("context_id"   ,_param->_size_context_id       );
    104       if(_param->_have_port_front_end_id)
    105         out_READ_QUEUE_OUT_FRONT_END_ID   = interface->set_signal_out <Tcontext_t        > ("front_end_id" ,_param->_size_front_end_id     );
    106       if(_param->_have_port_ooo_engine_id)
    107         out_READ_QUEUE_OUT_OOO_ENGINE_ID  = interface->set_signal_out <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id    );
    108       if(_param->_have_port_rob_ptr      )
    109         out_READ_QUEUE_OUT_ROB_ID         = interface->set_signal_out <Tpacket_t         > ("rob_id"      ,_param->_size_rob_ptr           );
    110       out_READ_QUEUE_OUT_OPERATION      = interface->set_signal_out <Toperation_t      > ("operation"   ,_param->_size_operation        );
    111       out_READ_QUEUE_OUT_TYPE           = interface->set_signal_out <Ttype_t           > ("type"        ,_param->_size_type             );
    112       out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE = interface->set_signal_out <Tlsq_ptr_t> ("store_queue_ptr_write", _param->_size_store_queue_ptr);
    113       if (_param->_have_port_load_queue_ptr)
    114       out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_out <Tlsq_ptr_t> ("load_queue_ptr_write" , _param->_size_load_queue_ptr);
    115       out_READ_QUEUE_OUT_HAS_IMMEDIAT   = interface->set_signal_out <Tcontrol_t        > ("has_immediat",1                             );
    116       out_READ_QUEUE_OUT_IMMEDIAT       = interface->set_signal_out <Tgeneral_data_t   > ("immediat"    ,_param->_size_general_data     );
    117 //       out_READ_QUEUE_OUT_READ_RA        = interface->set_signal_out <Tcontrol_t        > ("read_ra"     ,1                             );
    118       out_READ_QUEUE_OUT_NUM_REG_RA     = interface->set_signal_out <Tgeneral_address_t> ("num_reg_ra"  ,_param->_size_general_register );
    119       out_READ_QUEUE_OUT_DATA_RA_VAL    = interface->set_signal_out <Tcontrol_t        > ("data_ra_val" ,1                             );
    120       out_READ_QUEUE_OUT_DATA_RA        = interface->set_signal_out <Tgeneral_data_t   > ("data_ra"     ,_param->_size_general_data     );
    121 //       out_READ_QUEUE_OUT_READ_RB        = interface->set_signal_out <Tcontrol_t        > ("read_rb"     ,1                             );
    122       out_READ_QUEUE_OUT_NUM_REG_RB     = interface->set_signal_out <Tgeneral_address_t> ("num_reg_rb"  ,_param->_size_general_register );
    123       out_READ_QUEUE_OUT_DATA_RB_VAL    = interface->set_signal_out <Tcontrol_t        > ("data_rb_val" ,1                             );
    124       out_READ_QUEUE_OUT_DATA_RB        = interface->set_signal_out <Tgeneral_data_t   > ("data_rb"     ,_param->_size_general_data     );
    125 //       out_READ_QUEUE_OUT_READ_RC        = interface->set_signal_out <Tcontrol_t        > ("read_rc"     ,1                             );
    126       out_READ_QUEUE_OUT_NUM_REG_RC     = interface->set_signal_out <Tspecial_address_t> ("num_reg_rc"  ,_param->_size_special_register );
    127       out_READ_QUEUE_OUT_DATA_RC_VAL    = interface->set_signal_out <Tcontrol_t        > ("data_rc_val" ,1                             );
    128       out_READ_QUEUE_OUT_DATA_RC        = interface->set_signal_out <Tspecial_data_t   > ("data_rc"     ,_param->_size_special_data     );
    129       out_READ_QUEUE_OUT_WRITE_RD       = interface->set_signal_out <Tcontrol_t        > ("write_rd"    ,1                             );
    130       out_READ_QUEUE_OUT_NUM_REG_RD     = interface->set_signal_out <Tgeneral_address_t> ("num_reg_rd"  ,_param->_size_general_register );
    131       out_READ_QUEUE_OUT_WRITE_RE       = interface->set_signal_out <Tcontrol_t        > ("write_re"    ,1                             );
    132       out_READ_QUEUE_OUT_NUM_REG_RE     = interface->set_signal_out <Tspecial_address_t> ("num_reg_re"  ,_param->_size_special_register );     
    133      }
     85      ALLOC0_VALACK_OUT(out_READ_QUEUE_OUT_VAL                   ,VAL);
     86      ALLOC0_VALACK_IN ( in_READ_QUEUE_OUT_ACK                   ,ACK);
     87      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_CONTEXT_ID            ,"context_id"           ,Tcontext_t        ,_param->_size_context_id       );
     88      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_FRONT_END_ID          ,"front_end_id"         ,Tcontext_t        ,_param->_size_front_end_id     );
     89      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_OOO_ENGINE_ID         ,"ooo_engine_id"        ,Tcontext_t        ,_param->_size_ooo_engine_id    );
     90      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_ROB_ID                ,"rob_id"               ,Tpacket_t         ,_param->_size_rob_ptr          );
     91      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_OPERATION             ,"operation"            ,Toperation_t      ,_param->_size_operation        );
     92      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_TYPE                  ,"type"                 ,Ttype_t           ,_param->_size_type             );
     93      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE ,"store_queue_ptr_write",Tlsq_ptr_t        , _param->_size_store_queue_ptr );
     94      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE  ,"load_queue_ptr_write" ,Tlsq_ptr_t        , _param->_size_load_queue_ptr  );
     95      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_HAS_IMMEDIAT          ,"has_immediat"         ,Tcontrol_t        ,1                              );
     96      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_IMMEDIAT              ,"immediat"             ,Tgeneral_data_t   ,_param->_size_general_data     );
     97//    ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_READ_RA               ,"read_ra"              ,Tcontrol_t        ,1                              );
     98      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RA            ,"num_reg_ra"           ,Tgeneral_address_t,_param->_size_general_register );
     99      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RA_VAL           ,"data_ra_val"          ,Tcontrol_t        ,1                              );
     100      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RA               ,"data_ra"              ,Tgeneral_data_t   ,_param->_size_general_data     );
     101//    ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_READ_RB               ,"read_rb"              ,Tcontrol_t        ,1                              );
     102      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RB            ,"num_reg_rb"           ,Tgeneral_address_t,_param->_size_general_register );
     103      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RB_VAL           ,"data_rb_val"          ,Tcontrol_t        ,1                              );
     104      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RB               ,"data_rb"              ,Tgeneral_data_t   ,_param->_size_general_data     );
     105//    ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_READ_RC               ,"read_rc"              ,Tcontrol_t        ,1                              );
     106      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RC            ,"num_reg_rc"           ,Tspecial_address_t,_param->_size_special_register );
     107      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RC_VAL           ,"data_rc_val"          ,Tcontrol_t        ,1                              );
     108      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RC               ,"data_rc"              ,Tspecial_data_t   ,_param->_size_special_data     );
     109      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_WRITE_RD              ,"write_rd"             ,Tcontrol_t        ,1                              );
     110      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RD            ,"num_reg_rd"           ,Tgeneral_address_t,_param->_size_general_register );
     111      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_WRITE_RE              ,"write_re"             ,Tcontrol_t        ,1                              );
     112      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RE            ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register );     
     113     
     114      ALLOC0_INTERFACE_END();
     115    }
    134116
    135117    // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     118    {
     119      ALLOC1_INTERFACE_BEGIN("gpr_read",IN,SOUTH,_("Interface with the General RegisterFile"),_param->_nb_gpr_read);
     120
     121      ALLOC1_VALACK_OUT(out_GPR_READ_VAL           ,VAL);
     122      ALLOC1_VALACK_IN ( in_GPR_READ_ACK           ,ACK);
     123      ALLOC1_SIGNAL_OUT(out_GPR_READ_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id);
     124      ALLOC1_SIGNAL_OUT(out_GPR_READ_NUM_REG       ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
     125      ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA          ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data);
     126      ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA_VAL      ,"data_val"     ,Tcontrol_t        ,1);
     127
     128      ALLOC1_INTERFACE_END(_param->_nb_gpr_read);
     129    }
    136130   
    137     out_GPR_READ_VAL          = new SC_OUT(Tcontrol_t        ) * [_param->_nb_gpr_read];
    138      in_GPR_READ_ACK          = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_read];
    139     if(_param->_have_port_ooo_engine_id)
    140       out_GPR_READ_OOO_ENGINE_ID= new SC_OUT(Tcontext_t        ) * [_param->_nb_gpr_read];
    141     out_GPR_READ_NUM_REG      = new SC_OUT(Tgeneral_address_t) * [_param->_nb_gpr_read];
    142      in_GPR_READ_DATA         = new SC_IN (Tgeneral_data_t   ) * [_param->_nb_gpr_read];
    143      in_GPR_READ_DATA_VAL     = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_read];
     131    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     132    {
     133      ALLOC1_INTERFACE_BEGIN("spr_read",IN,SOUTH,_("Interface with the General RegisterFile"),_param->_nb_spr_read);
    144134
    145     for (uint32_t i=0; i<_param->_nb_gpr_read; i++)
    146       {
    147         Interface_fifo * interface = _interfaces->set_interface("gpr_read_"+toString(i)
    148 #ifdef POSITION
    149                                                                 , IN 
    150                                                                 ,SOUTH
    151                                                                 , "Interface with the General RegisterFile."
    152 #endif
    153                                                                 );
     135      ALLOC1_VALACK_OUT(out_SPR_READ_VAL           ,VAL);
     136      ALLOC1_VALACK_IN ( in_SPR_READ_ACK           ,ACK);
     137      ALLOC1_SIGNAL_OUT(out_SPR_READ_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id);
     138      ALLOC1_SIGNAL_OUT(out_SPR_READ_NUM_REG       ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
     139      ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA          ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data);
     140      ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA_VAL      ,"data_val"     ,Tcontrol_t        ,1);
    154141
    155         out_GPR_READ_VAL           [i] = interface->set_signal_valack_out       ("val"    , VAL);
    156          in_GPR_READ_ACK           [i] = interface->set_signal_valack_in        ("ack"    , ACK);
    157         if(_param->_have_port_ooo_engine_id)
    158           out_GPR_READ_OOO_ENGINE_ID [i] = interface->set_signal_out <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id);
    159         out_GPR_READ_NUM_REG       [i] = interface->set_signal_out <Tgeneral_address_t> ("num_reg"  ,_param->_size_general_register);
    160          in_GPR_READ_DATA          [i] = interface->set_signal_in  <Tgeneral_data_t   > ("data"     ,_param->_size_general_data);
    161          in_GPR_READ_DATA_VAL      [i] = interface->set_signal_in  <Tcontrol_t        > ("data_val" ,1);
    162       }
    163      
    164     // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    165    
    166     out_SPR_READ_VAL          = new SC_OUT(Tcontrol_t        ) * [_param->_nb_spr_read];
    167      in_SPR_READ_ACK          = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_read];
    168     if(_param->_have_port_ooo_engine_id)
    169       out_SPR_READ_OOO_ENGINE_ID= new SC_OUT(Tcontext_t        ) * [_param->_nb_spr_read];
    170     out_SPR_READ_NUM_REG      = new SC_OUT(Tspecial_address_t) * [_param->_nb_spr_read];
    171      in_SPR_READ_DATA         = new SC_IN (Tspecial_data_t   ) * [_param->_nb_spr_read];
    172      in_SPR_READ_DATA_VAL     = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_read];
    173 
    174     for (uint32_t i=0; i<_param->_nb_spr_read; i++)
    175       {
    176         Interface_fifo * interface = _interfaces->set_interface("spr_read_"+toString(i)
    177 #ifdef POSITION
    178                                                                 , IN 
    179                                                                 ,SOUTH
    180                                                                 , "Interface with the Special RegisterFile."
    181 #endif
    182                                                                 );
    183 
    184         out_SPR_READ_VAL           [i] = interface->set_signal_valack_out       ("val"    , VAL);
    185          in_SPR_READ_ACK           [i] = interface->set_signal_valack_in        ("ack"    , ACK);
    186         if(_param->_have_port_ooo_engine_id)
    187           out_SPR_READ_OOO_ENGINE_ID [i] = interface->set_signal_out <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id);
    188         out_SPR_READ_NUM_REG       [i] = interface->set_signal_out <Tspecial_address_t> ("num_reg"   ,_param->_size_special_register);
    189          in_SPR_READ_DATA          [i] = interface->set_signal_in  <Tspecial_data_t   > ("data"      ,_param->_size_special_data);
    190          in_SPR_READ_DATA_VAL      [i] = interface->set_signal_in  <Tcontrol_t        > ("data_val"  ,1);
    191       }
     142      ALLOC1_INTERFACE_END(_param->_nb_spr_read);
     143    }
    192144
    193145    // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    194    
    195      in_GPR_WRITE_VAL          = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_write];
    196      if(_param->_have_port_ooo_engine_id)
    197        in_GPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t        ) * [_param->_nb_gpr_write];
    198      in_GPR_WRITE_NUM_REG      = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write];
    199      in_GPR_WRITE_DATA         = new SC_IN (Tgeneral_data_t   ) * [_param->_nb_gpr_write];
     146    {
     147      ALLOC1_INTERFACE_BEGIN("gpr_write",IN,SOUTH,_("Interface with write queue to bypass the write in the RegisterFile"),_param->_nb_gpr_write);
    200148
    201     for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
    202       {
    203         Interface_fifo * interface = _interfaces->set_interface("gpr_write_"+toString(i)
    204 #ifdef POSITION
    205                                                                 , IN 
    206                                                                 ,SOUTH
    207                                                                 , "Interface with write queue to bypass the write in the RegisterFile."
    208 #endif
    209                                                                 );
    210 
    211          in_GPR_WRITE_VAL           [i] = interface->set_signal_valack_in        ("val"    , VAL);
    212          if(_param->_have_port_ooo_engine_id)
    213            in_GPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in  <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id);
    214          in_GPR_WRITE_NUM_REG       [i] = interface->set_signal_in  <Tgeneral_address_t> ("num_reg"   ,_param->_size_general_register);
    215          in_GPR_WRITE_DATA          [i] = interface->set_signal_in  <Tgeneral_data_t   > ("data"      ,_param->_size_general_data);
    216       }
     149      ALLOC1_VALACK_IN (in_GPR_WRITE_VAL           ,VAL);
     150      ALLOC1_SIGNAL_IN (in_GPR_WRITE_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id);
     151      ALLOC1_SIGNAL_IN (in_GPR_WRITE_NUM_REG       ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
     152      ALLOC1_SIGNAL_IN (in_GPR_WRITE_DATA          ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data);
     153     
     154      ALLOC1_INTERFACE_END(_param->_nb_gpr_write);
     155    }
    217156
    218157    // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    219    
    220      in_SPR_WRITE_VAL          = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_write];
    221      if(_param->_have_port_ooo_engine_id)
    222        in_SPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t        ) * [_param->_nb_spr_write];
    223      in_SPR_WRITE_NUM_REG      = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write];
    224      in_SPR_WRITE_DATA         = new SC_IN (Tspecial_data_t   ) * [_param->_nb_spr_write];
     158    {
     159      ALLOC1_INTERFACE_BEGIN("spr_write",IN,SOUTH,_("Interface with write queue to bypass the write in the RegisterFile"),_param->_nb_spr_write);
    225160
    226     for (uint32_t i=0; i<_param->_nb_spr_write; i++)
    227       {
    228         Interface_fifo * interface = _interfaces->set_interface("spr_write_"+toString(i)
    229 #ifdef POSITION
    230                                                                 , IN 
    231                                                                 ,SOUTH
    232                                                                 , "Interface with write queue to bypass the write in the RegisterFile."
    233 #endif
    234                                                                 );
    235 
    236          in_SPR_WRITE_VAL           [i] = interface->set_signal_valack_in ("val"    , VAL);
    237          if(_param->_have_port_ooo_engine_id)
    238            in_SPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in  <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id);
    239          in_SPR_WRITE_NUM_REG       [i] = interface->set_signal_in  <Tspecial_address_t> ("num_reg"   ,_param->_size_special_register);
    240          in_SPR_WRITE_DATA          [i] = interface->set_signal_in  <Tspecial_data_t   > ("data"      ,_param->_size_special_data);
    241       }
     161      ALLOC1_VALACK_IN (in_SPR_WRITE_VAL           ,VAL);
     162      ALLOC1_SIGNAL_IN (in_SPR_WRITE_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id);
     163      ALLOC1_SIGNAL_IN (in_SPR_WRITE_NUM_REG       ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
     164      ALLOC1_SIGNAL_IN (in_SPR_WRITE_DATA          ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data);
     165     
     166      ALLOC1_INTERFACE_END(_param->_nb_spr_write);
     167    }
    242168
    243169    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp

    r88 r112  
    88
    99#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h"
     10#include "Behavioural/include/Allocation.h"
    1011
    1112namespace morpheo                    {
     
    2526    if (usage_is_set(_usage,USE_SYSTEMC))
    2627      {
    27     // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    28     delete     in_CLOCK ;
    29     delete     in_NRESET;
     28        delete     in_CLOCK ;
     29        delete     in_NRESET;
    3030
    31     // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    32     delete     in_READ_QUEUE_IN_VAL            ;
    33     delete    out_READ_QUEUE_IN_ACK            ;
     31        DELETE0_SIGNAL( in_READ_QUEUE_IN_VAL                   ,1                             );
     32        DELETE0_SIGNAL(out_READ_QUEUE_IN_ACK                   ,1                             );
     33        DELETE0_SIGNAL( in_READ_QUEUE_IN_CONTEXT_ID            ,_param->_size_context_id      );
     34        DELETE0_SIGNAL( in_READ_QUEUE_IN_FRONT_END_ID          ,_param->_size_front_end_id    );
     35        DELETE0_SIGNAL( in_READ_QUEUE_IN_OOO_ENGINE_ID         ,_param->_size_ooo_engine_id   );
     36        DELETE0_SIGNAL( in_READ_QUEUE_IN_ROB_ID                ,_param->_size_rob_ptr         );
     37        DELETE0_SIGNAL( in_READ_QUEUE_IN_OPERATION             ,_param->_size_operation       );
     38        DELETE0_SIGNAL( in_READ_QUEUE_IN_TYPE                  ,_param->_size_type            );
     39        DELETE0_SIGNAL( in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE ,_param->_size_store_queue_ptr );
     40        DELETE0_SIGNAL( in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE  ,_param->_size_load_queue_ptr  );
     41        DELETE0_SIGNAL( in_READ_QUEUE_IN_HAS_IMMEDIAT          ,1                             );
     42        DELETE0_SIGNAL( in_READ_QUEUE_IN_IMMEDIAT              ,_param->_size_general_data    );
     43        DELETE0_SIGNAL( in_READ_QUEUE_IN_READ_RA               ,1                             );
     44        DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RA            ,_param->_size_general_register);
     45        DELETE0_SIGNAL( in_READ_QUEUE_IN_READ_RB               ,1                             );
     46        DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RB            ,_param->_size_general_register);
     47        DELETE0_SIGNAL( in_READ_QUEUE_IN_READ_RC               ,1                             );
     48        DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RC            ,_param->_size_special_register);
     49        DELETE0_SIGNAL( in_READ_QUEUE_IN_WRITE_RD              ,1                             );
     50        DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RD            ,_param->_size_general_register);
     51        DELETE0_SIGNAL( in_READ_QUEUE_IN_WRITE_RE              ,1                             );
     52        DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RE            ,_param->_size_special_register);
     53     
     54        DELETE0_SIGNAL(out_READ_QUEUE_OUT_VAL                  ,1                              );
     55        DELETE0_SIGNAL( in_READ_QUEUE_OUT_ACK                  ,1                              );
     56        DELETE0_SIGNAL(out_READ_QUEUE_OUT_CONTEXT_ID           ,_param->_size_context_id       );
     57        DELETE0_SIGNAL(out_READ_QUEUE_OUT_FRONT_END_ID         ,_param->_size_front_end_id     );
     58        DELETE0_SIGNAL(out_READ_QUEUE_OUT_OOO_ENGINE_ID        ,_param->_size_ooo_engine_id    );
     59        DELETE0_SIGNAL(out_READ_QUEUE_OUT_ROB_ID               ,_param->_size_rob_ptr          );
     60        DELETE0_SIGNAL(out_READ_QUEUE_OUT_OPERATION            ,_param->_size_operation        );
     61        DELETE0_SIGNAL(out_READ_QUEUE_OUT_TYPE                 ,_param->_size_type             );
     62        DELETE0_SIGNAL(out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE, _param->_size_store_queue_ptr );
     63        DELETE0_SIGNAL(out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE , _param->_size_load_queue_ptr  );
     64        DELETE0_SIGNAL(out_READ_QUEUE_OUT_HAS_IMMEDIAT         ,1                              );
     65        DELETE0_SIGNAL(out_READ_QUEUE_OUT_IMMEDIAT             ,_param->_size_general_data     );
     66//      DELETE0_SIGNAL(out_READ_QUEUE_OUT_READ_RA              ,1                              );
     67        DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RA           ,_param->_size_general_register );
     68        DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RA_VAL          ,1                              );
     69        DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RA              ,_param->_size_general_data     );
     70//      DELETE0_SIGNAL(out_READ_QUEUE_OUT_READ_RB              ,1                              );
     71        DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RB           ,_param->_size_general_register );
     72        DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RB_VAL          ,1                              );
     73        DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RB              ,_param->_size_general_data     );
     74//      DELETE0_SIGNAL(out_READ_QUEUE_OUT_READ_RC              ,1                              );
     75        DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RC           ,_param->_size_special_register );
     76        DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RC_VAL          ,1                              );
     77        DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RC              ,_param->_size_special_data     );
     78        DELETE0_SIGNAL(out_READ_QUEUE_OUT_WRITE_RD             ,1                              );
     79        DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RD           ,_param->_size_general_register );
     80        DELETE0_SIGNAL(out_READ_QUEUE_OUT_WRITE_RE             ,1                              );
     81        DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RE           ,_param->_size_special_register );     
    3482
    35     if(_param->_have_port_context_id   )
    36       delete     in_READ_QUEUE_IN_CONTEXT_ID     ;
    37     if(_param->_have_port_front_end_id )
    38       delete     in_READ_QUEUE_IN_FRONT_END_ID   ;
    39     if(_param->_have_port_ooo_engine_id)
    40       delete     in_READ_QUEUE_IN_OOO_ENGINE_ID  ;
    41     if(_param->_have_port_rob_ptr       )
    42       delete     in_READ_QUEUE_IN_ROB_ID         ;
    43     delete     in_READ_QUEUE_IN_OPERATION      ;
    44     delete     in_READ_QUEUE_IN_TYPE           ;
    45     delete     in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE;
    46     if (_param->_have_port_load_queue_ptr)
    47     delete     in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ;
    48     delete     in_READ_QUEUE_IN_HAS_IMMEDIAT   ;
    49     delete     in_READ_QUEUE_IN_IMMEDIAT       ;
    50     delete     in_READ_QUEUE_IN_READ_RA        ;
    51     delete     in_READ_QUEUE_IN_NUM_REG_RA     ;
    52     delete     in_READ_QUEUE_IN_READ_RB        ;
    53     delete     in_READ_QUEUE_IN_NUM_REG_RB     ;
    54     delete     in_READ_QUEUE_IN_READ_RC        ;
    55     delete     in_READ_QUEUE_IN_NUM_REG_RC     ;
    56     delete     in_READ_QUEUE_IN_WRITE_RD       ;
    57     delete     in_READ_QUEUE_IN_NUM_REG_RD     ;
    58     delete     in_READ_QUEUE_IN_WRITE_RE       ;
    59     delete     in_READ_QUEUE_IN_NUM_REG_RE     ;
     83        DELETE1_SIGNAL(out_GPR_READ_VAL           ,_param->_nb_gpr_read,1);
     84        DELETE1_SIGNAL( in_GPR_READ_ACK           ,_param->_nb_gpr_read,1);
     85        DELETE1_SIGNAL(out_GPR_READ_OOO_ENGINE_ID ,_param->_nb_gpr_read,_param->_size_ooo_engine_id);
     86        DELETE1_SIGNAL(out_GPR_READ_NUM_REG       ,_param->_nb_gpr_read,_param->_size_general_register);
     87        DELETE1_SIGNAL( in_GPR_READ_DATA          ,_param->_nb_gpr_read,_param->_size_general_data);
     88        DELETE1_SIGNAL( in_GPR_READ_DATA_VAL      ,_param->_nb_gpr_read,1);
    6089
    61     // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    62     delete    out_READ_QUEUE_OUT_VAL            ;
    63     delete     in_READ_QUEUE_OUT_ACK            ;
     90        DELETE1_SIGNAL(out_SPR_READ_VAL           ,_param->_nb_spr_read,1);
     91        DELETE1_SIGNAL( in_SPR_READ_ACK           ,_param->_nb_spr_read,1);
     92        DELETE1_SIGNAL(out_SPR_READ_OOO_ENGINE_ID ,_param->_nb_spr_read,_param->_size_ooo_engine_id);
     93        DELETE1_SIGNAL(out_SPR_READ_NUM_REG       ,_param->_nb_spr_read,_param->_size_general_register);
     94        DELETE1_SIGNAL( in_SPR_READ_DATA          ,_param->_nb_spr_read,_param->_size_general_data);
     95        DELETE1_SIGNAL( in_SPR_READ_DATA_VAL      ,_param->_nb_spr_read,1);
     96       
     97        DELETE1_SIGNAL(in_GPR_WRITE_VAL           ,_param->_nb_gpr_write,1);
     98        DELETE1_SIGNAL(in_GPR_WRITE_OOO_ENGINE_ID ,_param->_nb_gpr_write,_param->_size_ooo_engine_id);
     99        DELETE1_SIGNAL(in_GPR_WRITE_NUM_REG       ,_param->_nb_gpr_write,_param->_size_general_register);
     100        DELETE1_SIGNAL(in_GPR_WRITE_DATA          ,_param->_nb_gpr_write,_param->_size_general_data);
    64101
    65     if(_param->_have_port_context_id   )
    66       delete    out_READ_QUEUE_OUT_CONTEXT_ID     ;
    67     if(_param->_have_port_front_end_id )
    68       delete    out_READ_QUEUE_OUT_FRONT_END_ID   ;
    69     if(_param->_have_port_ooo_engine_id)
    70       delete    out_READ_QUEUE_OUT_OOO_ENGINE_ID  ;
    71     if(_param->_have_port_rob_ptr       )
    72       delete    out_READ_QUEUE_OUT_ROB_ID         ;
    73     delete    out_READ_QUEUE_OUT_OPERATION      ;
    74     delete    out_READ_QUEUE_OUT_TYPE           ;
    75     delete    out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE;
    76     if (_param->_have_port_load_queue_ptr)
    77     delete    out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE ;
    78     delete    out_READ_QUEUE_OUT_HAS_IMMEDIAT   ;
    79     delete    out_READ_QUEUE_OUT_IMMEDIAT       ;
    80 //     delete    out_READ_QUEUE_OUT_READ_RA        ;
    81     delete    out_READ_QUEUE_OUT_NUM_REG_RA     ;
    82     delete    out_READ_QUEUE_OUT_DATA_RA_VAL    ;
    83     delete    out_READ_QUEUE_OUT_DATA_RA        ;
    84 //     delete    out_READ_QUEUE_OUT_READ_RB        ;
    85     delete    out_READ_QUEUE_OUT_NUM_REG_RB     ;
    86     delete    out_READ_QUEUE_OUT_DATA_RB_VAL    ;
    87     delete    out_READ_QUEUE_OUT_DATA_RB        ;
    88 //     delete    out_READ_QUEUE_OUT_READ_RC        ;
    89     delete    out_READ_QUEUE_OUT_NUM_REG_RC     ;
    90     delete    out_READ_QUEUE_OUT_DATA_RC_VAL    ;
    91     delete    out_READ_QUEUE_OUT_DATA_RC        ;
    92     delete    out_READ_QUEUE_OUT_WRITE_RD       ;
    93     delete    out_READ_QUEUE_OUT_NUM_REG_RD     ;
    94     delete    out_READ_QUEUE_OUT_WRITE_RE       ;
    95     delete    out_READ_QUEUE_OUT_NUM_REG_RE     ;
    96 
    97     // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    98    
    99     delete [] out_GPR_READ_VAL       ;
    100     delete []  in_GPR_READ_ACK       ;
    101     if(_param->_have_port_ooo_engine_id)
    102       delete [] out_GPR_READ_OOO_ENGINE_ID;
    103     delete [] out_GPR_READ_NUM_REG   ;
    104     delete []  in_GPR_READ_DATA      ;
    105     delete []  in_GPR_READ_DATA_VAL  ;
    106 
    107     // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    108    
    109     delete [] out_SPR_READ_VAL       ;
    110     delete []  in_SPR_READ_ACK       ;
    111     if(_param->_have_port_ooo_engine_id)
    112       delete [] out_SPR_READ_OOO_ENGINE_ID;
    113     delete [] out_SPR_READ_NUM_REG   ;
    114     delete []  in_SPR_READ_DATA      ;
    115     delete []  in_SPR_READ_DATA_VAL  ;
    116 
    117     // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    118    
    119     delete []  in_GPR_WRITE_VAL       ;
    120     if(_param->_have_port_ooo_engine_id)
    121       delete []  in_GPR_WRITE_OOO_ENGINE_ID;
    122     delete []  in_GPR_WRITE_NUM_REG   ;
    123     delete []  in_GPR_WRITE_DATA      ;
    124 
    125     // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    126    
    127     delete []  in_SPR_WRITE_VAL       ;
    128     if(_param->_have_port_ooo_engine_id)
    129       delete []  in_SPR_WRITE_OOO_ENGINE_ID;
    130     delete []  in_SPR_WRITE_NUM_REG   ;
    131     delete []  in_SPR_WRITE_DATA      ;
     102        DELETE1_SIGNAL(in_SPR_WRITE_VAL           ,_param->_nb_spr_write,1);
     103        DELETE1_SIGNAL(in_SPR_WRITE_OOO_ENGINE_ID ,_param->_nb_spr_write,_param->_size_ooo_engine_id);
     104        DELETE1_SIGNAL(in_SPR_WRITE_NUM_REG       ,_param->_nb_spr_write,_param->_size_general_register);
     105        DELETE1_SIGNAL(in_SPR_WRITE_DATA          ,_param->_nb_spr_write,_param->_size_general_data);
    132106      }
    133107
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp

    r111 r112  
    3434        // > 2) flush all slot in one cycle
    3535
    36         _queue->clear();
     36        while (_queue->empty() == false)
     37          {
     38            delete _queue->front();
     39            _queue->pop_front();
     40          }
     41        // _queue->clear();
    3742
    3843        // Init, else error in registerfile
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/test.cpp

    r97 r112  
    77 */
    88#define NB_ITERATION  1
    9 #define CYCLE_MAX     (2048*NB_ITERATION)
     9#define CYCLE_MAX     (10000*NB_ITERATION)
    1010
    1111#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/include/test.h"
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp

    r97 r112  
    88
    99#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h"
     10#include "Behavioural/include/Allocation.h"
    1011
    1112namespace morpheo                    {
     
    4344                                                         ,IN
    4445                                                         ,SOUTH,
    45                                                          "Generalist interface"
     46                                                         _("Generalist interface")
    4647#endif
    4748                                                         );
     
    5051     in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
    5152
    52     // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~
    53     {
    54       Interface_fifo * interface = _interfaces->set_interface("insert"
    55 #ifdef POSITION
    56                                                                ,IN
    57                                                                ,EAST
    58                                                                ,"Input of reservation_station"
    59 #endif
    60                                                                );
    61      
    62        in_INSERT_VAL            = interface->set_signal_valack_in  (VAL);
    63       out_INSERT_ACK            = interface->set_signal_valack_out (ACK);
    64       if (_param->_have_port_context_id)
    65        in_INSERT_CONTEXT_ID     = interface->set_signal_in <Tcontext_t        > ("context_id"     ,_param->_size_context_id       );
    66       if (_param->_have_port_front_end_id)
    67        in_INSERT_FRONT_END_ID   = interface->set_signal_in <Tcontext_t        > ("front_end_id"   ,_param->_size_front_end_id     );
    68       if (_param->_have_port_ooo_engine_id)
    69        in_INSERT_OOO_ENGINE_ID  = interface->set_signal_in <Tcontext_t        > ("ooo_engine_id"  ,_param->_size_ooo_engine_id    );
    70       if (_param->_have_port_rob_ptr)
    71        in_INSERT_ROB_ID         = interface->set_signal_in <Tpacket_t         > ("rob_id"         ,_param->_size_rob_ptr        );
    72        in_INSERT_OPERATION      = interface->set_signal_in <Toperation_t      > ("operation"      ,_param->_size_operation        );
    73        in_INSERT_TYPE           = interface->set_signal_in <Ttype_t           > ("type"           ,_param->_size_type             );
    74        in_INSERT_STORE_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("store_queue_ptr_write" ,_param->_size_store_queue_ptr);
    75        if (_param->_have_port_load_queue_ptr)
    76        in_INSERT_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_in <Tlsq_ptr_t> ("load_queue_ptr_write"  ,_param->_size_load_queue_ptr );
    77        in_INSERT_HAS_IMMEDIAT   = interface->set_signal_in <Tcontrol_t        > ("has_immediat"   ,1                             );
    78        in_INSERT_IMMEDIAT       = interface->set_signal_in <Tgeneral_data_t   > ("immediat"       ,_param->_size_general_data     );
    79 //     in_INSERT_READ_RA        = interface->set_signal_in <Tcontrol_t        > ("read_ra"        ,1                             );
    80        in_INSERT_NUM_REG_RA     = interface->set_signal_in <Tgeneral_address_t> ("num_reg_ra"     ,_param->_size_general_register );
    81        in_INSERT_DATA_RA_VAL    = interface->set_signal_in <Tcontrol_t        > ("data_ra_val"    ,1                             );
    82        in_INSERT_DATA_RA        = interface->set_signal_in <Tgeneral_data_t   > ("data_ra"        ,_param->_size_general_data     );
    83 //     in_INSERT_READ_RB        = interface->set_signal_in <Tcontrol_t        > ("read_rb"        ,1                             );
    84        in_INSERT_NUM_REG_RB     = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rb"     ,_param->_size_general_register );
    85        in_INSERT_DATA_RB_VAL    = interface->set_signal_in <Tcontrol_t        > ("data_rb_val"    ,1                             );
    86        in_INSERT_DATA_RB        = interface->set_signal_in <Tgeneral_data_t   > ("data_rb"        ,_param->_size_general_data     );
    87 //     in_INSERT_READ_RC        = interface->set_signal_in <Tcontrol_t        > ("read_rc"        ,1                             );
    88        in_INSERT_NUM_REG_RC     = interface->set_signal_in <Tspecial_address_t> ("num_reg_rc"     ,_param->_size_special_register );
    89        in_INSERT_DATA_RC_VAL    = interface->set_signal_in <Tcontrol_t        > ("data_rc_val"    ,1                             );
    90        in_INSERT_DATA_RC        = interface->set_signal_in <Tspecial_data_t   > ("data_rc"        ,_param->_size_special_data     );
    91        in_INSERT_WRITE_RD       = interface->set_signal_in <Tcontrol_t        > ("write_rd"       ,1                             );
    92        in_INSERT_NUM_REG_RD     = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rd"     ,_param->_size_general_register );
    93        in_INSERT_WRITE_RE       = interface->set_signal_in <Tcontrol_t        > ("write_re"       ,1                             );
    94        in_INSERT_NUM_REG_RE     = interface->set_signal_in <Tspecial_address_t> ("num_reg_re"     ,_param->_size_special_register );     
     53     // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~
     54     {
     55       ALLOC0_INTERFACE_BEGIN("insert",IN,EAST,_("Input of reservation_station"));
     56       
     57       ALLOC0_VALACK_IN ( in_INSERT_VAL                  ,VAL);
     58       ALLOC0_VALACK_OUT(out_INSERT_ACK                  ,ACK);
     59       ALLOC0_SIGNAL_IN ( in_INSERT_CONTEXT_ID           ,"context_id"           ,Tcontext_t        ,_param->_size_context_id      );
     60       ALLOC0_SIGNAL_IN ( in_INSERT_FRONT_END_ID         ,"front_end_id"         ,Tcontext_t        ,_param->_size_front_end_id    );
     61       ALLOC0_SIGNAL_IN ( in_INSERT_OOO_ENGINE_ID        ,"ooo_engine_id"        ,Tcontext_t        ,_param->_size_ooo_engine_id   );
     62       ALLOC0_SIGNAL_IN ( in_INSERT_ROB_ID               ,"rob_id"               ,Tpacket_t         ,_param->_size_rob_ptr         );
     63       ALLOC0_SIGNAL_IN ( in_INSERT_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation       );
     64       ALLOC0_SIGNAL_IN ( in_INSERT_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type            );
     65       ALLOC0_SIGNAL_IN ( in_INSERT_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr );
     66       ALLOC0_SIGNAL_IN ( in_INSERT_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr  );
     67       ALLOC0_SIGNAL_IN ( in_INSERT_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1                             );
     68       ALLOC0_SIGNAL_IN ( in_INSERT_IMMEDIAT             ,"immediat"             ,Tgeneral_data_t   ,_param->_size_general_data    );
     69//     ALLOC0_SIGNAL_IN ( in_INSERT_READ_RA              ,"read_ra"              ,Tcontrol_t        ,1                             );
     70       ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RA           ,"num_reg_ra"           ,Tgeneral_address_t,_param->_size_general_register);
     71       ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RA_VAL          ,"data_ra_val"          ,Tcontrol_t        ,1                             );
     72       ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RA              ,"data_ra"              ,Tgeneral_data_t   ,_param->_size_general_data    );
     73//     ALLOC0_SIGNAL_IN ( in_INSERT_READ_RB              ,"read_rb"              ,Tcontrol_t        ,1                             );
     74       ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RB           ,"num_reg_rb"           ,Tgeneral_address_t,_param->_size_general_register);
     75       ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RB_VAL          ,"data_rb_val"          ,Tcontrol_t        ,1                             );
     76       ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RB              ,"data_rb"              ,Tgeneral_data_t   ,_param->_size_general_data    );
     77//     ALLOC0_SIGNAL_IN ( in_INSERT_READ_RC              ,"read_rc"              ,Tcontrol_t        ,1                             );
     78       ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RC           ,"num_reg_rc"           ,Tspecial_address_t,_param->_size_special_register);
     79       ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RC_VAL          ,"data_rc_val"          ,Tcontrol_t        ,1                             );
     80       ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RC              ,"data_rc"              ,Tspecial_data_t   ,_param->_size_special_data    );
     81       ALLOC0_SIGNAL_IN ( in_INSERT_WRITE_RD             ,"write_rd"             ,Tcontrol_t        ,1                             );
     82       ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RD           ,"num_reg_rd"           ,Tgeneral_address_t,_param->_size_general_register);
     83       ALLOC0_SIGNAL_IN ( in_INSERT_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                             );
     84       ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register);
     85
     86       ALLOC0_INTERFACE_END();
     87     }
     88     
     89     // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~
     90     {
     91       ALLOC1_INTERFACE_BEGIN("retire",OUT,WEST,_("Output of reservation_station"),_param->_nb_inst_retire);
     92       
     93       ALLOC1_VALACK_OUT(out_RETIRE_VAL                  ,VAL);
     94       ALLOC1_VALACK_IN ( in_RETIRE_ACK                  ,ACK);
     95       ALLOC1_SIGNAL_OUT(out_RETIRE_CONTEXT_ID           ,"context_id"           ,Tcontext_t        ,_param->_size_context_id);
     96       ALLOC1_SIGNAL_OUT(out_RETIRE_FRONT_END_ID         ,"front_end_id"         ,Tcontext_t        ,_param->_size_front_end_id);
     97       ALLOC1_SIGNAL_OUT(out_RETIRE_OOO_ENGINE_ID        ,"ooo_engine_id"        ,Tcontext_t        ,_param->_size_ooo_engine_id);
     98       ALLOC1_SIGNAL_OUT(out_RETIRE_ROB_ID               ,"rob_id"               ,Tpacket_t         ,_param->_size_rob_ptr);
     99       ALLOC1_SIGNAL_OUT(out_RETIRE_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation);
     100       ALLOC1_SIGNAL_OUT(out_RETIRE_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type);
     101       ALLOC1_SIGNAL_OUT(out_RETIRE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr);
     102       ALLOC1_SIGNAL_OUT(out_RETIRE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr );
     103       ALLOC1_SIGNAL_OUT(out_RETIRE_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1);
     104       ALLOC1_SIGNAL_OUT(out_RETIRE_IMMEDIAT             ,"immediat"             ,Tgeneral_data_t   ,_param->_size_general_data);
     105       ALLOC1_SIGNAL_OUT(out_RETIRE_DATA_RA              ,"data_ra"              ,Tgeneral_data_t   ,_param->_size_general_data);
     106       ALLOC1_SIGNAL_OUT(out_RETIRE_DATA_RB              ,"data_rb"              ,Tgeneral_data_t   ,_param->_size_general_data);
     107       ALLOC1_SIGNAL_OUT(out_RETIRE_DATA_RC              ,"data_rc"              ,Tspecial_data_t   ,_param->_size_special_data);
     108       ALLOC1_SIGNAL_OUT(out_RETIRE_WRITE_RD             ,"write_rd"             ,Tcontrol_t        ,1);
     109       ALLOC1_SIGNAL_OUT(out_RETIRE_NUM_REG_RD           ,"num_reg_rd"           ,Tgeneral_address_t,_param->_size_general_register);
     110       ALLOC1_SIGNAL_OUT(out_RETIRE_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1);
     111       ALLOC1_SIGNAL_OUT(out_RETIRE_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register);
     112
     113       ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
     114     }
     115     
     116     // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     117     {
     118       ALLOC1_INTERFACE_BEGIN("gpr_write",IN,SOUTH,_("Interface with write queue to bypass the write in the RegisterFile."),_param->_nb_gpr_write);
     119       
     120       ALLOC1_VALACK_IN ( in_GPR_WRITE_VAL          ,VAL);
     121       ALLOC1_SIGNAL_IN ( in_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id);
     122       ALLOC1_SIGNAL_IN ( in_GPR_WRITE_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
     123       ALLOC1_SIGNAL_IN ( in_GPR_WRITE_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data);
     124
     125       ALLOC1_INTERFACE_END(_param->_nb_gpr_write);
    95126     }
    96127
    97     // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~
    98     out_RETIRE_VAL            = new SC_OUT(Tcontrol_t        ) * [_param->_nb_inst_retire];
    99      in_RETIRE_ACK            = new SC_IN (Tcontrol_t        ) * [_param->_nb_inst_retire];
    100     if (_param->_have_port_context_id)
    101     out_RETIRE_CONTEXT_ID     = new SC_OUT(Tcontext_t        ) * [_param->_nb_inst_retire];
    102     if (_param->_have_port_front_end_id)
    103     out_RETIRE_FRONT_END_ID   = new SC_OUT(Tcontext_t        ) * [_param->_nb_inst_retire];
    104     if (_param->_have_port_ooo_engine_id)
    105     out_RETIRE_OOO_ENGINE_ID  = new SC_OUT(Tcontext_t        ) * [_param->_nb_inst_retire];
    106     if (_param->_have_port_rob_ptr)
    107     out_RETIRE_ROB_ID         = new SC_OUT(Tpacket_t         ) * [_param->_nb_inst_retire];
    108     out_RETIRE_OPERATION      = new SC_OUT(Toperation_t      ) * [_param->_nb_inst_retire];
    109     out_RETIRE_TYPE           = new SC_OUT(Ttype_t           ) * [_param->_nb_inst_retire];
    110     out_RETIRE_STORE_QUEUE_PTR_WRITE = new SC_OUT(Tlsq_ptr_t ) * [_param->_nb_inst_retire];
    111     if (_param->_have_port_load_queue_ptr)
    112     out_RETIRE_LOAD_QUEUE_PTR_WRITE  = new SC_OUT(Tlsq_ptr_t ) * [_param->_nb_inst_retire];
    113     out_RETIRE_HAS_IMMEDIAT   = new SC_OUT(Tcontrol_t        ) * [_param->_nb_inst_retire];
    114     out_RETIRE_IMMEDIAT       = new SC_OUT(Tgeneral_data_t   ) * [_param->_nb_inst_retire];
    115     out_RETIRE_DATA_RA        = new SC_OUT(Tgeneral_data_t   ) * [_param->_nb_inst_retire];
    116     out_RETIRE_DATA_RB        = new SC_OUT(Tgeneral_data_t   ) * [_param->_nb_inst_retire];
    117     out_RETIRE_DATA_RC        = new SC_OUT(Tspecial_data_t   ) * [_param->_nb_inst_retire];
    118     out_RETIRE_WRITE_RD       = new SC_OUT(Tcontrol_t        ) * [_param->_nb_inst_retire];
    119     out_RETIRE_NUM_REG_RD     = new SC_OUT(Tgeneral_address_t) * [_param->_nb_inst_retire];
    120     out_RETIRE_WRITE_RE       = new SC_OUT(Tcontrol_t        ) * [_param->_nb_inst_retire];
    121     out_RETIRE_NUM_REG_RE     = new SC_OUT(Tspecial_address_t) * [_param->_nb_inst_retire];
    122    
    123     for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
    124       {
    125         Interface_fifo * interface = _interfaces->set_interface("retire_"+toString(i)
    126 #ifdef POSITION
    127                                                                 ,OUT
    128                                                                 ,WEST
    129                                                                 ,"Output of reservation_station"
    130 #endif
    131                                                                 );
    132         out_RETIRE_VAL          [i] = interface->set_signal_valack_out(VAL);
    133          in_RETIRE_ACK          [i] = interface->set_signal_valack_in (ACK);
    134         if (_param->_have_port_context_id)
    135         out_RETIRE_CONTEXT_ID   [i] = interface->set_signal_out<Tcontext_t        > ("context_id"   ,_param->_size_context_id);
    136         if (_param->_have_port_front_end_id)
    137         out_RETIRE_FRONT_END_ID [i] = interface->set_signal_out<Tcontext_t        > ("front_end_id" ,_param->_size_front_end_id);
    138         if (_param->_have_port_ooo_engine_id)
    139         out_RETIRE_OOO_ENGINE_ID[i] = interface->set_signal_out<Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id);
    140         if (_param->_have_port_rob_ptr)
    141         out_RETIRE_ROB_ID       [i] = interface->set_signal_out<Tpacket_t         > ("rob_id"       ,_param->_size_rob_ptr);
    142         out_RETIRE_OPERATION    [i] = interface->set_signal_out<Toperation_t      > ("operation"    ,_param->_size_operation);
    143         out_RETIRE_TYPE         [i] = interface->set_signal_out<Ttype_t           > ("type"         ,_param->_size_type);
    144         out_RETIRE_STORE_QUEUE_PTR_WRITE [i] = interface->set_signal_out<Tlsq_ptr_t> ("store_queue_ptr_write" ,_param->_size_store_queue_ptr);
    145         if (_param->_have_port_load_queue_ptr)
    146         out_RETIRE_LOAD_QUEUE_PTR_WRITE  [i] = interface->set_signal_out<Tlsq_ptr_t> ("load_queue_ptr_write"  ,_param->_size_load_queue_ptr );
     128    // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     129     {
     130       ALLOC1_INTERFACE_BEGIN("spr_write",IN,SOUTH,_("Interface with write queue to bypass the write in the RegisterFile."),_param->_nb_spr_write);
     131       
     132       ALLOC1_VALACK_IN ( in_SPR_WRITE_VAL          ,VAL);
     133       ALLOC1_SIGNAL_IN ( in_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id);
     134       ALLOC1_SIGNAL_IN ( in_SPR_WRITE_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
     135       ALLOC1_SIGNAL_IN ( in_SPR_WRITE_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data);
    147136
    148         out_RETIRE_HAS_IMMEDIAT [i] = interface->set_signal_out<Tcontrol_t        > ("has_immediat" ,1);
    149         out_RETIRE_IMMEDIAT     [i] = interface->set_signal_out<Tgeneral_data_t   > ("immediat"     ,_param->_size_general_data);
    150         out_RETIRE_DATA_RA      [i] = interface->set_signal_out<Tgeneral_data_t   > ("data_ra"      ,_param->_size_general_data);
    151         out_RETIRE_DATA_RB      [i] = interface->set_signal_out<Tgeneral_data_t   > ("data_rb"      ,_param->_size_general_data);
    152         out_RETIRE_DATA_RC      [i] = interface->set_signal_out<Tspecial_data_t   > ("data_rc"      ,_param->_size_special_data);
    153         out_RETIRE_WRITE_RD     [i] = interface->set_signal_out<Tcontrol_t        > ("write_rd"     ,1);
    154         out_RETIRE_NUM_REG_RD   [i] = interface->set_signal_out<Tgeneral_address_t> ("num_reg_rd"   ,_param->_size_general_register);
    155         out_RETIRE_WRITE_RE     [i] = interface->set_signal_out<Tcontrol_t        > ("write_re"     ,1);
    156         out_RETIRE_NUM_REG_RE   [i] = interface->set_signal_out<Tspecial_address_t> ("num_reg_re"   ,_param->_size_special_register);
    157       }
     137       ALLOC1_INTERFACE_END(_param->_nb_spr_write);
     138     }
    158139
    159     // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    160      in_GPR_WRITE_VAL          = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_write];
    161      if (_param->_have_port_ooo_engine_id)
    162      in_GPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t        ) * [_param->_nb_gpr_write];
    163      in_GPR_WRITE_NUM_REG      = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write];
    164      in_GPR_WRITE_DATA         = new SC_IN (Tgeneral_data_t   ) * [_param->_nb_gpr_write];
     140     // ~~~~~[ Interface : "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     141     {
     142       ALLOC1_INTERFACE_BEGIN("bypass_write",IN,NORTH,_("Interface with write queue to bypass the write in the RegisterFile."),_param->_nb_bypass_write);
    165143
    166     for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
    167       {
    168         Interface_fifo * interface = _interfaces->set_interface("gpr_write_"+toString(i)
    169 #ifdef POSITION
    170                                                                 , IN 
    171                                                                 ,SOUTH
    172                                                                 , "Interface with write queue to bypass the write in the RegisterFile."
    173 #endif
    174                                                                 );
     144       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id);
     145       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_VAL      ,"gpr_val"      ,Tcontrol_t        ,1);
     146       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_NUM_REG  ,"gpr_num_reg"  ,Tgeneral_address_t,_param->_size_general_register);
     147       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_DATA     ,"gpr_data"     ,Tgeneral_data_t   ,_param->_size_general_data);
     148       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_VAL      ,"spr_val"      ,Tcontrol_t        ,1);
     149       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_NUM_REG  ,"spr_num_reg"  ,Tspecial_address_t,_param->_size_special_register);
     150       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_DATA     ,"spr_data"     ,Tspecial_data_t   ,_param->_size_special_data);
     151       
     152       ALLOC1_INTERFACE_END(_param->_nb_bypass_write);
     153     }
     154     
     155     // ~~~~~[ Interface : "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     156     {
     157       ALLOC1_INTERFACE_BEGIN("bypass_memory",IN,NORTH,_("Interface with load/store unit to bypass the write in the RegisterFile."),_param->_nb_bypass_memory);
    175158
    176          in_GPR_WRITE_VAL           [i] = interface->set_signal_valack_in (VAL);
    177          if (_param->_have_port_ooo_engine_id)
    178          in_GPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in  <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id);
    179          in_GPR_WRITE_NUM_REG       [i] = interface->set_signal_in  <Tgeneral_address_t> ("num_reg"      ,_param->_size_general_register);
    180          in_GPR_WRITE_DATA          [i] = interface->set_signal_in  <Tgeneral_data_t   > ("data"         ,_param->_size_general_data);
    181       }
    182 
    183     // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    184      in_SPR_WRITE_VAL          = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_write];
    185      if (_param->_have_port_ooo_engine_id)
    186      in_SPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t        ) * [_param->_nb_spr_write];
    187      in_SPR_WRITE_NUM_REG      = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write];
    188      in_SPR_WRITE_DATA         = new SC_IN (Tspecial_data_t   ) * [_param->_nb_spr_write];
    189 
    190     for (uint32_t i=0; i<_param->_nb_spr_write; i++)
    191       {
    192         Interface_fifo * interface = _interfaces->set_interface("spr_write_"+toString(i)
    193 #ifdef POSITION
    194                                                                 , IN 
    195                                                                 ,SOUTH
    196                                                                 , "Interface with write queue to bypass the write in the RegisterFile."
    197 #endif
    198                                                                 );
    199 
    200          in_SPR_WRITE_VAL           [i] = interface->set_signal_valack_in (VAL);
    201          if (_param->_have_port_ooo_engine_id)
    202          in_SPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in  <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id);
    203          in_SPR_WRITE_NUM_REG       [i] = interface->set_signal_in  <Tspecial_address_t> ("num_reg"      ,_param->_size_special_register);
    204          in_SPR_WRITE_DATA          [i] = interface->set_signal_in  <Tspecial_data_t   > ("data"         ,_param->_size_special_data);
    205       }
    206 
    207     // ~~~~~[ Interface : "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    208      if (_param->_have_port_ooo_engine_id)
    209      in_BYPASS_WRITE_OOO_ENGINE_ID  = new SC_IN (Tcontext_t        ) * [_param->_nb_bypass_write];
    210      in_BYPASS_WRITE_GPR_VAL        = new SC_IN (Tcontrol_t        ) * [_param->_nb_bypass_write];
    211      in_BYPASS_WRITE_GPR_NUM_REG    = new SC_IN (Tgeneral_address_t) * [_param->_nb_bypass_write];
    212      in_BYPASS_WRITE_GPR_DATA       = new SC_IN (Tgeneral_data_t   ) * [_param->_nb_bypass_write];
    213      in_BYPASS_WRITE_SPR_VAL        = new SC_IN (Tcontrol_t        ) * [_param->_nb_bypass_write];
    214      in_BYPASS_WRITE_SPR_NUM_REG    = new SC_IN (Tspecial_address_t) * [_param->_nb_bypass_write];
    215      in_BYPASS_WRITE_SPR_DATA       = new SC_IN (Tspecial_data_t   ) * [_param->_nb_bypass_write];
    216 
    217     for (uint32_t i=0; i<_param->_nb_bypass_write; i++)
    218       {
    219         Interface_fifo * interface = _interfaces->set_interface("bypass_write_"+toString(i)
    220 #ifdef POSITION
    221                                                                 , IN 
    222                                                                 ,NORTH
    223                                                                 , "Interface with write queue to bypass the write in the RegisterFile."
    224 #endif
    225                                                                 );
    226 
    227          if (_param->_have_port_ooo_engine_id)
    228          in_BYPASS_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in  <Tcontext_t        > ("ooo_engine_id" ,_param->_size_ooo_engine_id);
    229          in_BYPASS_WRITE_GPR_VAL       [i] = interface->set_signal_valack_in ("gpr_val",VAL);               
    230          in_BYPASS_WRITE_GPR_NUM_REG   [i] = interface->set_signal_in  <Tgeneral_address_t> ("gpr_num_reg"   ,_param->_size_general_register);
    231          in_BYPASS_WRITE_GPR_DATA      [i] = interface->set_signal_in  <Tgeneral_data_t   > ("gpr_data"      ,_param->_size_general_data);
    232          in_BYPASS_WRITE_SPR_VAL       [i] = interface->set_signal_valack_in ("spr_val",VAL);               
    233          in_BYPASS_WRITE_SPR_NUM_REG   [i] = interface->set_signal_in  <Tspecial_address_t> ("spr_num_reg"   ,_param->_size_special_register);
    234          in_BYPASS_WRITE_SPR_DATA      [i] = interface->set_signal_in  <Tspecial_data_t   > ("spr_data"      ,_param->_size_special_data);
    235       }
    236 
    237     // ~~~~~[ Interface : "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    238      in_BYPASS_MEMORY_VAL          = new SC_IN (Tcontrol_t        ) * [_param->_nb_bypass_memory];
    239      if (_param->_have_port_ooo_engine_id)
    240      in_BYPASS_MEMORY_OOO_ENGINE_ID= new SC_IN (Tcontext_t        ) * [_param->_nb_bypass_memory];
    241      in_BYPASS_MEMORY_NUM_REG      = new SC_IN (Tgeneral_address_t) * [_param->_nb_bypass_memory];
    242      in_BYPASS_MEMORY_DATA         = new SC_IN (Tgeneral_data_t   ) * [_param->_nb_bypass_memory];
    243 
    244     for (uint32_t i=0; i<_param->_nb_bypass_memory; i++)
    245       {
    246         Interface_fifo * interface = _interfaces->set_interface("bypass_memory_"+toString(i)
    247 #ifdef POSITION
    248                                                                 , IN 
    249                                                                 , NORTH
    250                                                                 , "Interface with load/store unit to bypass the write in the RegisterFile."
    251 #endif
    252                                                                 );
    253 
    254          in_BYPASS_MEMORY_VAL          [i] = interface->set_signal_valack_in (VAL);
    255          if (_param->_have_port_ooo_engine_id)
    256          in_BYPASS_MEMORY_OOO_ENGINE_ID[i] = interface->set_signal_in  <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id);
    257          in_BYPASS_MEMORY_NUM_REG      [i] = interface->set_signal_in  <Tgeneral_address_t> ("num_reg"      ,_param->_size_general_register);
    258          in_BYPASS_MEMORY_DATA         [i] = interface->set_signal_in  <Tgeneral_data_t   > ("data"         ,_param->_size_general_data);
    259       }
    260 
     159       ALLOC1_VALACK_IN ( in_BYPASS_MEMORY_VAL          ,VAL);
     160       ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id);
     161       ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
     162       ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data);
     163       
     164       ALLOC1_INTERFACE_END(_param->_nb_bypass_memory);
     165     }
    261166
    262167    if (usage_is_set(_usage,USE_SYSTEMC))
    263168      {
    264169    // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    265     internal_RETIRE_VAL  = new Tcontrol_t [_param->_nb_inst_retire];
    266     internal_RETIRE_SLOT = new uint32_t   [_param->_nb_inst_retire];
     170        ALLOC1(internal_RETIRE_VAL ,Tcontrol_t,_param->_nb_inst_retire);
     171        ALLOC1(internal_RETIRE_SLOT,uint32_t  ,_param->_nb_inst_retire);
    267172      }
    268173
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_deallocation.cpp

    r88 r112  
    1111
    1212#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h"
     13#include "Behavioural/include/Allocation.h"
    1314
    1415namespace morpheo                    {
     
    3031    if (usage_is_set(_usage,USE_SYSTEMC))
    3132      {
    32     delete     in_CLOCK ;
    33     delete     in_NRESET;
     33        delete     in_CLOCK ;
     34        delete     in_NRESET;
    3435
    35     delete     in_INSERT_VAL           ;
    36     delete    out_INSERT_ACK           ;
    37     if (_param->_have_port_context_id)
    38     delete     in_INSERT_CONTEXT_ID    ;
    39     if (_param->_have_port_front_end_id)
    40     delete     in_INSERT_FRONT_END_ID  ;
    41     if (_param->_have_port_ooo_engine_id)
    42     delete     in_INSERT_OOO_ENGINE_ID ;
    43     if (_param->_have_port_rob_ptr)
    44     delete     in_INSERT_ROB_ID        ;
    45     delete     in_INSERT_OPERATION     ;
    46     delete     in_INSERT_TYPE          ;
    47     delete     in_INSERT_STORE_QUEUE_PTR_WRITE;
    48     if (_param->_have_port_load_queue_ptr)
    49     delete     in_INSERT_LOAD_QUEUE_PTR_WRITE ;
    50     delete     in_INSERT_HAS_IMMEDIAT  ;
    51     delete     in_INSERT_IMMEDIAT      ;
    52 //  delete     in_INSERT_READ_RA       ;
    53     delete     in_INSERT_NUM_REG_RA    ;
    54     delete     in_INSERT_DATA_RA_VAL   ;
    55     delete     in_INSERT_DATA_RA       ;
    56 //  delete     in_INSERT_READ_RB       ;
    57     delete     in_INSERT_NUM_REG_RB    ;
    58     delete     in_INSERT_DATA_RB_VAL   ;
    59     delete     in_INSERT_DATA_RB       ;
    60 //  delete     in_INSERT_READ_RC       ;
    61     delete     in_INSERT_NUM_REG_RC    ;
    62     delete     in_INSERT_DATA_RC_VAL   ;
    63     delete     in_INSERT_DATA_RC       ;
    64     delete     in_INSERT_WRITE_RD      ;
    65     delete     in_INSERT_NUM_REG_RD    ;
    66     delete     in_INSERT_WRITE_RE      ;
    67     delete     in_INSERT_NUM_REG_RE    ;
    68    
    69     delete [] out_RETIRE_VAL           ;
    70     delete []  in_RETIRE_ACK           ;
    71     if (_param->_have_port_context_id)
    72     delete [] out_RETIRE_CONTEXT_ID    ;
    73     if (_param->_have_port_front_end_id)
    74     delete [] out_RETIRE_FRONT_END_ID  ;
    75     if (_param->_have_port_ooo_engine_id)
    76     delete [] out_RETIRE_OOO_ENGINE_ID ;
    77     if (_param->_have_port_rob_ptr)
    78     delete [] out_RETIRE_ROB_ID        ;
    79     delete [] out_RETIRE_OPERATION     ;
    80     delete [] out_RETIRE_TYPE          ;
    81     delete [] out_RETIRE_STORE_QUEUE_PTR_WRITE;
    82     if (_param->_have_port_load_queue_ptr)
    83     delete [] out_RETIRE_LOAD_QUEUE_PTR_WRITE ;
    84     delete [] out_RETIRE_HAS_IMMEDIAT  ;
    85     delete [] out_RETIRE_IMMEDIAT      ;
    86     delete [] out_RETIRE_DATA_RA       ;
    87     delete [] out_RETIRE_DATA_RB       ;
    88     delete [] out_RETIRE_DATA_RC       ;
    89     delete [] out_RETIRE_WRITE_RD      ;
    90     delete [] out_RETIRE_NUM_REG_RD    ;
    91     delete [] out_RETIRE_WRITE_RE      ;
    92     delete [] out_RETIRE_NUM_REG_RE    ;
    93    
    94     delete []  in_GPR_WRITE_VAL         ;
    95     if (_param->_have_port_ooo_engine_id)
    96     delete []  in_GPR_WRITE_OOO_ENGINE_ID;
    97     delete []  in_GPR_WRITE_NUM_REG     ;
    98     delete []  in_GPR_WRITE_DATA        ;
    99    
    100     delete []  in_SPR_WRITE_VAL       ;
    101     if (_param->_have_port_ooo_engine_id)
    102     delete []  in_SPR_WRITE_OOO_ENGINE_ID;
    103     delete []  in_SPR_WRITE_NUM_REG   ;
    104     delete []  in_SPR_WRITE_DATA      ;
    105    
    106     if (_param->_have_port_ooo_engine_id)
    107     delete []  in_BYPASS_WRITE_OOO_ENGINE_ID;
    108     delete []  in_BYPASS_WRITE_GPR_VAL    ;
    109     delete []  in_BYPASS_WRITE_GPR_NUM_REG;
    110     delete []  in_BYPASS_WRITE_GPR_DATA   ;
    111     delete []  in_BYPASS_WRITE_SPR_VAL    ;
    112     delete []  in_BYPASS_WRITE_SPR_NUM_REG;
    113     delete []  in_BYPASS_WRITE_SPR_DATA   ;
    114    
    115     delete []  in_BYPASS_MEMORY_VAL       ;
    116     if (_param->_have_port_ooo_engine_id)
    117     delete []  in_BYPASS_MEMORY_OOO_ENGINE_ID;
    118     delete []  in_BYPASS_MEMORY_NUM_REG   ;
    119     delete []  in_BYPASS_MEMORY_DATA      ;
    120    
    121     // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    122     delete []  internal_RETIRE_VAL;
    123     delete []  internal_RETIRE_SLOT;
     36        DELETE0_SIGNAL( in_INSERT_VAL                  ,1);
     37        DELETE0_SIGNAL(out_INSERT_ACK                  ,1);
     38        DELETE0_SIGNAL( in_INSERT_CONTEXT_ID           ,_param->_size_context_id      );
     39        DELETE0_SIGNAL( in_INSERT_FRONT_END_ID         ,_param->_size_front_end_id    );
     40        DELETE0_SIGNAL( in_INSERT_OOO_ENGINE_ID        ,_param->_size_ooo_engine_id   );
     41        DELETE0_SIGNAL( in_INSERT_ROB_ID               ,_param->_size_rob_ptr         );
     42        DELETE0_SIGNAL( in_INSERT_OPERATION            ,_param->_size_operation       );
     43        DELETE0_SIGNAL( in_INSERT_TYPE                 ,_param->_size_type            );
     44        DELETE0_SIGNAL( in_INSERT_STORE_QUEUE_PTR_WRITE,_param->_size_store_queue_ptr );
     45        DELETE0_SIGNAL( in_INSERT_LOAD_QUEUE_PTR_WRITE ,_param->_size_load_queue_ptr  );
     46        DELETE0_SIGNAL( in_INSERT_HAS_IMMEDIAT         ,1                             );
     47        DELETE0_SIGNAL( in_INSERT_IMMEDIAT             ,_param->_size_general_data    );
     48//      DELETE0_SIGNAL( in_INSERT_READ_RA              ,1                             );
     49        DELETE0_SIGNAL( in_INSERT_NUM_REG_RA           ,_param->_size_general_register);
     50        DELETE0_SIGNAL( in_INSERT_DATA_RA_VAL          ,1                             );
     51        DELETE0_SIGNAL( in_INSERT_DATA_RA              ,_param->_size_general_data    );
     52//      DELETE0_SIGNAL( in_INSERT_READ_RB              ,1                             );
     53        DELETE0_SIGNAL( in_INSERT_NUM_REG_RB           ,_param->_size_general_register);
     54        DELETE0_SIGNAL( in_INSERT_DATA_RB_VAL          ,1                             );
     55        DELETE0_SIGNAL( in_INSERT_DATA_RB              ,_param->_size_general_data    );
     56//      DELETE0_SIGNAL( in_INSERT_READ_RC              ,1                             );
     57        DELETE0_SIGNAL( in_INSERT_NUM_REG_RC           ,_param->_size_special_register);
     58        DELETE0_SIGNAL( in_INSERT_DATA_RC_VAL          ,1                             );
     59        DELETE0_SIGNAL( in_INSERT_DATA_RC              ,_param->_size_special_data    );
     60        DELETE0_SIGNAL( in_INSERT_WRITE_RD             ,1                             );
     61        DELETE0_SIGNAL( in_INSERT_NUM_REG_RD           ,_param->_size_general_register);
     62        DELETE0_SIGNAL( in_INSERT_WRITE_RE             ,1                             );
     63        DELETE0_SIGNAL( in_INSERT_NUM_REG_RE           ,_param->_size_special_register);
     64       
     65        DELETE1_SIGNAL(out_RETIRE_VAL                  ,_param->_nb_inst_retire,1);
     66        DELETE1_SIGNAL( in_RETIRE_ACK                  ,_param->_nb_inst_retire,1);
     67        DELETE1_SIGNAL(out_RETIRE_CONTEXT_ID           ,_param->_nb_inst_retire,_param->_size_context_id);
     68        DELETE1_SIGNAL(out_RETIRE_FRONT_END_ID         ,_param->_nb_inst_retire,_param->_size_front_end_id);
     69        DELETE1_SIGNAL(out_RETIRE_OOO_ENGINE_ID        ,_param->_nb_inst_retire,_param->_size_ooo_engine_id);
     70        DELETE1_SIGNAL(out_RETIRE_ROB_ID               ,_param->_nb_inst_retire,_param->_size_rob_ptr);
     71        DELETE1_SIGNAL(out_RETIRE_OPERATION            ,_param->_nb_inst_retire,_param->_size_operation);
     72        DELETE1_SIGNAL(out_RETIRE_TYPE                 ,_param->_nb_inst_retire,_param->_size_type);
     73        DELETE1_SIGNAL(out_RETIRE_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire,_param->_size_store_queue_ptr);
     74        DELETE1_SIGNAL(out_RETIRE_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire,_param->_size_load_queue_ptr );
     75        DELETE1_SIGNAL(out_RETIRE_HAS_IMMEDIAT         ,_param->_nb_inst_retire,1);
     76        DELETE1_SIGNAL(out_RETIRE_IMMEDIAT             ,_param->_nb_inst_retire,_param->_size_general_data);
     77        DELETE1_SIGNAL(out_RETIRE_DATA_RA              ,_param->_nb_inst_retire,_param->_size_general_data);
     78        DELETE1_SIGNAL(out_RETIRE_DATA_RB              ,_param->_nb_inst_retire,_param->_size_general_data);
     79        DELETE1_SIGNAL(out_RETIRE_DATA_RC              ,_param->_nb_inst_retire,_param->_size_special_data);
     80        DELETE1_SIGNAL(out_RETIRE_WRITE_RD             ,_param->_nb_inst_retire,1);
     81        DELETE1_SIGNAL(out_RETIRE_NUM_REG_RD           ,_param->_nb_inst_retire,_param->_size_general_register);
     82        DELETE1_SIGNAL(out_RETIRE_WRITE_RE             ,_param->_nb_inst_retire,1);
     83        DELETE1_SIGNAL(out_RETIRE_NUM_REG_RE           ,_param->_nb_inst_retire,_param->_size_special_register);
     84       
     85        DELETE1_SIGNAL( in_GPR_WRITE_VAL          ,_param->_nb_gpr_write,1);
     86        DELETE1_SIGNAL( in_GPR_WRITE_OOO_ENGINE_ID,_param->_nb_gpr_write,_param->_size_ooo_engine_id);
     87        DELETE1_SIGNAL( in_GPR_WRITE_NUM_REG      ,_param->_nb_gpr_write,_param->_size_general_register);
     88        DELETE1_SIGNAL( in_GPR_WRITE_DATA         ,_param->_nb_gpr_write,_param->_size_general_data);
     89       
     90        DELETE1_SIGNAL( in_SPR_WRITE_VAL          ,_param->_nb_spr_write,1);
     91        DELETE1_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID,_param->_nb_spr_write,_param->_size_ooo_engine_id);
     92        DELETE1_SIGNAL( in_SPR_WRITE_NUM_REG      ,_param->_nb_spr_write,_param->_size_general_register);
     93        DELETE1_SIGNAL( in_SPR_WRITE_DATA         ,_param->_nb_spr_write,_param->_size_general_data);
     94       
     95        DELETE1_SIGNAL( in_BYPASS_WRITE_OOO_ENGINE_ID,_param->_nb_bypass_write,_param->_size_ooo_engine_id);
     96        DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_VAL      ,_param->_nb_bypass_write,1);
     97        DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_NUM_REG  ,_param->_nb_bypass_write,_param->_size_general_register);
     98        DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_DATA     ,_param->_nb_bypass_write,_param->_size_general_data);
     99        DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_VAL      ,_param->_nb_bypass_write,1);
     100        DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_NUM_REG  ,_param->_nb_bypass_write,_param->_size_special_register);
     101        DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_DATA     ,_param->_nb_bypass_write,_param->_size_special_data);
     102       
     103        DELETE1_SIGNAL( in_BYPASS_MEMORY_VAL          ,_param->_nb_bypass_memory,1);
     104        DELETE1_SIGNAL( in_BYPASS_MEMORY_OOO_ENGINE_ID,_param->_nb_bypass_memory,_param->_size_ooo_engine_id);
     105        DELETE1_SIGNAL( in_BYPASS_MEMORY_NUM_REG      ,_param->_nb_bypass_memory,_param->_size_general_register);
     106        DELETE1_SIGNAL( in_BYPASS_MEMORY_DATA         ,_param->_nb_bypass_memory,_param->_size_general_data);
     107       
     108        DELETE1(internal_RETIRE_VAL ,_param->_nb_inst_retire);
     109        DELETE1(internal_RETIRE_SLOT,_param->_nb_inst_retire);
    124110      }
     111
    125112    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    126113
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/src/test.cpp

    r88 r112  
    6464  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
    6565
    66   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_VAL                   ," in_READ_UNIT_IN_VAL                   ",Tcontrol_t        );
    67   ALLOC_SC_SIGNAL (out_READ_UNIT_IN_ACK                   ,"out_READ_UNIT_IN_ACK                   ",Tcontrol_t        );
    68   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_CONTEXT_ID            ," in_READ_UNIT_IN_CONTEXT_ID            ",Tcontext_t        );
    69   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_FRONT_END_ID          ," in_READ_UNIT_IN_FRONT_END_ID          ",Tcontext_t        );
    70   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_OOO_ENGINE_ID         ," in_READ_UNIT_IN_OOO_ENGINE_ID         ",Tcontext_t        );
    71   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_PACKET_ID             ," in_READ_UNIT_IN_PACKET_ID             ",Tpacket_t         );
    72   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_OPERATION             ," in_READ_UNIT_IN_OPERATION             ",Toperation_t      );
    73   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_TYPE                  ," in_READ_UNIT_IN_TYPE                  ",Ttype_t           );
    74   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ," in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ",Tlsq_ptr_t        );
    75   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE  ," in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE  ",Tlsq_ptr_t        );
    76   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_HAS_IMMEDIAT          ," in_READ_UNIT_IN_HAS_IMMEDIAT          ",Tcontrol_t        );
    77   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_IMMEDIAT              ," in_READ_UNIT_IN_IMMEDIAT              ",Tgeneral_data_t   );
    78   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_READ_RA               ," in_READ_UNIT_IN_READ_RA               ",Tcontrol_t        );
    79   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_NUM_REG_RA            ," in_READ_UNIT_IN_NUM_REG_RA            ",Tgeneral_address_t);
    80   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_READ_RB               ," in_READ_UNIT_IN_READ_RB               ",Tcontrol_t        );
    81   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_NUM_REG_RB            ," in_READ_UNIT_IN_NUM_REG_RB            ",Tgeneral_address_t);
    82   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_READ_RC               ," in_READ_UNIT_IN_READ_RC               ",Tcontrol_t        );
    83   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_NUM_REG_RC            ," in_READ_UNIT_IN_NUM_REG_RC            ",Tspecial_address_t);
    84   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_WRITE_RD              ," in_READ_UNIT_IN_WRITE_RD              ",Tcontrol_t        );
    85   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_NUM_REG_RD            ," in_READ_UNIT_IN_NUM_REG_RD            ",Tgeneral_address_t);
    86   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_WRITE_RE              ," in_READ_UNIT_IN_WRITE_RE              ",Tcontrol_t        );
    87   ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_NUM_REG_RE            ," in_READ_UNIT_IN_NUM_REG_RE            ",Tspecial_address_t);
     66  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_VAL                   ," in_READ_UNIT_IN_VAL                   ",Tcontrol_t        );
     67  ALLOC0_SC_SIGNAL(out_READ_UNIT_IN_ACK                   ,"out_READ_UNIT_IN_ACK                   ",Tcontrol_t        );
     68  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_CONTEXT_ID            ," in_READ_UNIT_IN_CONTEXT_ID            ",Tcontext_t        );
     69  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_FRONT_END_ID          ," in_READ_UNIT_IN_FRONT_END_ID          ",Tcontext_t        );
     70  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_OOO_ENGINE_ID         ," in_READ_UNIT_IN_OOO_ENGINE_ID         ",Tcontext_t        );
     71  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_PACKET_ID             ," in_READ_UNIT_IN_PACKET_ID             ",Tpacket_t         );
     72  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_OPERATION             ," in_READ_UNIT_IN_OPERATION             ",Toperation_t      );
     73  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_TYPE                  ," in_READ_UNIT_IN_TYPE                  ",Ttype_t           );
     74  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ," in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ",Tlsq_ptr_t        );
     75  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE  ," in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE  ",Tlsq_ptr_t        );
     76  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_HAS_IMMEDIAT          ," in_READ_UNIT_IN_HAS_IMMEDIAT          ",Tcontrol_t        );
     77  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_IMMEDIAT              ," in_READ_UNIT_IN_IMMEDIAT              ",Tgeneral_data_t   );
     78  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_READ_RA               ," in_READ_UNIT_IN_READ_RA               ",Tcontrol_t        );
     79  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RA            ," in_READ_UNIT_IN_NUM_REG_RA            ",Tgeneral_address_t);
     80  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_READ_RB               ," in_READ_UNIT_IN_READ_RB               ",Tcontrol_t        );
     81  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RB            ," in_READ_UNIT_IN_NUM_REG_RB            ",Tgeneral_address_t);
     82  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_READ_RC               ," in_READ_UNIT_IN_READ_RC               ",Tcontrol_t        );
     83  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RC            ," in_READ_UNIT_IN_NUM_REG_RC            ",Tspecial_address_t);
     84  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_WRITE_RD              ," in_READ_UNIT_IN_WRITE_RD              ",Tcontrol_t        );
     85  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RD            ," in_READ_UNIT_IN_NUM_REG_RD            ",Tgeneral_address_t);
     86  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_WRITE_RE              ," in_READ_UNIT_IN_WRITE_RE              ",Tcontrol_t        );
     87  ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RE            ," in_READ_UNIT_IN_NUM_REG_RE            ",Tspecial_address_t);
    8888  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_VAL                  ,"out_READ_UNIT_OUT_VAL                  ",Tcontrol_t        ,_param->_nb_inst_retire);
    8989  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_ACK                  ," in_READ_UNIT_OUT_ACK                  ",Tcontrol_t        ,_param->_nb_inst_retire);
     
    146146  (*(_Read_unit->in_NRESET))       (*(in_NRESET));
    147147
    148   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_VAL                   );
    149   INSTANCE_SC_SIGNAL (_Read_unit,out_READ_UNIT_IN_ACK                   );
     148  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_VAL                   );
     149  INSTANCE0_SC_SIGNAL(_Read_unit,out_READ_UNIT_IN_ACK                   );
    150150  if (_param->_have_port_context_id)
    151   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_CONTEXT_ID            );
     151  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_CONTEXT_ID            );
    152152  if (_param->_have_port_front_end_id)
    153   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_FRONT_END_ID          );
     153  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_FRONT_END_ID          );
    154154  if (_param->_have_port_ooo_engine_id)
    155   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_OOO_ENGINE_ID         );
     155  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_OOO_ENGINE_ID         );
    156156  if (_param->_have_port_rob_ptr)
    157   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_PACKET_ID             );
    158   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_OPERATION             );
    159   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_TYPE                  );
    160   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE );
     157  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_PACKET_ID             );
     158  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_OPERATION             );
     159  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_TYPE                  );
     160  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE );
    161161  if (_param->_have_port_load_queue_ptr)
    162   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE  );
    163   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_HAS_IMMEDIAT          );
    164   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_IMMEDIAT              );
    165   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_READ_RA               );
    166   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_NUM_REG_RA            );
    167   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_READ_RB               );
    168   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_NUM_REG_RB            );
    169   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_READ_RC               );
    170   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_NUM_REG_RC            );
    171   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_WRITE_RD              );
    172   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_NUM_REG_RD            );
    173   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_WRITE_RE              );
    174   INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_NUM_REG_RE            );
     162  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE  );
     163  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_HAS_IMMEDIAT          );
     164  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_IMMEDIAT              );
     165  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RA               );
     166  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RA            );
     167  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RB               );
     168  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RB            );
     169  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RC               );
     170  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RC            );
     171  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_WRITE_RD              );
     172  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RD            );
     173  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_WRITE_RE              );
     174  INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RE            );
    175175  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_VAL                  ,_param->_nb_inst_retire);
    176176  INSTANCE1_SC_SIGNAL(_Read_unit, in_READ_UNIT_OUT_ACK                  ,_param->_nb_inst_retire);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_allocation.cpp

    r97 r112  
    5757    // ~~~~~[ Interface "read_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5858     {
    59        ALLOC_INTERFACE("read_unit_in", IN, WEST, _("Enter of new operation"));
    60 
    61        ALLOC_VALACK_IN    ( in_READ_UNIT_IN_VAL,VAL);
    62        ALLOC_VALACK_OUT   (out_READ_UNIT_IN_ACK,ACK);
    63        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_CONTEXT_ID           ,"context_id"           ,Tcontext_t        ,_param->_size_context_id   );
    64        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_FRONT_END_ID         ,"front_end_id"         ,Tcontext_t        ,_param->_size_front_end_id );
    65        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_OOO_ENGINE_ID        ,"ooo_engine_id"        ,Tcontext_t        ,_param->_size_ooo_engine_id);
    66        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_PACKET_ID            ,"packet_id"            ,Tpacket_t         ,_param->_size_rob_ptr    );
    67        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation    );
    68        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type         );
    69        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr);
    70        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr);
    71        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1);
    72        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_IMMEDIAT             ,"immediat"             ,Tgeneral_data_t   ,_param->_size_general_data);
    73        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_READ_RA              ,"read_ra"              ,Tcontrol_t        ,1);
    74        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RA           ,"num_reg_ra"           ,Tgeneral_address_t,_param->_size_general_register);
    75        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_READ_RB              ,"read_rb"              ,Tcontrol_t        ,1);
    76        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RB           ,"num_reg_rb"           ,Tgeneral_address_t,_param->_size_general_register);
    77        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_READ_RC              ,"read_rc"              ,Tcontrol_t        ,1);
    78        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RC           ,"num_reg_rc"           ,Tspecial_address_t,_param->_size_special_register);
    79        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_WRITE_RD             ,"write_rd"             ,Tcontrol_t        ,1);
    80        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RD           ,"num_reg_rd"           ,Tgeneral_address_t,_param->_size_general_register);
    81        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1);
    82        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register);
     59       ALLOC0_INTERFACE_BEGIN("read_unit_in", IN, WEST, _("Enter of new operation"));
     60
     61       ALLOC0_VALACK_IN    ( in_READ_UNIT_IN_VAL,VAL);
     62       ALLOC0_VALACK_OUT   (out_READ_UNIT_IN_ACK,ACK);
     63       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_CONTEXT_ID           ,"context_id"           ,Tcontext_t        ,_param->_size_context_id   );
     64       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_FRONT_END_ID         ,"front_end_id"         ,Tcontext_t        ,_param->_size_front_end_id );
     65       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_OOO_ENGINE_ID        ,"ooo_engine_id"        ,Tcontext_t        ,_param->_size_ooo_engine_id);
     66       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_PACKET_ID            ,"packet_id"            ,Tpacket_t         ,_param->_size_rob_ptr    );
     67       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation    );
     68       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type         );
     69       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr);
     70       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr);
     71       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1);
     72       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_IMMEDIAT             ,"immediat"             ,Tgeneral_data_t   ,_param->_size_general_data);
     73       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_READ_RA              ,"read_ra"              ,Tcontrol_t        ,1);
     74       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RA           ,"num_reg_ra"           ,Tgeneral_address_t,_param->_size_general_register);
     75       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_READ_RB              ,"read_rb"              ,Tcontrol_t        ,1);
     76       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RB           ,"num_reg_rb"           ,Tgeneral_address_t,_param->_size_general_register);
     77       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_READ_RC              ,"read_rc"              ,Tcontrol_t        ,1);
     78       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RC           ,"num_reg_rc"           ,Tspecial_address_t,_param->_size_special_register);
     79       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_WRITE_RD             ,"write_rd"             ,Tcontrol_t        ,1);
     80       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RD           ,"num_reg_rd"           ,Tgeneral_address_t,_param->_size_general_register);
     81       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1);
     82       ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register);
     83
     84       ALLOC0_INTERFACE_END();
    8385     }
    8486
    8587    // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8688     {
    87        ALLOC1_INTERFACE("read_unit_out", OUT, EAST, _("Output of operation. All operand is valid."), _param->_nb_inst_retire);
     89       ALLOC1_INTERFACE_BEGIN("read_unit_out", OUT, EAST, _("Output of operation. All operand is valid."), _param->_nb_inst_retire);
    8890
    8991       ALLOC1_VALACK_OUT   (out_READ_UNIT_OUT_VAL,VAL);
     
    106108       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                             );
    107109       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register);
     110
     111       ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
    108112     }
    109113
    110114    // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    111115     {
    112        ALLOC1_INTERFACE("gpr_read", OUT, SOUTH, _("Read port."), _param->_nb_gpr_read);
     116       ALLOC1_INTERFACE_BEGIN("gpr_read", OUT, SOUTH, _("Read port."), _param->_nb_gpr_read);
    113117
    114118       ALLOC1_VALACK_OUT   (out_GPR_READ_VAL,VAL);
     
    118122       ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data    );
    119123       ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA_VAL     ,"data_val"     ,Tcontrol_t        ,1);
     124
     125       ALLOC1_INTERFACE_END(_param->_nb_gpr_read);
    120126     }
    121127
    122128    // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    123129     {
    124        ALLOC1_INTERFACE("spr_read", OUT, SOUTH, _("Read port."), _param->_nb_spr_read);
     130       ALLOC1_INTERFACE_BEGIN("spr_read", OUT, SOUTH, _("Read port."), _param->_nb_spr_read);
    125131
    126132       ALLOC1_VALACK_OUT   (out_SPR_READ_VAL,VAL);
     
    130136       ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA         ,"data"         ,Tspecial_data_t   ,_param->_size_special_data    );
    131137       ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA_VAL     ,"data_val"     ,Tcontrol_t        ,1);
     138
     139       ALLOC1_INTERFACE_END(_param->_nb_spr_read);
    132140     }
    133141
    134142    // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    135143     {
    136        ALLOC1_INTERFACE("gpr_write", IN , SOUTH, _("Write port."), _param->_nb_gpr_write);
     144       ALLOC1_INTERFACE_BEGIN("gpr_write", IN , SOUTH, _("Write port."), _param->_nb_gpr_write);
    137145
    138146       ALLOC1_VALACK_IN    ( in_GPR_WRITE_VAL,VAL);
     
    140148       ALLOC1_SIGNAL_IN ( in_GPR_WRITE_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
    141149       ALLOC1_SIGNAL_IN ( in_GPR_WRITE_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data);
     150
     151       ALLOC1_INTERFACE_END(_param->_nb_gpr_write);
    142152     }
    143153
    144154    // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    145155     {
    146        ALLOC1_INTERFACE("spr_write", IN , SOUTH, _("Write port."), _param->_nb_spr_write);
     156       ALLOC1_INTERFACE_BEGIN("spr_write", IN , SOUTH, _("Write port."), _param->_nb_spr_write);
    147157
    148158       ALLOC1_VALACK_IN    ( in_SPR_WRITE_VAL,VAL);
     
    150160       ALLOC1_SIGNAL_IN ( in_SPR_WRITE_NUM_REG      ,"num_reg"      ,Tspecial_address_t,_param->_size_special_register);
    151161       ALLOC1_SIGNAL_IN ( in_SPR_WRITE_DATA         ,"data"         ,Tspecial_data_t   ,_param->_size_special_data);
     162
     163       ALLOC1_INTERFACE_END(_param->_nb_spr_write);
    152164     }
    153165
    154166    // ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    155167     {
    156        ALLOC1_INTERFACE("bypass_write", IN , NORTH, _("Output of write_queue."), _param->_nb_bypass_write);
     168       ALLOC1_INTERFACE_BEGIN("bypass_write", IN , NORTH, _("Output of write_queue."), _param->_nb_bypass_write);
    157169
    158170       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
     
    163175       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_NUM_REG  ,"spr_num_reg"  ,Tspecial_address_t,_param->_size_special_register);
    164176       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_DATA     ,"spr_data"     ,Tspecial_data_t   ,_param->_size_special_data    );
     177
     178       ALLOC1_INTERFACE_END(_param->_nb_bypass_write);
    165179     }
    166180
    167181    // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    168182     {
    169        ALLOC1_INTERFACE("bypass_memory", IN , NORTH, _("Output of write_queue."), _param->_nb_bypass_memory);
     183       ALLOC1_INTERFACE_BEGIN("bypass_memory", IN , NORTH, _("Output of write_queue."), _param->_nb_bypass_memory);
    170184
    171185       ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_VAL          ,"val"          ,Tcontrol_t        ,1);
     
    173187       ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
    174188       ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data    );
     189
     190       ALLOC1_INTERFACE_END(_param->_nb_bypass_memory);
    175191     }
    176192
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Read_unit.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2829        delete     in_NRESET;
    2930
    30         // ~~~~~[ Interface "read_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    31         delete     in_READ_UNIT_IN_VAL                  ;
    32         delete    out_READ_UNIT_IN_ACK                  ;
    33         if (_param->_have_port_context_id)
    34         delete     in_READ_UNIT_IN_CONTEXT_ID           ;
    35         if (_param->_have_port_front_end_id)
    36         delete     in_READ_UNIT_IN_FRONT_END_ID         ;
    37         if (_param->_have_port_ooo_engine_id)
    38         delete     in_READ_UNIT_IN_OOO_ENGINE_ID        ;
    39         if (_param->_have_port_rob_ptr)
    40         delete     in_READ_UNIT_IN_PACKET_ID            ;
    41         delete     in_READ_UNIT_IN_OPERATION            ;
    42         delete     in_READ_UNIT_IN_TYPE                 ;
    43         delete     in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE;
    44         if (_param->_have_port_load_queue_ptr)
    45         delete     in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ;
    46         delete     in_READ_UNIT_IN_HAS_IMMEDIAT         ;
    47         delete     in_READ_UNIT_IN_IMMEDIAT             ;
    48         delete     in_READ_UNIT_IN_READ_RA              ;
    49         delete     in_READ_UNIT_IN_NUM_REG_RA           ;
    50         delete     in_READ_UNIT_IN_READ_RB              ;
    51         delete     in_READ_UNIT_IN_NUM_REG_RB           ;
    52         delete     in_READ_UNIT_IN_READ_RC              ;
    53         delete     in_READ_UNIT_IN_NUM_REG_RC           ;
    54         delete     in_READ_UNIT_IN_WRITE_RD             ;
    55         delete     in_READ_UNIT_IN_NUM_REG_RD           ;
    56         delete     in_READ_UNIT_IN_WRITE_RE             ;
    57         delete     in_READ_UNIT_IN_NUM_REG_RE           ;
     31        DELETE0_SIGNAL( in_READ_UNIT_IN_VAL                  ,1);
     32        DELETE0_SIGNAL(out_READ_UNIT_IN_ACK                  ,1);
     33        DELETE0_SIGNAL( in_READ_UNIT_IN_CONTEXT_ID           ,_param->_size_context_id   );
     34        DELETE0_SIGNAL( in_READ_UNIT_IN_FRONT_END_ID         ,_param->_size_front_end_id );
     35        DELETE0_SIGNAL( in_READ_UNIT_IN_OOO_ENGINE_ID        ,_param->_size_ooo_engine_id);
     36        DELETE0_SIGNAL( in_READ_UNIT_IN_PACKET_ID            ,_param->_size_rob_ptr    );
     37        DELETE0_SIGNAL( in_READ_UNIT_IN_OPERATION            ,_param->_size_operation    );
     38        DELETE0_SIGNAL( in_READ_UNIT_IN_TYPE                 ,_param->_size_type         );
     39        DELETE0_SIGNAL( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE,_param->_size_store_queue_ptr);
     40        DELETE0_SIGNAL( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,_param->_size_load_queue_ptr);
     41        DELETE0_SIGNAL( in_READ_UNIT_IN_HAS_IMMEDIAT         ,1);
     42        DELETE0_SIGNAL( in_READ_UNIT_IN_IMMEDIAT             ,_param->_size_general_data);
     43        DELETE0_SIGNAL( in_READ_UNIT_IN_READ_RA              ,1);
     44        DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RA           ,_param->_size_general_register);
     45        DELETE0_SIGNAL( in_READ_UNIT_IN_READ_RB              ,1);
     46        DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RB           ,_param->_size_general_register);
     47        DELETE0_SIGNAL( in_READ_UNIT_IN_READ_RC              ,1);
     48        DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RC           ,_param->_size_special_register);
     49        DELETE0_SIGNAL( in_READ_UNIT_IN_WRITE_RD             ,1);
     50        DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RD           ,_param->_size_general_register);
     51        DELETE0_SIGNAL( in_READ_UNIT_IN_WRITE_RE             ,1);
     52        DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RE           ,_param->_size_special_register);
    5853
    59         // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    60         delete [] out_READ_UNIT_OUT_VAL                  ;
    61         delete []  in_READ_UNIT_OUT_ACK                  ;
    62         if (_param->_have_port_context_id)
    63         delete [] out_READ_UNIT_OUT_CONTEXT_ID           ;
    64         if (_param->_have_port_front_end_id)
    65         delete [] out_READ_UNIT_OUT_FRONT_END_ID         ;
    66         if (_param->_have_port_ooo_engine_id)
    67         delete [] out_READ_UNIT_OUT_OOO_ENGINE_ID        ;
    68         if (_param->_have_port_rob_ptr)
    69         delete [] out_READ_UNIT_OUT_PACKET_ID            ;
    70         delete [] out_READ_UNIT_OUT_OPERATION            ;
    71         delete [] out_READ_UNIT_OUT_TYPE                 ;
    72         delete [] out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE;
    73         if (_param->_have_port_load_queue_ptr)
    74         delete [] out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ;
    75         delete [] out_READ_UNIT_OUT_HAS_IMMEDIAT         ;
    76         delete [] out_READ_UNIT_OUT_IMMEDIAT             ;
    77         delete [] out_READ_UNIT_OUT_DATA_RA              ;
    78         delete [] out_READ_UNIT_OUT_DATA_RB              ;
    79         delete [] out_READ_UNIT_OUT_DATA_RC              ;
    80         delete [] out_READ_UNIT_OUT_WRITE_RD             ;
    81         delete [] out_READ_UNIT_OUT_NUM_REG_RD           ;
    82         delete [] out_READ_UNIT_OUT_WRITE_RE             ;
    83         delete [] out_READ_UNIT_OUT_NUM_REG_RE           ;
     54        DELETE1_SIGNAL(out_READ_UNIT_OUT_VAL                  ,_param->_nb_inst_retire,1);
     55        DELETE1_SIGNAL( in_READ_UNIT_OUT_ACK                  ,_param->_nb_inst_retire,1);
     56        DELETE1_SIGNAL(out_READ_UNIT_OUT_CONTEXT_ID           ,_param->_nb_inst_retire,_param->_size_context_id      );
     57        DELETE1_SIGNAL(out_READ_UNIT_OUT_FRONT_END_ID         ,_param->_nb_inst_retire,_param->_size_front_end_id    );
     58        DELETE1_SIGNAL(out_READ_UNIT_OUT_OOO_ENGINE_ID        ,_param->_nb_inst_retire,_param->_size_ooo_engine_id   );
     59        DELETE1_SIGNAL(out_READ_UNIT_OUT_PACKET_ID            ,_param->_nb_inst_retire,_param->_size_rob_ptr       );
     60        DELETE1_SIGNAL(out_READ_UNIT_OUT_OPERATION            ,_param->_nb_inst_retire,_param->_size_operation       );
     61        DELETE1_SIGNAL(out_READ_UNIT_OUT_TYPE                 ,_param->_nb_inst_retire,_param->_size_type            );
     62        DELETE1_SIGNAL(out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire,_param->_size_store_queue_ptr);
     63        DELETE1_SIGNAL(out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire,_param->_size_load_queue_ptr);
     64        DELETE1_SIGNAL(out_READ_UNIT_OUT_HAS_IMMEDIAT         ,_param->_nb_inst_retire,1                             );
     65        DELETE1_SIGNAL(out_READ_UNIT_OUT_IMMEDIAT             ,_param->_nb_inst_retire,_param->_size_general_data    );
     66        DELETE1_SIGNAL(out_READ_UNIT_OUT_DATA_RA              ,_param->_nb_inst_retire,_param->_size_general_data    );
     67        DELETE1_SIGNAL(out_READ_UNIT_OUT_DATA_RB              ,_param->_nb_inst_retire,_param->_size_general_data    );
     68        DELETE1_SIGNAL(out_READ_UNIT_OUT_DATA_RC              ,_param->_nb_inst_retire,_param->_size_special_data    );
     69        DELETE1_SIGNAL(out_READ_UNIT_OUT_WRITE_RD             ,_param->_nb_inst_retire,1                             );
     70        DELETE1_SIGNAL(out_READ_UNIT_OUT_NUM_REG_RD           ,_param->_nb_inst_retire,_param->_size_general_register);
     71        DELETE1_SIGNAL(out_READ_UNIT_OUT_WRITE_RE             ,_param->_nb_inst_retire,1                             );
     72        DELETE1_SIGNAL(out_READ_UNIT_OUT_NUM_REG_RE           ,_param->_nb_inst_retire,_param->_size_special_register);
    8473
    85         // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    86         delete [] out_GPR_READ_VAL          ;
    87         delete []  in_GPR_READ_ACK          ;
    88         if (_param->_have_port_ooo_engine_id)
    89         delete [] out_GPR_READ_OOO_ENGINE_ID;
    90         delete [] out_GPR_READ_NUM_REG      ;
    91         delete []  in_GPR_READ_DATA         ;
    92         delete []  in_GPR_READ_DATA_VAL     ;
     74        DELETE1_SIGNAL(out_GPR_READ_VAL          , _param->_nb_gpr_read,1);
     75        DELETE1_SIGNAL( in_GPR_READ_ACK          , _param->_nb_gpr_read,1);
     76        DELETE1_SIGNAL(out_GPR_READ_OOO_ENGINE_ID, _param->_nb_gpr_read,_param->_size_ooo_engine_id   );
     77        DELETE1_SIGNAL(out_GPR_READ_NUM_REG      , _param->_nb_gpr_read,_param->_size_general_register);
     78        DELETE1_SIGNAL( in_GPR_READ_DATA         , _param->_nb_gpr_read,_param->_size_general_data    );
     79        DELETE1_SIGNAL( in_GPR_READ_DATA_VAL     , _param->_nb_gpr_read,1);
    9380
    94         // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    95         delete [] out_SPR_READ_VAL          ;
    96         delete []  in_SPR_READ_ACK          ;
    97         if (_param->_have_port_ooo_engine_id)
    98         delete [] out_SPR_READ_OOO_ENGINE_ID;
    99         delete [] out_SPR_READ_NUM_REG      ;
    100         delete []  in_SPR_READ_DATA         ;
    101         delete []  in_SPR_READ_DATA_VAL     ;
     81        DELETE1_SIGNAL(out_SPR_READ_VAL          , _param->_nb_spr_read,1);
     82        DELETE1_SIGNAL( in_SPR_READ_ACK          , _param->_nb_spr_read,1);
     83        DELETE1_SIGNAL(out_SPR_READ_OOO_ENGINE_ID, _param->_nb_spr_read,_param->_size_ooo_engine_id   );
     84        DELETE1_SIGNAL(out_SPR_READ_NUM_REG      , _param->_nb_spr_read,_param->_size_special_register);
     85        DELETE1_SIGNAL( in_SPR_READ_DATA         , _param->_nb_spr_read,_param->_size_special_data    );
     86        DELETE1_SIGNAL( in_SPR_READ_DATA_VAL     , _param->_nb_spr_read,1);
    10287
    103         // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    104         delete []  in_GPR_WRITE_VAL          ;
    105         if (_param->_have_port_ooo_engine_id)
    106         delete []  in_GPR_WRITE_OOO_ENGINE_ID;
    107         delete []  in_GPR_WRITE_NUM_REG      ;
    108         delete []  in_GPR_WRITE_DATA         ;
     88        DELETE1_SIGNAL( in_GPR_WRITE_VAL          , _param->_nb_gpr_write,1);
     89        DELETE1_SIGNAL( in_GPR_WRITE_OOO_ENGINE_ID, _param->_nb_gpr_write,_param->_size_ooo_engine_id   );
     90        DELETE1_SIGNAL( in_GPR_WRITE_NUM_REG      , _param->_nb_gpr_write,_param->_size_general_register);
     91        DELETE1_SIGNAL( in_GPR_WRITE_DATA         , _param->_nb_gpr_write,_param->_size_general_data);
    10992
    110         // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    111         delete []  in_SPR_WRITE_VAL          ;
    112         if (_param->_have_port_ooo_engine_id)
    113         delete []  in_SPR_WRITE_OOO_ENGINE_ID;
    114         delete []  in_SPR_WRITE_NUM_REG      ;
    115         delete []  in_SPR_WRITE_DATA         ;
     93        DELETE1_SIGNAL( in_SPR_WRITE_VAL          , _param->_nb_spr_write,1);
     94        DELETE1_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID, _param->_nb_spr_write,_param->_size_ooo_engine_id   );
     95        DELETE1_SIGNAL( in_SPR_WRITE_NUM_REG      , _param->_nb_spr_write,_param->_size_special_register);
     96        DELETE1_SIGNAL( in_SPR_WRITE_DATA         , _param->_nb_spr_write,_param->_size_special_data);
    11697
    117         // ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    118         if (_param->_have_port_ooo_engine_id)
    119         delete []  in_BYPASS_WRITE_OOO_ENGINE_ID ;
    120         delete []  in_BYPASS_WRITE_GPR_VAL       ;
    121         delete []  in_BYPASS_WRITE_GPR_NUM_REG   ;
    122         delete []  in_BYPASS_WRITE_GPR_DATA      ;
    123         delete []  in_BYPASS_WRITE_SPR_VAL       ;
    124         delete []  in_BYPASS_WRITE_SPR_NUM_REG   ;
    125         delete []  in_BYPASS_WRITE_SPR_DATA      ;
     98        DELETE1_SIGNAL( in_BYPASS_WRITE_OOO_ENGINE_ID, _param->_nb_bypass_write,_param->_size_ooo_engine_id   );
     99        DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_VAL      , _param->_nb_bypass_write,1);
     100        DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_NUM_REG  , _param->_nb_bypass_write,_param->_size_general_register);
     101        DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_DATA     , _param->_nb_bypass_write,_param->_size_general_data    );
     102        DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_VAL      , _param->_nb_bypass_write,1);
     103        DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_NUM_REG  , _param->_nb_bypass_write,_param->_size_special_register);
     104        DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_DATA     , _param->_nb_bypass_write,_param->_size_special_data    );
    126105
    127         // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    128         delete []  in_BYPASS_MEMORY_VAL          ;
    129         if (_param->_have_port_ooo_engine_id)
    130         delete []  in_BYPASS_MEMORY_OOO_ENGINE_ID;
    131         delete []  in_BYPASS_MEMORY_NUM_REG      ;
    132         delete []  in_BYPASS_MEMORY_DATA         ;
     106        DELETE1_SIGNAL( in_BYPASS_MEMORY_VAL          , _param->_nb_bypass_memory,1);
     107        DELETE1_SIGNAL( in_BYPASS_MEMORY_OOO_ENGINE_ID, _param->_nb_bypass_memory,_param->_size_ooo_engine_id   );
     108        DELETE1_SIGNAL( in_BYPASS_MEMORY_NUM_REG      , _param->_nb_bypass_memory,_param->_size_general_register);
     109        DELETE1_SIGNAL( in_BYPASS_MEMORY_DATA         , _param->_nb_bypass_memory,_param->_size_general_data    );
    133110      }
    134111    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest/src/test.cpp

    r98 r112  
    112112  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
    113113
    114   ALLOC_SC_SIGNAL ( in_EXECUTE_QUEUE_IN_VAL           ," in_EXECUTE_QUEUE_IN_VAL"           , Tcontrol_t        );
    115   ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_IN_ACK           ,"out_EXECUTE_QUEUE_IN_ACK"           , Tcontrol_t        );
    116   ALLOC_SC_SIGNAL ( in_EXECUTE_QUEUE_IN_CONTEXT_ID    ," in_EXECUTE_QUEUE_IN_CONTEXT_ID"    , Tcontext_t        );
    117   ALLOC_SC_SIGNAL ( in_EXECUTE_QUEUE_IN_FRONT_END_ID  ," in_EXECUTE_QUEUE_IN_FRONT_END_ID"  , Tcontext_t        );
    118   ALLOC_SC_SIGNAL ( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID ," in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID" , Tcontext_t        );
    119   ALLOC_SC_SIGNAL ( in_EXECUTE_QUEUE_IN_PACKET_ID     ," in_EXECUTE_QUEUE_IN_PACKET_ID"     , Tpacket_t         );
    120 //ALLOC_SC_SIGNAL ( in_EXECUTE_QUEUE_IN_OPERATION     ," in_EXECUTE_QUEUE_IN_OPERATION"     , Toperation_t      );
    121 //ALLOC_SC_SIGNAL ( in_EXECUTE_QUEUE_IN_TYPE          ," in_EXECUTE_QUEUE_IN_TYPE"          , Ttype_t           );
    122   ALLOC_SC_SIGNAL ( in_EXECUTE_QUEUE_IN_FLAGS         ," in_EXECUTE_QUEUE_IN_FLAGS"         , Tspecial_data_t   );
    123   ALLOC_SC_SIGNAL ( in_EXECUTE_QUEUE_IN_EXCEPTION     ," in_EXECUTE_QUEUE_IN_EXCEPTION"     , Texception_t      );
    124   ALLOC_SC_SIGNAL ( in_EXECUTE_QUEUE_IN_NO_SEQUENCE   ," in_EXECUTE_QUEUE_IN_NO_SEQUENCE"   , Tcontrol_t        );
    125   ALLOC_SC_SIGNAL ( in_EXECUTE_QUEUE_IN_ADDRESS       ," in_EXECUTE_QUEUE_IN_ADDRESS"       , Taddress_t        );
    126   ALLOC_SC_SIGNAL ( in_EXECUTE_QUEUE_IN_DATA          ," in_EXECUTE_QUEUE_IN_DATA"          , Tgeneral_data_t   );
    127   ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_OUT_VAL          ,"out_EXECUTE_QUEUE_OUT_VAL"          , Tcontrol_t        );
    128   ALLOC_SC_SIGNAL ( in_EXECUTE_QUEUE_OUT_ACK          ," in_EXECUTE_QUEUE_OUT_ACK"          , Tcontrol_t        );
    129   ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_OUT_CONTEXT_ID   ,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID"   , Tcontext_t        );
    130   ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_OUT_FRONT_END_ID ,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID" , Tcontext_t        );
    131   ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID", Tcontext_t        );
    132   ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_OUT_PACKET_ID    ,"out_EXECUTE_QUEUE_OUT_PACKET_ID"    , Tpacket_t         );
    133 //ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_OUT_OPERATION    ,"out_EXECUTE_QUEUE_OUT_OPERATION"    , Toperation_t      );
    134 //ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_OUT_TYPE         ,"out_EXECUTE_QUEUE_OUT_TYPE"         , Ttype_t           );
    135   ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_OUT_FLAGS        ,"out_EXECUTE_QUEUE_OUT_FLAGS"        , Tspecial_data_t   );
    136   ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_OUT_EXCEPTION    ,"out_EXECUTE_QUEUE_OUT_EXCEPTION"    , Texception_t      );
    137   ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_OUT_NO_SEQUENCE  ,"out_EXECUTE_QUEUE_OUT_NO_SEQUENCE"  , Tcontrol_t        );
    138   ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_OUT_ADDRESS      ,"out_EXECUTE_QUEUE_OUT_ADDRESS"      , Taddress_t        );
    139   ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_OUT_DATA         ,"out_EXECUTE_QUEUE_OUT_DATA"         , Tgeneral_data_t   );
     114  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_VAL           ," in_EXECUTE_QUEUE_IN_VAL"           , Tcontrol_t        );
     115  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_IN_ACK           ,"out_EXECUTE_QUEUE_IN_ACK"           , Tcontrol_t        );
     116  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_CONTEXT_ID    ," in_EXECUTE_QUEUE_IN_CONTEXT_ID"    , Tcontext_t        );
     117  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_FRONT_END_ID  ," in_EXECUTE_QUEUE_IN_FRONT_END_ID"  , Tcontext_t        );
     118  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID ," in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID" , Tcontext_t        );
     119  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_PACKET_ID     ," in_EXECUTE_QUEUE_IN_PACKET_ID"     , Tpacket_t         );
     120//ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_OPERATION     ," in_EXECUTE_QUEUE_IN_OPERATION"     , Toperation_t      );
     121//ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_TYPE          ," in_EXECUTE_QUEUE_IN_TYPE"          , Ttype_t           );
     122  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_FLAGS         ," in_EXECUTE_QUEUE_IN_FLAGS"         , Tspecial_data_t   );
     123  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_EXCEPTION     ," in_EXECUTE_QUEUE_IN_EXCEPTION"     , Texception_t      );
     124  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_NO_SEQUENCE   ," in_EXECUTE_QUEUE_IN_NO_SEQUENCE"   , Tcontrol_t        );
     125  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_ADDRESS       ," in_EXECUTE_QUEUE_IN_ADDRESS"       , Taddress_t        );
     126  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_DATA          ," in_EXECUTE_QUEUE_IN_DATA"          , Tgeneral_data_t   );
     127  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_VAL          ,"out_EXECUTE_QUEUE_OUT_VAL"          , Tcontrol_t        );
     128  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_OUT_ACK          ," in_EXECUTE_QUEUE_OUT_ACK"          , Tcontrol_t        );
     129  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_CONTEXT_ID   ,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID"   , Tcontext_t        );
     130  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_FRONT_END_ID ,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID" , Tcontext_t        );
     131  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID", Tcontext_t        );
     132  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_PACKET_ID    ,"out_EXECUTE_QUEUE_OUT_PACKET_ID"    , Tpacket_t         );
     133//ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_OPERATION    ,"out_EXECUTE_QUEUE_OUT_OPERATION"    , Toperation_t      );
     134//ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_TYPE         ,"out_EXECUTE_QUEUE_OUT_TYPE"         , Ttype_t           );
     135  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_FLAGS        ,"out_EXECUTE_QUEUE_OUT_FLAGS"        , Tspecial_data_t   );
     136  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_EXCEPTION    ,"out_EXECUTE_QUEUE_OUT_EXCEPTION"    , Texception_t      );
     137  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_NO_SEQUENCE  ,"out_EXECUTE_QUEUE_OUT_NO_SEQUENCE"  , Tcontrol_t        );
     138  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_ADDRESS      ,"out_EXECUTE_QUEUE_OUT_ADDRESS"      , Taddress_t        );
     139  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_DATA         ,"out_EXECUTE_QUEUE_OUT_DATA"         , Tgeneral_data_t   );
    140140
    141141 
     
    149149  (*(_Execute_queue->in_NRESET))       (*(in_NRESET));
    150150
    151   INSTANCE_SC_SIGNAL (_Execute_queue,  in_EXECUTE_QUEUE_IN_VAL           );
    152   INSTANCE_SC_SIGNAL (_Execute_queue, out_EXECUTE_QUEUE_IN_ACK           );
     151  INSTANCE0_SC_SIGNAL(_Execute_queue,  in_EXECUTE_QUEUE_IN_VAL           );
     152  INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_IN_ACK           );
    153153  if (_param->_have_port_context_id)
    154   INSTANCE_SC_SIGNAL (_Execute_queue,  in_EXECUTE_QUEUE_IN_CONTEXT_ID    );
     154  INSTANCE0_SC_SIGNAL(_Execute_queue,  in_EXECUTE_QUEUE_IN_CONTEXT_ID    );
    155155  if (_param->_have_port_front_end_id)
    156   INSTANCE_SC_SIGNAL (_Execute_queue,  in_EXECUTE_QUEUE_IN_FRONT_END_ID  );
     156  INSTANCE0_SC_SIGNAL(_Execute_queue,  in_EXECUTE_QUEUE_IN_FRONT_END_ID  );
    157157  if (_param->_have_port_ooo_engine_id)
    158   INSTANCE_SC_SIGNAL (_Execute_queue,  in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID );
     158  INSTANCE0_SC_SIGNAL(_Execute_queue,  in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID );
    159159  if (_param->_have_port_rob_ptr)
    160   INSTANCE_SC_SIGNAL (_Execute_queue,  in_EXECUTE_QUEUE_IN_PACKET_ID     );
    161 //INSTANCE_SC_SIGNAL (_Execute_queue,  in_EXECUTE_QUEUE_IN_OPERATION     );
    162 //INSTANCE_SC_SIGNAL (_Execute_queue,  in_EXECUTE_QUEUE_IN_TYPE          );
    163   INSTANCE_SC_SIGNAL (_Execute_queue,  in_EXECUTE_QUEUE_IN_FLAGS         );
    164   INSTANCE_SC_SIGNAL (_Execute_queue,  in_EXECUTE_QUEUE_IN_EXCEPTION     );
    165   INSTANCE_SC_SIGNAL (_Execute_queue,  in_EXECUTE_QUEUE_IN_NO_SEQUENCE   );
    166   INSTANCE_SC_SIGNAL (_Execute_queue,  in_EXECUTE_QUEUE_IN_ADDRESS       );
    167   INSTANCE_SC_SIGNAL (_Execute_queue,  in_EXECUTE_QUEUE_IN_DATA          );
    168 
    169   INSTANCE_SC_SIGNAL (_Execute_queue, out_EXECUTE_QUEUE_OUT_VAL          );
    170   INSTANCE_SC_SIGNAL (_Execute_queue,  in_EXECUTE_QUEUE_OUT_ACK          );
     160  INSTANCE0_SC_SIGNAL(_Execute_queue,  in_EXECUTE_QUEUE_IN_PACKET_ID     );
     161//INSTANCE0_SC_SIGNAL(_Execute_queue,  in_EXECUTE_QUEUE_IN_OPERATION     );
     162//INSTANCE0_SC_SIGNAL(_Execute_queue,  in_EXECUTE_QUEUE_IN_TYPE          );
     163  INSTANCE0_SC_SIGNAL(_Execute_queue,  in_EXECUTE_QUEUE_IN_FLAGS         );
     164  INSTANCE0_SC_SIGNAL(_Execute_queue,  in_EXECUTE_QUEUE_IN_EXCEPTION     );
     165  INSTANCE0_SC_SIGNAL(_Execute_queue,  in_EXECUTE_QUEUE_IN_NO_SEQUENCE   );
     166  INSTANCE0_SC_SIGNAL(_Execute_queue,  in_EXECUTE_QUEUE_IN_ADDRESS       );
     167  INSTANCE0_SC_SIGNAL(_Execute_queue,  in_EXECUTE_QUEUE_IN_DATA          );
     168
     169  INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_VAL          );
     170  INSTANCE0_SC_SIGNAL(_Execute_queue,  in_EXECUTE_QUEUE_OUT_ACK          );
    171171  if (_param->_have_port_context_id)
    172   INSTANCE_SC_SIGNAL (_Execute_queue, out_EXECUTE_QUEUE_OUT_CONTEXT_ID   );
     172  INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_CONTEXT_ID   );
    173173  if (_param->_have_port_front_end_id)
    174   INSTANCE_SC_SIGNAL (_Execute_queue, out_EXECUTE_QUEUE_OUT_FRONT_END_ID );
     174  INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_FRONT_END_ID );
    175175  if (_param->_have_port_ooo_engine_id)
    176   INSTANCE_SC_SIGNAL (_Execute_queue, out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID);
     176  INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID);
    177177  if (_param->_have_port_rob_ptr)
    178   INSTANCE_SC_SIGNAL (_Execute_queue, out_EXECUTE_QUEUE_OUT_PACKET_ID    );
    179 //INSTANCE_SC_SIGNAL (_Execute_queue, out_EXECUTE_QUEUE_OUT_OPERATION    );
    180 //INSTANCE_SC_SIGNAL (_Execute_queue, out_EXECUTE_QUEUE_OUT_TYPE         );
    181   INSTANCE_SC_SIGNAL (_Execute_queue, out_EXECUTE_QUEUE_OUT_FLAGS        );
    182   INSTANCE_SC_SIGNAL (_Execute_queue, out_EXECUTE_QUEUE_OUT_EXCEPTION    );
    183   INSTANCE_SC_SIGNAL (_Execute_queue, out_EXECUTE_QUEUE_OUT_NO_SEQUENCE  );
    184   INSTANCE_SC_SIGNAL (_Execute_queue, out_EXECUTE_QUEUE_OUT_ADDRESS      );
    185   INSTANCE_SC_SIGNAL (_Execute_queue, out_EXECUTE_QUEUE_OUT_DATA         );
     178  INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_PACKET_ID    );
     179//INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_OPERATION    );
     180//INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_TYPE         );
     181  INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_FLAGS        );
     182  INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_EXCEPTION    );
     183  INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_NO_SEQUENCE  );
     184  INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_ADDRESS      );
     185  INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_DATA         );
    186186
    187187  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_allocation.cpp

    r101 r112  
    5050    // -----[ Interface "execute_queue_in" ]--------------------------------   
    5151     {
    52        ALLOC_INTERFACE ("execute_queue_in", IN, WEST, "Input of execute_queue");
     52       ALLOC0_INTERFACE_BEGIN("execute_queue_in", IN, WEST, "Input of execute_queue");
    5353       
    54        ALLOC_VALACK_IN ( in_EXECUTE_QUEUE_IN_VAL,VAL);
    55        ALLOC_VALACK_OUT(out_EXECUTE_QUEUE_IN_ACK,ACK);
    56        if(_param->_have_port_context_id)
    57        ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id       );
    58        if(_param->_have_port_front_end_id)
    59        ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id     );
    60        if(_param->_have_port_ooo_engine_id)
    61        ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id    );
    62        if(_param->_have_port_rob_ptr)
    63        ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_rob_ptr        );
    64 //     ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation        );
    65 //     ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type             );
    66        ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FLAGS        ,"flags"        ,Tspecial_data_t   ,_param->_size_special_data     );
    67        ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception        );
    68        ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t        ,1                              );
    69        ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_ADDRESS      ,"address"      ,Taddress_t        ,_param->_size_instruction_address);
    70        ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data     );
     54       ALLOC0_VALACK_IN ( in_EXECUTE_QUEUE_IN_VAL,VAL);
     55       ALLOC0_VALACK_OUT(out_EXECUTE_QUEUE_IN_ACK,ACK);
     56       ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id       );
     57       ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id     );
     58       ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id    );
     59       ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_rob_ptr        );
     60//     ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation        );
     61//     ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type             );
     62       ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FLAGS        ,"flags"        ,Tspecial_data_t   ,_param->_size_special_data     );
     63       ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception        );
     64       ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t        ,1                              );
     65       ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_ADDRESS      ,"address"      ,Taddress_t        ,_param->_size_instruction_address);
     66       ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data     );
     67
     68       ALLOC0_INTERFACE_END();
    7169     }
    7270
    7371    // -----[ Interface "execute_queue_out" ]-------------------------------
    7472     {
    75        ALLOC_INTERFACE ("execute_queue_out", OUT, EAST, "Output of execute_queue");
     73       ALLOC0_INTERFACE_BEGIN("execute_queue_out", OUT, EAST, "Output of execute_queue");
    7674       
    77        ALLOC_VALACK_OUT(out_EXECUTE_QUEUE_OUT_VAL,VAL);
    78        ALLOC_VALACK_IN ( in_EXECUTE_QUEUE_OUT_ACK,ACK);
    79        if(_param->_have_port_context_id)
    80        ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_CONTEXT_ID   ,"context_id"   ,Tcontext_t     ,_param->_size_context_id   );
    81        if(_param->_have_port_front_end_id)
    82        ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t     ,_param->_size_front_end_id );
    83        if(_param->_have_port_ooo_engine_id)
    84        ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t     ,_param->_size_ooo_engine_id);
    85        if(_param->_have_port_rob_ptr)
    86        ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_PACKET_ID    ,"packet_id"    ,Tpacket_t      ,_param->_size_rob_ptr    );
    87 //     ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_OPERATION    ,"operation"    ,Toperation_t   ,_param->_size_operation    );
    88 //     ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_TYPE         ,"type"         ,Ttype_t        ,_param->_size_type         );
    89        ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_FLAGS        ,"flags"        ,Tspecial_data_t,_param->_size_special_data );
    90        ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_EXCEPTION    ,"exception"    ,Texception_t   ,_param->_size_exception    );
    91        ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t     ,1                          );
    92        ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_ADDRESS      ,"address"      ,Taddress_t     ,_param->_size_instruction_address);
    93        ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_DATA         ,"data"         ,Tgeneral_data_t,_param->_size_general_data );
     75       ALLOC0_VALACK_OUT(out_EXECUTE_QUEUE_OUT_VAL,VAL);
     76       ALLOC0_VALACK_IN ( in_EXECUTE_QUEUE_OUT_ACK,ACK);
     77       ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_CONTEXT_ID   ,"context_id"   ,Tcontext_t     ,_param->_size_context_id   );
     78       ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t     ,_param->_size_front_end_id );
     79       ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t     ,_param->_size_ooo_engine_id);
     80       ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_PACKET_ID    ,"packet_id"    ,Tpacket_t      ,_param->_size_rob_ptr    );
     81//     ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_OPERATION    ,"operation"    ,Toperation_t   ,_param->_size_operation    );
     82//     ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_TYPE         ,"type"         ,Ttype_t        ,_param->_size_type         );
     83       ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_FLAGS        ,"flags"        ,Tspecial_data_t,_param->_size_special_data );
     84       ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_EXCEPTION    ,"exception"    ,Texception_t   ,_param->_size_exception    );
     85       ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t     ,1                          );
     86       ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_ADDRESS      ,"address"      ,Taddress_t     ,_param->_size_instruction_address);
     87       ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_DATA         ,"data"         ,Tgeneral_data_t,_param->_size_general_data );
     88
     89       ALLOC0_INTERFACE_END();
    9490     }
    9591
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_deallocation.cpp

    r101 r112  
    77
    88#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Execute_queue.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2930        delete    in_NRESET;
    3031
    31         // -----[ Interface "execute_queue_in" ]--------------------------------   
    32         delete      in_EXECUTE_QUEUE_IN_VAL          ;
    33         delete     out_EXECUTE_QUEUE_IN_ACK          ;
    34         if (_param->_have_port_context_id)
    35         delete      in_EXECUTE_QUEUE_IN_CONTEXT_ID   ;
    36         if (_param->_have_port_front_end_id)
    37         delete      in_EXECUTE_QUEUE_IN_FRONT_END_ID ;
    38         if (_param->_have_port_ooo_engine_id)
    39         delete      in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID;
    40         if (_param->_have_port_rob_ptr)
    41         delete      in_EXECUTE_QUEUE_IN_PACKET_ID    ;
    42 //      delete      in_EXECUTE_QUEUE_IN_OPERATION    ;
    43 //      delete      in_EXECUTE_QUEUE_IN_TYPE         ;
    44         delete      in_EXECUTE_QUEUE_IN_FLAGS        ;
    45         delete      in_EXECUTE_QUEUE_IN_EXCEPTION    ;
    46         delete      in_EXECUTE_QUEUE_IN_NO_SEQUENCE  ;
    47         delete      in_EXECUTE_QUEUE_IN_ADDRESS      ;
    48         delete      in_EXECUTE_QUEUE_IN_DATA         ;
    49 
    50         // -----[ Interface "execute_queue_out" ]-------------------------------   
    51         delete     out_EXECUTE_QUEUE_OUT_VAL          ;
    52         delete      in_EXECUTE_QUEUE_OUT_ACK          ;
    53         if (_param->_have_port_context_id)
    54         delete     out_EXECUTE_QUEUE_OUT_CONTEXT_ID   ;
    55         if (_param->_have_port_front_end_id)
    56         delete     out_EXECUTE_QUEUE_OUT_FRONT_END_ID ;
    57         if (_param->_have_port_ooo_engine_id)
    58         delete     out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID;
    59         if (_param->_have_port_rob_ptr)
    60         delete     out_EXECUTE_QUEUE_OUT_PACKET_ID    ;
    61 //      delete     out_EXECUTE_QUEUE_OUT_OPERATION    ;
    62 //      delete     out_EXECUTE_QUEUE_OUT_TYPE         ;
    63         delete     out_EXECUTE_QUEUE_OUT_FLAGS        ;
    64         delete     out_EXECUTE_QUEUE_OUT_EXCEPTION    ;
    65         delete     out_EXECUTE_QUEUE_OUT_NO_SEQUENCE  ;
    66         delete     out_EXECUTE_QUEUE_OUT_ADDRESS      ;
    67         delete     out_EXECUTE_QUEUE_OUT_DATA         ;
     32        DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_VAL           ,1);
     33        DELETE0_SIGNAL(out_EXECUTE_QUEUE_IN_ACK           ,1);
     34        DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_CONTEXT_ID    ,_param->_size_context_id       );
     35        DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_FRONT_END_ID  ,_param->_size_front_end_id     );
     36        DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID ,_param->_size_ooo_engine_id    );
     37        DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_PACKET_ID     ,_param->_size_rob_ptr          );
     38//      DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_OPERATION     ,_param->_size_operation        );
     39//      DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_TYPE          ,_param->_size_type             );
     40        DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_FLAGS         ,_param->_size_special_data     );
     41        DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_EXCEPTION     ,_param->_size_exception        );
     42        DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_NO_SEQUENCE   ,1                              );
     43        DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_ADDRESS       ,_param->_size_instruction_address);
     44        DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_DATA          ,_param->_size_general_data     );
     45       
     46        DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_VAL          ,1);
     47        DELETE0_SIGNAL( in_EXECUTE_QUEUE_OUT_ACK          ,1);
     48        DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_CONTEXT_ID   ,_param->_size_context_id   );
     49        DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_FRONT_END_ID ,_param->_size_front_end_id );
     50        DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID,_param->_size_ooo_engine_id);
     51        DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_PACKET_ID    ,_param->_size_rob_ptr    );
     52//      DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_OPERATION    ,_param->_size_operation    );
     53//      DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_TYPE         ,_param->_size_type         );
     54        DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_FLAGS        ,_param->_size_special_data );
     55        DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_EXCEPTION    ,_param->_size_exception    );
     56        DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_NO_SEQUENCE  ,1                          );
     57        DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_ADDRESS      ,_param->_size_instruction_address);
     58        DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_DATA         ,_param->_size_general_data );
    6859      }
    6960
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/src/test.cpp

    r97 r112  
    126126  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
    127127
    128   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_VAL           ," in_WRITE_UNIT_IN_VAL"           , Tcontrol_t        );
    129   ALLOC_SC_SIGNAL (out_WRITE_UNIT_IN_ACK           ,"out_WRITE_UNIT_IN_ACK"           , Tcontrol_t        );
    130   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_CONTEXT_ID    ," in_WRITE_UNIT_IN_CONTEXT_ID"    , Tcontext_t        );
    131   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_FRONT_END_ID  ," in_WRITE_UNIT_IN_FRONT_END_ID"  , Tcontext_t        );
    132   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_OOO_ENGINE_ID ," in_WRITE_UNIT_IN_OOO_ENGINE_ID" , Tcontext_t        );
    133   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_PACKET_ID     ," in_WRITE_UNIT_IN_PACKET_ID"     , Tpacket_t         );
    134 //ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_OPERATION     ," in_WRITE_UNIT_IN_OPERATION"     , Toperation_t      );
    135 //ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_TYPE          ," in_WRITE_UNIT_IN_TYPE"          , Ttype_t           );
    136   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_WRITE_RD      ," in_WRITE_UNIT_IN_WRITE_RD"      , Tcontrol_t        );
    137   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_NUM_REG_RD    ," in_WRITE_UNIT_IN_NUM_REG_RD"    , Tgeneral_address_t);
    138   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_DATA_RD       ," in_WRITE_UNIT_IN_DATA_RD"       , Tgeneral_data_t   );
    139   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_WRITE_RE      ," in_WRITE_UNIT_IN_WRITE_RE"      , Tcontrol_t        );
    140   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_NUM_REG_RE    ," in_WRITE_UNIT_IN_NUM_REG_RE"    , Tspecial_address_t);
    141   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_DATA_RE       ," in_WRITE_UNIT_IN_DATA_RE"       , Tspecial_data_t   );
    142   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_EXCEPTION     ," in_WRITE_UNIT_IN_EXCEPTION"     , Texception_t      );
    143   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_NO_SEQUENCE   ," in_WRITE_UNIT_IN_NO_SEQUENCE"   , Tcontrol_t        );
    144   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_ADDRESS       ," in_WRITE_UNIT_IN_ADDRESS"       , Taddress_t        );
    145   ALLOC_SC_SIGNAL (out_WRITE_UNIT_OUT_VAL          ,"out_WRITE_UNIT_OUT_VAL"          , Tcontrol_t        );
    146   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_OUT_ACK          ," in_WRITE_UNIT_OUT_ACK"          , Tcontrol_t        );
    147   ALLOC_SC_SIGNAL (out_WRITE_UNIT_OUT_CONTEXT_ID   ,"out_WRITE_UNIT_OUT_CONTEXT_ID"   , Tcontext_t        );
    148   ALLOC_SC_SIGNAL (out_WRITE_UNIT_OUT_FRONT_END_ID ,"out_WRITE_UNIT_OUT_FRONT_END_ID" , Tcontext_t        );
    149   ALLOC_SC_SIGNAL (out_WRITE_UNIT_OUT_OOO_ENGINE_ID,"out_WRITE_UNIT_OUT_OOO_ENGINE_ID", Tcontext_t        );
    150   ALLOC_SC_SIGNAL (out_WRITE_UNIT_OUT_PACKET_ID    ,"out_WRITE_UNIT_OUT_PACKET_ID"    , Tpacket_t         );
    151 //ALLOC_SC_SIGNAL (out_WRITE_UNIT_OUT_OPERATION    ,"out_WRITE_UNIT_OUT_OPERATION"    , Toperation_t      );
    152 //ALLOC_SC_SIGNAL (out_WRITE_UNIT_OUT_TYPE         ,"out_WRITE_UNIT_OUT_TYPE"         , Ttype_t           );
    153   ALLOC_SC_SIGNAL (out_WRITE_UNIT_OUT_FLAGS        ,"out_WRITE_UNIT_OUT_FLAGS"        , Tspecial_data_t   );
    154   ALLOC_SC_SIGNAL (out_WRITE_UNIT_OUT_EXCEPTION    ,"out_WRITE_UNIT_OUT_EXCEPTION"    , Texception_t      );
    155   ALLOC_SC_SIGNAL (out_WRITE_UNIT_OUT_NO_SEQUENCE  ,"out_WRITE_UNIT_OUT_NO_SEQUENCE"  , Tcontrol_t        );
    156   ALLOC_SC_SIGNAL (out_WRITE_UNIT_OUT_ADDRESS      ,"out_WRITE_UNIT_OUT_ADDRESS"      , Taddress_t        );
    157   ALLOC_SC_SIGNAL (out_WRITE_UNIT_OUT_DATA         ,"out_WRITE_UNIT_OUT_DATA"         , Tgeneral_data_t   );
     128  ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_VAL           ," in_WRITE_UNIT_IN_VAL"           , Tcontrol_t        );
     129  ALLOC0_SC_SIGNAL(out_WRITE_UNIT_IN_ACK           ,"out_WRITE_UNIT_IN_ACK"           , Tcontrol_t        );
     130  ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_CONTEXT_ID    ," in_WRITE_UNIT_IN_CONTEXT_ID"    , Tcontext_t        );
     131  ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_FRONT_END_ID  ," in_WRITE_UNIT_IN_FRONT_END_ID"  , Tcontext_t        );
     132  ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_OOO_ENGINE_ID ," in_WRITE_UNIT_IN_OOO_ENGINE_ID" , Tcontext_t        );
     133  ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_PACKET_ID     ," in_WRITE_UNIT_IN_PACKET_ID"     , Tpacket_t         );
     134//ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_OPERATION     ," in_WRITE_UNIT_IN_OPERATION"     , Toperation_t      );
     135//ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_TYPE          ," in_WRITE_UNIT_IN_TYPE"          , Ttype_t           );
     136  ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_WRITE_RD      ," in_WRITE_UNIT_IN_WRITE_RD"      , Tcontrol_t        );
     137  ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_NUM_REG_RD    ," in_WRITE_UNIT_IN_NUM_REG_RD"    , Tgeneral_address_t);
     138  ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_DATA_RD       ," in_WRITE_UNIT_IN_DATA_RD"       , Tgeneral_data_t   );
     139  ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_WRITE_RE      ," in_WRITE_UNIT_IN_WRITE_RE"      , Tcontrol_t        );
     140  ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_NUM_REG_RE    ," in_WRITE_UNIT_IN_NUM_REG_RE"    , Tspecial_address_t);
     141  ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_DATA_RE       ," in_WRITE_UNIT_IN_DATA_RE"       , Tspecial_data_t   );
     142  ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_EXCEPTION     ," in_WRITE_UNIT_IN_EXCEPTION"     , Texception_t      );
     143  ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_NO_SEQUENCE   ," in_WRITE_UNIT_IN_NO_SEQUENCE"   , Tcontrol_t        );
     144  ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_ADDRESS       ," in_WRITE_UNIT_IN_ADDRESS"       , Taddress_t        );
     145  ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_VAL          ,"out_WRITE_UNIT_OUT_VAL"          , Tcontrol_t        );
     146  ALLOC0_SC_SIGNAL( in_WRITE_UNIT_OUT_ACK          ," in_WRITE_UNIT_OUT_ACK"          , Tcontrol_t        );
     147  ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_CONTEXT_ID   ,"out_WRITE_UNIT_OUT_CONTEXT_ID"   , Tcontext_t        );
     148  ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_FRONT_END_ID ,"out_WRITE_UNIT_OUT_FRONT_END_ID" , Tcontext_t        );
     149  ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_OOO_ENGINE_ID,"out_WRITE_UNIT_OUT_OOO_ENGINE_ID", Tcontext_t        );
     150  ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_PACKET_ID    ,"out_WRITE_UNIT_OUT_PACKET_ID"    , Tpacket_t         );
     151//ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_OPERATION    ,"out_WRITE_UNIT_OUT_OPERATION"    , Toperation_t      );
     152//ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_TYPE         ,"out_WRITE_UNIT_OUT_TYPE"         , Ttype_t           );
     153  ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_FLAGS        ,"out_WRITE_UNIT_OUT_FLAGS"        , Tspecial_data_t   );
     154  ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_EXCEPTION    ,"out_WRITE_UNIT_OUT_EXCEPTION"    , Texception_t      );
     155  ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_NO_SEQUENCE  ,"out_WRITE_UNIT_OUT_NO_SEQUENCE"  , Tcontrol_t        );
     156  ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_ADDRESS      ,"out_WRITE_UNIT_OUT_ADDRESS"      , Taddress_t        );
     157  ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_DATA         ,"out_WRITE_UNIT_OUT_DATA"         , Tgeneral_data_t   );
    158158  ALLOC1_SC_SIGNAL(out_GPR_WRITE_VAL                ,"out_GPR_WRITE_VAL"                , Tcontrol_t        , _param->_nb_gpr_write);
    159159  ALLOC1_SC_SIGNAL( in_GPR_WRITE_ACK                ," in_GPR_WRITE_ACK"                , Tcontrol_t        , _param->_nb_gpr_write);
     
    184184  (*(_Write_unit->in_NRESET))       (*(in_NRESET));
    185185
    186   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_VAL           );
    187   INSTANCE_SC_SIGNAL (_Write_unit, out_WRITE_UNIT_IN_ACK           );
     186  INSTANCE0_SC_SIGNAL(_Write_unit,  in_WRITE_UNIT_IN_VAL           );
     187  INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_IN_ACK           );
    188188  if (_param->_have_port_context_id)
    189   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_CONTEXT_ID    );
     189  INSTANCE0_SC_SIGNAL(_Write_unit,  in_WRITE_UNIT_IN_CONTEXT_ID    );
    190190  if (_param->_have_port_front_end_id)
    191   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_FRONT_END_ID  );
     191  INSTANCE0_SC_SIGNAL(_Write_unit,  in_WRITE_UNIT_IN_FRONT_END_ID  );
    192192  if (_param->_have_port_ooo_engine_id)
    193   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_OOO_ENGINE_ID );
     193  INSTANCE0_SC_SIGNAL(_Write_unit,  in_WRITE_UNIT_IN_OOO_ENGINE_ID );
    194194  if (_param->_have_port_rob_ptr)
    195   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_PACKET_ID     );
    196 //INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_OPERATION     );
    197 //INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_TYPE          );
    198   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_WRITE_RD      );
    199   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_NUM_REG_RD    );
    200   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_DATA_RD       );
    201   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_WRITE_RE      );
    202   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_NUM_REG_RE    );
    203   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_DATA_RE       );
    204   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_EXCEPTION     );
    205   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_NO_SEQUENCE   );
    206   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_ADDRESS       );
    207   INSTANCE_SC_SIGNAL (_Write_unit, out_WRITE_UNIT_OUT_VAL          );
    208   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_OUT_ACK          );
     195  INSTANCE0_SC_SIGNAL(_Write_unit,  in_WRITE_UNIT_IN_PACKET_ID     );
     196//INSTANCE0_SC_SIGNAL(_Write_unit,  in_WRITE_UNIT_IN_OPERATION     );
     197//INSTANCE0_SC_SIGNAL(_Write_unit,  in_WRITE_UNIT_IN_TYPE          );
     198  INSTANCE0_SC_SIGNAL(_Write_unit,  in_WRITE_UNIT_IN_WRITE_RD      );
     199  INSTANCE0_SC_SIGNAL(_Write_unit,  in_WRITE_UNIT_IN_NUM_REG_RD    );
     200  INSTANCE0_SC_SIGNAL(_Write_unit,  in_WRITE_UNIT_IN_DATA_RD       );
     201  INSTANCE0_SC_SIGNAL(_Write_unit,  in_WRITE_UNIT_IN_WRITE_RE      );
     202  INSTANCE0_SC_SIGNAL(_Write_unit,  in_WRITE_UNIT_IN_NUM_REG_RE    );
     203  INSTANCE0_SC_SIGNAL(_Write_unit,  in_WRITE_UNIT_IN_DATA_RE       );
     204  INSTANCE0_SC_SIGNAL(_Write_unit,  in_WRITE_UNIT_IN_EXCEPTION     );
     205  INSTANCE0_SC_SIGNAL(_Write_unit,  in_WRITE_UNIT_IN_NO_SEQUENCE   );
     206  INSTANCE0_SC_SIGNAL(_Write_unit,  in_WRITE_UNIT_IN_ADDRESS       );
     207  INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_VAL          );
     208  INSTANCE0_SC_SIGNAL(_Write_unit,  in_WRITE_UNIT_OUT_ACK          );
    209209  if (_param->_have_port_context_id)
    210   INSTANCE_SC_SIGNAL (_Write_unit, out_WRITE_UNIT_OUT_CONTEXT_ID   );
     210  INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_CONTEXT_ID   );
    211211  if (_param->_have_port_front_end_id)
    212   INSTANCE_SC_SIGNAL (_Write_unit, out_WRITE_UNIT_OUT_FRONT_END_ID );
     212  INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_FRONT_END_ID );
    213213  if (_param->_have_port_ooo_engine_id)
    214   INSTANCE_SC_SIGNAL (_Write_unit, out_WRITE_UNIT_OUT_OOO_ENGINE_ID);
     214  INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_OOO_ENGINE_ID);
    215215  if (_param->_have_port_rob_ptr)
    216   INSTANCE_SC_SIGNAL (_Write_unit, out_WRITE_UNIT_OUT_PACKET_ID    );
    217 //INSTANCE_SC_SIGNAL (_Write_unit, out_WRITE_UNIT_OUT_OPERATION    );
    218 //INSTANCE_SC_SIGNAL (_Write_unit, out_WRITE_UNIT_OUT_TYPE         );
    219   INSTANCE_SC_SIGNAL (_Write_unit, out_WRITE_UNIT_OUT_FLAGS        );
    220   INSTANCE_SC_SIGNAL (_Write_unit, out_WRITE_UNIT_OUT_EXCEPTION    );
    221   INSTANCE_SC_SIGNAL (_Write_unit, out_WRITE_UNIT_OUT_NO_SEQUENCE  );
    222   INSTANCE_SC_SIGNAL (_Write_unit, out_WRITE_UNIT_OUT_ADDRESS      );
    223   INSTANCE_SC_SIGNAL (_Write_unit, out_WRITE_UNIT_OUT_DATA         );
     216  INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_PACKET_ID    );
     217//INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_OPERATION    );
     218//INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_TYPE         );
     219  INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_FLAGS        );
     220  INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_EXCEPTION    );
     221  INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_NO_SEQUENCE  );
     222  INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_ADDRESS      );
     223  INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_DATA         );
    224224  INSTANCE1_SC_SIGNAL(_Write_unit, out_GPR_WRITE_VAL                , _param->_nb_gpr_write);
    225225  INSTANCE1_SC_SIGNAL(_Write_unit,  in_GPR_WRITE_ACK                , _param->_nb_gpr_write);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/src/test.cpp

    r97 r112  
    125125  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
    126126
    127   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_VAL           ," in_WRITE_QUEUE_IN_VAL"           , Tcontrol_t        );
    128   ALLOC_SC_SIGNAL (out_WRITE_QUEUE_IN_ACK           ,"out_WRITE_QUEUE_IN_ACK"           , Tcontrol_t        );
    129   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_CONTEXT_ID    ," in_WRITE_QUEUE_IN_CONTEXT_ID"    , Tcontext_t        );
    130   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_FRONT_END_ID  ," in_WRITE_QUEUE_IN_FRONT_END_ID"  , Tcontext_t        );
    131   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_OOO_ENGINE_ID ," in_WRITE_QUEUE_IN_OOO_ENGINE_ID" , Tcontext_t        );
    132   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_PACKET_ID     ," in_WRITE_QUEUE_IN_PACKET_ID"     , Tpacket_t         );
    133 //ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_OPERATION     ," in_WRITE_QUEUE_IN_OPERATION"     , Toperation_t      );
    134 //ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_TYPE          ," in_WRITE_QUEUE_IN_TYPE"          , Ttype_t           );
    135   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_WRITE_RD      ," in_WRITE_QUEUE_IN_WRITE_RD"      , Tcontrol_t        );
    136   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_NUM_REG_RD    ," in_WRITE_QUEUE_IN_NUM_REG_RD"    , Tgeneral_address_t);
    137   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_DATA_RD       ," in_WRITE_QUEUE_IN_DATA_RD"       , Tgeneral_data_t   );
    138   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_WRITE_RE      ," in_WRITE_QUEUE_IN_WRITE_RE"      , Tcontrol_t        );
    139   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_NUM_REG_RE    ," in_WRITE_QUEUE_IN_NUM_REG_RE"    , Tspecial_address_t);
    140   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_DATA_RE       ," in_WRITE_QUEUE_IN_DATA_RE"       , Tspecial_data_t   );
    141   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_EXCEPTION     ," in_WRITE_QUEUE_IN_EXCEPTION"     , Texception_t      );
    142   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_NO_SEQUENCE   ," in_WRITE_QUEUE_IN_NO_SEQUENCE"   , Tcontrol_t        );
    143   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_ADDRESS       ," in_WRITE_QUEUE_IN_ADDRESS"       , Taddress_t        );
    144   ALLOC_SC_SIGNAL (out_WRITE_QUEUE_OUT_VAL          ,"out_WRITE_QUEUE_OUT_VAL"          , Tcontrol_t        );
    145   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_OUT_ACK          ," in_WRITE_QUEUE_OUT_ACK"          , Tcontrol_t        );
    146   ALLOC_SC_SIGNAL (out_WRITE_QUEUE_OUT_CONTEXT_ID   ,"out_WRITE_QUEUE_OUT_CONTEXT_ID"   , Tcontext_t        );
    147   ALLOC_SC_SIGNAL (out_WRITE_QUEUE_OUT_FRONT_END_ID ,"out_WRITE_QUEUE_OUT_FRONT_END_ID" , Tcontext_t        );
    148   ALLOC_SC_SIGNAL (out_WRITE_QUEUE_OUT_OOO_ENGINE_ID,"out_WRITE_QUEUE_OUT_OOO_ENGINE_ID", Tcontext_t        );
    149   ALLOC_SC_SIGNAL (out_WRITE_QUEUE_OUT_PACKET_ID    ,"out_WRITE_QUEUE_OUT_PACKET_ID"    , Tpacket_t         );
    150 //ALLOC_SC_SIGNAL (out_WRITE_QUEUE_OUT_OPERATION    ,"out_WRITE_QUEUE_OUT_OPERATION"    , Toperation_t      );
    151 //ALLOC_SC_SIGNAL (out_WRITE_QUEUE_OUT_TYPE         ,"out_WRITE_QUEUE_OUT_TYPE"         , Ttype_t           );
    152   ALLOC_SC_SIGNAL (out_WRITE_QUEUE_OUT_FLAGS        ,"out_WRITE_QUEUE_OUT_FLAGS"        , Tspecial_data_t   );
    153   ALLOC_SC_SIGNAL (out_WRITE_QUEUE_OUT_EXCEPTION    ,"out_WRITE_QUEUE_OUT_EXCEPTION"    , Texception_t      );
    154   ALLOC_SC_SIGNAL (out_WRITE_QUEUE_OUT_NO_SEQUENCE  ,"out_WRITE_QUEUE_OUT_NO_SEQUENCE"  , Tcontrol_t        );
    155   ALLOC_SC_SIGNAL (out_WRITE_QUEUE_OUT_ADDRESS      ,"out_WRITE_QUEUE_OUT_ADDRESS"      , Tgeneral_data_t   );
    156   ALLOC_SC_SIGNAL (out_WRITE_QUEUE_OUT_DATA         ,"out_WRITE_QUEUE_OUT_DATA"         , Taddress_t        );
     127  ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_VAL           ," in_WRITE_QUEUE_IN_VAL"           , Tcontrol_t        );
     128  ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_IN_ACK           ,"out_WRITE_QUEUE_IN_ACK"           , Tcontrol_t        );
     129  ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_CONTEXT_ID    ," in_WRITE_QUEUE_IN_CONTEXT_ID"    , Tcontext_t        );
     130  ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_FRONT_END_ID  ," in_WRITE_QUEUE_IN_FRONT_END_ID"  , Tcontext_t        );
     131  ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_OOO_ENGINE_ID ," in_WRITE_QUEUE_IN_OOO_ENGINE_ID" , Tcontext_t        );
     132  ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_PACKET_ID     ," in_WRITE_QUEUE_IN_PACKET_ID"     , Tpacket_t         );
     133//ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_OPERATION     ," in_WRITE_QUEUE_IN_OPERATION"     , Toperation_t      );
     134//ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_TYPE          ," in_WRITE_QUEUE_IN_TYPE"          , Ttype_t           );
     135  ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_WRITE_RD      ," in_WRITE_QUEUE_IN_WRITE_RD"      , Tcontrol_t        );
     136  ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_NUM_REG_RD    ," in_WRITE_QUEUE_IN_NUM_REG_RD"    , Tgeneral_address_t);
     137  ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_DATA_RD       ," in_WRITE_QUEUE_IN_DATA_RD"       , Tgeneral_data_t   );
     138  ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_WRITE_RE      ," in_WRITE_QUEUE_IN_WRITE_RE"      , Tcontrol_t        );
     139  ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_NUM_REG_RE    ," in_WRITE_QUEUE_IN_NUM_REG_RE"    , Tspecial_address_t);
     140  ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_DATA_RE       ," in_WRITE_QUEUE_IN_DATA_RE"       , Tspecial_data_t   );
     141  ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_EXCEPTION     ," in_WRITE_QUEUE_IN_EXCEPTION"     , Texception_t      );
     142  ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_NO_SEQUENCE   ," in_WRITE_QUEUE_IN_NO_SEQUENCE"   , Tcontrol_t        );
     143  ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_ADDRESS       ," in_WRITE_QUEUE_IN_ADDRESS"       , Taddress_t        );
     144  ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_VAL          ,"out_WRITE_QUEUE_OUT_VAL"          , Tcontrol_t        );
     145  ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_OUT_ACK          ," in_WRITE_QUEUE_OUT_ACK"          , Tcontrol_t        );
     146  ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_CONTEXT_ID   ,"out_WRITE_QUEUE_OUT_CONTEXT_ID"   , Tcontext_t        );
     147  ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_FRONT_END_ID ,"out_WRITE_QUEUE_OUT_FRONT_END_ID" , Tcontext_t        );
     148  ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_OOO_ENGINE_ID,"out_WRITE_QUEUE_OUT_OOO_ENGINE_ID", Tcontext_t        );
     149  ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_PACKET_ID    ,"out_WRITE_QUEUE_OUT_PACKET_ID"    , Tpacket_t         );
     150//ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_OPERATION    ,"out_WRITE_QUEUE_OUT_OPERATION"    , Toperation_t      );
     151//ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_TYPE         ,"out_WRITE_QUEUE_OUT_TYPE"         , Ttype_t           );
     152  ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_FLAGS        ,"out_WRITE_QUEUE_OUT_FLAGS"        , Tspecial_data_t   );
     153  ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_EXCEPTION    ,"out_WRITE_QUEUE_OUT_EXCEPTION"    , Texception_t      );
     154  ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_NO_SEQUENCE  ,"out_WRITE_QUEUE_OUT_NO_SEQUENCE"  , Tcontrol_t        );
     155  ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_ADDRESS      ,"out_WRITE_QUEUE_OUT_ADDRESS"      , Tgeneral_data_t   );
     156  ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_DATA         ,"out_WRITE_QUEUE_OUT_DATA"         , Taddress_t        );
    157157  ALLOC1_SC_SIGNAL(out_GPR_WRITE_VAL                ,"out_GPR_WRITE_VAL"                , Tcontrol_t        , _param->_nb_gpr_write);
    158158  ALLOC1_SC_SIGNAL( in_GPR_WRITE_ACK                ," in_GPR_WRITE_ACK"                , Tcontrol_t        , _param->_nb_gpr_write);
     
    182182  (*(_Write_queue->in_NRESET))       (*(in_NRESET));
    183183
    184   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_VAL           );
    185   INSTANCE_SC_SIGNAL (_Write_queue, out_WRITE_QUEUE_IN_ACK           );
     184  INSTANCE0_SC_SIGNAL(_Write_queue,  in_WRITE_QUEUE_IN_VAL           );
     185  INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_IN_ACK           );
    186186  if (_param->_have_port_context_id)
    187   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_CONTEXT_ID    );
     187  INSTANCE0_SC_SIGNAL(_Write_queue,  in_WRITE_QUEUE_IN_CONTEXT_ID    );
    188188  if (_param->_have_port_front_end_id)
    189   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_FRONT_END_ID  );
     189  INSTANCE0_SC_SIGNAL(_Write_queue,  in_WRITE_QUEUE_IN_FRONT_END_ID  );
    190190  if (_param->_have_port_ooo_engine_id)
    191   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_OOO_ENGINE_ID );
     191  INSTANCE0_SC_SIGNAL(_Write_queue,  in_WRITE_QUEUE_IN_OOO_ENGINE_ID );
    192192  if (_param->_have_port_rob_ptr  )
    193   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_PACKET_ID     );
    194 //INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_OPERATION     );
    195 //INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_TYPE          );
    196   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_WRITE_RD      );
    197   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_NUM_REG_RD    );
    198   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_DATA_RD       );
    199   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_WRITE_RE      );
    200   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_NUM_REG_RE    );
    201   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_DATA_RE       );
    202   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_EXCEPTION     );
    203   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_NO_SEQUENCE   );
    204   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_ADDRESS       );
    205   INSTANCE_SC_SIGNAL (_Write_queue, out_WRITE_QUEUE_OUT_VAL          );
    206   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_OUT_ACK          );
     193  INSTANCE0_SC_SIGNAL(_Write_queue,  in_WRITE_QUEUE_IN_PACKET_ID     );
     194//INSTANCE0_SC_SIGNAL(_Write_queue,  in_WRITE_QUEUE_IN_OPERATION     );
     195//INSTANCE0_SC_SIGNAL(_Write_queue,  in_WRITE_QUEUE_IN_TYPE          );
     196  INSTANCE0_SC_SIGNAL(_Write_queue,  in_WRITE_QUEUE_IN_WRITE_RD      );
     197  INSTANCE0_SC_SIGNAL(_Write_queue,  in_WRITE_QUEUE_IN_NUM_REG_RD    );
     198  INSTANCE0_SC_SIGNAL(_Write_queue,  in_WRITE_QUEUE_IN_DATA_RD       );
     199  INSTANCE0_SC_SIGNAL(_Write_queue,  in_WRITE_QUEUE_IN_WRITE_RE      );
     200  INSTANCE0_SC_SIGNAL(_Write_queue,  in_WRITE_QUEUE_IN_NUM_REG_RE    );
     201  INSTANCE0_SC_SIGNAL(_Write_queue,  in_WRITE_QUEUE_IN_DATA_RE       );
     202  INSTANCE0_SC_SIGNAL(_Write_queue,  in_WRITE_QUEUE_IN_EXCEPTION     );
     203  INSTANCE0_SC_SIGNAL(_Write_queue,  in_WRITE_QUEUE_IN_NO_SEQUENCE   );
     204  INSTANCE0_SC_SIGNAL(_Write_queue,  in_WRITE_QUEUE_IN_ADDRESS       );
     205  INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_VAL          );
     206  INSTANCE0_SC_SIGNAL(_Write_queue,  in_WRITE_QUEUE_OUT_ACK          );
    207207  if (_param->_have_port_context_id)
    208   INSTANCE_SC_SIGNAL (_Write_queue, out_WRITE_QUEUE_OUT_CONTEXT_ID   );
     208  INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_CONTEXT_ID   );
    209209  if (_param->_have_port_front_end_id)
    210   INSTANCE_SC_SIGNAL (_Write_queue, out_WRITE_QUEUE_OUT_FRONT_END_ID );
     210  INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_FRONT_END_ID );
    211211  if (_param->_have_port_ooo_engine_id)
    212   INSTANCE_SC_SIGNAL (_Write_queue, out_WRITE_QUEUE_OUT_OOO_ENGINE_ID);
     212  INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_OOO_ENGINE_ID);
    213213  if (_param->_have_port_rob_ptr  )
    214   INSTANCE_SC_SIGNAL (_Write_queue, out_WRITE_QUEUE_OUT_PACKET_ID    );
    215 //INSTANCE_SC_SIGNAL (_Write_queue, out_WRITE_QUEUE_OUT_OPERATION    );
    216 //INSTANCE_SC_SIGNAL (_Write_queue, out_WRITE_QUEUE_OUT_TYPE         );
    217   INSTANCE_SC_SIGNAL (_Write_queue, out_WRITE_QUEUE_OUT_FLAGS        );
    218   INSTANCE_SC_SIGNAL (_Write_queue, out_WRITE_QUEUE_OUT_EXCEPTION    );
    219   INSTANCE_SC_SIGNAL (_Write_queue, out_WRITE_QUEUE_OUT_NO_SEQUENCE  );
    220   INSTANCE_SC_SIGNAL (_Write_queue, out_WRITE_QUEUE_OUT_ADDRESS      );
    221   INSTANCE_SC_SIGNAL (_Write_queue, out_WRITE_QUEUE_OUT_DATA         );
     214  INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_PACKET_ID    );
     215//INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_OPERATION    );
     216//INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_TYPE         );
     217  INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_FLAGS        );
     218  INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_EXCEPTION    );
     219  INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_NO_SEQUENCE  );
     220  INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_ADDRESS      );
     221  INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_DATA         );
    222222  INSTANCE1_SC_SIGNAL(_Write_queue, out_GPR_WRITE_VAL                , _param->_nb_gpr_write);
    223223  INSTANCE1_SC_SIGNAL(_Write_queue,  in_GPR_WRITE_ACK                , _param->_nb_gpr_write);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_allocation.cpp

    r97 r112  
    5151    // -----[ Interface "Write_queue_in" ]--------------------------------   
    5252     {
    53        ALLOC_INTERFACE ("write_queue_in", IN, WEST, "Input of write_queue");
     53       ALLOC0_INTERFACE_BEGIN ("write_queue_in", IN, WEST, "Input of write_queue");
    5454       
    55        ALLOC_VALACK_IN ( in_WRITE_QUEUE_IN_VAL,VAL);
    56        ALLOC_VALACK_OUT(out_WRITE_QUEUE_IN_ACK,ACK);
    57        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id       );
    58        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id     );
    59        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id    );
    60        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_rob_ptr          );
    61 //     ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation        );
    62 //     ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type             );
    63        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_WRITE_RD     ,"write_rd"     ,Tcontrol_t        ,1                              );
    64        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_NUM_REG_RD   ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register );
    65        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_DATA_RD      ,"data_rd"      ,Tgeneral_data_t   ,_param->_size_general_data     );
    66        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_WRITE_RE     ,"write_re"     ,Tcontrol_t        ,1                              );
    67        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_NUM_REG_RE   ,"num_reg_re"   ,Tspecial_address_t,_param->_size_special_register );
    68        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_DATA_RE      ,"data_re"      ,Tspecial_data_t   ,_param->_size_special_data     );
    69        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception        );
    70        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t        ,1                              );
    71        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_ADDRESS      ,"address"      ,Taddress_t        ,_param->_size_instruction_address);
     55       ALLOC0_VALACK_IN ( in_WRITE_QUEUE_IN_VAL,VAL);
     56       ALLOC0_VALACK_OUT(out_WRITE_QUEUE_IN_ACK,ACK);
     57       ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id       );
     58       ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id     );
     59       ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id    );
     60       ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_rob_ptr          );
     61//     ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation        );
     62//     ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type             );
     63       ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_WRITE_RD     ,"write_rd"     ,Tcontrol_t        ,1                              );
     64       ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_NUM_REG_RD   ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register );
     65       ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_DATA_RD      ,"data_rd"      ,Tgeneral_data_t   ,_param->_size_general_data     );
     66       ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_WRITE_RE     ,"write_re"     ,Tcontrol_t        ,1                              );
     67       ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_NUM_REG_RE   ,"num_reg_re"   ,Tspecial_address_t,_param->_size_special_register );
     68       ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_DATA_RE      ,"data_re"      ,Tspecial_data_t   ,_param->_size_special_data     );
     69       ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception        );
     70       ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t        ,1                              );
     71       ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_ADDRESS      ,"address"      ,Taddress_t        ,_param->_size_instruction_address);
     72
     73       ALLOC0_INTERFACE_END();
    7274     }
    7375
    7476    // -----[ Interface "Write_queue_out" ]-------------------------------
    7577     {
    76        ALLOC_INTERFACE ("write_queue_out", OUT, EAST, "Output of write_queue");
     78       ALLOC0_INTERFACE_BEGIN("write_queue_out", OUT, EAST, "Output of write_queue");
    7779       
    78        ALLOC_VALACK_OUT(out_WRITE_QUEUE_OUT_VAL,VAL);
    79        ALLOC_VALACK_IN ( in_WRITE_QUEUE_OUT_ACK,ACK);
    80        ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_CONTEXT_ID   ,"context_id"   ,Tcontext_t     ,_param->_size_context_id   );
    81        ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t     ,_param->_size_front_end_id );
    82        ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t     ,_param->_size_ooo_engine_id);
    83        ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_PACKET_ID    ,"packet_id"    ,Tpacket_t      ,_param->_size_rob_ptr      );
    84 //     ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_OPERATION    ,"operation"    ,Toperation_t   ,_param->_size_operation    );
    85 //     ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_TYPE         ,"type"         ,Ttype_t        ,_param->_size_type         );
    86        ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_FLAGS        ,"flags"        ,Tspecial_data_t,_param->_size_special_data );
    87        ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_EXCEPTION    ,"exception"    ,Texception_t   ,_param->_size_exception    );
    88        ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t     ,1                          );
    89        ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_ADDRESS      ,"address"      ,Taddress_t     ,_param->_size_instruction_address);
    90        ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_DATA         ,"data"         ,Tgeneral_data_t,_param->_size_general_data );
     80       ALLOC0_VALACK_OUT(out_WRITE_QUEUE_OUT_VAL,VAL);
     81       ALLOC0_VALACK_IN ( in_WRITE_QUEUE_OUT_ACK,ACK);
     82       ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_CONTEXT_ID   ,"context_id"   ,Tcontext_t     ,_param->_size_context_id   );
     83       ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t     ,_param->_size_front_end_id );
     84       ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t     ,_param->_size_ooo_engine_id);
     85       ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_PACKET_ID    ,"packet_id"    ,Tpacket_t      ,_param->_size_rob_ptr      );
     86//     ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_OPERATION    ,"operation"    ,Toperation_t   ,_param->_size_operation    );
     87//     ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_TYPE         ,"type"         ,Ttype_t        ,_param->_size_type         );
     88       ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_FLAGS        ,"flags"        ,Tspecial_data_t,_param->_size_special_data );
     89       ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_EXCEPTION    ,"exception"    ,Texception_t   ,_param->_size_exception    );
     90       ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t     ,1                          );
     91       ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_ADDRESS      ,"address"      ,Taddress_t     ,_param->_size_instruction_address);
     92       ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_DATA         ,"data"         ,Tgeneral_data_t,_param->_size_general_data );
     93
     94       ALLOC0_INTERFACE_END();
    9195     }
    9296
    9397    // -----[ Interface "gpr_write" ]-------------------------------------
    9498     {
    95        ALLOC1_INTERFACE("gpr_write", OUT, SOUTH ,"Output of write_queue", _param->_nb_gpr_write);
     99       ALLOC1_INTERFACE_BEGIN("gpr_write", OUT, SOUTH ,"Output of write_queue", _param->_nb_gpr_write);
    96100
    97101       ALLOC1_VALACK_OUT(out_GPR_WRITE_VAL,VAL);
     
    100104       ALLOC1_SIGNAL_OUT(out_GPR_WRITE_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
    101105       ALLOC1_SIGNAL_OUT(out_GPR_WRITE_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data    );
     106
     107       ALLOC1_INTERFACE_END(_param->_nb_gpr_write);
    102108     }
    103109
    104110    // -----[ Interface "spr_write" ]-------------------------------------
    105111     {
    106        ALLOC1_INTERFACE("spr_write", OUT, SOUTH ,"Output of write_queue", _param->_nb_spr_write);
     112       ALLOC1_INTERFACE_BEGIN("spr_write", OUT, SOUTH ,"Output of write_queue", _param->_nb_spr_write);
    107113
    108114       ALLOC1_VALACK_OUT(out_SPR_WRITE_VAL,VAL);
     
    111117       ALLOC1_SIGNAL_OUT(out_SPR_WRITE_NUM_REG      ,"num_reg"      ,Tspecial_address_t,_param->_size_special_register);
    112118       ALLOC1_SIGNAL_OUT(out_SPR_WRITE_DATA         ,"data"         ,Tspecial_data_t   ,_param->_size_special_data    );
     119
     120       ALLOC1_INTERFACE_END(_param->_nb_spr_write);
    113121     }
    114122
    115123    // -----[ Interface "bypass_write" ]----------------------------------
    116124     {
    117        ALLOC1_INTERFACE("bypass_write", OUT, NORTH ,"Output of internal write_queue", _param->_nb_bypass_write);
     125       ALLOC1_INTERFACE_BEGIN("bypass_write", OUT, NORTH ,"Output of internal write_queue", _param->_nb_bypass_write);
    118126       
    119127       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
     
    124132       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_NUM_REG  ,"spr_num_reg"  ,Tspecial_address_t,_param->_size_special_register);
    125133       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_DATA     ,"spr_data"     ,Tspecial_data_t   ,_param->_size_special_data    );
     134
     135       ALLOC1_INTERFACE_END(_param->_nb_bypass_write);
    126136     }
     137
    127138    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    128139
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_deallocation.cpp

    r97 r112  
    77
    88#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Write_queue.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2930        delete    in_NRESET;
    3031       
    31         // -----[ Interface "Write_queue_in" ]--------------------------------   
    32         delete      in_WRITE_QUEUE_IN_VAL          ;
    33         delete     out_WRITE_QUEUE_IN_ACK          ;
    34         if (_param->_have_port_context_id)
    35         delete      in_WRITE_QUEUE_IN_CONTEXT_ID   ;
    36         if (_param->_have_port_front_end_id)
    37         delete      in_WRITE_QUEUE_IN_FRONT_END_ID ;
    38         if (_param->_have_port_ooo_engine_id)
    39         delete      in_WRITE_QUEUE_IN_OOO_ENGINE_ID;
    40         if (_param->_have_port_rob_ptr  )
    41         delete      in_WRITE_QUEUE_IN_PACKET_ID    ;
    42 //      delete      in_WRITE_QUEUE_IN_OPERATION    ;
    43 //      delete      in_WRITE_QUEUE_IN_TYPE         ;
    44         delete      in_WRITE_QUEUE_IN_WRITE_RD     ;
    45         delete      in_WRITE_QUEUE_IN_NUM_REG_RD   ;
    46         delete      in_WRITE_QUEUE_IN_DATA_RD      ;
    47         delete      in_WRITE_QUEUE_IN_WRITE_RE     ;
    48         delete      in_WRITE_QUEUE_IN_NUM_REG_RE   ;
    49         delete      in_WRITE_QUEUE_IN_DATA_RE      ;
    50         delete      in_WRITE_QUEUE_IN_EXCEPTION    ;
    51         delete      in_WRITE_QUEUE_IN_NO_SEQUENCE  ;
    52         delete      in_WRITE_QUEUE_IN_ADDRESS      ;
    53 
    54         // -----[ Interface "Write_queue_out" ]-------------------------------   
    55         delete     out_WRITE_QUEUE_OUT_VAL          ;
    56         delete      in_WRITE_QUEUE_OUT_ACK          ;
    57         if (_param->_have_port_context_id)
    58         delete     out_WRITE_QUEUE_OUT_CONTEXT_ID   ;
    59         if (_param->_have_port_front_end_id)
    60         delete     out_WRITE_QUEUE_OUT_FRONT_END_ID ;
    61         if (_param->_have_port_ooo_engine_id)
    62         delete     out_WRITE_QUEUE_OUT_OOO_ENGINE_ID;
    63         if (_param->_have_port_rob_ptr  )
    64         delete     out_WRITE_QUEUE_OUT_PACKET_ID    ;
    65 //      delete     out_WRITE_QUEUE_OUT_OPERATION    ;
    66 //      delete     out_WRITE_QUEUE_OUT_TYPE         ;
    67         delete     out_WRITE_QUEUE_OUT_FLAGS        ;
    68         delete     out_WRITE_QUEUE_OUT_EXCEPTION    ;
    69         delete     out_WRITE_QUEUE_OUT_NO_SEQUENCE  ;
    70         delete     out_WRITE_QUEUE_OUT_ADDRESS      ;
    71         delete     out_WRITE_QUEUE_OUT_DATA         ;
    72 
    73         // -----[ Interface "gpr_write" ]-------------------------------------
    74         delete []  out_GPR_WRITE_VAL               ;
    75         delete []   in_GPR_WRITE_ACK               ;
    76         if (_param->_have_port_ooo_engine_id)
    77         delete []  out_GPR_WRITE_OOO_ENGINE_ID     ;
    78         delete []  out_GPR_WRITE_NUM_REG           ;
    79         delete []  out_GPR_WRITE_DATA              ;
    80        
    81         // -----[ Interface "spr_write" ]-------------------------------------
    82         delete []  out_SPR_WRITE_VAL               ;
    83         delete []   in_SPR_WRITE_ACK               ;
    84         if (_param->_have_port_ooo_engine_id)
    85         delete []  out_SPR_WRITE_OOO_ENGINE_ID     ;
    86         delete []  out_SPR_WRITE_NUM_REG           ;
    87         delete []  out_SPR_WRITE_DATA              ;
    88 
    89         // -----[ Interface "bypass_write" ]----------------------------------
    90         if (_param->_have_port_ooo_engine_id)
    91         delete []  out_BYPASS_WRITE_OOO_ENGINE_ID ;
    92         delete []  out_BYPASS_WRITE_GPR_VAL       ;
    93         delete []  out_BYPASS_WRITE_GPR_NUM_REG   ;
    94         delete []  out_BYPASS_WRITE_GPR_DATA      ;
    95         delete []  out_BYPASS_WRITE_SPR_VAL       ;
    96         delete []  out_BYPASS_WRITE_SPR_NUM_REG   ;
    97         delete []  out_BYPASS_WRITE_SPR_DATA      ;
     32        DELETE0_SIGNAL( in_WRITE_QUEUE_IN_VAL           ,1);
     33        DELETE0_SIGNAL(out_WRITE_QUEUE_IN_ACK           ,1);
     34        DELETE0_SIGNAL( in_WRITE_QUEUE_IN_CONTEXT_ID    ,_param->_size_context_id       );
     35        DELETE0_SIGNAL( in_WRITE_QUEUE_IN_FRONT_END_ID  ,_param->_size_front_end_id     );
     36        DELETE0_SIGNAL( in_WRITE_QUEUE_IN_OOO_ENGINE_ID ,_param->_size_ooo_engine_id    );
     37        DELETE0_SIGNAL( in_WRITE_QUEUE_IN_PACKET_ID     ,_param->_size_rob_ptr          );
     38//      DELETE0_SIGNAL( in_WRITE_QUEUE_IN_OPERATION     ,_param->_size_operation        );
     39//      DELETE0_SIGNAL( in_WRITE_QUEUE_IN_TYPE          ,_param->_size_type             );
     40        DELETE0_SIGNAL( in_WRITE_QUEUE_IN_WRITE_RD      ,1                              );
     41        DELETE0_SIGNAL( in_WRITE_QUEUE_IN_NUM_REG_RD    ,_param->_size_general_register );
     42        DELETE0_SIGNAL( in_WRITE_QUEUE_IN_DATA_RD       ,_param->_size_general_data     );
     43        DELETE0_SIGNAL( in_WRITE_QUEUE_IN_WRITE_RE      ,1                              );
     44        DELETE0_SIGNAL( in_WRITE_QUEUE_IN_NUM_REG_RE    ,_param->_size_special_register );
     45        DELETE0_SIGNAL( in_WRITE_QUEUE_IN_DATA_RE       ,_param->_size_special_data     );
     46        DELETE0_SIGNAL( in_WRITE_QUEUE_IN_EXCEPTION     ,_param->_size_exception        );
     47        DELETE0_SIGNAL( in_WRITE_QUEUE_IN_NO_SEQUENCE   ,1                              );
     48        DELETE0_SIGNAL( in_WRITE_QUEUE_IN_ADDRESS       ,_param->_size_instruction_address);
     49       
     50        DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_VAL          ,1);
     51        DELETE0_SIGNAL( in_WRITE_QUEUE_OUT_ACK          ,1);
     52        DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_CONTEXT_ID   ,_param->_size_context_id   );
     53        DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_FRONT_END_ID ,_param->_size_front_end_id );
     54        DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_OOO_ENGINE_ID,_param->_size_ooo_engine_id);
     55        DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_PACKET_ID    ,_param->_size_rob_ptr      );
     56//      DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_OPERATION    ,_param->_size_operation    );
     57//      DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_TYPE         ,_param->_size_type         );
     58        DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_FLAGS        ,_param->_size_special_data );
     59        DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_EXCEPTION    ,_param->_size_exception    );
     60        DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_NO_SEQUENCE  ,1                          );
     61        DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_ADDRESS      ,_param->_size_instruction_address);
     62        DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_DATA         ,_param->_size_general_data );
     63       
     64        DELETE1_SIGNAL(out_GPR_WRITE_VAL          , _param->_nb_gpr_write,1);
     65        DELETE1_SIGNAL( in_GPR_WRITE_ACK          , _param->_nb_gpr_write,1);
     66        DELETE1_SIGNAL(out_GPR_WRITE_OOO_ENGINE_ID, _param->_nb_gpr_write,_param->_size_ooo_engine_id   );
     67        DELETE1_SIGNAL(out_GPR_WRITE_NUM_REG      , _param->_nb_gpr_write,_param->_size_general_register);
     68        DELETE1_SIGNAL(out_GPR_WRITE_DATA         , _param->_nb_gpr_write,_param->_size_general_data    );
     69       
     70        DELETE1_SIGNAL(out_SPR_WRITE_VAL          , _param->_nb_spr_write,1);
     71        DELETE1_SIGNAL( in_SPR_WRITE_ACK          , _param->_nb_spr_write,1);
     72        DELETE1_SIGNAL(out_SPR_WRITE_OOO_ENGINE_ID, _param->_nb_spr_write,_param->_size_ooo_engine_id   );
     73        DELETE1_SIGNAL(out_SPR_WRITE_NUM_REG      , _param->_nb_spr_write,_param->_size_special_register);
     74        DELETE1_SIGNAL(out_SPR_WRITE_DATA         , _param->_nb_spr_write,_param->_size_special_data    );
     75       
     76        DELETE1_SIGNAL(out_BYPASS_WRITE_OOO_ENGINE_ID,_param->_nb_bypass_write,_param->_size_ooo_engine_id   );
     77        DELETE1_SIGNAL(out_BYPASS_WRITE_GPR_VAL      ,_param->_nb_bypass_write,1                             );
     78        DELETE1_SIGNAL(out_BYPASS_WRITE_GPR_NUM_REG  ,_param->_nb_bypass_write,_param->_size_general_register);
     79        DELETE1_SIGNAL(out_BYPASS_WRITE_GPR_DATA     ,_param->_nb_bypass_write,_param->_size_general_data    );
     80        DELETE1_SIGNAL(out_BYPASS_WRITE_SPR_VAL      ,_param->_nb_bypass_write,1                             );
     81        DELETE1_SIGNAL(out_BYPASS_WRITE_SPR_NUM_REG  ,_param->_nb_bypass_write,_param->_size_special_register);
     82        DELETE1_SIGNAL(out_BYPASS_WRITE_SPR_DATA     ,_param->_nb_bypass_write,_param->_size_special_data    );
    9883      }
    9984
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_allocation.cpp

    r97 r112  
    5757    // -----[ Interface "write_unit_in" ]--------------------------------   
    5858     {
    59        ALLOC_INTERFACE ("write_unit_in", IN, WEST, "Input of write_unit");
    60        
    61        ALLOC_VALACK_IN ( in_WRITE_UNIT_IN_VAL,VAL);
    62        ALLOC_VALACK_OUT(out_WRITE_UNIT_IN_ACK,ACK);
    63        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id       );
    64        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id     );
    65        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id    );
    66        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_rob_ptr          );
    67 //     ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation        );
    68 //     ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type             );
    69        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_WRITE_RD     ,"write_rd"     ,Tcontrol_t        ,1                              );
    70        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_NUM_REG_RD   ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register );
    71        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_DATA_RD      ,"data_rd"      ,Tgeneral_data_t   ,_param->_size_general_data     );
    72        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_WRITE_RE     ,"write_re"     ,Tcontrol_t        ,1                              );
    73        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_NUM_REG_RE   ,"num_reg_re"   ,Tspecial_address_t,_param->_size_special_register );
    74        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_DATA_RE      ,"data_re"      ,Tspecial_data_t   ,_param->_size_special_data     );
    75        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception        );
    76        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t        ,1                              );
    77        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_ADDRESS      ,"address"      ,Taddress_t        ,_param->_size_instruction_address);
     59       ALLOC0_INTERFACE_BEGIN("write_unit_in", IN, WEST, "Input of write_unit");
     60       
     61       ALLOC0_VALACK_IN ( in_WRITE_UNIT_IN_VAL,VAL);
     62       ALLOC0_VALACK_OUT(out_WRITE_UNIT_IN_ACK,ACK);
     63       ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id       );
     64       ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id     );
     65       ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id    );
     66       ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_rob_ptr          );
     67//     ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation        );
     68//     ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type             );
     69       ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_WRITE_RD     ,"write_rd"     ,Tcontrol_t        ,1                              );
     70       ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_NUM_REG_RD   ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register );
     71       ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_DATA_RD      ,"data_rd"      ,Tgeneral_data_t   ,_param->_size_general_data     );
     72       ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_WRITE_RE     ,"write_re"     ,Tcontrol_t        ,1                              );
     73       ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_NUM_REG_RE   ,"num_reg_re"   ,Tspecial_address_t,_param->_size_special_register );
     74       ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_DATA_RE      ,"data_re"      ,Tspecial_data_t   ,_param->_size_special_data     );
     75       ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception        );
     76       ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t        ,1                              );
     77       ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_ADDRESS      ,"address"      ,Taddress_t        ,_param->_size_instruction_address);
     78
     79       ALLOC0_INTERFACE_END();
    7880     }
    7981
    8082    // -----[ Interface "write_unit_out" ]-------------------------------
    8183     {
    82        ALLOC_INTERFACE ("write_unit_out", OUT, EAST, "Output of write_unit");
    83        
    84        ALLOC_VALACK_OUT(out_WRITE_UNIT_OUT_VAL,VAL);
    85        ALLOC_VALACK_IN ( in_WRITE_UNIT_OUT_ACK,ACK);
    86        ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_CONTEXT_ID   ,"context_id"   ,Tcontext_t     ,_param->_size_context_id   );
    87        ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t     ,_param->_size_front_end_id );
    88        ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t     ,_param->_size_ooo_engine_id);
    89        ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_PACKET_ID    ,"packet_id"    ,Tpacket_t      ,_param->_size_rob_ptr      );
    90 //     ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_OPERATION    ,"operation"    ,Toperation_t   ,_param->_size_operation    );
    91 //     ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_TYPE         ,"type"         ,Ttype_t        ,_param->_size_type         );
    92        ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_FLAGS        ,"flags"        ,Tspecial_data_t,_param->_size_special_data );
    93        ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_EXCEPTION    ,"exception"    ,Texception_t   ,_param->_size_exception    );
    94        ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t     ,1                          );
    95        ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_ADDRESS      ,"address"      ,Taddress_t     ,_param->_size_instruction_address);
    96        ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_DATA         ,"data"         ,Tgeneral_data_t,_param->_size_general_data );
     84       ALLOC0_INTERFACE_BEGIN("write_unit_out", OUT, EAST, "Output of write_unit");
     85       
     86       ALLOC0_VALACK_OUT(out_WRITE_UNIT_OUT_VAL,VAL);
     87       ALLOC0_VALACK_IN ( in_WRITE_UNIT_OUT_ACK,ACK);
     88       ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_CONTEXT_ID   ,"context_id"   ,Tcontext_t     ,_param->_size_context_id   );
     89       ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t     ,_param->_size_front_end_id );
     90       ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t     ,_param->_size_ooo_engine_id);
     91       ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_PACKET_ID    ,"packet_id"    ,Tpacket_t      ,_param->_size_rob_ptr      );
     92//     ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_OPERATION    ,"operation"    ,Toperation_t   ,_param->_size_operation    );
     93//     ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_TYPE         ,"type"         ,Ttype_t        ,_param->_size_type         );
     94       ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_FLAGS        ,"flags"        ,Tspecial_data_t,_param->_size_special_data );
     95       ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_EXCEPTION    ,"exception"    ,Texception_t   ,_param->_size_exception    );
     96       ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t     ,1                          );
     97       ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_ADDRESS      ,"address"      ,Taddress_t     ,_param->_size_instruction_address);
     98       ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_DATA         ,"data"         ,Tgeneral_data_t,_param->_size_general_data );
     99
     100       ALLOC0_INTERFACE_END();
    97101     }
    98102
    99103    // -----[ Interface "gpr_write" ]-------------------------------------
    100104     {
    101        ALLOC1_INTERFACE("gpr_write", OUT, SOUTH ,"Output of write_unit", _param->_nb_gpr_write);
     105       ALLOC1_INTERFACE_BEGIN("gpr_write", OUT, SOUTH ,"Output of write_unit", _param->_nb_gpr_write);
    102106
    103107       ALLOC1_VALACK_OUT(out_GPR_WRITE_VAL,VAL);
     
    106110       ALLOC1_SIGNAL_OUT(out_GPR_WRITE_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
    107111       ALLOC1_SIGNAL_OUT(out_GPR_WRITE_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data    );
     112
     113       ALLOC1_INTERFACE_END(_param->_nb_gpr_write);
    108114     }
    109115
    110116    // -----[ Interface "spr_write" ]-------------------------------------
    111117     {
    112        ALLOC1_INTERFACE("spr_write", OUT, SOUTH ,"Output of write_unit", _param->_nb_spr_write);
     118       ALLOC1_INTERFACE_BEGIN("spr_write", OUT, SOUTH ,"Output of write_unit", _param->_nb_spr_write);
    113119
    114120       ALLOC1_VALACK_OUT(out_SPR_WRITE_VAL,VAL);
     
    117123       ALLOC1_SIGNAL_OUT(out_SPR_WRITE_NUM_REG      ,"num_reg"      ,Tspecial_address_t,_param->_size_special_register);
    118124       ALLOC1_SIGNAL_OUT(out_SPR_WRITE_DATA         ,"data"         ,Tspecial_data_t   ,_param->_size_special_data    );
     125
     126       ALLOC1_INTERFACE_END(_param->_nb_spr_write);
    119127     }
    120128
    121129    // -----[ Interface "bypass_write" ]----------------------------------
    122130     {
    123        ALLOC1_INTERFACE("bypass_write", OUT, NORTH ,"Output of internal write_unit", _param->_nb_bypass_write);
     131       ALLOC1_INTERFACE_BEGIN("bypass_write", OUT, NORTH ,"Output of internal write_unit", _param->_nb_bypass_write);
    124132       
    125133       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
     
    130138       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_NUM_REG  ,"spr_num_reg"  ,Tspecial_address_t,_param->_size_special_register);
    131139       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_DATA     ,"spr_data"     ,Tspecial_data_t   ,_param->_size_special_data    );
    132      }
    133 
     140
     141       ALLOC1_INTERFACE_END(_param->_nb_bypass_write);
     142     }
    134143
    135144    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_deallocation.cpp

    r97 r112  
    77
    88#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Write_unit.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2829        delete    in_NRESET;
    2930
    30         // -----[ Interface "write_unit_in" ]--------------------------------   
    31         delete      in_WRITE_UNIT_IN_VAL          ;
    32         delete     out_WRITE_UNIT_IN_ACK          ;
    33         if (_param->_have_port_context_id)
    34         delete      in_WRITE_UNIT_IN_CONTEXT_ID   ;
    35         if (_param->_have_port_front_end_id)
    36         delete      in_WRITE_UNIT_IN_FRONT_END_ID ;
    37         if (_param->_have_port_ooo_engine_id)
    38         delete      in_WRITE_UNIT_IN_OOO_ENGINE_ID;
    39         if (_param->_have_port_rob_ptr)
    40         delete      in_WRITE_UNIT_IN_PACKET_ID    ;
    41 //      delete      in_WRITE_UNIT_IN_OPERATION    ;
    42 //      delete      in_WRITE_UNIT_IN_TYPE         ;
    43         delete      in_WRITE_UNIT_IN_WRITE_RD     ;
    44         delete      in_WRITE_UNIT_IN_NUM_REG_RD   ;
    45         delete      in_WRITE_UNIT_IN_DATA_RD      ;
    46         delete      in_WRITE_UNIT_IN_WRITE_RE     ;
    47         delete      in_WRITE_UNIT_IN_NUM_REG_RE   ;
    48         delete      in_WRITE_UNIT_IN_DATA_RE      ;
    49         delete      in_WRITE_UNIT_IN_EXCEPTION    ;
    50         delete      in_WRITE_UNIT_IN_NO_SEQUENCE  ;
    51         delete      in_WRITE_UNIT_IN_ADDRESS      ;
     31        DELETE0_SIGNAL( in_WRITE_UNIT_IN_VAL          ,1);
     32        DELETE0_SIGNAL(out_WRITE_UNIT_IN_ACK          ,1);
     33        DELETE0_SIGNAL( in_WRITE_UNIT_IN_CONTEXT_ID   ,_param->_size_context_id       );
     34        DELETE0_SIGNAL( in_WRITE_UNIT_IN_FRONT_END_ID ,_param->_size_front_end_id     );
     35        DELETE0_SIGNAL( in_WRITE_UNIT_IN_OOO_ENGINE_ID,_param->_size_ooo_engine_id    );
     36        DELETE0_SIGNAL( in_WRITE_UNIT_IN_PACKET_ID    ,_param->_size_rob_ptr          );
     37//      DELETE0_SIGNAL( in_WRITE_UNIT_IN_OPERATION    ,_param->_size_operation        );
     38//      DELETE0_SIGNAL( in_WRITE_UNIT_IN_TYPE         ,_param->_size_type             );
     39        DELETE0_SIGNAL( in_WRITE_UNIT_IN_WRITE_RD     ,1                              );
     40        DELETE0_SIGNAL( in_WRITE_UNIT_IN_NUM_REG_RD   ,_param->_size_general_register );
     41        DELETE0_SIGNAL( in_WRITE_UNIT_IN_DATA_RD      ,_param->_size_general_data     );
     42        DELETE0_SIGNAL( in_WRITE_UNIT_IN_WRITE_RE     ,1                              );
     43        DELETE0_SIGNAL( in_WRITE_UNIT_IN_NUM_REG_RE   ,_param->_size_special_register );
     44        DELETE0_SIGNAL( in_WRITE_UNIT_IN_DATA_RE      ,_param->_size_special_data     );
     45        DELETE0_SIGNAL( in_WRITE_UNIT_IN_EXCEPTION    ,_param->_size_exception        );
     46        DELETE0_SIGNAL( in_WRITE_UNIT_IN_NO_SEQUENCE  ,1                              );
     47        DELETE0_SIGNAL( in_WRITE_UNIT_IN_ADDRESS      ,_param->_size_instruction_address);
     48       
     49        DELETE0_SIGNAL(out_WRITE_UNIT_OUT_VAL          ,1);
     50        DELETE0_SIGNAL( in_WRITE_UNIT_OUT_ACK          ,1);
     51        DELETE0_SIGNAL(out_WRITE_UNIT_OUT_CONTEXT_ID   ,_param->_size_context_id   );
     52        DELETE0_SIGNAL(out_WRITE_UNIT_OUT_FRONT_END_ID ,_param->_size_front_end_id );
     53        DELETE0_SIGNAL(out_WRITE_UNIT_OUT_OOO_ENGINE_ID,_param->_size_ooo_engine_id);
     54        DELETE0_SIGNAL(out_WRITE_UNIT_OUT_PACKET_ID    ,_param->_size_rob_ptr      );
     55//      DELETE0_SIGNAL(out_WRITE_UNIT_OUT_OPERATION    ,_param->_size_operation    );
     56//      DELETE0_SIGNAL(out_WRITE_UNIT_OUT_TYPE         ,_param->_size_type         );
     57        DELETE0_SIGNAL(out_WRITE_UNIT_OUT_FLAGS        ,_param->_size_special_data );
     58        DELETE0_SIGNAL(out_WRITE_UNIT_OUT_EXCEPTION    ,_param->_size_exception    );
     59        DELETE0_SIGNAL(out_WRITE_UNIT_OUT_NO_SEQUENCE  ,1                          );
     60        DELETE0_SIGNAL(out_WRITE_UNIT_OUT_ADDRESS      ,_param->_size_instruction_address);
     61        DELETE0_SIGNAL(out_WRITE_UNIT_OUT_DATA         ,_param->_size_general_data );
     62       
     63        DELETE1_SIGNAL(out_GPR_WRITE_VAL          , _param->_nb_gpr_write,1);
     64        DELETE1_SIGNAL( in_GPR_WRITE_ACK          , _param->_nb_gpr_write,1);
     65        DELETE1_SIGNAL(out_GPR_WRITE_OOO_ENGINE_ID, _param->_nb_gpr_write,_param->_size_ooo_engine_id   );
     66        DELETE1_SIGNAL(out_GPR_WRITE_NUM_REG      , _param->_nb_gpr_write,_param->_size_general_register);
     67        DELETE1_SIGNAL(out_GPR_WRITE_DATA         , _param->_nb_gpr_write,_param->_size_general_data    );
     68       
     69        DELETE1_SIGNAL(out_SPR_WRITE_VAL          , _param->_nb_spr_write,1);
     70        DELETE1_SIGNAL( in_SPR_WRITE_ACK          , _param->_nb_spr_write,1);
     71        DELETE1_SIGNAL(out_SPR_WRITE_OOO_ENGINE_ID, _param->_nb_spr_write,_param->_size_ooo_engine_id   );
     72        DELETE1_SIGNAL(out_SPR_WRITE_NUM_REG      , _param->_nb_spr_write,_param->_size_special_register);
     73        DELETE1_SIGNAL(out_SPR_WRITE_DATA         , _param->_nb_spr_write,_param->_size_special_data    );
     74       
     75        DELETE1_SIGNAL(out_BYPASS_WRITE_OOO_ENGINE_ID, _param->_nb_bypass_write,_param->_size_ooo_engine_id   );
     76        DELETE1_SIGNAL(out_BYPASS_WRITE_GPR_VAL      , _param->_nb_bypass_write,1                             );
     77        DELETE1_SIGNAL(out_BYPASS_WRITE_GPR_NUM_REG  , _param->_nb_bypass_write,_param->_size_general_register);
     78        DELETE1_SIGNAL(out_BYPASS_WRITE_GPR_DATA     , _param->_nb_bypass_write,_param->_size_general_data    );
     79        DELETE1_SIGNAL(out_BYPASS_WRITE_SPR_VAL      , _param->_nb_bypass_write,1                             );
     80        DELETE1_SIGNAL(out_BYPASS_WRITE_SPR_NUM_REG  , _param->_nb_bypass_write,_param->_size_special_register);
     81        DELETE1_SIGNAL(out_BYPASS_WRITE_SPR_DATA     , _param->_nb_bypass_write,_param->_size_special_data    );
     82      }
    5283
    53         // -----[ Interface "write_unit_out" ]-------------------------------   
    54         delete     out_WRITE_UNIT_OUT_VAL          ;
    55         delete      in_WRITE_UNIT_OUT_ACK          ;
    56         if (_param->_have_port_context_id)
    57         delete     out_WRITE_UNIT_OUT_CONTEXT_ID   ;
    58         if (_param->_have_port_front_end_id)
    59         delete     out_WRITE_UNIT_OUT_FRONT_END_ID ;
    60         if (_param->_have_port_ooo_engine_id)
    61         delete     out_WRITE_UNIT_OUT_OOO_ENGINE_ID;
    62         if (_param->_have_port_rob_ptr)
    63         delete     out_WRITE_UNIT_OUT_PACKET_ID    ;
    64 //      delete     out_WRITE_UNIT_OUT_OPERATION    ;
    65 //      delete     out_WRITE_UNIT_OUT_TYPE         ;
    66         delete     out_WRITE_UNIT_OUT_FLAGS        ;
    67         delete     out_WRITE_UNIT_OUT_EXCEPTION    ;
    68         delete     out_WRITE_UNIT_OUT_NO_SEQUENCE  ;
    69         delete     out_WRITE_UNIT_OUT_ADDRESS      ;
    70         delete     out_WRITE_UNIT_OUT_DATA         ;
    71 
    72         // -----[ Interface "gpr_write" ]-------------------------------------
    73         delete []  out_GPR_WRITE_VAL               ;
    74         delete []   in_GPR_WRITE_ACK               ;
    75         if (_param->_have_port_ooo_engine_id)
    76         delete []  out_GPR_WRITE_OOO_ENGINE_ID     ;
    77         delete []  out_GPR_WRITE_NUM_REG           ;
    78         delete []  out_GPR_WRITE_DATA              ;
    79        
    80         // -----[ Interface "spr_write" ]-------------------------------------
    81         delete []  out_SPR_WRITE_VAL               ;
    82         delete []   in_SPR_WRITE_ACK               ;
    83         if (_param->_have_port_ooo_engine_id)
    84         delete []  out_SPR_WRITE_OOO_ENGINE_ID     ;
    85         delete []  out_SPR_WRITE_NUM_REG           ;
    86         delete []  out_SPR_WRITE_DATA              ;
    87 
    88         // -----[ Interface "bypass_write" ]----------------------------------
    89         if (_param->_have_port_ooo_engine_id)
    90         delete []  out_BYPASS_WRITE_OOO_ENGINE_ID ;
    91         delete []  out_BYPASS_WRITE_GPR_VAL       ;
    92         delete []  out_BYPASS_WRITE_GPR_NUM_REG   ;
    93         delete []  out_BYPASS_WRITE_GPR_DATA      ;
    94         delete []  out_BYPASS_WRITE_SPR_VAL       ;
    95         delete []  out_BYPASS_WRITE_SPR_NUM_REG   ;
    96         delete []  out_BYPASS_WRITE_SPR_DATA      ;
    97 
    98       }
    9984    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    10085
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_allocation.cpp

    r97 r112  
    5858    // ~~~~~[ Interface "execute_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959     {
    60        ALLOC2_INTERFACE("execute_unit_out", IN, EAST, "Output of execution_unit", _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]);
     60       ALLOC2_INTERFACE_BEGIN("execute_unit_out", IN, EAST, "Output of execution_unit", _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]);
    6161
    6262       _ALLOC2_VALACK_IN ( in_EXECUTE_UNIT_OUT_VAL,VAL, _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]);
     
    7777       _ALLOC2_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t        ,1                             , _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]);
    7878       _ALLOC2_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_ADDRESS      ,"address"      ,Taddress_t        ,_param->_size_instruction_address, _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]);
     79
     80       ALLOC2_INTERFACE_END(_param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]);
    7981     }
    8082
    8183    // ~~~~~[ Interface "write_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8284     {
    83        ALLOC1_INTERFACE("write_unit_in", OUT, WEST, "Input of write_unit", _param->_nb_write_unit);
     85       ALLOC1_INTERFACE_BEGIN("write_unit_in", OUT, WEST, "Input of write_unit", _param->_nb_write_unit);
    8486
    8587       ALLOC1_VALACK_OUT(out_WRITE_UNIT_IN_VAL,VAL);
     
    100102       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t        ,1                             );
    101103       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_ADDRESS      ,"address"      ,Taddress_t        ,_param->_size_instruction_address);
     104
     105       ALLOC1_INTERFACE_END(_param->_nb_write_unit);
    102106     }
    103107    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     
    105109    if (usage_is_set(_usage,USE_SYSTEMC))
    106110      {
    107      _destination = new std::list<uint32_t> ** [_param->_nb_execute_unit];
    108      for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
    109        {
    110          _destination [i] = new std::list<uint32_t> * [_param->_nb_execute_unit_port[i]];
    111          for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++)
    112            {
    113              _destination [i][j] = new std::list<uint32_t> [_param->_nb_thread];
    114            }
    115        }
     111        ALLOC3(_destination,std::list<uint32_t>,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1],_param->_nb_thread);
    116112      }
    117113
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_deallocation.cpp

    r97 r112  
    6565        DELETE1_SIGNAL(out_WRITE_UNIT_IN_ADDRESS      , _param->_nb_write_unit,_param->_size_general_data    );
    6666     
    67         delete [] _destination;
     67        DELETE3(_destination,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1],_param->_nb_thread);
    6868      }
     69
    6970    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    7071
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_allocation.cpp

    r88 r112  
    5757    // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5858     {
    59        ALLOC2_INTERFACE("read_unit_out", IN, EAST, "Output of read_unit",_param->_nb_read_unit,_param->_nb_read_unit_port[it1]);
     59       ALLOC2_INTERFACE_BEGIN("read_unit_out", IN, EAST, "Output of read_unit",_param->_nb_read_unit,_param->_nb_read_unit_port[it1]);
    6060
    6161       _ALLOC2_VALACK_IN ( in_READ_UNIT_OUT_VAL,VAL,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]);
     
    7878       _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_WRITE_RE             ,"WRITE_RE"             ,Tcontrol_t        ,1                              ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]);
    7979       _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_NUM_REG_RE           ,"NUM_REG_RE"           ,Tspecial_address_t,_param->_size_special_register ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]);
     80
     81       ALLOC2_INTERFACE_END(_param->_nb_read_unit,_param->_nb_read_unit_port[it1]);
    8082     }
    8183    // ~~~~~[ Interface "execute_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8284     {
    83        ALLOC2_INTERFACE("execute_unit_in", OUT, WEST, "Input of execute_unit", _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]);
     85       ALLOC2_INTERFACE_BEGIN("execute_unit_in", OUT, WEST, "Input of execute_unit", _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]);
    8486       
    8587       _ALLOC2_VALACK_OUT(out_EXECUTE_UNIT_IN_VAL,VAL, _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]);
     
    102104       _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_DATA_RB              ,"DATA_RB"              ,Tgeneral_data_t   ,_param->_size_general_data     , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]);
    103105       _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_NUM_REG_RD           ,"NUM_REG_RD"           ,Tgeneral_address_t,_param->_size_general_register , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]);
     106
     107       ALLOC2_INTERFACE_END(_param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]);
    104108     }
    105109
     
    107111     if (usage_is_set(_usage,USE_SYSTEMC))
    108112       {
    109      _destination = new std::list<destination_t> ** [_param->_nb_read_unit];
    110      for (uint32_t i=0; i<_param->_nb_read_unit; i++)
    111        {
    112          _destination [i] = new std::list<destination_t> * [_param->_nb_thread];
    113          for (uint32_t j=0; j<_param->_nb_thread; j++)
    114            {
    115              _destination [i][j] = new std::list<destination_t> [_param->_nb_type];
    116            }
    117        }
     113         ALLOC3(_destination,std::list<destination_t>,_param->_nb_read_unit,_param->_nb_thread,_param->_nb_type);;
    118114       }
    119115
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_deallocation.cpp

    r88 r112  
    6969         DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RD           , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_general_register );
    7070
    71          delete [] _destination;
     71         DELETE3(_destination,_param->_nb_read_unit,_param->_nb_thread,_param->_nb_type);;
    7272      }
    7373    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • 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  
    77
    88#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    5051    out_CONST_1      = interface->set_signal_out <Tcontrol_t> ("const_1",1);
    5152
    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    }
    401206
    402207//     // ~~~~~[ 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  
    77
    88#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2627      {
    2728//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
    28     delete    in_CLOCK ;
     29    delete  in_CLOCK ;
    2930//#endif
    30     delete    in_NRESET;
     31    delete  in_NRESET;
     32    delete out_CONST_0;
     33    delete out_CONST_1;
    3134
    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);
    3944
    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);
    4348
    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);
    4766
     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  );
    4870
    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  );
    5673
    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);
    6077
    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  );
    6480
    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  );
    7083
    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);
    7388
    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);
    7691
    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);
    11494      }
    11595    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_allocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/include/Register_unit.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo {
     
    5253
    5354    // ~~~~~[ 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    }
    8067
    8168    // ~~~~~[ 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    }
    10680
    10781    // ~~~~~[ 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    }
    13494
    13595    // ~~~~~[ 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    }
    200121
    201122//     // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/include/Register_unit.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2425    if (usage_is_set(_usage,USE_SYSTEMC))
    2526      {
    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;
    3029
    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
    6363//     delete []  in_RETIRE_ROB_VAL               ;
    6464//     delete [] out_RETIRE_ROB_ACK               ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Execute_loop_allocation.cpp

    r97 r112  
    5555    // ~~~~~[ Interface "execute_loop_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5656     {
    57        ALLOC1_INTERFACE("execute_loop_in", IN, EAST, "Operation's Input", _param->_nb_read_unit);
     57       ALLOC1_INTERFACE_BEGIN("execute_loop_in", IN, EAST, "Operation's Input", _param->_nb_read_unit);
    5858
    5959       ALLOC1_VALACK_IN ( in_EXECUTE_LOOP_IN_VAL,VAL);
     
    6666       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type);         
    6767       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr);
    68        if (_param->_have_port_load_queue_ptr)
    6968       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr);
    7069       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1);
     
    8079       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1);
    8180       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register);
     81
     82       ALLOC1_INTERFACE_END(param->_nb_read_unit);
    8283     }
    8384    // ~~~~~[ Interface "execute_loop_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8485     {
    85        ALLOC1_INTERFACE("execute_loop_out",OUT, EAST, "Operation's Output", _param->_nb_write_unit);
     86       ALLOC1_INTERFACE_BEGIN("execute_loop_out",OUT, EAST, "Operation's Output", _param->_nb_write_unit);
    8687
    8788       ALLOC1_VALACK_OUT(out_EXECUTE_LOOP_OUT_VAL,VAL);
     
    9899       ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_ADDRESS      ,"address"      ,Taddress_t     ,_param->_size_instruction_address);
    99100       ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_DATA         ,"data"         ,Tgeneral_data_t,_param->_size_general_data);
     101
     102       ALLOC1_INTERFACE_END(_param->_nb_write_unit);
    100103     }
    101104    // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    102105     {
    103        ALLOC2_INTERFACE("dcache_req",OUT, NORTH, "Data cache port : request", _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
     106       ALLOC2_INTERFACE_BEGIN("dcache_req",OUT, NORTH, "Data cache port : request", _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
    104107       
    105108       _ALLOC2_VALACK_OUT(out_DCACHE_REQ_VAL,VAL, _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
     
    110113       _ALLOC2_SIGNAL_OUT(out_DCACHE_REQ_TYPE      ,"type"      ,Tdcache_type_t   ,_param->_size_dcache_type          , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
    111114       _ALLOC2_SIGNAL_OUT(out_DCACHE_REQ_WDATA     ,"wdata"     ,Tdcache_data_t   ,_param->_size_general_data         , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
     115
     116       ALLOC2_INTERFACE_END(_param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
    112117     }
     118
    113119    // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    114120     {
    115        ALLOC2_INTERFACE("dcache_rsp",IN, NORTH, "Data cache port : respons", _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
     121       ALLOC2_INTERFACE_BEGIN("dcache_rsp",IN, NORTH, "Data cache port : respons", _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
    116122
    117123       _ALLOC2_VALACK_IN ( in_DCACHE_RSP_VAL,VAL, _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
     
    121127       _ALLOC2_SIGNAL_IN ( in_DCACHE_RSP_RDATA     ,"rdata"     ,Tdcache_data_t ,_param->_size_general_data         , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
    122128       _ALLOC2_SIGNAL_IN ( in_DCACHE_RSP_ERROR     ,"error"     ,Tdcache_error_t,_param->_size_dcache_error         , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
     129
     130       ALLOC2_INTERFACE_END(_param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
    123131     }
     132
    124133    // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    125134     {
    126        ALLOC2_INTERFACE("insert_rob",IN, EAST, "Rename's stage : insert a new instruction in the Re Order Buffer",_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);
     135       ALLOC2_INTERFACE_BEGIN("insert_rob",IN, EAST, "Rename's stage : insert a new instruction in the Re Order Buffer",_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);
    127136       
    128137       _ALLOC2_VALACK_IN ( in_INSERT_ROB_VAL,VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);
     
    133142       _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_USE    ,"re_use"    ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);
    134143       _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_NUM_REG,"re_num_reg",Tspecial_address_t,_param->_size_special_register,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);
     144
     145       ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);
    135146     }
     147
    136148//     // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    137149//      {
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/src/test.cpp

    r111 r112  
    6666  ALLOC1_SC_SIGNAL( in_DECOD_EVENT_ADDRESS_EPCR       ," in_DECOD_EVENT_ADDRESS_EPCR       ",Taddress_t   ,_param->_nb_decod_unit);
    6767                                                                                           
    68   ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_VAL               ," in_COMMIT_EVENT_VAL               ",Tcontrol_t   );
    69   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_ACK               ,"out_COMMIT_EVENT_ACK               ",Tcontrol_t   );
    70   ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_CONTEXT_ID        ," in_COMMIT_EVENT_CONTEXT_ID        ",Tcontext_t   );
    71   ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_DEPTH             ," in_COMMIT_EVENT_DEPTH             ",Tdepth_t     );
    72   ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_TYPE              ," in_COMMIT_EVENT_TYPE              ",Tevent_type_t);
    73   ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_IS_DELAY_SLOT     ," in_COMMIT_EVENT_IS_DELAY_SLOT     ",Tcontrol_t   );
    74   ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS           ," in_COMMIT_EVENT_ADDRESS           ",Taddress_t   );
    75   ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EPCR_VAL  ," in_COMMIT_EVENT_ADDRESS_EPCR_VAL  ",Tcontrol_t   );
    76   ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EPCR      ," in_COMMIT_EVENT_ADDRESS_EPCR      ",Taddress_t   );
    77   ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL  ," in_COMMIT_EVENT_ADDRESS_EEAR_VAL  ",Tcontrol_t   );
    78   ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EEAR      ," in_COMMIT_EVENT_ADDRESS_EEAR      ",Tgeneral_data_t);
     68  ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_VAL               ," in_COMMIT_EVENT_VAL               ",Tcontrol_t   );
     69  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_ACK               ,"out_COMMIT_EVENT_ACK               ",Tcontrol_t   );
     70  ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_CONTEXT_ID        ," in_COMMIT_EVENT_CONTEXT_ID        ",Tcontext_t   );
     71  ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_DEPTH             ," in_COMMIT_EVENT_DEPTH             ",Tdepth_t     );
     72  ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_TYPE              ," in_COMMIT_EVENT_TYPE              ",Tevent_type_t);
     73  ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_IS_DELAY_SLOT     ," in_COMMIT_EVENT_IS_DELAY_SLOT     ",Tcontrol_t   );
     74  ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS           ," in_COMMIT_EVENT_ADDRESS           ",Taddress_t   );
     75  ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR_VAL  ," in_COMMIT_EVENT_ADDRESS_EPCR_VAL  ",Tcontrol_t   );
     76  ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR      ," in_COMMIT_EVENT_ADDRESS_EPCR      ",Taddress_t   );
     77  ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR_VAL  ," in_COMMIT_EVENT_ADDRESS_EEAR_VAL  ",Tcontrol_t   );
     78  ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR      ," in_COMMIT_EVENT_ADDRESS_EEAR      ",Tgeneral_data_t);
    7979
    8080  ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_VAL            ," in_BRANCH_COMPLETE_VAL            ",Tcontrol_t   ,_param->_nb_inst_branch_complete);
     
    147147  INSTANCE1_SC_SIGNAL(_Context_State, in_DECOD_EVENT_ADDRESS_EPCR       ,_param->_nb_decod_unit);
    148148                                                                       
    149   INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_VAL               );
    150   INSTANCE_SC_SIGNAL (_Context_State,out_COMMIT_EVENT_ACK               );
     149  INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_VAL               );
     150  INSTANCE0_SC_SIGNAL(_Context_State,out_COMMIT_EVENT_ACK               );
    151151  if (_param->_have_port_context_id)                                   
    152   INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_CONTEXT_ID        );
     152  INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_CONTEXT_ID        );
    153153  if (_param->_have_port_depth)                                 
    154   INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_DEPTH             );
    155   INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_TYPE              );
    156   INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_IS_DELAY_SLOT     );
    157   INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_ADDRESS           );
    158   INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_ADDRESS_EPCR_VAL  );
    159   INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_ADDRESS_EPCR      );
    160   INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_ADDRESS_EEAR_VAL  );
    161   INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_ADDRESS_EEAR      );
     154  INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_DEPTH             );
     155  INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_TYPE              );
     156  INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_IS_DELAY_SLOT     );
     157  INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS           );
     158  INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS_EPCR_VAL  );
     159  INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS_EPCR      );
     160  INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS_EEAR_VAL  );
     161  INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS_EEAR      );
    162162
    163163  INSTANCE1_SC_SIGNAL(_Context_State, in_BRANCH_COMPLETE_VAL            ,_param->_nb_inst_branch_complete);
     
    196196  INSTANCE1_SC_SIGNAL(_Context_State,out_CONTEXT_DECOD_ENABLE           ,_param->_nb_context   );
    197197
    198   for (uint32_t i=0; i<_param->_nb_context; i++)
    199     if (_param->_have_port_depth)
    200       INSTANCE_SC_SIGNAL(_Context_State, in_DEPTH_MIN [i]);
     198  if (_param->_have_port_depth)
     199  INSTANCE1_SC_SIGNAL(_Context_State, in_DEPTH_MIN                      ,_param->_nb_context   );
    201200
    202201  INSTANCE1_SC_SIGNAL(_Context_State, in_SPR_SR_IEE                     ,_param->_nb_context   );
     
    13241323  DELETE1_SC_SIGNAL( in_DECOD_EVENT_ADDRESS            ,_param->_nb_decod_unit);
    13251324  DELETE1_SC_SIGNAL( in_DECOD_EVENT_ADDRESS_EPCR       ,_param->_nb_decod_unit);
    1326   DELETE_SC_SIGNAL ( in_COMMIT_EVENT_VAL               );
    1327   DELETE_SC_SIGNAL (out_COMMIT_EVENT_ACK               );
    1328   DELETE_SC_SIGNAL ( in_COMMIT_EVENT_CONTEXT_ID        );
    1329   DELETE_SC_SIGNAL ( in_COMMIT_EVENT_DEPTH             );
    1330   DELETE_SC_SIGNAL ( in_COMMIT_EVENT_TYPE              );
    1331   DELETE_SC_SIGNAL ( in_COMMIT_EVENT_IS_DELAY_SLOT     );
    1332   DELETE_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS           );
    1333   DELETE_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EPCR_VAL  );
    1334   DELETE_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EPCR      );
    1335   DELETE_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL  );
    1336   DELETE_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EEAR      );
     1325  DELETE0_SC_SIGNAL( in_COMMIT_EVENT_VAL               );
     1326  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_ACK               );
     1327  DELETE0_SC_SIGNAL( in_COMMIT_EVENT_CONTEXT_ID        );
     1328  DELETE0_SC_SIGNAL( in_COMMIT_EVENT_DEPTH             );
     1329  DELETE0_SC_SIGNAL( in_COMMIT_EVENT_TYPE              );
     1330  DELETE0_SC_SIGNAL( in_COMMIT_EVENT_IS_DELAY_SLOT     );
     1331  DELETE0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS           );
     1332  DELETE0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR_VAL  );
     1333  DELETE0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR      );
     1334  DELETE0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR_VAL  );
     1335  DELETE0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR      );
    13371336  DELETE1_SC_SIGNAL( in_BRANCH_COMPLETE_VAL            ,_param->_nb_inst_branch_complete);
    13381337  DELETE1_SC_SIGNAL(out_BRANCH_COMPLETE_ACK            ,_param->_nb_inst_branch_complete);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_allocation.cpp

    r111 r112  
    5858    // ~~~~~[ Interface : "branch_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC1_INTERFACE("branch_event", IN,SOUTH, "branch_event", _param->_nb_context);
     60      ALLOC1_INTERFACE_BEGIN("branch_event", IN,SOUTH, _("branch_event"), _param->_nb_context);
    6161     
    6262      ALLOC1_VALACK_IN ( in_BRANCH_EVENT_VAL                   ,VAL);
     
    6868      ALLOC1_SIGNAL_IN ( in_BRANCH_EVENT_ADDRESS_DEST_VAL      ,"address_dest_val"       ,Tcontrol_t         ,1);
    6969      ALLOC1_SIGNAL_IN ( in_BRANCH_EVENT_ADDRESS_DEST          ,"address_dest"           ,Taddress_t         ,_param->_size_instruction_address);
     70
     71      ALLOC1_INTERFACE_END(_param->_nb_context);
    7072    }
    7173
    7274    // ~~~~~[ Interface : "decod_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7375    {
    74       ALLOC1_INTERFACE("decod_event",IN ,SOUTH, _("Decod Interface"), _param->_nb_decod_unit);
     76      ALLOC1_INTERFACE_BEGIN("decod_event",IN ,SOUTH, _("Decod Interface"), _param->_nb_decod_unit);
    7577
    7678      ALLOC1_VALACK_IN ( in_DECOD_EVENT_VAL                    ,VAL);
     
    8284      ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_ADDRESS                ,"address"                ,Taddress_t         ,_param->_size_instruction_address);
    8385      ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_ADDRESS_EPCR           ,"address_epcr"           ,Taddress_t         ,_param->_size_instruction_address);
     86
     87      ALLOC1_INTERFACE_END(_param->_nb_decod_unit);   
    8488    }
    8589
    8690    // ~~~~~[ Interface : "commit_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8791    {
    88       ALLOC_INTERFACE("commit_event",IN ,EAST, _("Interface with the Re Order Buffer"));
    89 
    90       ALLOC_VALACK_IN  ( in_COMMIT_EVENT_VAL                   ,VAL);
    91       ALLOC_VALACK_OUT (out_COMMIT_EVENT_ACK                   ,ACK);
    92       ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_CONTEXT_ID            ,"context_id"      ,Tcontext_t         ,_param->_size_context_id);
    93       ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_DEPTH                 ,"depth"           ,Tdepth_t           ,_param->_size_depth);
    94       ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_TYPE                  ,"type"            ,Tevent_type_t      ,_param->_size_event_type);
    95       ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_IS_DELAY_SLOT         ,"is_delay_slot"   ,Tcontrol_t         ,1);
    96       ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_ADDRESS               ,"address"         ,Taddress_t         ,_param->_size_instruction_address);
    97       ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_ADDRESS_EPCR_VAL      ,"address_epcr_val",Tcontrol_t         ,1);
    98       ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_ADDRESS_EPCR          ,"address_epcr"    ,Taddress_t         ,_param->_size_instruction_address);
    99       ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL      ,"address_eear_val",Tcontrol_t         ,1);
    100       ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_ADDRESS_EEAR          ,"address_eear"    ,Tgeneral_data_t    ,_param->_size_general_data);
     92      ALLOC0_INTERFACE_BEGIN("commit_event",IN ,EAST, _("Interface with the Re Order Buffer"));
     93
     94      ALLOC0_VALACK_IN ( in_COMMIT_EVENT_VAL                   ,VAL);
     95      ALLOC0_VALACK_OUT(out_COMMIT_EVENT_ACK                   ,ACK);
     96      ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_CONTEXT_ID            ,"context_id"      ,Tcontext_t         ,_param->_size_context_id);
     97      ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_DEPTH                 ,"depth"           ,Tdepth_t           ,_param->_size_depth);
     98      ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_TYPE                  ,"type"            ,Tevent_type_t      ,_param->_size_event_type);
     99      ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_IS_DELAY_SLOT         ,"is_delay_slot"   ,Tcontrol_t         ,1);
     100      ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS               ,"address"         ,Taddress_t         ,_param->_size_instruction_address);
     101      ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EPCR_VAL      ,"address_epcr_val",Tcontrol_t         ,1);
     102      ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EPCR          ,"address_epcr"    ,Taddress_t         ,_param->_size_instruction_address);
     103      ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL      ,"address_eear_val",Tcontrol_t         ,1);
     104      ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EEAR          ,"address_eear"    ,Tgeneral_data_t    ,_param->_size_general_data);
     105   
     106      ALLOC0_INTERFACE_END();
    101107    }
    102108
    103109    // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    104110    {
    105       ALLOC1_INTERFACE("branch_complete",IN ,NORTH, _("Interface with the prediction_unit."), _param->_nb_inst_branch_complete);
     111      ALLOC1_INTERFACE_BEGIN("branch_complete",IN ,NORTH, _("Interface with the prediction_unit."), _param->_nb_inst_branch_complete);
    106112
    107113      ALLOC1_VALACK_IN ( in_BRANCH_COMPLETE_VAL                ,VAL);
     
    113119//    ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_ADDRESS_SRC        ,"address_src"    ,Taddress_t         ,_param->_size_instruction_address);
    114120//    ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_ADDRESS_DEST       ,"address_dest"   ,Taddress_t         ,_param->_size_instruction_address);
     121
     122      ALLOC1_INTERFACE_END(_param->_nb_inst_branch_complete);
    115123    }
    116124
    117125    // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    118126    {
    119       ALLOC1_INTERFACE("nb_inst",IN ,EAST, _("Interface to count in fligt present instruction."),_param->_nb_context);
     127      ALLOC1_INTERFACE_BEGIN("nb_inst",IN ,EAST, _("Interface to count in fligt present instruction."),_param->_nb_context);
    120128
    121129      ALLOC1_SIGNAL_IN ( in_NB_INST_DECOD_ALL                  ,"decod_all" ,Tcounter_t         ,_param->_size_nb_inst_decod);
    122130      ALLOC1_SIGNAL_IN ( in_NB_INST_COMMIT_ALL                 ,"commit_all",Tcounter_t         ,_param->_size_nb_inst_commit);
    123131      ALLOC1_SIGNAL_IN ( in_NB_INST_COMMIT_MEM                 ,"commit_mem",Tcounter_t         ,_param->_size_nb_inst_commit);
     132
     133      ALLOC1_INTERFACE_END(_param->_nb_context);
    124134    }
    125135
    126136    // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    127137    {
    128       ALLOC1_INTERFACE("event",OUT,WEST, _("An event occure : change PC address."), _param->_nb_context);
     138      ALLOC1_INTERFACE_BEGIN("event",OUT,WEST, _("An event occure : change PC address."), _param->_nb_context);
    129139     
    130140      ALLOC1_VALACK_OUT(out_EVENT_VAL                          ,VAL);
     
    137147      ALLOC1_SIGNAL_OUT(out_EVENT_DEPTH                        ,"depth"           ,Tdepth_t          ,_param->_size_depth);
    138148
     149      ALLOC1_INTERFACE_END(_param->_nb_context);
    139150    }
    140151
    141152    // ~~~~~[ Interface "spr_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    142153    {
    143       ALLOC1_INTERFACE("spr_event",OUT,WEST, _("An exception occure : write \"exception PC\"."), _param->_nb_context);
     154      ALLOC1_INTERFACE_BEGIN("spr_event",OUT,WEST, _("An exception occure : write \"exception PC\"."), _param->_nb_context);
    144155
    145156      ALLOC1_VALACK_OUT(out_SPR_EVENT_VAL                      ,VAL);
     
    150161      ALLOC1_SIGNAL_OUT(out_SPR_EVENT_SR_DSX                   ,"sr_dsx"   ,Tcontrol_t,1);
    151162      ALLOC1_SIGNAL_OUT(out_SPR_EVENT_SR_TO_ESR                ,"sr_to_esr",Tcontrol_t,1);
     163
     164      ALLOC1_INTERFACE_END(_param->_nb_context);
    152165    }
    153166
    154167    // ~~~~~[ Interface : "context" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    155168    {
    156       ALLOC1_INTERFACE("context",OUT,SOUTH, _("To decod."), _param->_nb_context);
     169      ALLOC1_INTERFACE_BEGIN("context",OUT,SOUTH, _("To decod."), _param->_nb_context);
    157170     
    158171      ALLOC1_SIGNAL_OUT(out_CONTEXT_DECOD_ENABLE               ,"decod_enable",Tcontrol_t,1);
     172
     173      ALLOC1_INTERFACE_END(_param->_nb_context);
    159174    }
    160175
    161176    // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    162177    {
    163       ALLOC1_INTERFACE("depth",IN ,NORTH, _("From prediction_unit."), _param->_nb_context);
     178      ALLOC1_INTERFACE_BEGIN("depth",IN ,NORTH, _("From prediction_unit."), _param->_nb_context);
    164179     
    165180      ALLOC1_SIGNAL_IN ( in_DEPTH_MIN                          ,"min" ,Tdepth_t,_param->_size_depth);
     181
     182      ALLOC1_INTERFACE_END(_param->_nb_context);
    166183    }
    167184
     
    169186    // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
    170187    {
    171       ALLOC1_INTERFACE("spr",IN,EAST,_("Interface with the special registerFile"),_param->_nb_context);
     188      ALLOC1_INTERFACE_BEGIN("spr",IN,EAST,_("Interface with the special registerFile"),_param->_nb_context);
    172189     
    173190      ALLOC1_SIGNAL_IN ( in_SPR_SR_IEE                         ,"SR_IEE",Tcontrol_t,1);
    174191      ALLOC1_SIGNAL_IN ( in_SPR_SR_EPH                         ,"SR_EPH",Tcontrol_t,1);
     192
     193      ALLOC1_INTERFACE_END(_param->_nb_context);
    175194    }
    176195
    177196    // ~~~~~[ Interface : "interrupt" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    178197    {
    179       ALLOC1_INTERFACE("interrupt",IN,NORTH,_("Interrupt Exception"),_param->_nb_context);
     198      ALLOC1_INTERFACE_BEGIN("interrupt",IN,NORTH,_("Interrupt Exception"),_param->_nb_context);
    180199
    181200      ALLOC1_SIGNAL_IN ( in_INTERRUPT_ENABLE                   ,"ENABLE",Tcontrol_t,1);
     201
     202      ALLOC1_INTERFACE_END(_param->_nb_context);
    182203    }
    183204
     
    186207     // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    187208       
    188      reg_STATE                  = new context_state_t [_param->_nb_context];
    189      reg_EVENT_ADDRESS          = new Taddress_t      [_param->_nb_context];
    190      reg_EVENT_ADDRESS_EPCR     = new Taddress_t      [_param->_nb_context];
    191      reg_EVENT_ADDRESS_EPCR_VAL = new Tcontrol_t      [_param->_nb_context];
    192      reg_EVENT_ADDRESS_EEAR     = new Taddress_t      [_param->_nb_context];
    193      reg_EVENT_ADDRESS_EEAR_VAL = new Tcontrol_t      [_param->_nb_context];
    194      reg_EVENT_IS_DELAY_SLOT    = new Tcontrol_t      [_param->_nb_context];
    195      reg_EVENT_IS_DS_TAKE       = new Tcontrol_t      [_param->_nb_context];
    196      reg_EVENT_DEPTH            = new Tdepth_t        [_param->_nb_context];
    197      reg_INTERRUPT_ENABLE       = new Tcontrol_t      [_param->_nb_context];
     209     ALLOC1(reg_STATE                 ,context_state_t,_param->_nb_context);
     210     ALLOC1(reg_EVENT_ADDRESS         ,Taddress_t     ,_param->_nb_context);
     211     ALLOC1(reg_EVENT_ADDRESS_EPCR    ,Taddress_t     ,_param->_nb_context);
     212     ALLOC1(reg_EVENT_ADDRESS_EPCR_VAL,Tcontrol_t     ,_param->_nb_context);
     213     ALLOC1(reg_EVENT_ADDRESS_EEAR    ,Taddress_t     ,_param->_nb_context);
     214     ALLOC1(reg_EVENT_ADDRESS_EEAR_VAL,Tcontrol_t     ,_param->_nb_context);
     215     ALLOC1(reg_EVENT_IS_DELAY_SLOT   ,Tcontrol_t     ,_param->_nb_context);
     216     ALLOC1(reg_EVENT_IS_DS_TAKE      ,Tcontrol_t     ,_param->_nb_context);
     217     ALLOC1(reg_EVENT_DEPTH           ,Tdepth_t       ,_param->_nb_context);
     218     ALLOC1(reg_INTERRUPT_ENABLE      ,Tcontrol_t     ,_param->_nb_context);
    198219       
    199220     // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    200      internal_BRANCH_EVENT_ACK    = new Tcontrol_t [_param->_nb_context];
    201      internal_DECOD_EVENT_ACK     = new Tcontrol_t [_param->_nb_decod_unit];
    202      internal_BRANCH_COMPLETE_ACK = new Tcontrol_t [_param->_nb_inst_branch_complete];
    203      internal_EVENT_VAL           = new Tcontrol_t [_param->_nb_context];
    204      internal_SPR_EVENT_VAL       = new Tcontrol_t [_param->_nb_context];
     221
     222     ALLOC1(internal_BRANCH_EVENT_ACK   ,Tcontrol_t,_param->_nb_context);
     223     ALLOC1(internal_DECOD_EVENT_ACK    ,Tcontrol_t,_param->_nb_decod_unit);
     224     ALLOC1(internal_BRANCH_COMPLETE_ACK,Tcontrol_t,_param->_nb_inst_branch_complete);
     225     ALLOC1(internal_EVENT_VAL          ,Tcontrol_t,_param->_nb_context);
     226     ALLOC1(internal_SPR_EVENT_VAL      ,Tcontrol_t,_param->_nb_context);
    205227      }
    206228
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_deallocation.cpp

    r111 r112  
    4646        DELETE1_SIGNAL( in_DECOD_EVENT_ADDRESS_EPCR           ,_param->_nb_decod_unit,_param->_size_instruction_address);
    4747       
    48         DELETE_SIGNAL ( in_COMMIT_EVENT_VAL                   ,1);
    49         DELETE_SIGNAL (out_COMMIT_EVENT_ACK                   ,1);
    50         DELETE_SIGNAL ( in_COMMIT_EVENT_CONTEXT_ID            ,_param->_size_context_id);
    51         DELETE_SIGNAL ( in_COMMIT_EVENT_DEPTH                 ,_param->_size_depth);
    52         DELETE_SIGNAL ( in_COMMIT_EVENT_TYPE                  ,_param->_size_event_type);
    53         DELETE_SIGNAL ( in_COMMIT_EVENT_IS_DELAY_SLOT         ,1);
    54         DELETE_SIGNAL ( in_COMMIT_EVENT_ADDRESS               ,_param->_size_instruction_address);
    55         DELETE_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EPCR_VAL      ,_param->_size_instruction_address);
    56         DELETE_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EPCR          ,_param->_size_instruction_address);
    57         DELETE_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL      ,_param->_size_instruction_address);
    58         DELETE_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EEAR          ,1);
     48        DELETE0_SIGNAL( in_COMMIT_EVENT_VAL                   ,1);
     49        DELETE0_SIGNAL(out_COMMIT_EVENT_ACK                   ,1);
     50        DELETE0_SIGNAL( in_COMMIT_EVENT_CONTEXT_ID            ,_param->_size_context_id);
     51        DELETE0_SIGNAL( in_COMMIT_EVENT_DEPTH                 ,_param->_size_depth);
     52        DELETE0_SIGNAL( in_COMMIT_EVENT_TYPE                  ,_param->_size_event_type);
     53        DELETE0_SIGNAL( in_COMMIT_EVENT_IS_DELAY_SLOT         ,1);
     54        DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS               ,_param->_size_instruction_address);
     55        DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR_VAL      ,_param->_size_instruction_address);
     56        DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR          ,_param->_size_instruction_address);
     57        DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR_VAL      ,_param->_size_instruction_address);
     58        DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR          ,1);
    5959
    6060        DELETE1_SIGNAL( in_BRANCH_COMPLETE_VAL                ,_param->_nb_inst_branch_complete,1);
     
    9898
    9999        // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    100         delete [] reg_STATE                 ;
    101         delete [] reg_EVENT_ADDRESS         ;
    102         delete [] reg_EVENT_ADDRESS_EPCR    ;
    103         delete [] reg_EVENT_ADDRESS_EPCR_VAL;
    104         delete [] reg_EVENT_ADDRESS_EEAR    ;
    105         delete [] reg_EVENT_ADDRESS_EEAR_VAL;
    106         delete [] reg_EVENT_IS_DELAY_SLOT   ;
    107         delete [] reg_EVENT_IS_DS_TAKE      ;
    108         delete [] reg_EVENT_DEPTH           ;
    109         delete [] reg_INTERRUPT_ENABLE      ;
     100        DELETE1(reg_STATE                 ,_param->_nb_context);
     101        DELETE1(reg_EVENT_ADDRESS         ,_param->_nb_context);
     102        DELETE1(reg_EVENT_ADDRESS_EPCR    ,_param->_nb_context);
     103        DELETE1(reg_EVENT_ADDRESS_EPCR_VAL,_param->_nb_context);
     104        DELETE1(reg_EVENT_ADDRESS_EEAR    ,_param->_nb_context);
     105        DELETE1(reg_EVENT_ADDRESS_EEAR_VAL,_param->_nb_context);
     106        DELETE1(reg_EVENT_IS_DELAY_SLOT   ,_param->_nb_context);
     107        DELETE1(reg_EVENT_IS_DS_TAKE      ,_param->_nb_context);
     108        DELETE1(reg_EVENT_DEPTH           ,_param->_nb_context);
     109        DELETE1(reg_INTERRUPT_ENABLE      ,_param->_nb_context);
    110110       
    111111        // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    112         delete [] internal_BRANCH_EVENT_ACK ;
    113         delete [] internal_DECOD_EVENT_ACK  ;
    114         delete [] internal_EVENT_VAL        ;
    115         delete [] internal_SPR_EVENT_VAL    ;
     112        DELETE1(internal_BRANCH_EVENT_ACK   ,_param->_nb_context);
     113        DELETE1(internal_DECOD_EVENT_ACK    ,_param->_nb_decod_unit);
     114        DELETE1(internal_BRANCH_COMPLETE_ACK,_param->_nb_inst_branch_complete);
     115        DELETE1(internal_EVENT_VAL          ,_param->_nb_context);
     116        DELETE1(internal_SPR_EVENT_VAL      ,_param->_nb_context);
    116117      }
    117118       
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/src/test.cpp

    r110 r112  
    104104  ALLOC1_SC_SIGNAL( in_CONTEXT_DEPTH_VAL                  ," in_CONTEXT_DEPTH_VAL                  ",Tcontrol_t         ,_param->_nb_context);
    105105  ALLOC1_SC_SIGNAL( in_CONTEXT_DEPTH                      ," in_CONTEXT_DEPTH                      ",Tdepth_t           ,_param->_nb_context);
    106   ALLOC_SC_SIGNAL (out_CONTEXT_EVENT_VAL                  ,"out_CONTEXT_EVENT_VAL                  ",Tcontrol_t         );
    107   ALLOC_SC_SIGNAL ( in_CONTEXT_EVENT_ACK                  ," in_CONTEXT_EVENT_ACK                  ",Tcontrol_t         );
    108   ALLOC_SC_SIGNAL (out_CONTEXT_EVENT_CONTEXT_ID           ,"out_CONTEXT_EVENT_CONTEXT_ID           ",Tcontext_t         );
    109   ALLOC_SC_SIGNAL (out_CONTEXT_EVENT_DEPTH                ,"out_CONTEXT_EVENT_DEPTH                ",Tdepth_t           );
    110   ALLOC_SC_SIGNAL (out_CONTEXT_EVENT_TYPE                 ,"out_CONTEXT_EVENT_TYPE                 ",Tevent_type_t      );
    111   ALLOC_SC_SIGNAL (out_CONTEXT_EVENT_IS_DELAY_SLOT        ,"out_CONTEXT_EVENT_IS_DELAY_SLOT        ",Tcontrol_t         );
    112   ALLOC_SC_SIGNAL (out_CONTEXT_EVENT_ADDRESS              ,"out_CONTEXT_EVENT_ADDRESS              ",Tgeneral_data_t    );
    113   ALLOC_SC_SIGNAL (out_CONTEXT_EVENT_ADDRESS_EPCR         ,"out_CONTEXT_EVENT_ADDRESS_EPCR         ",Tgeneral_data_t    );
     106  ALLOC0_SC_SIGNAL(out_CONTEXT_EVENT_VAL                  ,"out_CONTEXT_EVENT_VAL                  ",Tcontrol_t         );
     107  ALLOC0_SC_SIGNAL( in_CONTEXT_EVENT_ACK                  ," in_CONTEXT_EVENT_ACK                  ",Tcontrol_t         );
     108  ALLOC0_SC_SIGNAL(out_CONTEXT_EVENT_CONTEXT_ID           ,"out_CONTEXT_EVENT_CONTEXT_ID           ",Tcontext_t         );
     109  ALLOC0_SC_SIGNAL(out_CONTEXT_EVENT_DEPTH                ,"out_CONTEXT_EVENT_DEPTH                ",Tdepth_t           );
     110  ALLOC0_SC_SIGNAL(out_CONTEXT_EVENT_TYPE                 ,"out_CONTEXT_EVENT_TYPE                 ",Tevent_type_t      );
     111  ALLOC0_SC_SIGNAL(out_CONTEXT_EVENT_IS_DELAY_SLOT        ,"out_CONTEXT_EVENT_IS_DELAY_SLOT        ",Tcontrol_t         );
     112  ALLOC0_SC_SIGNAL(out_CONTEXT_EVENT_ADDRESS              ,"out_CONTEXT_EVENT_ADDRESS              ",Tgeneral_data_t    );
     113  ALLOC0_SC_SIGNAL(out_CONTEXT_EVENT_ADDRESS_EPCR         ,"out_CONTEXT_EVENT_ADDRESS_EPCR         ",Tgeneral_data_t    );
    114114 
    115115  /********************************************************
     
    135135    {
    136136      if (_param->_have_port_inst_ifetch_ptr)
    137         INSTANCE_SC_SIGNAL(_Decod, in_IFETCH_INST_IFETCH_PTR [i]);
     137        INSTANCE0_SC_SIGNAL(_Decod, in_IFETCH_INST_IFETCH_PTR [i]);
    138138//       if (_param->_have_port_branch_update_prediction_id)
    139139      if (_param->_have_port_depth)
    140         INSTANCE_SC_SIGNAL(_Decod, in_IFETCH_BRANCH_UPDATE_PREDICTION_ID [i]);
     140        INSTANCE0_SC_SIGNAL(_Decod, in_IFETCH_BRANCH_UPDATE_PREDICTION_ID [i]);
    141141    }
    142142
     
    188188  for (uint32_t i=0; i<_param->_nb_context; i++)
    189189    if (_param->_have_port_depth)
    190       INSTANCE_SC_SIGNAL(_Decod, in_CONTEXT_DEPTH [i]);
    191   INSTANCE_SC_SIGNAL (_Decod,out_CONTEXT_EVENT_VAL                  );
    192   INSTANCE_SC_SIGNAL (_Decod, in_CONTEXT_EVENT_ACK                  );
     190      INSTANCE0_SC_SIGNAL(_Decod, in_CONTEXT_DEPTH [i]);
     191  INSTANCE0_SC_SIGNAL(_Decod,out_CONTEXT_EVENT_VAL                  );
     192  INSTANCE0_SC_SIGNAL(_Decod, in_CONTEXT_EVENT_ACK                  );
    193193  if (_param->_have_port_context_id)
    194   INSTANCE_SC_SIGNAL (_Decod,out_CONTEXT_EVENT_CONTEXT_ID           );
     194  INSTANCE0_SC_SIGNAL(_Decod,out_CONTEXT_EVENT_CONTEXT_ID           );
    195195  if (_param->_have_port_depth)
    196   INSTANCE_SC_SIGNAL (_Decod,out_CONTEXT_EVENT_DEPTH                );
    197   INSTANCE_SC_SIGNAL (_Decod,out_CONTEXT_EVENT_TYPE                 );
    198   INSTANCE_SC_SIGNAL (_Decod,out_CONTEXT_EVENT_IS_DELAY_SLOT        );
    199   INSTANCE_SC_SIGNAL (_Decod,out_CONTEXT_EVENT_ADDRESS              );
    200   INSTANCE_SC_SIGNAL (_Decod,out_CONTEXT_EVENT_ADDRESS_EPCR         );
     196  INSTANCE0_SC_SIGNAL(_Decod,out_CONTEXT_EVENT_DEPTH                );
     197  INSTANCE0_SC_SIGNAL(_Decod,out_CONTEXT_EVENT_TYPE                 );
     198  INSTANCE0_SC_SIGNAL(_Decod,out_CONTEXT_EVENT_IS_DELAY_SLOT        );
     199  INSTANCE0_SC_SIGNAL(_Decod,out_CONTEXT_EVENT_ADDRESS              );
     200  INSTANCE0_SC_SIGNAL(_Decod,out_CONTEXT_EVENT_ADDRESS_EPCR         );
    201201
    202202  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/include/Parameters.h

    r88 r112  
    2323namespace decod {
    2424
     25    const uint32_t nb_opcod_type = 14;
     26    const uint32_t tab_opcod_type [] = {MAX_OPCOD_0,
     27                                        MAX_OPCOD_1 ,
     28                                        MAX_OPCOD_2 ,
     29                                        MAX_OPCOD_3 ,
     30                                        MAX_OPCOD_4 ,
     31                                        MAX_OPCOD_5 ,
     32                                        MAX_OPCOD_6 ,
     33                                        MAX_OPCOD_7 ,
     34                                        MAX_OPCOD_8 ,
     35                                        MAX_OPCOD_9 ,
     36                                        MAX_OPCOD_10,
     37                                        MAX_OPCOD_11,
     38                                        MAX_OPCOD_12,
     39                                        MAX_OPCOD_13};
     40
    2541  class Parameters : public morpheo::behavioural::Parameters
    2642  {
     
    3753  public : bool             ** _instruction_implemeted       ; //[nb_context][nb_instruction]
    3854  public : morpheo::behavioural::custom::custom_information_t (*_get_custom_information) (void);
    39    
     55
    4056  public : uint32_t            _max_nb_inst_fetch;
    4157//public : uint32_t            _size_address_inst;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_allocation.cpp

    r110 r112  
    5858    // ~~~~~[ Interface : "ifetch" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC2_INTERFACE("ifetch", IN, WEST, "Instruction's bundle", _param->_nb_context, _param->_nb_inst_fetch[it1]);
     60      ALLOC2_INTERFACE_BEGIN("ifetch", IN, WEST, _("Instruction's bundle"), _param->_nb_context, _param->_nb_inst_fetch[it1]);
    6161
    6262     
     
    6464      _ALLOC2_VALACK_OUT(out_IFETCH_ACK        ,ACK, _param->_nb_context, _param->_nb_inst_fetch[it1]);
    6565      _ALLOC2_SIGNAL_IN ( in_IFETCH_INSTRUCTION,"instruction", Tinstruction_t, _param->_size_instruction,_param->_nb_context, _param->_nb_inst_fetch[it1]);
    66     }
    67     {
    68       ALLOC1_INTERFACE("ifetch", IN, WEST, "Instruction's bundle", _param->_nb_context);
     66
     67      ALLOC2_INTERFACE_END(_param->_nb_context, _param->_nb_inst_fetch[it1]);
     68    }
     69    {
     70      ALLOC1_INTERFACE_BEGIN("ifetch", IN, WEST, _("Instruction's bundle"), _param->_nb_context);
    6971     
     72
    7073      ALLOC1_SIGNAL_IN (in_IFETCH_CONTEXT_ID                 ,"context_id"                 ,Tcontext_t         ,_param->_size_context_id      );
    7174      ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS                    ,"address"                    ,Tgeneral_address_t ,_param->_size_instruction_address    );
     
    7578      ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t  ,_param->_size_depth           );
    7679      ALLOC1_SIGNAL_IN (in_IFETCH_EXCEPTION                  ,"exception"                  ,Texception_t       ,_param->_size_exception_ifetch);
     80
     81      ALLOC1_INTERFACE_END(_param->_nb_context);
    7782    }
    7883
    7984    // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
    8085    {
    81       ALLOC1_INTERFACE("decod", OUT, EAST, "Instructiont decoded", _param->_nb_inst_decod);
     86      ALLOC1_INTERFACE_BEGIN("decod", OUT, EAST, _("Instructiont decoded"), _param->_nb_inst_decod);
    8287
    8388      ALLOC1_VALACK_OUT(out_DECOD_VAL          ,VAL);
     
    107112      ALLOC1_SIGNAL_OUT(out_DECOD_EXCEPTION_USE,"exception_use",Texception_t      ,_param->_size_exception_use         );
    108113      ALLOC1_SIGNAL_OUT(out_DECOD_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception_decod       );
     114
     115      ALLOC1_INTERFACE_END(_param->_nb_inst_decod);
    109116    }
    110117
    111118    // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    112119    {
    113       ALLOC1_INTERFACE("predict",OUT,NORTH,"Decod a branch -> inform the branch predictor.",_param->_nb_inst_decod);
     120      ALLOC1_INTERFACE_BEGIN("predict",OUT,NORTH,_("Decod a branch -> inform the branch predictor."),_param->_nb_inst_decod);
    114121
    115122      ALLOC1_VALACK_OUT(out_PREDICT_VAL                        ,VAL);
     
    125132      ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_DEST               ,"address_dest"               ,Tgeneral_data_t    ,_param->_size_instruction_address    );
    126133      ALLOC1_SIGNAL_IN ( in_PREDICT_CAN_CONTINUE               ,"can_continue"               ,Tcontrol_t         ,1                             );
     134
     135      ALLOC1_INTERFACE_END(_param->_nb_inst_decod);
    127136    }
    128137   
    129138    // ~~~~~[ Interface : "context" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    130139    {
    131       ALLOC1_INTERFACE("context", IN, NORTH, "context's information", _param->_nb_context);
     140      ALLOC1_INTERFACE_BEGIN("context", IN, NORTH, _("context's information"), _param->_nb_context);
    132141
    133142      ALLOC1_SIGNAL_IN (in_CONTEXT_DECOD_ENABLE,"decod_enable",Tcontrol_t,1);
    134143      ALLOC1_SIGNAL_IN (in_CONTEXT_DEPTH_VAL   ,"depth_val"   ,Tcontrol_t,1);
    135144      ALLOC1_SIGNAL_IN (in_CONTEXT_DEPTH       ,"depth"       ,Tdepth_t  ,_param->_size_depth);
     145
     146      ALLOC1_INTERFACE_END(_param->_nb_context);
    136147    }
    137148
    138149    // ~~~~~[ Interface : "context_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
    139150    {
    140       ALLOC_INTERFACE("context_event", OUT, NORTH, "context's evenement");
    141 
    142       ALLOC_VALACK_OUT(out_CONTEXT_EVENT_VAL          ,VAL);
    143       ALLOC_VALACK_IN ( in_CONTEXT_EVENT_ACK          ,ACK);
    144       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_CONTEXT_ID   ,"context_id"   ,Tcontext_t     ,_param->_size_context_id  );
    145       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_DEPTH        ,"depth"        ,Tdepth_t       ,_param->_size_depth       );
    146       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_TYPE         ,"type"         ,Tevent_type_t  ,_param->_size_event_type  );
    147       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_IS_DELAY_SLOT,"is_delay_slot",Tcontrol_t     ,1                         );
    148       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS      ,"address"      ,Tgeneral_data_t,_param->_size_instruction_address);
    149       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Tgeneral_data_t,_param->_size_instruction_address);
     151      ALLOC0_INTERFACE_BEGIN("context_event", OUT, NORTH, _("context's evenement"));
     152
     153      ALLOC0_VALACK_OUT(out_CONTEXT_EVENT_VAL          ,VAL);
     154      ALLOC0_VALACK_IN ( in_CONTEXT_EVENT_ACK          ,ACK);
     155      ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_CONTEXT_ID   ,"context_id"   ,Tcontext_t     ,_param->_size_context_id  );
     156      ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_DEPTH        ,"depth"        ,Tdepth_t       ,_param->_size_depth       );
     157      ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_TYPE         ,"type"         ,Tevent_type_t  ,_param->_size_event_type  );
     158      ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_IS_DELAY_SLOT,"is_delay_slot",Tcontrol_t     ,1                         );
     159      ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS      ,"address"      ,Tgeneral_data_t,_param->_size_instruction_address);
     160      ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Tgeneral_data_t,_param->_size_instruction_address);
     161
     162      ALLOC0_INTERFACE_END();
    150163    }
    151164
     
    154167    if (usage_is_set(_usage,USE_SYSTEMC))
    155168      {
    156     reg_CONTEXT_ADDRESS_PREVIOUS      = new Tgeneral_data_t [_param->_nb_context];
    157     reg_CONTEXT_IS_DELAY_SLOT         = new Tcontrol_t      [_param->_nb_context];
    158 
    159     internal_CONTEXT_HAVE_TRANSACTION = new Tcontrol_t      [_param->_nb_context];
    160     internal_CONTEXT_ADDRESS_PREVIOUS = new Tgeneral_data_t [_param->_nb_context];
    161     internal_CONTEXT_IS_DELAY_SLOT    = new Tcontrol_t      [_param->_nb_context];
     169    ALLOC1(reg_CONTEXT_ADDRESS_PREVIOUS      ,Tgeneral_data_t,_param->_nb_context);
     170    ALLOC1(reg_CONTEXT_IS_DELAY_SLOT         ,Tcontrol_t     ,_param->_nb_context);
     171
     172    ALLOC1(internal_CONTEXT_HAVE_TRANSACTION ,Tcontrol_t     ,_param->_nb_context);
     173    ALLOC1(internal_CONTEXT_ADDRESS_PREVIOUS ,Tgeneral_data_t,_param->_nb_context);
     174    ALLOC1(internal_CONTEXT_IS_DELAY_SLOT    ,Tcontrol_t     ,_param->_nb_context);
    162175
    163176#ifdef STATISTICS
    164     internal_DECOD_VAL                = new Tcontrol_t      [_param->_nb_inst_decod];
     177    ALLOC1(internal_DECOD_VAL                ,Tcontrol_t     ,_param->_nb_inst_decod);
    165178#endif
    166179      }
     
    174187                                                 _param->_nb_context_select);
    175188
    176     const uint32_t nb_opcod_type = 14;
    177     const uint32_t tab_opcod_type [] = {MAX_OPCOD_0,
    178                                         MAX_OPCOD_1 ,
    179                                         MAX_OPCOD_2 ,
    180                                         MAX_OPCOD_3 ,
    181                                         MAX_OPCOD_4 ,
    182                                         MAX_OPCOD_5 ,
    183                                         MAX_OPCOD_6 ,
    184                                         MAX_OPCOD_7 ,
    185                                         MAX_OPCOD_8 ,
    186                                         MAX_OPCOD_9 ,
    187                                         MAX_OPCOD_10,
    188                                         MAX_OPCOD_11,
    189                                         MAX_OPCOD_12,
    190                                         MAX_OPCOD_13};
    191    
    192     _function_decod  = new function_decod_t *** [_param->_nb_context];
    193     _function_custom = new function_decod_t *** [_param->_nb_context];
     189    ALLOC3(_function_decod ,function_decod_t *,_param->_nb_context,nb_opcod_type,tab_opcod_type[it2]);
     190    ALLOC3(_function_custom,function_decod_t *,_param->_nb_context,nb_opcod_type,tab_opcod_type[it2]);
     191
    194192    for (uint32_t i=0; i<_param->_nb_context; i++)
    195193      {
    196         _function_decod  [i] = new function_decod_t ** [nb_opcod_type];
    197         _function_custom [i] = new function_decod_t ** [nb_opcod_type];
    198194        for (uint32_t j=0; j<nb_opcod_type; j++)
    199           {
    200             _function_decod  [i][j] = new function_decod_t * [tab_opcod_type[j]];
    201             _function_custom [i][j] = new function_decod_t * [tab_opcod_type[j]];
    202             for (uint32_t k=0; k<tab_opcod_type[j]; k++)
    203               {
    204                 _function_decod  [i][j][k] = &(instruction_illegal);
    205                 _function_custom [i][j][k] = &(instruction_illegal);
    206               }
    207           }
     195          for (uint32_t k=0; k<tab_opcod_type[j]; k++)
     196            {
     197              _function_decod  [i][j][k] = &(instruction_illegal);
     198              _function_custom [i][j][k] = &(instruction_illegal);
     199            }
    208200
    209201        // Create indirection
     
    454446      }
    455447
    456     _decod_instruction = new decod_instruction_t;
    457 
    458     _decod_param = new decod_param_t * [_param->_nb_context];
     448    ALLOC0(_decod_instruction,decod_instruction_t);
     449    ALLOC1(_decod_param,decod_param_t *,_param->_nb_context);
     450
    459451    for (uint32_t i=0; i<_param->_nb_context; i++)
    460452      _decod_param [i] = new decod_param_t (_param->_size_general_data,
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_deallocation.cpp

    r110 r112  
    8585        DELETE1_SIGNAL(in_CONTEXT_DEPTH       , _param->_nb_context,_param->_size_depth);
    8686
    87         DELETE_SIGNAL (out_CONTEXT_EVENT_VAL          ,1);
    88         DELETE_SIGNAL ( in_CONTEXT_EVENT_ACK          ,1);
    89         DELETE_SIGNAL (out_CONTEXT_EVENT_CONTEXT_ID   ,_param->_size_context_id  );
    90         DELETE_SIGNAL (out_CONTEXT_EVENT_DEPTH        ,_param->_size_depth       );
    91         DELETE_SIGNAL (out_CONTEXT_EVENT_TYPE         ,_param->_size_event_type  );
    92         DELETE_SIGNAL (out_CONTEXT_EVENT_IS_DELAY_SLOT,1                         );
    93         DELETE_SIGNAL (out_CONTEXT_EVENT_ADDRESS      ,_param->_size_instruction_address);
    94         DELETE_SIGNAL (out_CONTEXT_EVENT_ADDRESS_EPCR ,_param->_size_instruction_address);
     87        DELETE0_SIGNAL(out_CONTEXT_EVENT_VAL          ,1);
     88        DELETE0_SIGNAL( in_CONTEXT_EVENT_ACK          ,1);
     89        DELETE0_SIGNAL(out_CONTEXT_EVENT_CONTEXT_ID   ,_param->_size_context_id  );
     90        DELETE0_SIGNAL(out_CONTEXT_EVENT_DEPTH        ,_param->_size_depth       );
     91        DELETE0_SIGNAL(out_CONTEXT_EVENT_TYPE         ,_param->_size_event_type  );
     92        DELETE0_SIGNAL(out_CONTEXT_EVENT_IS_DELAY_SLOT,1                         );
     93        DELETE0_SIGNAL(out_CONTEXT_EVENT_ADDRESS      ,_param->_size_instruction_address);
     94        DELETE0_SIGNAL(out_CONTEXT_EVENT_ADDRESS_EPCR ,_param->_size_instruction_address);
    9595
    9696
    97    
    98         delete    reg_CONTEXT_ADDRESS_PREVIOUS      ;
    99         delete [] reg_CONTEXT_IS_DELAY_SLOT         ;
    100        
    101         delete [] internal_CONTEXT_HAVE_TRANSACTION ;
    102         delete [] internal_CONTEXT_ADDRESS_PREVIOUS ;
    103         delete [] internal_CONTEXT_IS_DELAY_SLOT    ;
    104        
     97        DELETE1(reg_CONTEXT_ADDRESS_PREVIOUS      ,_param->_nb_context);
     98        DELETE1(reg_CONTEXT_IS_DELAY_SLOT         ,_param->_nb_context);
     99        DELETE1(internal_CONTEXT_HAVE_TRANSACTION ,_param->_nb_context);
     100        DELETE1(internal_CONTEXT_ADDRESS_PREVIOUS ,_param->_nb_context);
     101        DELETE1(internal_CONTEXT_IS_DELAY_SLOT    ,_param->_nb_context);
     102
    105103#ifdef STATISTICS
    106         delete [] internal_DECOD_VAL;
     104        DELETE1(internal_DECOD_VAL                ,_param->_nb_inst_decod);
    107105#endif
    108106      }
     
    111109    delete    _priority;
    112110
    113 
    114     const uint32_t nb_opcod_type = 14;
     111    DELETE3(_function_decod   ,_param->_nb_context,nb_opcod_type,tab_opcod_type[it2]);
     112    DELETE3(_function_custom  ,_param->_nb_context,nb_opcod_type,tab_opcod_type[it2]);
     113    DELETE0(_decod_instruction);
    115114
    116115    for (uint32_t i=0; i<_param->_nb_context; i++)
    117       {
    118         for (uint32_t j=0; j<nb_opcod_type; j++)
    119           {
    120             delete [] _function_decod  [i][j];
    121             delete [] _function_custom [i][j];
    122           }
    123         delete [] _function_decod  [i];
    124         delete [] _function_custom [i];
    125       }
    126     delete [] _function_decod ;
    127     delete [] _function_custom;
    128     delete    _decod_instruction;
    129     delete    _decod_param      ;
     116      delete _decod_param [i];
     117    DELETE1(_decod_param      ,_param->_nb_context);
     118
    130119    delete    _component;
    131120
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Types.h

    r111 r112  
    1010
    1111#include "Behavioural/include/Types.h"
     12#include "Behavioural/include/Allocation.h"
    1213
    1314namespace morpheo {
     
    5859    _nb_inst (nb_inst)
    5960    {
    60       _val            = new Tcontrol_t         [_nb_inst];
    61       _context_id     = new Tcontext_t         [_nb_inst];
    62       _depth          = new Tdepth_t           [_nb_inst];
    63       _type           = new Ttype_t            [_nb_inst];
    64       _operation      = new Toperation_t       [_nb_inst];
    65       _no_execute     = new Tcontrol_t         [_nb_inst];
    66       _is_delay_slot  = new Tcontrol_t         [_nb_inst];
     61      ALLOC1(_val            ,Tcontrol_t         ,_nb_inst);
     62      ALLOC1(_context_id     ,Tcontext_t         ,_nb_inst);
     63      ALLOC1(_depth          ,Tdepth_t           ,_nb_inst);
     64      ALLOC1(_type           ,Ttype_t            ,_nb_inst);
     65      ALLOC1(_operation      ,Toperation_t       ,_nb_inst);
     66      ALLOC1(_no_execute     ,Tcontrol_t         ,_nb_inst);
     67      ALLOC1(_is_delay_slot  ,Tcontrol_t         ,_nb_inst);
    6768#ifdef DEBUG
    68       _address        = new Tgeneral_data_t    [_nb_inst];
     69      ALLOC1(_address        ,Tgeneral_data_t    ,_nb_inst);
    6970#endif
    70       _address_next   = new Tgeneral_data_t    [_nb_inst];
    71       _has_immediat   = new Tcontrol_t         [_nb_inst];
    72       _immediat       = new Tgeneral_data_t    [_nb_inst];
    73       _read_ra        = new Tcontrol_t         [_nb_inst];
    74       _num_reg_ra     = new Tgeneral_address_t [_nb_inst];
    75       _read_rb        = new Tcontrol_t         [_nb_inst];
    76       _num_reg_rb     = new Tgeneral_address_t [_nb_inst];
    77       _read_rc        = new Tcontrol_t         [_nb_inst];
    78       _num_reg_rc     = new Tspecial_address_t [_nb_inst];
    79       _write_rd       = new Tcontrol_t         [_nb_inst];
    80       _num_reg_rd     = new Tgeneral_address_t [_nb_inst];
    81       _write_re       = new Tcontrol_t         [_nb_inst];
    82       _num_reg_re     = new Tspecial_address_t [_nb_inst];
    83       _exception_use  = new Texception_t       [_nb_inst];
    84       _exception      = new Texception_t       [_nb_inst];
     71      ALLOC1(_address_next   ,Tgeneral_data_t    ,_nb_inst);
     72      ALLOC1(_has_immediat   ,Tcontrol_t         ,_nb_inst);
     73      ALLOC1(_immediat       ,Tgeneral_data_t    ,_nb_inst);
     74      ALLOC1(_read_ra        ,Tcontrol_t         ,_nb_inst);
     75      ALLOC1(_num_reg_ra     ,Tgeneral_address_t ,_nb_inst);
     76      ALLOC1(_read_rb        ,Tcontrol_t         ,_nb_inst);
     77      ALLOC1(_num_reg_rb     ,Tgeneral_address_t ,_nb_inst);
     78      ALLOC1(_read_rc        ,Tcontrol_t         ,_nb_inst);
     79      ALLOC1(_num_reg_rc     ,Tspecial_address_t ,_nb_inst);
     80      ALLOC1(_write_rd       ,Tcontrol_t         ,_nb_inst);
     81      ALLOC1(_num_reg_rd     ,Tgeneral_address_t ,_nb_inst);
     82      ALLOC1(_write_re       ,Tcontrol_t         ,_nb_inst);
     83      ALLOC1(_num_reg_re     ,Tspecial_address_t ,_nb_inst);
     84      ALLOC1(_exception_use  ,Texception_t       ,_nb_inst);
     85      ALLOC1(_exception      ,Texception_t       ,_nb_inst);
    8586
    8687      for (uint32_t i=0; i<_nb_inst; i++)
     
    9091  public : ~decod_queue_entry_t (void)
    9192    {
    92       delete [] _val            ;
    93       delete [] _context_id     ;
    94       delete [] _depth          ;
    95       delete [] _type           ;
    96       delete [] _operation      ;
    97       delete [] _no_execute     ;
    98       delete [] _is_delay_slot  ;
     93      DELETE1(_val            ,_nb_inst);
     94      DELETE1(_context_id     ,_nb_inst);
     95      DELETE1(_depth          ,_nb_inst);
     96      DELETE1(_type           ,_nb_inst);
     97      DELETE1(_operation      ,_nb_inst);
     98      DELETE1(_no_execute     ,_nb_inst);
     99      DELETE1(_is_delay_slot  ,_nb_inst);
    99100#ifdef DEBUG
    100       delete [] _address        ;
     101      DELETE1(_address        ,_nb_inst);
    101102#endif
    102       delete [] _address_next   ;
    103       delete [] _has_immediat   ;
    104       delete [] _immediat       ;
    105       delete [] _read_ra        ;
    106       delete [] _num_reg_ra     ;
    107       delete [] _read_rb        ;
    108       delete [] _num_reg_rb     ;
    109       delete [] _read_rc        ;
    110       delete [] _num_reg_rc     ;
    111       delete [] _write_rd       ;
    112       delete [] _num_reg_rd     ;
    113       delete [] _write_re       ;
    114       delete [] _num_reg_re     ;
    115       delete [] _exception_use  ;
    116       delete [] _exception      ;
     103      DELETE1(_address_next   ,_nb_inst);
     104      DELETE1(_has_immediat   ,_nb_inst);
     105      DELETE1(_immediat       ,_nb_inst);
     106      DELETE1(_read_ra        ,_nb_inst);
     107      DELETE1(_num_reg_ra     ,_nb_inst);
     108      DELETE1(_read_rb        ,_nb_inst);
     109      DELETE1(_num_reg_rb     ,_nb_inst);
     110      DELETE1(_read_rc        ,_nb_inst);
     111      DELETE1(_num_reg_rc     ,_nb_inst);
     112      DELETE1(_write_rd       ,_nb_inst);
     113      DELETE1(_num_reg_rd     ,_nb_inst);
     114      DELETE1(_write_re       ,_nb_inst);
     115      DELETE1(_num_reg_re     ,_nb_inst);
     116      DELETE1(_exception_use  ,_nb_inst);
     117      DELETE1(_exception      ,_nb_inst);
    117118    }
    118119  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_allocation.cpp

    r111 r112  
    5757    // ~~~~~[ Interface : "decod_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5858    {
    59       ALLOC1_INTERFACE("decod_in",IN ,WEST,"Input of decod_queue", _param->_nb_inst_decod);
     59      ALLOC1_INTERFACE_BEGIN("decod_in",IN ,WEST,_("Input of decod_queue"), _param->_nb_inst_decod);
    6060
    6161      ALLOC1_VALACK_IN ( in_DECOD_IN_VAL            ,VAL);
     
    8585      ALLOC1_SIGNAL_IN ( in_DECOD_IN_EXCEPTION_USE  ,"exception_use",Texception_t       ,_param->_size_exception_use         );
    8686      ALLOC1_SIGNAL_IN ( in_DECOD_IN_EXCEPTION      ,"exception"    ,Texception_t       ,_param->_size_exception_decod       );
     87
     88      ALLOC1_INTERFACE_END(_param->_nb_inst_decod);
    8789    }
    8890
    8991    // ~~~~~[ Interface : "decod_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    9092    {
    91       ALLOC1_INTERFACE("decod_out",OUT,EAST,"Output of decod_queue", _param->_nb_inst_decod);
     93      ALLOC1_INTERFACE_BEGIN("decod_out",OUT,EAST,_("Output of decod_queue"), _param->_nb_inst_decod);
    9294
    9395      ALLOC1_VALACK_OUT(out_DECOD_OUT_VAL            ,VAL);
     
    117119      ALLOC1_SIGNAL_OUT(out_DECOD_OUT_EXCEPTION_USE  ,"exception_use",Texception_t       ,_param->_size_exception_use         );
    118120      ALLOC1_SIGNAL_OUT(out_DECOD_OUT_EXCEPTION      ,"exception"    ,Texception_t       ,_param->_size_exception_decod       );
     121
     122      ALLOC1_INTERFACE_END(_param->_nb_inst_decod);
    119123    }
    120124
    121125    // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
    122126    {
    123       ALLOC1_INTERFACE("depth",IN ,NORTH,"Depth", _param->_nb_context);
     127      ALLOC1_INTERFACE_BEGIN("depth",IN ,NORTH,_("Depth"), _param->_nb_context);
    124128
    125129      ALLOC1_SIGNAL_IN ( in_DEPTH_MIN      ,"min"      ,Tdepth_t           ,_param->_size_depth);
    126130      ALLOC1_SIGNAL_IN ( in_DEPTH_MAX      ,"max"      ,Tdepth_t           ,_param->_size_depth);
    127131      ALLOC1_SIGNAL_IN ( in_DEPTH_FULL     ,"full"     ,Tcontrol_t         ,1);
     132
     133      ALLOC1_INTERFACE_END(_param->_nb_context);
    128134    }
    129135
    130136    // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
    131137    {
    132       ALLOC1_INTERFACE("nb_inst",OUT,NORTH,"Instruction's number", _param->_nb_context);
     138      ALLOC1_INTERFACE_BEGIN("nb_inst",OUT,NORTH,_("Instruction's number"), _param->_nb_context);
    133139
    134140      ALLOC1_SIGNAL_OUT(out_NB_INST_ALL    ,"all"      ,Tcontext_t         ,_param->_size_nb_inst_decod);
     141
     142      ALLOC1_INTERFACE_END(_param->_nb_context);
    135143    }
    136144
     
    140148    switch (_param->_queue_scheme)
    141149      {
    142       case DECOD_QUEUE_SCHEME_ONE_FIFO   : reg_QUEUE = new std::list<decod_queue_entry_t*>; break;
     150      case DECOD_QUEUE_SCHEME_ONE_FIFO   : ALLOC0(reg_QUEUE,std::list<decod_queue_entry_t*>); break;
    143151      case DECOD_QUEUE_SCHEME_MULTI_FIFO : ALLOC1(reg_QUEUE,std::list<decod_queue_entry_t*>,_param->_nb_bank); break;
    144152      }
    145     reg_NB_INST            = new uint32_t   [_param->_nb_context];
     153
     154    ALLOC1(reg_NB_INST,uint32_t,_param->_nb_context);
    146155
    147156    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    148     internal_DECOD_IN_ACK  = new Tcontrol_t [_param->_nb_inst_decod];
    149     internal_DECOD_OUT_VAL = new Tcontrol_t [_param->_nb_inst_decod];
    150     internal_DECOD_OUT_ACK = new Tcontrol_t [_param->_nb_inst_decod];
     157    ALLOC1(internal_DECOD_IN_ACK ,Tcontrol_t,_param->_nb_inst_decod);
     158    ALLOC1(internal_DECOD_OUT_VAL,Tcontrol_t,_param->_nb_inst_decod);
     159    ALLOC1(internal_DECOD_OUT_ACK,Tcontrol_t,_param->_nb_inst_decod);
    151160      }
    152161   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_deallocation.cpp

    r111 r112  
    9292        switch (_param->_queue_scheme)
    9393          {
    94           case DECOD_QUEUE_SCHEME_ONE_FIFO   : delete reg_QUEUE; break;
    95           case DECOD_QUEUE_SCHEME_MULTI_FIFO : DELETE1(reg_QUEUE,_param->_nb_bank); break;
    96           }
    97         delete [] reg_NB_INST;
     94          case DECOD_QUEUE_SCHEME_ONE_FIFO   :
     95            {
     96              while (not reg_QUEUE->empty())
     97                {
     98                  delete reg_QUEUE->front();
     99                  reg_QUEUE->pop_front();
     100                }
     101
     102              DELETE0(reg_QUEUE);
     103              break;
     104            }
     105          case DECOD_QUEUE_SCHEME_MULTI_FIFO :
     106            {
     107              for (uint32_t i=0; i<_param->_nb_bank; ++i)
     108                while (not reg_QUEUE[i].empty())
     109                  {
     110                    delete reg_QUEUE[i].front();
     111                    reg_QUEUE[i].pop_front();
     112                  }
     113
     114              DELETE1(reg_QUEUE,_param->_nb_bank); break;
     115            }
     116          }
     117
     118        DELETE1(reg_NB_INST ,_param->_nb_context);
    98119       
    99120        // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    100         delete [] internal_DECOD_IN_ACK ;
    101         delete [] internal_DECOD_OUT_VAL;
    102         delete [] internal_DECOD_OUT_ACK;
     121        DELETE1(internal_DECOD_IN_ACK ,_param->_nb_inst_decod);
     122        DELETE1(internal_DECOD_OUT_VAL,_param->_nb_inst_decod);
     123        DELETE1(internal_DECOD_OUT_ACK,_param->_nb_inst_decod);
    103124      }
    104125
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_multi_fifo_transition.cpp

    r111 r112  
    2828      {
    2929        for (uint32_t i=0; i<_param->_nb_bank; ++i)
    30           reg_QUEUE[i].clear();
     30          while (not reg_QUEUE[i].empty())
     31            {
     32              delete reg_QUEUE[i].front();
     33              reg_QUEUE[i].pop_front();
     34            }
    3135
    3236        for (uint32_t i=0; i<_param->_nb_context; i++)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_one_fifo_transition.cpp

    r111 r112  
    2727    if (PORT_READ(in_NRESET) == 0)
    2828      {
    29         reg_QUEUE->clear();
     29        while (not reg_QUEUE->empty())
     30          {
     31            delete reg_QUEUE->front();
     32            reg_QUEUE->pop_front();
     33          }
    3034
    3135        for (uint32_t i=0; i<_param->_nb_context; i++)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/SelfTest/src/test.cpp

    r110 r112  
    115115  ALLOC1_SC_SIGNAL( in_CONTEXT_DEPTH                      ," in_CONTEXT_DEPTH                      ",Tdepth_t           ,_param->_nb_context);
    116116
    117   ALLOC_SC_SIGNAL( out_CONTEXT_EVENT_VAL                  ,"out_CONTEXT_EVENT_VAL                  ",Tcontrol_t         );
    118   ALLOC_SC_SIGNAL(  in_CONTEXT_EVENT_ACK                  ," in_CONTEXT_EVENT_ACK                  ",Tcontrol_t         );
    119   ALLOC_SC_SIGNAL( out_CONTEXT_EVENT_CONTEXT_ID           ,"out_CONTEXT_EVENT_CONTEXT_ID           ",Tcontext_t         );
    120   ALLOC_SC_SIGNAL( out_CONTEXT_EVENT_DEPTH                ,"out_CONTEXT_EVENT_DEPTH                ",Tdepth_t           );
    121   ALLOC_SC_SIGNAL( out_CONTEXT_EVENT_TYPE                 ,"out_CONTEXT_EVENT_TYPE                 ",Tevent_type_t      );
    122   ALLOC_SC_SIGNAL( out_CONTEXT_EVENT_IS_DELAY_SLOT        ,"out_CONTEXT_EVENT_IS_DELAY_SLOT        ",Tcontrol_t         );
    123   ALLOC_SC_SIGNAL( out_CONTEXT_EVENT_ADDRESS              ,"out_CONTEXT_EVENT_ADDRESS              ",Tgeneral_data_t    );
    124   ALLOC_SC_SIGNAL( out_CONTEXT_EVENT_ADDRESS_EPCR         ,"out_CONTEXT_EVENT_ADDRESS_EPCR         ",Tgeneral_data_t    );
     117  ALLOC0_SC_SIGNAL( out_CONTEXT_EVENT_VAL                  ,"out_CONTEXT_EVENT_VAL                  ",Tcontrol_t         );
     118  ALLOC0_SC_SIGNAL(  in_CONTEXT_EVENT_ACK                  ," in_CONTEXT_EVENT_ACK                  ",Tcontrol_t         );
     119  ALLOC0_SC_SIGNAL( out_CONTEXT_EVENT_CONTEXT_ID           ,"out_CONTEXT_EVENT_CONTEXT_ID           ",Tcontext_t         );
     120  ALLOC0_SC_SIGNAL( out_CONTEXT_EVENT_DEPTH                ,"out_CONTEXT_EVENT_DEPTH                ",Tdepth_t           );
     121  ALLOC0_SC_SIGNAL( out_CONTEXT_EVENT_TYPE                 ,"out_CONTEXT_EVENT_TYPE                 ",Tevent_type_t      );
     122  ALLOC0_SC_SIGNAL( out_CONTEXT_EVENT_IS_DELAY_SLOT        ,"out_CONTEXT_EVENT_IS_DELAY_SLOT        ",Tcontrol_t         );
     123  ALLOC0_SC_SIGNAL( out_CONTEXT_EVENT_ADDRESS              ,"out_CONTEXT_EVENT_ADDRESS              ",Tgeneral_data_t    );
     124  ALLOC0_SC_SIGNAL( out_CONTEXT_EVENT_ADDRESS_EPCR         ,"out_CONTEXT_EVENT_ADDRESS_EPCR         ",Tgeneral_data_t    );
    125125 
    126126  /********************************************************
     
    144144    {
    145145      if (_param->_have_port_inst_ifetch_ptr)
    146         INSTANCE_SC_SIGNAL(_Decod_unit,in_IFETCH_INST_IFETCH_PTR[i]);
     146        INSTANCE0_SC_SIGNAL(_Decod_unit,in_IFETCH_INST_IFETCH_PTR[i]);
    147147      if (_param->_have_port_depth)
    148         INSTANCE_SC_SIGNAL(_Decod_unit,in_IFETCH_BRANCH_UPDATE_PREDICTION_ID [i]);
     148        INSTANCE0_SC_SIGNAL(_Decod_unit,in_IFETCH_BRANCH_UPDATE_PREDICTION_ID [i]);
    149149    }
    150150
     
    210210  INSTANCE1_SC_SIGNAL(_Decod_unit, in_CONTEXT_DEPTH                      ,_param->_nb_context);
    211211
    212   INSTANCE_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_VAL                  );
    213   INSTANCE_SC_SIGNAL( _Decod_unit, in_CONTEXT_EVENT_ACK                  );
     212  INSTANCE0_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_VAL                  );
     213  INSTANCE0_SC_SIGNAL( _Decod_unit, in_CONTEXT_EVENT_ACK                  );
    214214  if (_param->_have_port_context_id)
    215   INSTANCE_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_CONTEXT_ID           );
     215  INSTANCE0_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_CONTEXT_ID           );
    216216  if (_param->_have_port_depth)
    217   INSTANCE_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_DEPTH                );
    218   INSTANCE_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_TYPE                 );
    219   INSTANCE_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_IS_DELAY_SLOT        );
    220   INSTANCE_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_ADDRESS              );
    221   INSTANCE_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_ADDRESS_EPCR         );
     217  INSTANCE0_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_DEPTH                );
     218  INSTANCE0_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_TYPE                 );
     219  INSTANCE0_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_IS_DELAY_SLOT        );
     220  INSTANCE0_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_ADDRESS              );
     221  INSTANCE0_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_ADDRESS_EPCR         );
    222222
    223223  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
     
    538538  DELETE1_SC_SIGNAL( in_CONTEXT_DEPTH                      ,_param->_nb_context);
    539539
    540   DELETE_SC_SIGNAL( out_CONTEXT_EVENT_VAL                  );
    541   DELETE_SC_SIGNAL( in_CONTEXT_EVENT_ACK                  );
    542   DELETE_SC_SIGNAL( out_CONTEXT_EVENT_CONTEXT_ID           );
    543   DELETE_SC_SIGNAL( out_CONTEXT_EVENT_DEPTH                );
    544   DELETE_SC_SIGNAL( out_CONTEXT_EVENT_TYPE                 );
    545   DELETE_SC_SIGNAL( out_CONTEXT_EVENT_IS_DELAY_SLOT        );
    546   DELETE_SC_SIGNAL( out_CONTEXT_EVENT_ADDRESS              );
    547   DELETE_SC_SIGNAL( out_CONTEXT_EVENT_ADDRESS_EPCR         );
     540  DELETE0_SC_SIGNAL(out_CONTEXT_EVENT_VAL                  );
     541  DELETE0_SC_SIGNAL( in_CONTEXT_EVENT_ACK                  );
     542  DELETE0_SC_SIGNAL(out_CONTEXT_EVENT_CONTEXT_ID           );
     543  DELETE0_SC_SIGNAL(out_CONTEXT_EVENT_DEPTH                );
     544  DELETE0_SC_SIGNAL(out_CONTEXT_EVENT_TYPE                 );
     545  DELETE0_SC_SIGNAL(out_CONTEXT_EVENT_IS_DELAY_SLOT        );
     546  DELETE0_SC_SIGNAL(out_CONTEXT_EVENT_ADDRESS              );
     547  DELETE0_SC_SIGNAL(out_CONTEXT_EVENT_ADDRESS_EPCR         );
    548548    }
    549549#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_allocation.cpp

    r110 r112  
    5858    // ~~~~~[ Interface : "ifetch" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC2_INTERFACE("ifetch", IN, WEST, "Instruction's bundle", _param->_nb_context, _param->_nb_inst_fetch[it1]);
    61 
     60      ALLOC2_INTERFACE_BEGIN("ifetch", IN, WEST, _("Instruction's bundle"), _param->_nb_context, _param->_nb_inst_fetch[it1]);
    6261     
    6362      _ALLOC2_VALACK_IN ( in_IFETCH_VAL        ,VAL, _param->_nb_context, _param->_nb_inst_fetch[it1]);
    6463      _ALLOC2_VALACK_OUT(out_IFETCH_ACK        ,ACK, _param->_nb_context, _param->_nb_inst_fetch[it1]);
    6564      _ALLOC2_SIGNAL_IN ( in_IFETCH_INSTRUCTION,"instruction", Tinstruction_t, _param->_size_instruction,_param->_nb_context, _param->_nb_inst_fetch[it1]);
    66     }
    67     {
    68       ALLOC1_INTERFACE("ifetch", IN, WEST, "Instruction's bundle", _param->_nb_context);
     65
     66      ALLOC2_INTERFACE_END(_param->_nb_context, _param->_nb_inst_fetch[it1]);
     67    }
     68    {
     69      ALLOC1_INTERFACE_BEGIN("ifetch", IN, WEST, _("Instruction's bundle"), _param->_nb_context);
    6970     
    7071      ALLOC1_SIGNAL_IN (in_IFETCH_CONTEXT_ID                 ,"context_id"                 ,Tcontext_t         ,_param->_size_context_id      );
     
    7576      ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t  ,_param->_size_depth           );
    7677      ALLOC1_SIGNAL_IN (in_IFETCH_EXCEPTION                  ,"exception"                  ,Texception_t       ,_param->_size_exception_ifetch);
     78
     79      ALLOC1_INTERFACE_END(_param->_nb_context);
    7780    }
    7881
    7982    // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
    8083    {
    81       ALLOC1_INTERFACE("decod", OUT, EAST, "Instructiont decoded", _param->_nb_inst_decod);
     84      ALLOC1_INTERFACE_BEGIN("decod", OUT, EAST, _("Instruction decoded"), _param->_nb_inst_decod);
    8285
    8386      ALLOC1_VALACK_OUT(out_DECOD_VAL          ,VAL);
     
    107110      ALLOC1_SIGNAL_OUT(out_DECOD_EXCEPTION_USE,"exception_use",Texception_t      ,_param->_size_exception_use         );
    108111      ALLOC1_SIGNAL_OUT(out_DECOD_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception_decod       );
     112   
     113      ALLOC1_INTERFACE_END(_param->_nb_inst_decod);
    109114    }
    110115
    111116    // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    112117    {
    113       ALLOC1_INTERFACE("predict",OUT,NORTH,"Decod a branch -> inform the branch predictor.",_param->_nb_inst_decod);
     118      ALLOC1_INTERFACE_BEGIN("predict",OUT,NORTH,_("Decod a branch -> inform the branch predictor."),_param->_nb_inst_decod);
    114119
    115120      ALLOC1_VALACK_OUT(out_PREDICT_VAL                        ,VAL);
     
    125130      ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_DEST               ,"address_dest"               ,Tgeneral_data_t    ,_param->_size_instruction_address    );
    126131      ALLOC1_SIGNAL_IN ( in_PREDICT_CAN_CONTINUE               ,"can_continue"               ,Tcontrol_t         ,1                             );
    127     }
    128 
     132   
     133      ALLOC1_INTERFACE_END(_param->_nb_inst_decod);
     134    }
     135   
    129136    // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
    130137    {
    131       ALLOC1_INTERFACE("depth",IN ,NORTH,"Depth", _param->_nb_context);
     138      ALLOC1_INTERFACE_BEGIN("depth",IN ,NORTH,_("Depth"), _param->_nb_context);
    132139
    133140      ALLOC1_SIGNAL_IN ( in_DEPTH_MIN      ,"min"      ,Tdepth_t           ,_param->_size_depth);
    134141      ALLOC1_SIGNAL_IN ( in_DEPTH_MAX      ,"max"      ,Tdepth_t           ,_param->_size_depth);
    135142      ALLOC1_SIGNAL_IN ( in_DEPTH_FULL     ,"full"     ,Tcontrol_t         ,1);
     143
     144      ALLOC1_INTERFACE_END(_param->_nb_context);
    136145    }
    137146
    138147    // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
    139148    {
    140       ALLOC1_INTERFACE("nb_inst",OUT,NORTH,"Instruction's number", _param->_nb_context);
     149      ALLOC1_INTERFACE_BEGIN("nb_inst",OUT,NORTH,_("Instruction's number"), _param->_nb_context);
    141150
    142151      ALLOC1_SIGNAL_OUT(out_NB_INST_DECOD_ALL  ,"decod_all"   ,Tcontext_t         ,_param->_size_nb_inst_decod);
     152
     153      ALLOC1_INTERFACE_END(_param->_nb_context);
    143154    }
    144155   
    145156    // ~~~~~[ Interface : "context" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    146157    {
    147       ALLOC1_INTERFACE("context", IN, NORTH, "context's information", _param->_nb_context);
     158      ALLOC1_INTERFACE_BEGIN("context", IN, NORTH, _("context's information"), _param->_nb_context);
    148159
    149160      ALLOC1_SIGNAL_IN (in_CONTEXT_DECOD_ENABLE,"decod_enable",Tcontrol_t,1);
    150161      ALLOC1_SIGNAL_IN (in_CONTEXT_DEPTH_VAL   ,"depth_val"   ,Tcontrol_t,1);
    151162      ALLOC1_SIGNAL_IN (in_CONTEXT_DEPTH       ,"depth"       ,Tdepth_t  ,_param->_size_depth);
     163
     164      ALLOC1_INTERFACE_END(_param->_nb_context);
    152165    }
    153166
    154167    // ~~~~~[ Interface : "context_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
    155168    {
    156       ALLOC_INTERFACE("context_event", OUT, NORTH, "context's evenement");
    157 
    158       ALLOC_VALACK_OUT(out_CONTEXT_EVENT_VAL          ,VAL);
    159       ALLOC_VALACK_IN ( in_CONTEXT_EVENT_ACK          ,ACK);
    160       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_CONTEXT_ID   ,"context_id"   ,Tcontext_t     ,_param->_size_context_id  );
    161       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_DEPTH        ,"depth"        ,Tdepth_t       ,_param->_size_depth       );
    162       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_TYPE         ,"type"         ,Tevent_type_t  ,_param->_size_event_type  );
    163       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_IS_DELAY_SLOT,"is_delay_slot",Tcontrol_t     ,1                         );
    164       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS      ,"address"      ,Tgeneral_data_t,_param->_size_instruction_address);
    165       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Tgeneral_data_t,_param->_size_instruction_address);
     169      ALLOC0_INTERFACE_BEGIN("context_event", OUT, NORTH, _("context's evenement"));
     170
     171      ALLOC0_VALACK_OUT(out_CONTEXT_EVENT_VAL          ,VAL);
     172      ALLOC0_VALACK_IN ( in_CONTEXT_EVENT_ACK          ,ACK);
     173      ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_CONTEXT_ID   ,"context_id"   ,Tcontext_t     ,_param->_size_context_id  );
     174      ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_DEPTH        ,"depth"        ,Tdepth_t       ,_param->_size_depth       );
     175      ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_TYPE         ,"type"         ,Tevent_type_t  ,_param->_size_event_type  );
     176      ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_IS_DELAY_SLOT,"is_delay_slot",Tcontrol_t     ,1                         );
     177      ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS      ,"address"      ,Tgeneral_data_t,_param->_size_instruction_address);
     178      ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Tgeneral_data_t,_param->_size_instruction_address);
     179
     180      ALLOC0_INTERFACE_END();
    166181    }
    167182   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_deallocation.cpp

    r110 r112  
    8989        DELETE1_SIGNAL(in_CONTEXT_DEPTH                       ,_param->_nb_context,_param->_size_depth);
    9090       
    91         DELETE_SIGNAL(out_CONTEXT_EVENT_VAL                   ,1);
    92         DELETE_SIGNAL( in_CONTEXT_EVENT_ACK                   ,1);
    93         DELETE_SIGNAL(out_CONTEXT_EVENT_CONTEXT_ID            ,_param->_size_context_id  );
    94         DELETE_SIGNAL(out_CONTEXT_EVENT_DEPTH                 ,_param->_size_depth       );
    95         DELETE_SIGNAL(out_CONTEXT_EVENT_TYPE                  ,_param->_size_event_type  );
    96         DELETE_SIGNAL(out_CONTEXT_EVENT_IS_DELAY_SLOT         ,1                         );
    97         DELETE_SIGNAL(out_CONTEXT_EVENT_ADDRESS               ,_param->_size_instruction_address);
    98         DELETE_SIGNAL(out_CONTEXT_EVENT_ADDRESS_EPCR          ,_param->_size_instruction_address);
     91        DELETE0_SIGNAL(out_CONTEXT_EVENT_VAL                   ,1);
     92        DELETE0_SIGNAL( in_CONTEXT_EVENT_ACK                   ,1);
     93        DELETE0_SIGNAL(out_CONTEXT_EVENT_CONTEXT_ID            ,_param->_size_context_id  );
     94        DELETE0_SIGNAL(out_CONTEXT_EVENT_DEPTH                 ,_param->_size_depth       );
     95        DELETE0_SIGNAL(out_CONTEXT_EVENT_TYPE                  ,_param->_size_event_type  );
     96        DELETE0_SIGNAL(out_CONTEXT_EVENT_IS_DELAY_SLOT         ,1                         );
     97        DELETE0_SIGNAL(out_CONTEXT_EVENT_ADDRESS               ,_param->_size_instruction_address);
     98        DELETE0_SIGNAL(out_CONTEXT_EVENT_ADDRESS_EPCR          ,_param->_size_instruction_address);
    9999      }
    100100    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/SelfTest/src/test.cpp

    r108 r112  
    182182      if (_param->_have_port_depth)
    183183        {
    184           INSTANCE_SC_SIGNAL(_Front_end_Glue,out_DEPTH_DECOD_UNIT_MIN  [i][j]);
    185           INSTANCE_SC_SIGNAL(_Front_end_Glue,out_CONTEXT_DECOD_UNIT_DEPTH [i][j]);
     184          INSTANCE0_SC_SIGNAL(_Front_end_Glue,out_DEPTH_DECOD_UNIT_MIN  [i][j]);
     185          INSTANCE0_SC_SIGNAL(_Front_end_Glue,out_CONTEXT_DECOD_UNIT_DEPTH [i][j]);
    186186        }
    187187
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/src/Front_end_Glue_allocation.cpp

    r108 r112  
    5858    // ~~~~~[ Interface : "ifetch" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC2_INTERFACE("ifetch",OUT,SOUTH,_("ifetch"),_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]);
     60      ALLOC2_INTERFACE_BEGIN("ifetch",OUT,SOUTH,_("ifetch"),_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]);
    6161
    6262      _ALLOC2_SIGNAL_OUT(out_IFETCH_DECOD_UNIT_CONTEXT_ID                     ,"DECOD_UNIT_CONTEXT_ID"          ,Tcontext_t           ,_param->_size_context_id,_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]);
     63
     64      ALLOC2_INTERFACE_END(_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]);
    6365    }
    6466
    6567    // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6668    {
    67       ALLOC2_INTERFACE("decod",OUT,EAST,_("decod"),_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);
     69      ALLOC2_INTERFACE_BEGIN("decod",OUT,EAST,_("decod"),_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);
    6870
    6971      _ALLOC2_SIGNAL_OUT(out_DECOD_CONTEXT_ID                                 ,"CONTEXT_ID"                     ,Tcontext_t           ,_param->_size_context_id,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);
    7072      _ALLOC2_SIGNAL_IN ( in_DECOD_DECOD_UNIT_CONTEXT_ID                      ,"DECOD_UNIT_CONTEXT_ID"          ,Tcontext_t           ,_param->_size_context_id,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);
     73
     74      ALLOC2_INTERFACE_END(_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);
    7175    }
    7276
    7377    // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7478    {
    75       ALLOC1_INTERFACE("branch_complete",IN,EAST,_("branch_complete"),_param->_nb_inst_branch_complete);
     79      ALLOC1_INTERFACE_BEGIN("branch_complete",IN,EAST,_("branch_complete"),_param->_nb_inst_branch_complete);
    7680
    7781      ALLOC1_SIGNAL_IN  ( in_BRANCH_COMPLETE_VAL                              ,"VAL"                            ,Tcontrol_t           ,1);
     
    8690      ALLOC1_SIGNAL_IN  ( in_BRANCH_COMPLETE_CONTEXT_STATE_ACK                ,"CONTEXT_STATE_ACK"              ,Tcontrol_t           ,1);
    8791      ALLOC1_SIGNAL_OUT (out_BRANCH_COMPLETE_CONTEXT_STATE_MISS_PREDICTION    ,"CONTEXT_STATE_MISS_PREDICTION"  ,Tcontrol_t           ,1);
     92
     93      ALLOC1_INTERFACE_END(_param->_nb_inst_branch_complete);
    8894    }
    8995
    9096    // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    9197    {
    92       ALLOC1_INTERFACE("event",OUT,EAST,_("event"),_param->_nb_context);
     98      ALLOC1_INTERFACE_BEGIN("event",OUT,EAST,_("event"),_param->_nb_context);
    9399
    94100      ALLOC1_SIGNAL_OUT (out_EVENT_VAL                                         ,"VAL"                           ,Tcontrol_t           ,1);
     
    120126      ALLOC1_SIGNAL_IN  ( in_EVENT_CONTEXT_STATE_DEPTH                         ,"CONTEXT_STATE_DEPTH"           ,Tdepth_t             ,_param->_size_depth);
    121127
     128
     129      ALLOC1_INTERFACE_END(_param->_nb_context);
    122130    }
    123131
    124132    // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    125133    {
    126       ALLOC1_INTERFACE("depth",OUT,EAST,_("depth"),_param->_nb_context);
     134      ALLOC1_INTERFACE_BEGIN("depth",OUT,EAST,_("depth"),_param->_nb_context);
    127135
    128136//    ALLOC1_SIGNAL_OUT (out_DEPTH_CURRENT                                     ,"CURRENT"                       ,Tdepth_t             ,_param->_size_depth  );
     
    138146                                                                                                               
    139147      ALLOC1_SIGNAL_OUT (out_DEPTH_CONTEXT_STATE_MIN                           ,"CONTEXT_STATE_MIN"             ,Tdepth_t             ,_param->_size_depth  );
     148
     149      ALLOC1_INTERFACE_END(_param->_nb_context);
    140150    }
    141151    {
    142       ALLOC2_INTERFACE("depth",OUT,EAST,_("depth"),_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]);
     152      ALLOC2_INTERFACE_BEGIN("depth",OUT,EAST,_("depth"),_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]);
    143153
    144154//    _ALLOC2_SIGNAL_OUT(out_DEPTH_DECOD_UNIT_CURRENT                          ,"DECOD_UNIT_CURRENT"            ,Tdepth_t             ,_param->_size_depth  ,_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]);
     
    146156      _ALLOC2_SIGNAL_OUT(out_DEPTH_DECOD_UNIT_MAX                              ,"DECOD_UNIT_MAX"                ,Tdepth_t             ,_param->_size_depth  ,_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]);
    147157      _ALLOC2_SIGNAL_OUT(out_DEPTH_DECOD_UNIT_FULL                             ,"DECOD_UNIT_FULL"               ,Tcontrol_t           ,1                    ,_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]);
     158
     159      ALLOC2_INTERFACE_END(_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]);
    148160    }
    149161
    150162    // ~~~~~[ Interface : "context" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    151163    {
    152       ALLOC2_INTERFACE("context",OUT,EAST,_("context"),_param->_nb_decod_unit,_param->_translate_context_id_from_decod_unit[it1].size());
     164      ALLOC2_INTERFACE_BEGIN("context",OUT,EAST,_("context"),_param->_nb_decod_unit,_param->_translate_context_id_from_decod_unit[it1].size());
    153165     
    154166      _ALLOC2_SIGNAL_OUT(out_CONTEXT_DECOD_UNIT_DEPTH_VAL                      ,"DECOD_UNIT_DEPTH_VAL"          ,Tcontrol_t           ,1                    ,_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]);
    155167      _ALLOC2_SIGNAL_OUT(out_CONTEXT_DECOD_UNIT_DEPTH                          ,"DECOD_UNIT_DEPTH"              ,Tdepth_t             ,_param->_size_depth  ,_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]);
     168
     169      ALLOC2_INTERFACE_END(_param->_nb_decod_unit,_param->_translate_context_id_from_decod_unit[it1].size());
    156170    }
    157171
    158172    // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    159173    {
    160       ALLOC1_INTERFACE("nb_inst",OUT,EAST,_("nb inst"),_param->_nb_context);
     174      ALLOC1_INTERFACE_BEGIN("nb_inst",OUT,EAST,_("nb inst"),_param->_nb_context);
    161175
    162176      ALLOC1_SIGNAL_OUT(out_NB_INST_DECOD_ALL                                  ,"DECOD_ALL"                     ,Tcounter_t           ,_param->_size_nb_inst_decod);
    163177      ALLOC1_SIGNAL_IN ( in_NB_INST_DECOD_UNIT_DECOD_ALL                       ,"DECOD_UNIT_DECOD_ALL"          ,Tcounter_t           ,_param->_size_nb_inst_decod);
    164178      ALLOC1_SIGNAL_OUT(out_NB_INST_CONTEXT_STATE_DECOD_ALL                    ,"CONTEXT_STATE_DECOD_ALL"       ,Tcounter_t           ,_param->_size_nb_inst_decod);
     179
     180      ALLOC1_INTERFACE_END(_param->_nb_context);
    165181    }
    166182
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management/SelfTest/src/test.cpp

    r107 r112  
    5151  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
    5252
    53   ALLOC_SC_SIGNAL (out_ADDRESS_VAL                        ,"out_ADDRESS_VAL                        ",Tcontrol_t        );
    54   ALLOC_SC_SIGNAL ( in_ADDRESS_ACK                        ," in_ADDRESS_ACK                        ",Tcontrol_t        );
    55   ALLOC_SC_SIGNAL (out_ADDRESS_INSTRUCTION_ADDRESS        ,"out_ADDRESS_INSTRUCTION_ADDRESS        ",Tgeneral_address_t);
     53  ALLOC0_SC_SIGNAL (out_ADDRESS_VAL                        ,"out_ADDRESS_VAL                        ",Tcontrol_t        );
     54  ALLOC0_SC_SIGNAL ( in_ADDRESS_ACK                        ," in_ADDRESS_ACK                        ",Tcontrol_t        );
     55  ALLOC0_SC_SIGNAL (out_ADDRESS_INSTRUCTION_ADDRESS        ,"out_ADDRESS_INSTRUCTION_ADDRESS        ",Tgeneral_address_t);
    5656  ALLOC1_SC_SIGNAL(out_ADDRESS_INSTRUCTION_ENABLE         ,"out_ADDRESS_INSTRUCTION_ENABLE         ",Tcontrol_t        ,_param->_nb_instruction);
    57   ALLOC_SC_SIGNAL (out_ADDRESS_INST_IFETCH_PTR            ,"out_ADDRESS_INST_IFETCH_PTR            ",Tinst_ifetch_ptr_t);
    58   ALLOC_SC_SIGNAL (out_ADDRESS_BRANCH_STATE               ,"out_ADDRESS_BRANCH_STATE               ",Tbranch_state_t   );
    59   ALLOC_SC_SIGNAL (out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID,"out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID",Tprediction_ptr_t );
    60   ALLOC_SC_SIGNAL (out_PREDICT_VAL                        ,"out_PREDICT_VAL                        ",Tcontrol_t        );
    61   ALLOC_SC_SIGNAL ( in_PREDICT_ACK                        ," in_PREDICT_ACK                        ",Tcontrol_t        );
    62   ALLOC_SC_SIGNAL (out_PREDICT_PC_PREVIOUS                ,"out_PREDICT_PC_PREVIOUS                ",Tgeneral_address_t);
    63   ALLOC_SC_SIGNAL (out_PREDICT_PC_CURRENT                 ,"out_PREDICT_PC_CURRENT                 ",Tgeneral_address_t);
    64   ALLOC_SC_SIGNAL (out_PREDICT_PC_CURRENT_IS_DS_TAKE      ,"out_PREDICT_PC_CURRENT_IS_DS_TAKE      ",Tcontrol_t        );
    65   ALLOC_SC_SIGNAL ( in_PREDICT_PC_NEXT                    ," in_PREDICT_PC_NEXT                    ",Tgeneral_address_t);
    66   ALLOC_SC_SIGNAL ( in_PREDICT_PC_NEXT_IS_DS_TAKE         ," in_PREDICT_PC_NEXT_IS_DS_TAKE         ",Tcontrol_t        );
     57  ALLOC0_SC_SIGNAL (out_ADDRESS_INST_IFETCH_PTR            ,"out_ADDRESS_INST_IFETCH_PTR            ",Tinst_ifetch_ptr_t);
     58  ALLOC0_SC_SIGNAL (out_ADDRESS_BRANCH_STATE               ,"out_ADDRESS_BRANCH_STATE               ",Tbranch_state_t   );
     59  ALLOC0_SC_SIGNAL (out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID,"out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID",Tprediction_ptr_t );
     60  ALLOC0_SC_SIGNAL (out_PREDICT_VAL                        ,"out_PREDICT_VAL                        ",Tcontrol_t        );
     61  ALLOC0_SC_SIGNAL ( in_PREDICT_ACK                        ," in_PREDICT_ACK                        ",Tcontrol_t        );
     62  ALLOC0_SC_SIGNAL (out_PREDICT_PC_PREVIOUS                ,"out_PREDICT_PC_PREVIOUS                ",Tgeneral_address_t);
     63  ALLOC0_SC_SIGNAL (out_PREDICT_PC_CURRENT                 ,"out_PREDICT_PC_CURRENT                 ",Tgeneral_address_t);
     64  ALLOC0_SC_SIGNAL (out_PREDICT_PC_CURRENT_IS_DS_TAKE      ,"out_PREDICT_PC_CURRENT_IS_DS_TAKE      ",Tcontrol_t        );
     65  ALLOC0_SC_SIGNAL ( in_PREDICT_PC_NEXT                    ," in_PREDICT_PC_NEXT                    ",Tgeneral_address_t);
     66  ALLOC0_SC_SIGNAL ( in_PREDICT_PC_NEXT_IS_DS_TAKE         ," in_PREDICT_PC_NEXT_IS_DS_TAKE         ",Tcontrol_t        );
    6767  ALLOC1_SC_SIGNAL( in_PREDICT_INSTRUCTION_ENABLE         ," in_PREDICT_INSTRUCTION_ENABLE         ",Tcontrol_t        ,_param->_nb_instruction);
    68   ALLOC_SC_SIGNAL ( in_PREDICT_INST_IFETCH_PTR            ," in_PREDICT_INST_IFETCH_PTR            ",Tinst_ifetch_ptr_t);
    69 //ALLOC_SC_SIGNAL ( in_PREDICT_BRANCH_IS_CURRENT          ," in_PREDICT_BRANCH_IS_CURRENT          ",Tcontrol_t        );
    70   ALLOC_SC_SIGNAL ( in_PREDICT_BRANCH_STATE               ," in_PREDICT_BRANCH_STATE               ",Tbranch_state_t   );
    71   ALLOC_SC_SIGNAL ( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID," in_PREDICT_BRANCH_UPDATE_PREDICTION_ID",Tprediction_ptr_t );
    72   ALLOC_SC_SIGNAL ( in_EVENT_VAL                          ," in_EVENT_VAL                          ",Tcontrol_t        );
    73   ALLOC_SC_SIGNAL (out_EVENT_ACK                          ,"out_EVENT_ACK                          ",Tcontrol_t        );
    74   ALLOC_SC_SIGNAL ( in_EVENT_ADDRESS                      ," in_EVENT_ADDRESS                      ",Tgeneral_address_t);
    75   ALLOC_SC_SIGNAL ( in_EVENT_ADDRESS_NEXT                 ," in_EVENT_ADDRESS_NEXT                 ",Tgeneral_address_t);
    76   ALLOC_SC_SIGNAL ( in_EVENT_ADDRESS_NEXT_VAL             ," in_EVENT_ADDRESS_NEXT_VAL             ",Tcontrol_t        );
    77   ALLOC_SC_SIGNAL ( in_EVENT_IS_DS_TAKE                   ," in_EVENT_IS_DS_TAKE                   ",Tcontrol_t        );
     68  ALLOC0_SC_SIGNAL ( in_PREDICT_INST_IFETCH_PTR            ," in_PREDICT_INST_IFETCH_PTR            ",Tinst_ifetch_ptr_t);
     69//ALLOC0_SC_SIGNAL ( in_PREDICT_BRANCH_IS_CURRENT          ," in_PREDICT_BRANCH_IS_CURRENT          ",Tcontrol_t        );
     70  ALLOC0_SC_SIGNAL ( in_PREDICT_BRANCH_STATE               ," in_PREDICT_BRANCH_STATE               ",Tbranch_state_t   );
     71  ALLOC0_SC_SIGNAL ( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID," in_PREDICT_BRANCH_UPDATE_PREDICTION_ID",Tprediction_ptr_t );
     72  ALLOC0_SC_SIGNAL ( in_EVENT_VAL                          ," in_EVENT_VAL                          ",Tcontrol_t        );
     73  ALLOC0_SC_SIGNAL (out_EVENT_ACK                          ,"out_EVENT_ACK                          ",Tcontrol_t        );
     74  ALLOC0_SC_SIGNAL ( in_EVENT_ADDRESS                      ," in_EVENT_ADDRESS                      ",Tgeneral_address_t);
     75  ALLOC0_SC_SIGNAL ( in_EVENT_ADDRESS_NEXT                 ," in_EVENT_ADDRESS_NEXT                 ",Tgeneral_address_t);
     76  ALLOC0_SC_SIGNAL ( in_EVENT_ADDRESS_NEXT_VAL             ," in_EVENT_ADDRESS_NEXT_VAL             ",Tcontrol_t        );
     77  ALLOC0_SC_SIGNAL ( in_EVENT_IS_DS_TAKE                   ," in_EVENT_IS_DS_TAKE                   ",Tcontrol_t        );
    7878 
    7979  /********************************************************
     
    8686  (*(_Address_management->in_NRESET))       (*(in_NRESET));
    8787
    88   INSTANCE_SC_SIGNAL (_Address_management,out_ADDRESS_VAL                        );
    89   INSTANCE_SC_SIGNAL (_Address_management, in_ADDRESS_ACK                        );
    90   INSTANCE_SC_SIGNAL (_Address_management,out_ADDRESS_INSTRUCTION_ADDRESS        );
     88  INSTANCE0_SC_SIGNAL (_Address_management,out_ADDRESS_VAL                        );
     89  INSTANCE0_SC_SIGNAL (_Address_management, in_ADDRESS_ACK                        );
     90  INSTANCE0_SC_SIGNAL (_Address_management,out_ADDRESS_INSTRUCTION_ADDRESS        );
    9191  INSTANCE1_SC_SIGNAL(_Address_management,out_ADDRESS_INSTRUCTION_ENABLE         ,_param->_nb_instruction);
    9292  if (_param->_have_port_inst_ifetch_ptr)
    93   INSTANCE_SC_SIGNAL (_Address_management,out_ADDRESS_INST_IFETCH_PTR            );
    94   INSTANCE_SC_SIGNAL (_Address_management,out_ADDRESS_BRANCH_STATE               );
     93  INSTANCE0_SC_SIGNAL (_Address_management,out_ADDRESS_INST_IFETCH_PTR            );
     94  INSTANCE0_SC_SIGNAL (_Address_management,out_ADDRESS_BRANCH_STATE               );
    9595  if (_param->_have_port_depth)
    96   INSTANCE_SC_SIGNAL (_Address_management,out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID);
    97   INSTANCE_SC_SIGNAL (_Address_management,out_PREDICT_VAL                        );
    98   INSTANCE_SC_SIGNAL (_Address_management, in_PREDICT_ACK                        );
    99   INSTANCE_SC_SIGNAL (_Address_management,out_PREDICT_PC_PREVIOUS                );
    100   INSTANCE_SC_SIGNAL (_Address_management,out_PREDICT_PC_CURRENT                 );
    101   INSTANCE_SC_SIGNAL (_Address_management,out_PREDICT_PC_CURRENT_IS_DS_TAKE      );
    102   INSTANCE_SC_SIGNAL (_Address_management, in_PREDICT_PC_NEXT                    );
    103   INSTANCE_SC_SIGNAL (_Address_management, in_PREDICT_PC_NEXT_IS_DS_TAKE         );
     96  INSTANCE0_SC_SIGNAL (_Address_management,out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID);
     97  INSTANCE0_SC_SIGNAL (_Address_management,out_PREDICT_VAL                        );
     98  INSTANCE0_SC_SIGNAL (_Address_management, in_PREDICT_ACK                        );
     99  INSTANCE0_SC_SIGNAL (_Address_management,out_PREDICT_PC_PREVIOUS                );
     100  INSTANCE0_SC_SIGNAL (_Address_management,out_PREDICT_PC_CURRENT                 );
     101  INSTANCE0_SC_SIGNAL (_Address_management,out_PREDICT_PC_CURRENT_IS_DS_TAKE      );
     102  INSTANCE0_SC_SIGNAL (_Address_management, in_PREDICT_PC_NEXT                    );
     103  INSTANCE0_SC_SIGNAL (_Address_management, in_PREDICT_PC_NEXT_IS_DS_TAKE         );
    104104  INSTANCE1_SC_SIGNAL(_Address_management, in_PREDICT_INSTRUCTION_ENABLE         ,_param->_nb_instruction);
    105105  if (_param->_have_port_inst_ifetch_ptr)
    106   INSTANCE_SC_SIGNAL (_Address_management, in_PREDICT_INST_IFETCH_PTR            );
    107 //INSTANCE_SC_SIGNAL (_Address_management, in_PREDICT_BRANCH_IS_CURRENT          );
    108   INSTANCE_SC_SIGNAL (_Address_management, in_PREDICT_BRANCH_STATE               );
     106  INSTANCE0_SC_SIGNAL (_Address_management, in_PREDICT_INST_IFETCH_PTR            );
     107//INSTANCE0_SC_SIGNAL (_Address_management, in_PREDICT_BRANCH_IS_CURRENT          );
     108  INSTANCE0_SC_SIGNAL (_Address_management, in_PREDICT_BRANCH_STATE               );
    109109  if (_param->_have_port_depth)
    110   INSTANCE_SC_SIGNAL (_Address_management, in_PREDICT_BRANCH_UPDATE_PREDICTION_ID);
    111   INSTANCE_SC_SIGNAL (_Address_management, in_EVENT_VAL                          );
    112   INSTANCE_SC_SIGNAL (_Address_management,out_EVENT_ACK                          );
    113   INSTANCE_SC_SIGNAL (_Address_management, in_EVENT_ADDRESS                      );
    114   INSTANCE_SC_SIGNAL (_Address_management, in_EVENT_ADDRESS_NEXT                 );
    115   INSTANCE_SC_SIGNAL (_Address_management, in_EVENT_ADDRESS_NEXT_VAL             );
    116   INSTANCE_SC_SIGNAL (_Address_management, in_EVENT_IS_DS_TAKE                   );
     110  INSTANCE0_SC_SIGNAL (_Address_management, in_PREDICT_BRANCH_UPDATE_PREDICTION_ID);
     111  INSTANCE0_SC_SIGNAL (_Address_management, in_EVENT_VAL                          );
     112  INSTANCE0_SC_SIGNAL (_Address_management,out_EVENT_ACK                          );
     113  INSTANCE0_SC_SIGNAL (_Address_management, in_EVENT_ADDRESS                      );
     114  INSTANCE0_SC_SIGNAL (_Address_management, in_EVENT_ADDRESS_NEXT                 );
     115  INSTANCE0_SC_SIGNAL (_Address_management, in_EVENT_ADDRESS_NEXT_VAL             );
     116  INSTANCE0_SC_SIGNAL (_Address_management, in_EVENT_IS_DS_TAKE                   );
    117117
    118118  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management/src/Address_management_allocation.cpp

    r101 r112  
    1616namespace ifetch_unit {
    1717namespace address_management {
    18 
    19 
    2018
    2119#undef  FUNCTION
     
    5856    // ~~~~~[ Interface : "address" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5957    {
    60       ALLOC_INTERFACE("address", OUT, SOUTH, "Access at request icache.");
     58      ALLOC0_INTERFACE_BEGIN("address", OUT, SOUTH, _("Access at request icache."));
    6159
    62       ALLOC_VALACK_OUT (out_ADDRESS_VAL                        ,VAL);
    63       ALLOC_VALACK_IN  ( in_ADDRESS_ACK                        ,ACK);
    64       ALLOC_SIGNAL_OUT (out_ADDRESS_INSTRUCTION_ADDRESS        ,"instruction_address"        ,Tgeneral_address_t,_param->_size_instruction_address     );
    65       ALLOC_SIGNAL_OUT (out_ADDRESS_INST_IFETCH_PTR            ,"inst_ifetch_ptr"            ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr         );
    66       ALLOC_SIGNAL_OUT (out_ADDRESS_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t   ,_param->_size_branch_state            );
    67       ALLOC_SIGNAL_OUT (out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth);
     60      ALLOC0_VALACK_OUT (out_ADDRESS_VAL                        ,VAL);
     61      ALLOC0_VALACK_IN  ( in_ADDRESS_ACK                        ,ACK);
     62      ALLOC0_SIGNAL_OUT (out_ADDRESS_INSTRUCTION_ADDRESS        ,"instruction_address"        ,Tgeneral_address_t,_param->_size_instruction_address     );
     63      ALLOC0_SIGNAL_OUT (out_ADDRESS_INST_IFETCH_PTR            ,"inst_ifetch_ptr"            ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr         );
     64      ALLOC0_SIGNAL_OUT (out_ADDRESS_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t   ,_param->_size_branch_state            );
     65      ALLOC0_SIGNAL_OUT (out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth);
     66
     67      ALLOC0_INTERFACE_END();
    6868    }
    6969
    7070    {
    71       ALLOC1_INTERFACE("address", OUT, SOUTH, "Access at request icache.",_param->_nb_instruction);
     71      ALLOC1_INTERFACE_BEGIN("address", OUT, SOUTH, _("Access at request icache."),_param->_nb_instruction);
    7272
    7373      ALLOC1_SIGNAL_OUT(out_ADDRESS_INSTRUCTION_ENABLE         ,"instruction_enable"         ,Tcontrol_t        ,1);
     74
     75      ALLOC1_INTERFACE_END(_param->_nb_instruction);
    7476    }
    7577
    7678    // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7779    {
    78       ALLOC_INTERFACE("predict", IN, NORTH, "Request the prediction unit.");
     80      ALLOC0_INTERFACE_BEGIN("predict", IN, NORTH, _("Request the prediction unit."));
    7981
    80       ALLOC_VALACK_OUT (out_PREDICT_VAL                        ,VAL);
    81       ALLOC_VALACK_IN  ( in_PREDICT_ACK                        ,ACK);
    82       ALLOC_SIGNAL_OUT (out_PREDICT_PC_PREVIOUS                ,"pc_previous"                ,Tgeneral_address_t,_param->_size_instruction_address);
    83       ALLOC_SIGNAL_OUT (out_PREDICT_PC_CURRENT                 ,"pc_current"                 ,Tgeneral_address_t,_param->_size_instruction_address);
    84       ALLOC_SIGNAL_OUT (out_PREDICT_PC_CURRENT_IS_DS_TAKE      ,"pc_current_is_ds_take"      ,Tcontrol_t        ,1);
    85       ALLOC_SIGNAL_IN  ( in_PREDICT_PC_NEXT                    ,"pc_next"                    ,Tgeneral_address_t,_param->_size_instruction_address);
    86       ALLOC_SIGNAL_IN  ( in_PREDICT_PC_NEXT_IS_DS_TAKE         ,"pc_next_is_ds_take"         ,Tcontrol_t        ,1);
    87 //    ALLOC_SIGNAL_IN  ( in_PREDICT_BRANCH_IS_CURRENT          ,"branch_is_current"          ,Tcontrol_t        ,1);
    88       ALLOC_SIGNAL_IN  ( in_PREDICT_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t   ,_param->_size_branch_state);
    89       ALLOC_SIGNAL_IN  ( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth);
    90       ALLOC_SIGNAL_IN  ( in_PREDICT_INST_IFETCH_PTR            ,"inst_ifetch_ptr"            ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr);
     82      ALLOC0_VALACK_OUT (out_PREDICT_VAL                        ,VAL);
     83      ALLOC0_VALACK_IN  ( in_PREDICT_ACK                        ,ACK);
     84      ALLOC0_SIGNAL_OUT (out_PREDICT_PC_PREVIOUS                ,"pc_previous"                ,Tgeneral_address_t,_param->_size_instruction_address);
     85      ALLOC0_SIGNAL_OUT (out_PREDICT_PC_CURRENT                 ,"pc_current"                 ,Tgeneral_address_t,_param->_size_instruction_address);
     86      ALLOC0_SIGNAL_OUT (out_PREDICT_PC_CURRENT_IS_DS_TAKE      ,"pc_current_is_ds_take"      ,Tcontrol_t        ,1);
     87      ALLOC0_SIGNAL_IN  ( in_PREDICT_PC_NEXT                    ,"pc_next"                    ,Tgeneral_address_t,_param->_size_instruction_address);
     88      ALLOC0_SIGNAL_IN  ( in_PREDICT_PC_NEXT_IS_DS_TAKE         ,"pc_next_is_ds_take"         ,Tcontrol_t        ,1);
     89//    ALLOC0_SIGNAL_IN  ( in_PREDICT_BRANCH_IS_CURRENT          ,"branch_is_current"          ,Tcontrol_t        ,1);
     90      ALLOC0_SIGNAL_IN  ( in_PREDICT_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t   ,_param->_size_branch_state);
     91      ALLOC0_SIGNAL_IN  ( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth);
     92      ALLOC0_SIGNAL_IN  ( in_PREDICT_INST_IFETCH_PTR            ,"inst_ifetch_ptr"            ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr);
     93
     94      ALLOC0_INTERFACE_END();
    9195    }
    9296    {
    93       ALLOC1_INTERFACE("predict", IN, NORTH, "Request the prediction unit.",_param->_nb_instruction);
     97      ALLOC1_INTERFACE_BEGIN("predict", IN, NORTH, _("Request the prediction unit."),_param->_nb_instruction);
    9498
    9599      ALLOC1_SIGNAL_IN (in_PREDICT_INSTRUCTION_ENABLE          ,"instruction_enable"         ,Tcontrol_t        ,1);
     100
     101      ALLOC1_INTERFACE_END(_param->_nb_instruction);
    96102    }
    97103
    98104    // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    99105    {
    100       ALLOC_INTERFACE("event", IN, SOUTH, "Event (miss, exception ...)");
     106      ALLOC0_INTERFACE_BEGIN("event", IN, SOUTH, _("Event (miss, exception ...)"));
    101107
    102       ALLOC_VALACK_IN ( in_EVENT_VAL          ,VAL);
    103       ALLOC_VALACK_OUT(out_EVENT_ACK          ,ACK);
    104       ALLOC_SIGNAL_IN ( in_EVENT_ADDRESS         ,"address"         ,Tgeneral_address_t,_param->_size_instruction_address);
    105       ALLOC_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT    ,"address_next"    ,Tgeneral_address_t,_param->_size_instruction_address);
    106       ALLOC_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT_VAL,"address_next_val",Tcontrol_t,1);
    107       ALLOC_SIGNAL_IN ( in_EVENT_IS_DS_TAKE      ,"is_ds_take"      ,Tcontrol_t,1);
     108      ALLOC0_VALACK_IN ( in_EVENT_VAL          ,VAL);
     109      ALLOC0_VALACK_OUT(out_EVENT_ACK          ,ACK);
     110      ALLOC0_SIGNAL_IN ( in_EVENT_ADDRESS         ,"address"         ,Tgeneral_address_t,_param->_size_instruction_address);
     111      ALLOC0_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT    ,"address_next"    ,Tgeneral_address_t,_param->_size_instruction_address);
     112      ALLOC0_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT_VAL,"address_next_val",Tcontrol_t,1);
     113      ALLOC0_SIGNAL_IN ( in_EVENT_IS_DS_TAKE      ,"is_ds_take"      ,Tcontrol_t,1);
     114
     115      ALLOC0_INTERFACE_END();
    108116    }
    109117
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management/src/Address_management_deallocation.cpp

    r101 r112  
    77
    88#include "Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management/include/Address_management.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2728        delete    in_CLOCK ;
    2829        delete    in_NRESET;
    29 
    30         delete    out_ADDRESS_VAL                        ;
    31         delete     in_ADDRESS_ACK                        ;
    32         delete    out_ADDRESS_INSTRUCTION_ADDRESS        ;
    33         delete [] out_ADDRESS_INSTRUCTION_ENABLE         ;
    34         if (_param->_have_port_inst_ifetch_ptr)
    35         delete    out_ADDRESS_INST_IFETCH_PTR            ;
    36         delete    out_ADDRESS_BRANCH_STATE               ;
    37         if (_param->_have_port_depth)
    38         delete    out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID;
    39         delete    out_PREDICT_VAL                        ;
    40         delete     in_PREDICT_ACK                        ;
    41         delete    out_PREDICT_PC_PREVIOUS                ;
    42         delete    out_PREDICT_PC_CURRENT                 ;
    43         delete    out_PREDICT_PC_CURRENT_IS_DS_TAKE      ;
    44         delete     in_PREDICT_PC_NEXT                    ;
    45         delete     in_PREDICT_PC_NEXT_IS_DS_TAKE         ;
    46         delete []  in_PREDICT_INSTRUCTION_ENABLE         ;
    47         if (_param->_have_port_inst_ifetch_ptr)
    48         delete     in_PREDICT_INST_IFETCH_PTR            ;
    49 //      delete     in_PREDICT_BRANCH_IS_CURRENT          ;
    50         delete     in_PREDICT_BRANCH_STATE               ;
    51         if (_param->_have_port_depth)
    52         delete     in_PREDICT_BRANCH_UPDATE_PREDICTION_ID;
    53         delete     in_EVENT_VAL                          ;
    54         delete    out_EVENT_ACK                          ;
    55         delete     in_EVENT_ADDRESS                      ;
    56         delete     in_EVENT_ADDRESS_NEXT                 ;
    57         delete     in_EVENT_ADDRESS_NEXT_VAL             ;
    58         delete     in_EVENT_IS_DS_TAKE                   ;
    59      
    60         // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    61         if (usage_is_set(_usage,USE_SYSTEMC))
    62           {
    63             delete reg_PC_ACCESS_INSTRUCTION_ENABLE ;
    64             delete reg_PC_CURRENT_INSTRUCTION_ENABLE;
    65             delete reg_PC_NEXT_INSTRUCTION_ENABLE   ;
    66           }
     30       
     31        DELETE0_SIGNAL(out_ADDRESS_VAL                        ,1);
     32        DELETE0_SIGNAL( in_ADDRESS_ACK                        ,1);
     33        DELETE0_SIGNAL(out_ADDRESS_INSTRUCTION_ADDRESS        ,_param->_size_instruction_address     );
     34        DELETE0_SIGNAL(out_ADDRESS_INST_IFETCH_PTR            ,_param->_size_inst_ifetch_ptr         );
     35        DELETE0_SIGNAL(out_ADDRESS_BRANCH_STATE               ,_param->_size_branch_state            );
     36        DELETE0_SIGNAL(out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID,_param->_size_depth);
     37        DELETE1_SIGNAL(out_ADDRESS_INSTRUCTION_ENABLE          ,1,_param->_nb_instruction);
     38       
     39        DELETE0_SIGNAL(out_PREDICT_VAL                        ,1);
     40        DELETE0_SIGNAL( in_PREDICT_ACK                        ,1);
     41        DELETE0_SIGNAL(out_PREDICT_PC_PREVIOUS                ,_param->_size_instruction_address);
     42        DELETE0_SIGNAL(out_PREDICT_PC_CURRENT                 ,_param->_size_instruction_address);
     43        DELETE0_SIGNAL(out_PREDICT_PC_CURRENT_IS_DS_TAKE      ,1);
     44        DELETE0_SIGNAL( in_PREDICT_PC_NEXT                    ,_param->_size_instruction_address);
     45        DELETE0_SIGNAL( in_PREDICT_PC_NEXT_IS_DS_TAKE         ,1);
     46//      DELETE0_SIGNAL( in_PREDICT_BRANCH_IS_CURRENT          ,1);
     47        DELETE0_SIGNAL( in_PREDICT_BRANCH_STATE               ,_param->_size_branch_state);
     48        DELETE0_SIGNAL( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID,_param->_size_depth);
     49        DELETE0_SIGNAL( in_PREDICT_INST_IFETCH_PTR            ,_param->_size_inst_ifetch_ptr);
     50        DELETE1_SIGNAL(in_PREDICT_INSTRUCTION_ENABLE           ,1,_param->_nb_instruction);
     51       
     52        DELETE0_SIGNAL( in_EVENT_VAL             ,1);
     53        DELETE0_SIGNAL(out_EVENT_ACK             ,1);
     54        DELETE0_SIGNAL( in_EVENT_ADDRESS         ,_param->_size_instruction_address);
     55        DELETE0_SIGNAL( in_EVENT_ADDRESS_NEXT    ,_param->_size_instruction_address);
     56        DELETE0_SIGNAL( in_EVENT_ADDRESS_NEXT_VAL,1);
     57        DELETE0_SIGNAL( in_EVENT_IS_DS_TAKE      ,1);
     58       
     59        DELETE1(reg_PC_ACCESS_INSTRUCTION_ENABLE ,_param->_nb_instruction);
     60        DELETE1(reg_PC_CURRENT_INSTRUCTION_ENABLE,_param->_nb_instruction);
     61        DELETE1(reg_PC_NEXT_INSTRUCTION_ENABLE   ,_param->_nb_instruction);
    6762      }
    68 
    6963
    7064    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/SelfTest/src/test.cpp

    r88 r112  
    6868  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
    6969
    70   ALLOC_SC_SIGNAL ( in_ADDRESS_VAL                        ," in_ADDRESS_VAL                        ",Tcontrol_t           );
    71   ALLOC_SC_SIGNAL (out_ADDRESS_ACK                        ,"out_ADDRESS_ACK                        ",Tcontrol_t           );
    72   ALLOC_SC_SIGNAL (out_ADDRESS_IFETCH_QUEUE_ID            ,"out_ADDRESS_IFETCH_QUEUE_ID            ",Tifetch_queue_ptr_t  );
     70  ALLOC0_SC_SIGNAL( in_ADDRESS_VAL                        ," in_ADDRESS_VAL                        ",Tcontrol_t           );
     71  ALLOC0_SC_SIGNAL(out_ADDRESS_ACK                        ,"out_ADDRESS_ACK                        ",Tcontrol_t           );
     72  ALLOC0_SC_SIGNAL(out_ADDRESS_IFETCH_QUEUE_ID            ,"out_ADDRESS_IFETCH_QUEUE_ID            ",Tifetch_queue_ptr_t  );
    7373  ALLOC1_SC_SIGNAL( in_ADDRESS_INSTRUCTION_ENABLE         ," in_ADDRESS_INSTRUCTION_ENABLE         ",Tcontrol_t           ,_param->_nb_instruction);
    74   ALLOC_SC_SIGNAL ( in_ADDRESS_INSTRUCTION_ADDRESS        ," in_ADDRESS_INSTRUCTION_ADDRESS        ",Tgeneral_address_t   );
    75   ALLOC_SC_SIGNAL ( in_ADDRESS_INST_IFETCH_PTR            ," in_ADDRESS_INST_IFETCH_PTR            ",Tinst_ifetch_ptr_t   );
    76   ALLOC_SC_SIGNAL ( in_ADDRESS_BRANCH_STATE               ," in_ADDRESS_BRANCH_STATE               ",Tbranch_state_t      );
    77   ALLOC_SC_SIGNAL ( in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID," in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID",Tprediction_ptr_t    );
     74  ALLOC0_SC_SIGNAL( in_ADDRESS_INSTRUCTION_ADDRESS        ," in_ADDRESS_INSTRUCTION_ADDRESS        ",Tgeneral_address_t   );
     75  ALLOC0_SC_SIGNAL( in_ADDRESS_INST_IFETCH_PTR            ," in_ADDRESS_INST_IFETCH_PTR            ",Tinst_ifetch_ptr_t   );
     76  ALLOC0_SC_SIGNAL( in_ADDRESS_BRANCH_STATE               ," in_ADDRESS_BRANCH_STATE               ",Tbranch_state_t      );
     77  ALLOC0_SC_SIGNAL( in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID," in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID",Tprediction_ptr_t    );
    7878  ALLOC1_SC_SIGNAL(out_DECOD_VAL                          ,"out_DECOD_VAL                          ",Tcontrol_t           ,_param->_nb_instruction);
    7979  ALLOC1_SC_SIGNAL( in_DECOD_ACK                          ," in_DECOD_ACK                          ",Tcontrol_t           ,_param->_nb_instruction);
    8080  ALLOC1_SC_SIGNAL(out_DECOD_INSTRUCTION                  ,"out_DECOD_INSTRUCTION                  ",Tinstruction_t       ,_param->_nb_instruction);
    81   ALLOC_SC_SIGNAL (out_DECOD_ADDRESS                      ,"out_DECOD_ADDRESS                      ",Tgeneral_address_t   );
    82   ALLOC_SC_SIGNAL (out_DECOD_INST_IFETCH_PTR              ,"out_DECOD_INST_IFETCH_PTR              ",Tinst_ifetch_ptr_t   );
    83   ALLOC_SC_SIGNAL (out_DECOD_BRANCH_STATE                 ,"out_DECOD_BRANCH_STATE                 ",Tbranch_state_t      );
    84   ALLOC_SC_SIGNAL (out_DECOD_BRANCH_UPDATE_PREDICTION_ID  ,"out_DECOD_BRANCH_UPDATE_PREDICTION_ID  ",Tprediction_ptr_t    );
    85   ALLOC_SC_SIGNAL (out_DECOD_EXCEPTION                    ,"out_DECOD_EXCEPTION                    ",Tprediction_ptr_t    );
    86   ALLOC_SC_SIGNAL ( in_ICACHE_RSP_VAL                     ," in_ICACHE_RSP_VAL                     ",Tcontrol_t           );
    87   ALLOC_SC_SIGNAL (out_ICACHE_RSP_ACK                     ,"out_ICACHE_RSP_ACK                     ",Tcontrol_t           );
    88   ALLOC_SC_SIGNAL ( in_ICACHE_RSP_PACKET_ID               ," in_ICACHE_RSP_PACKET_ID               ",Tpacket_t            );
     81  ALLOC0_SC_SIGNAL(out_DECOD_ADDRESS                      ,"out_DECOD_ADDRESS                      ",Tgeneral_address_t   );
     82  ALLOC0_SC_SIGNAL(out_DECOD_INST_IFETCH_PTR              ,"out_DECOD_INST_IFETCH_PTR              ",Tinst_ifetch_ptr_t   );
     83  ALLOC0_SC_SIGNAL(out_DECOD_BRANCH_STATE                 ,"out_DECOD_BRANCH_STATE                 ",Tbranch_state_t      );
     84  ALLOC0_SC_SIGNAL(out_DECOD_BRANCH_UPDATE_PREDICTION_ID  ,"out_DECOD_BRANCH_UPDATE_PREDICTION_ID  ",Tprediction_ptr_t    );
     85  ALLOC0_SC_SIGNAL(out_DECOD_EXCEPTION                    ,"out_DECOD_EXCEPTION                    ",Tprediction_ptr_t    );
     86  ALLOC0_SC_SIGNAL( in_ICACHE_RSP_VAL                     ," in_ICACHE_RSP_VAL                     ",Tcontrol_t           );
     87  ALLOC0_SC_SIGNAL(out_ICACHE_RSP_ACK                     ,"out_ICACHE_RSP_ACK                     ",Tcontrol_t           );
     88  ALLOC0_SC_SIGNAL( in_ICACHE_RSP_PACKET_ID               ," in_ICACHE_RSP_PACKET_ID               ",Tpacket_t            );
    8989  ALLOC1_SC_SIGNAL( in_ICACHE_RSP_INSTRUCTION             ," in_ICACHE_RSP_INSTRUCTION             ",Ticache_instruction_t,_param->_nb_instruction);
    90   ALLOC_SC_SIGNAL ( in_ICACHE_RSP_ERROR                   ," in_ICACHE_RSP_ERROR                   ",Ticache_error_t      );
    91   ALLOC_SC_SIGNAL ( in_EVENT_RESET_VAL                    ," in_EVENT_RESET_VAL                    ",Tcontrol_t           );
    92   ALLOC_SC_SIGNAL (out_EVENT_RESET_ACK                    ,"out_EVENT_RESET_ACK                    ",Tcontrol_t           );
     90  ALLOC0_SC_SIGNAL( in_ICACHE_RSP_ERROR                   ," in_ICACHE_RSP_ERROR                   ",Ticache_error_t      );
     91  ALLOC0_SC_SIGNAL( in_EVENT_RESET_VAL                    ," in_EVENT_RESET_VAL                    ",Tcontrol_t           );
     92  ALLOC0_SC_SIGNAL(out_EVENT_RESET_ACK                    ,"out_EVENT_RESET_ACK                    ",Tcontrol_t           );
    9393 
    9494  /********************************************************
     
    101101  (*(_Ifetch_queue->in_NRESET))       (*(in_NRESET));
    102102
    103   INSTANCE_SC_SIGNAL (_Ifetch_queue, in_ADDRESS_VAL                        );
    104   INSTANCE_SC_SIGNAL (_Ifetch_queue,out_ADDRESS_ACK                        );
     103  INSTANCE0_SC_SIGNAL(_Ifetch_queue, in_ADDRESS_VAL                        );
     104  INSTANCE0_SC_SIGNAL(_Ifetch_queue,out_ADDRESS_ACK                        );
    105105  if (_param->_have_port_ifetch_queue_ptr)
    106   INSTANCE_SC_SIGNAL (_Ifetch_queue,out_ADDRESS_IFETCH_QUEUE_ID            );
     106  INSTANCE0_SC_SIGNAL(_Ifetch_queue,out_ADDRESS_IFETCH_QUEUE_ID            );
    107107  INSTANCE1_SC_SIGNAL(_Ifetch_queue, in_ADDRESS_INSTRUCTION_ENABLE         ,_param->_nb_instruction);
    108   INSTANCE_SC_SIGNAL (_Ifetch_queue, in_ADDRESS_INSTRUCTION_ADDRESS        );
     108  INSTANCE0_SC_SIGNAL(_Ifetch_queue, in_ADDRESS_INSTRUCTION_ADDRESS        );
    109109  if (_param->_have_port_inst_ifetch_ptr)
    110   INSTANCE_SC_SIGNAL (_Ifetch_queue, in_ADDRESS_INST_IFETCH_PTR            );
    111   INSTANCE_SC_SIGNAL (_Ifetch_queue, in_ADDRESS_BRANCH_STATE               );
     110  INSTANCE0_SC_SIGNAL(_Ifetch_queue, in_ADDRESS_INST_IFETCH_PTR            );
     111  INSTANCE0_SC_SIGNAL(_Ifetch_queue, in_ADDRESS_BRANCH_STATE               );
    112112  if (_param->_have_port_depth)
    113   INSTANCE_SC_SIGNAL (_Ifetch_queue, in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID);
     113  INSTANCE0_SC_SIGNAL(_Ifetch_queue, in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID);
    114114  INSTANCE1_SC_SIGNAL(_Ifetch_queue,out_DECOD_VAL                          ,_param->_nb_instruction);
    115115  INSTANCE1_SC_SIGNAL(_Ifetch_queue, in_DECOD_ACK                          ,_param->_nb_instruction);
    116116  INSTANCE1_SC_SIGNAL(_Ifetch_queue,out_DECOD_INSTRUCTION                  ,_param->_nb_instruction);
    117   INSTANCE_SC_SIGNAL (_Ifetch_queue,out_DECOD_ADDRESS                      );
     117  INSTANCE0_SC_SIGNAL(_Ifetch_queue,out_DECOD_ADDRESS                      );
    118118  if (_param->_have_port_inst_ifetch_ptr)
    119   INSTANCE_SC_SIGNAL (_Ifetch_queue,out_DECOD_INST_IFETCH_PTR              );
    120   INSTANCE_SC_SIGNAL (_Ifetch_queue,out_DECOD_BRANCH_STATE                 );
     119  INSTANCE0_SC_SIGNAL(_Ifetch_queue,out_DECOD_INST_IFETCH_PTR              );
     120  INSTANCE0_SC_SIGNAL(_Ifetch_queue,out_DECOD_BRANCH_STATE                 );
    121121  if (_param->_have_port_depth)
    122   INSTANCE_SC_SIGNAL (_Ifetch_queue,out_DECOD_BRANCH_UPDATE_PREDICTION_ID  );
    123   INSTANCE_SC_SIGNAL (_Ifetch_queue,out_DECOD_EXCEPTION                    );
    124   INSTANCE_SC_SIGNAL (_Ifetch_queue, in_ICACHE_RSP_VAL                     );
    125   INSTANCE_SC_SIGNAL (_Ifetch_queue,out_ICACHE_RSP_ACK                     );
     122  INSTANCE0_SC_SIGNAL(_Ifetch_queue,out_DECOD_BRANCH_UPDATE_PREDICTION_ID  );
     123  INSTANCE0_SC_SIGNAL(_Ifetch_queue,out_DECOD_EXCEPTION                    );
     124  INSTANCE0_SC_SIGNAL(_Ifetch_queue, in_ICACHE_RSP_VAL                     );
     125  INSTANCE0_SC_SIGNAL(_Ifetch_queue,out_ICACHE_RSP_ACK                     );
    126126  if (_param->_have_port_ifetch_queue_ptr)
    127   INSTANCE_SC_SIGNAL (_Ifetch_queue, in_ICACHE_RSP_PACKET_ID               );
     127  INSTANCE0_SC_SIGNAL(_Ifetch_queue, in_ICACHE_RSP_PACKET_ID               );
    128128  INSTANCE1_SC_SIGNAL(_Ifetch_queue, in_ICACHE_RSP_INSTRUCTION             ,_param->_nb_instruction);
    129   INSTANCE_SC_SIGNAL (_Ifetch_queue, in_ICACHE_RSP_ERROR                   );
    130   INSTANCE_SC_SIGNAL (_Ifetch_queue, in_EVENT_RESET_VAL                    );
    131   INSTANCE_SC_SIGNAL (_Ifetch_queue,out_EVENT_RESET_ACK                    );
     129  INSTANCE0_SC_SIGNAL(_Ifetch_queue, in_ICACHE_RSP_ERROR                   );
     130  INSTANCE0_SC_SIGNAL(_Ifetch_queue, in_EVENT_RESET_VAL                    );
     131  INSTANCE0_SC_SIGNAL(_Ifetch_queue,out_EVENT_RESET_ACK                    );
    132132
    133133  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_allocation.cpp

    r88 r112  
    4848                                                         ,IN
    4949                                                         ,SOUTH,
    50                                                          "Generalist interface"
     50                                                         _("Generalist interface")
    5151#endif
    5252                                                         );
     
    5858    // ~~~~~[ Interface : "address" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC_INTERFACE("address", IN, NORTH, "Transaction with PC management.");
     60      ALLOC0_INTERFACE_BEGIN("address", IN, NORTH, "Transaction with PC management.");
    6161
    62       ALLOC_VALACK_IN ( in_ADDRESS_VAL                        ,VAL);
    63       ALLOC_VALACK_OUT(out_ADDRESS_ACK                        ,ACK);
    64       ALLOC_SIGNAL_IN ( in_ADDRESS_INSTRUCTION_ADDRESS        ,"instruction_address"        ,Tgeneral_address_t ,_param->_size_instruction_address        );
    65       ALLOC_SIGNAL_IN ( in_ADDRESS_INST_IFETCH_PTR            ,"inst_ifetch_ptr"            ,Tinst_ifetch_ptr_t ,_param->_size_inst_ifetch_ptr);
    66       ALLOC_SIGNAL_IN ( in_ADDRESS_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t    ,_param->_size_branch_state   );
    67       ALLOC_SIGNAL_IN ( in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t  ,_param->_size_depth          );
    68       ALLOC_SIGNAL_OUT(out_ADDRESS_IFETCH_QUEUE_ID            ,"ifetch_queue_id"            ,Tifetch_queue_ptr_t,_param->_size_ifetch_queue_ptr);
     62      ALLOC0_VALACK_IN ( in_ADDRESS_VAL                        ,VAL);
     63      ALLOC0_VALACK_OUT(out_ADDRESS_ACK                        ,ACK);
     64      ALLOC0_SIGNAL_IN ( in_ADDRESS_INSTRUCTION_ADDRESS        ,"instruction_address"        ,Tgeneral_address_t ,_param->_size_instruction_address        );
     65      ALLOC0_SIGNAL_IN ( in_ADDRESS_INST_IFETCH_PTR            ,"inst_ifetch_ptr"            ,Tinst_ifetch_ptr_t ,_param->_size_inst_ifetch_ptr);
     66      ALLOC0_SIGNAL_IN ( in_ADDRESS_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t    ,_param->_size_branch_state   );
     67      ALLOC0_SIGNAL_IN ( in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t  ,_param->_size_depth          );
     68      ALLOC0_SIGNAL_OUT(out_ADDRESS_IFETCH_QUEUE_ID            ,"ifetch_queue_id"            ,Tifetch_queue_ptr_t,_param->_size_ifetch_queue_ptr);
    6969
     70      ALLOC0_INTERFACE_END();
    7071    }
    7172    {
    72       ALLOC1_INTERFACE("address", IN, NORTH, "Transaction with PC management.",_param->_nb_instruction);
     73      ALLOC1_INTERFACE_BEGIN("address", IN, NORTH, _("Transaction with PC management."),_param->_nb_instruction);
    7374
    7475      ALLOC1_SIGNAL_IN( in_ADDRESS_INSTRUCTION_ENABLE         ,"instruction_enable"         ,Tcontrol_t         ,1);
     76
     77      ALLOC1_INTERFACE_END(_param->_nb_instruction);
    7578    }
    7679
    7780    // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7881    {
    79       ALLOC1_INTERFACE("decod",OUT, EAST, "Send instruction bundle to the decod's stage.",_param->_nb_instruction);
     82      ALLOC1_INTERFACE_BEGIN("decod",OUT, EAST, _("Send instruction bundle to the decod's stage."),_param->_nb_instruction);
    8083     
    8184      ALLOC1_VALACK_OUT(out_DECOD_VAL        ,VAL);
    8285      ALLOC1_VALACK_IN ( in_DECOD_ACK        ,ACK);
    8386      ALLOC1_SIGNAL_OUT(out_DECOD_INSTRUCTION,"instruction",Tinstruction_t,_param->_size_instruction);
     87
     88      ALLOC1_INTERFACE_END(_param->_nb_instruction);
    8489    }
    8590    {
    86       ALLOC_INTERFACE("decod",OUT, EAST, "Send instruction bundle to the decod's stage.");
     91      ALLOC0_INTERFACE_BEGIN("decod",OUT, EAST, _("Send instruction bundle to the decod's stage."));
    8792     
    88       ALLOC_SIGNAL_OUT(out_DECOD_ADDRESS                    ,"address"                    ,Tgeneral_address_t,_param->_size_instruction_address         );
    89       ALLOC_SIGNAL_OUT(out_DECOD_INST_IFETCH_PTR            ,"inst_ifetch_ptr"            ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr );
    90       ALLOC_SIGNAL_OUT(out_DECOD_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t   ,_param->_size_branch_state    );
    91       ALLOC_SIGNAL_OUT(out_DECOD_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth           );
    92       ALLOC_SIGNAL_OUT(out_DECOD_EXCEPTION                  ,"exception"                  ,Texception_t      ,_param->_size_exception_ifetch);
     93      ALLOC0_SIGNAL_OUT(out_DECOD_ADDRESS                    ,"address"                    ,Tgeneral_address_t,_param->_size_instruction_address         );
     94      ALLOC0_SIGNAL_OUT(out_DECOD_INST_IFETCH_PTR            ,"inst_ifetch_ptr"            ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr );
     95      ALLOC0_SIGNAL_OUT(out_DECOD_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t   ,_param->_size_branch_state    );
     96      ALLOC0_SIGNAL_OUT(out_DECOD_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth           );
     97      ALLOC0_SIGNAL_OUT(out_DECOD_EXCEPTION                  ,"exception"                  ,Texception_t      ,_param->_size_exception_ifetch);
     98
     99      ALLOC0_INTERFACE_END();
    93100    }
    94101
    95102    // ~~~~~[ Interface "icache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    96103    {
    97       ALLOC_INTERFACE("icache_rsp", IN, WEST, "Respons from Instruction Cache.");
     104      ALLOC0_INTERFACE_BEGIN("icache_rsp", IN, WEST, _("Respons from Instruction Cache."));
    98105     
    99       ALLOC_VALACK_IN ( in_ICACHE_RSP_VAL      ,VAL);
    100       ALLOC_VALACK_OUT(out_ICACHE_RSP_ACK      ,ACK);
    101       ALLOC_SIGNAL_IN ( in_ICACHE_RSP_PACKET_ID,"packet_id",Tpacket_t      ,_param->_size_ifetch_queue_ptr);
    102       ALLOC_SIGNAL_IN ( in_ICACHE_RSP_ERROR    ,"error"    ,Ticache_error_t,_param->_size_icache_error);
     106      ALLOC0_VALACK_IN ( in_ICACHE_RSP_VAL      ,VAL);
     107      ALLOC0_VALACK_OUT(out_ICACHE_RSP_ACK      ,ACK);
     108      ALLOC0_SIGNAL_IN ( in_ICACHE_RSP_PACKET_ID,"packet_id",Tpacket_t      ,_param->_size_ifetch_queue_ptr);
     109      ALLOC0_SIGNAL_IN ( in_ICACHE_RSP_ERROR    ,"error"    ,Ticache_error_t,_param->_size_icache_error);
     110
     111      ALLOC0_INTERFACE_END();
    103112    }
    104113    {
    105       ALLOC1_INTERFACE("icache_rsp", IN, WEST, "Respons from Instruction Cache.",_param->_nb_instruction);
     114      ALLOC1_INTERFACE_BEGIN("icache_rsp", IN, WEST, _("Respons from Instruction Cache."),_param->_nb_instruction);
    106115     
    107116      ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_INSTRUCTION,"instruction",Ticache_instruction_t,_param->_size_instruction);
     117
     118      ALLOC1_INTERFACE_END(_param->_nb_instruction);
    108119    }
    109120
    110121    // ~~~~~[ Interface "event_reset" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    111122    {
    112       ALLOC_INTERFACE("event_reset", IN, NORTH, "An event occure and reset queue.");
     123      ALLOC0_INTERFACE_BEGIN("event_reset", IN, NORTH, _("An event occure and reset queue."));
    113124
    114       ALLOC_VALACK_IN ( in_EVENT_RESET_VAL,VAL);
    115       ALLOC_VALACK_OUT(out_EVENT_RESET_ACK,ACK);
     125      ALLOC0_VALACK_IN ( in_EVENT_RESET_VAL,VAL);
     126      ALLOC0_VALACK_OUT(out_EVENT_RESET_ACK,ACK);
     127
     128      ALLOC0_INTERFACE_END();
    116129    }
    117130
     
    119132    if (usage_is_set(_usage,USE_SYSTEMC))
    120133      {
    121         internal_DECOD_VAL = new Tcontrol_t [_param->_nb_instruction];
     134        ALLOC1(internal_DECOD_VAL,Tcontrol_t,_param->_nb_instruction);
    122135       
    123136        _queue = new ifetch_queue_entry_t * [_param->_size_queue];
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Ifetch_queue.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2829        delete    in_NRESET;
    2930
    30         delete     in_ADDRESS_VAL                        ;
    31         delete    out_ADDRESS_ACK                        ;
    32         if (_param->_have_port_ifetch_queue_ptr)
    33         delete    out_ADDRESS_IFETCH_QUEUE_ID            ;
    34         delete []  in_ADDRESS_INSTRUCTION_ENABLE         ;
    35         delete     in_ADDRESS_INSTRUCTION_ADDRESS        ;
    36         if (_param->_have_port_inst_ifetch_ptr)
    37         delete     in_ADDRESS_INST_IFETCH_PTR            ;
    38         delete     in_ADDRESS_BRANCH_STATE               ;
    39         if (_param->_have_port_depth)
    40         delete     in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID;
    41         delete [] out_DECOD_VAL                          ;
    42         delete []  in_DECOD_ACK                          ;
    43         delete [] out_DECOD_INSTRUCTION                  ;
    44         delete    out_DECOD_ADDRESS                      ;
    45         if (_param->_have_port_inst_ifetch_ptr)
    46         delete    out_DECOD_INST_IFETCH_PTR              ;
    47         delete    out_DECOD_BRANCH_STATE                 ;
    48         if (_param->_have_port_depth)
    49         delete    out_DECOD_BRANCH_UPDATE_PREDICTION_ID  ;
    50         delete    out_DECOD_EXCEPTION                    ;
    51         delete     in_ICACHE_RSP_VAL                     ;
    52         delete    out_ICACHE_RSP_ACK                     ;
    53         if (_param->_have_port_ifetch_queue_ptr)
    54         delete     in_ICACHE_RSP_PACKET_ID               ;
    55         delete []  in_ICACHE_RSP_INSTRUCTION             ;
    56         delete     in_ICACHE_RSP_ERROR                   ;
    57         delete     in_EVENT_RESET_VAL                    ;
    58         delete    out_EVENT_RESET_ACK                    ;
     31        DELETE0_SIGNAL( in_ADDRESS_VAL                        ,1);
     32        DELETE0_SIGNAL(out_ADDRESS_ACK                        ,1);
     33        DELETE0_SIGNAL( in_ADDRESS_INSTRUCTION_ADDRESS        ,_param->_size_instruction_address);
     34        DELETE0_SIGNAL( in_ADDRESS_INST_IFETCH_PTR            ,_param->_size_inst_ifetch_ptr);
     35        DELETE0_SIGNAL( in_ADDRESS_BRANCH_STATE               ,_param->_size_branch_state   );
     36        DELETE0_SIGNAL( in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID,_param->_size_depth          );
     37        DELETE0_SIGNAL(out_ADDRESS_IFETCH_QUEUE_ID            ,_param->_size_ifetch_queue_ptr);
     38        DELETE1_SIGNAL( in_ADDRESS_INSTRUCTION_ENABLE         ,1,_param->_nb_instruction);
     39     
     40        DELETE1_SIGNAL(out_DECOD_VAL                        ,1,_param->_nb_instruction);
     41        DELETE1_SIGNAL( in_DECOD_ACK                        ,1,_param->_nb_instruction);
     42        DELETE1_SIGNAL(out_DECOD_INSTRUCTION                ,_param->_size_instruction,_param->_nb_instruction);
     43        DELETE0_SIGNAL(out_DECOD_ADDRESS                    ,_param->_size_instruction_address);
     44        DELETE0_SIGNAL(out_DECOD_INST_IFETCH_PTR            ,_param->_size_inst_ifetch_ptr );
     45        DELETE0_SIGNAL(out_DECOD_BRANCH_STATE               ,_param->_size_branch_state    );
     46        DELETE0_SIGNAL(out_DECOD_BRANCH_UPDATE_PREDICTION_ID,_param->_size_depth           );
     47        DELETE0_SIGNAL(out_DECOD_EXCEPTION                  ,_param->_size_exception_ifetch);
     48
     49        DELETE0_SIGNAL( in_ICACHE_RSP_VAL        ,1);
     50        DELETE0_SIGNAL(out_ICACHE_RSP_ACK        ,1);
     51        DELETE0_SIGNAL( in_ICACHE_RSP_PACKET_ID  ,_param->_size_ifetch_queue_ptr);
     52        DELETE0_SIGNAL( in_ICACHE_RSP_ERROR      ,_param->_size_icache_error);
     53        DELETE1_SIGNAL( in_ICACHE_RSP_INSTRUCTION,_param->_size_instruction,_param->_nb_instruction);
     54
     55        DELETE0_SIGNAL( in_EVENT_RESET_VAL,1);
     56        DELETE0_SIGNAL(out_EVENT_RESET_ACK,1);
    5957      }
    6058
     
    6260    if (usage_is_set(_usage,USE_SYSTEMC))
    6361      {
    64         delete    internal_DECOD_VAL;
     62        DELETE1(internal_DECOD_VAL,_param->_nb_instruction);
     63       
     64        for (uint32_t i=0;i<_param->_size_queue; i++)
     65          delete _queue[i];
    6566        delete [] _queue;
    6667      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_unit_Glue/SelfTest/src/test.cpp

    r88 r112  
    5050  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
    5151
    52   ALLOC_SC_SIGNAL(out_ICACHE_REQ_VAL        ,"out_ICACHE_REQ_VAL        ",Tcontrol_t);
    53   ALLOC_SC_SIGNAL( in_ICACHE_REQ_ADDRESS_VAL," in_ICACHE_REQ_ADDRESS_VAL",Tcontrol_t);
    54   ALLOC_SC_SIGNAL(out_ICACHE_REQ_QUEUE_VAL  ,"out_ICACHE_REQ_QUEUE_VAL  ",Tcontrol_t);
    55   ALLOC_SC_SIGNAL( in_ICACHE_REQ_ACK        ," in_ICACHE_REQ_ACK        ",Tcontrol_t);
    56   ALLOC_SC_SIGNAL(out_ICACHE_REQ_ADDRESS_ACK,"out_ICACHE_REQ_ADDRESS_ACK",Tcontrol_t);
    57   ALLOC_SC_SIGNAL( in_ICACHE_REQ_QUEUE_ACK  ," in_ICACHE_REQ_QUEUE_ACK  ",Tcontrol_t);
    58   ALLOC_SC_SIGNAL(out_ICACHE_REQ_TYPE       ,"out_ICACHE_REQ_TYPE       ",Ticache_type_t);
    59   ALLOC_SC_SIGNAL(out_ICACHE_REQ_ADDRESS        ,"out_ICACHE_REQ_ADDRESS        ",Taddress_t);
    60   ALLOC_SC_SIGNAL( in_ICACHE_REQ_ADDRESS_ADDRESS," in_ICACHE_REQ_ADDRESS_ADDRESS",Taddress_t);
    61   ALLOC_SC_SIGNAL(out_ICACHE_REQ_QUEUE_ADDRESS  ,"out_ICACHE_REQ_QUEUE_ADDRESS  ",Taddress_t);
    62   ALLOC_SC_SIGNAL( in_EVENT_VAL             ," in_EVENT_VAL             ",Tcontrol_t);
    63   ALLOC_SC_SIGNAL(out_EVENT_ADDRESS_VAL     ,"out_EVENT_ADDRESS_VAL     ",Tcontrol_t);
    64   ALLOC_SC_SIGNAL(out_EVENT_QUEUE_VAL       ,"out_EVENT_QUEUE_VAL       ",Tcontrol_t);
    65   ALLOC_SC_SIGNAL(out_EVENT_ACK             ,"out_EVENT_ACK             ",Tcontrol_t);
    66   ALLOC_SC_SIGNAL( in_EVENT_ADDRESS_ACK     ," in_EVENT_ADDRESS_ACK     ",Tcontrol_t);
    67   ALLOC_SC_SIGNAL( in_EVENT_QUEUE_ACK       ," in_EVENT_QUEUE_ACK       ",Tcontrol_t);
     52  ALLOC0_SC_SIGNAL(out_ICACHE_REQ_VAL        ,"out_ICACHE_REQ_VAL        ",Tcontrol_t);
     53  ALLOC0_SC_SIGNAL( in_ICACHE_REQ_ADDRESS_VAL," in_ICACHE_REQ_ADDRESS_VAL",Tcontrol_t);
     54  ALLOC0_SC_SIGNAL(out_ICACHE_REQ_QUEUE_VAL  ,"out_ICACHE_REQ_QUEUE_VAL  ",Tcontrol_t);
     55  ALLOC0_SC_SIGNAL( in_ICACHE_REQ_ACK        ," in_ICACHE_REQ_ACK        ",Tcontrol_t);
     56  ALLOC0_SC_SIGNAL(out_ICACHE_REQ_ADDRESS_ACK,"out_ICACHE_REQ_ADDRESS_ACK",Tcontrol_t);
     57  ALLOC0_SC_SIGNAL( in_ICACHE_REQ_QUEUE_ACK  ," in_ICACHE_REQ_QUEUE_ACK  ",Tcontrol_t);
     58  ALLOC0_SC_SIGNAL(out_ICACHE_REQ_TYPE       ,"out_ICACHE_REQ_TYPE       ",Ticache_type_t);
     59  ALLOC0_SC_SIGNAL(out_ICACHE_REQ_ADDRESS        ,"out_ICACHE_REQ_ADDRESS        ",Taddress_t);
     60  ALLOC0_SC_SIGNAL( in_ICACHE_REQ_ADDRESS_ADDRESS," in_ICACHE_REQ_ADDRESS_ADDRESS",Taddress_t);
     61  ALLOC0_SC_SIGNAL(out_ICACHE_REQ_QUEUE_ADDRESS  ,"out_ICACHE_REQ_QUEUE_ADDRESS  ",Taddress_t);
     62  ALLOC0_SC_SIGNAL( in_EVENT_VAL             ," in_EVENT_VAL             ",Tcontrol_t);
     63  ALLOC0_SC_SIGNAL(out_EVENT_ADDRESS_VAL     ,"out_EVENT_ADDRESS_VAL     ",Tcontrol_t);
     64  ALLOC0_SC_SIGNAL(out_EVENT_QUEUE_VAL       ,"out_EVENT_QUEUE_VAL       ",Tcontrol_t);
     65  ALLOC0_SC_SIGNAL(out_EVENT_ACK             ,"out_EVENT_ACK             ",Tcontrol_t);
     66  ALLOC0_SC_SIGNAL( in_EVENT_ADDRESS_ACK     ," in_EVENT_ADDRESS_ACK     ",Tcontrol_t);
     67  ALLOC0_SC_SIGNAL( in_EVENT_QUEUE_ACK       ," in_EVENT_QUEUE_ACK       ",Tcontrol_t);
    6868 
    6969  /********************************************************
     
    7676  (*(_Ifetch_unit_Glue->in_NRESET))       (*(in_NRESET));
    7777
    78   INSTANCE_SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_VAL        );
    79   INSTANCE_SC_SIGNAL(_Ifetch_unit_Glue, in_ICACHE_REQ_ADDRESS_VAL);
    80   INSTANCE_SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_QUEUE_VAL  );
    81   INSTANCE_SC_SIGNAL(_Ifetch_unit_Glue, in_ICACHE_REQ_ACK        );
    82   INSTANCE_SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_ADDRESS_ACK);
    83   INSTANCE_SC_SIGNAL(_Ifetch_unit_Glue, in_ICACHE_REQ_QUEUE_ACK  );
    84   INSTANCE_SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_ADDRESS        );
    85   INSTANCE_SC_SIGNAL(_Ifetch_unit_Glue, in_ICACHE_REQ_ADDRESS_ADDRESS);
    86   INSTANCE_SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_QUEUE_ADDRESS  );
    87   INSTANCE_SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_TYPE       );
    88   INSTANCE_SC_SIGNAL(_Ifetch_unit_Glue, in_EVENT_VAL             );
    89   INSTANCE_SC_SIGNAL(_Ifetch_unit_Glue,out_EVENT_ADDRESS_VAL     );
    90   INSTANCE_SC_SIGNAL(_Ifetch_unit_Glue,out_EVENT_QUEUE_VAL       );
    91   INSTANCE_SC_SIGNAL(_Ifetch_unit_Glue,out_EVENT_ACK             );
    92   INSTANCE_SC_SIGNAL(_Ifetch_unit_Glue, in_EVENT_ADDRESS_ACK     );
    93   INSTANCE_SC_SIGNAL(_Ifetch_unit_Glue, in_EVENT_QUEUE_ACK       );
     78  INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_VAL        );
     79  INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue, in_ICACHE_REQ_ADDRESS_VAL);
     80  INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_QUEUE_VAL  );
     81  INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue, in_ICACHE_REQ_ACK        );
     82  INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_ADDRESS_ACK);
     83  INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue, in_ICACHE_REQ_QUEUE_ACK  );
     84  INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_ADDRESS        );
     85  INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue, in_ICACHE_REQ_ADDRESS_ADDRESS);
     86  INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_QUEUE_ADDRESS  );
     87  INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_TYPE       );
     88  INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue, in_EVENT_VAL             );
     89  INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue,out_EVENT_ADDRESS_VAL     );
     90  INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue,out_EVENT_QUEUE_VAL       );
     91  INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue,out_EVENT_ACK             );
     92  INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue, in_EVENT_ADDRESS_ACK     );
     93  INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue, in_EVENT_QUEUE_ACK       );
    9494
    9595  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_unit_Glue/src/Ifetch_unit_Glue_allocation.cpp

    r88 r112  
    4848                                                         ,IN
    4949                                                         ,SOUTH,
    50                                                          "Generalist interface"
     50                                                         _("Generalist interface")
    5151#endif
    5252                                                         );
     
    5858    // ~~~~~[ Interface "icache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC_INTERFACE("icache_req",OUT, WEST, "Instruction Cache request.");
     60      ALLOC0_INTERFACE_BEGIN("icache_req",OUT, WEST, "Instruction Cache request.");
    6161
    62       ALLOC_SIGNAL_OUT(out_ICACHE_REQ_VAL            ,"val"            ,Tcontrol_t,1);
    63       ALLOC_SIGNAL_IN ( in_ICACHE_REQ_ADDRESS_VAL    ,"address_val"    ,Tcontrol_t,1);
    64       ALLOC_SIGNAL_OUT(out_ICACHE_REQ_QUEUE_VAL      ,"queue_val"      ,Tcontrol_t,1);
    65       ALLOC_SIGNAL_IN ( in_ICACHE_REQ_ACK            ,"ack"            ,Tcontrol_t,1);
    66       ALLOC_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS_ACK    ,"address_ack"    ,Tcontrol_t,1);
    67       ALLOC_SIGNAL_IN ( in_ICACHE_REQ_QUEUE_ACK      ,"queue_ack"      ,Tcontrol_t,1);
    68       ALLOC_SIGNAL_OUT(out_ICACHE_REQ_TYPE           ,"type"           ,Ticache_type_t,_param->_size_icache_type);
    69       ALLOC_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS        ,"address"        ,Taddress_t,_param->_size_instruction_address);
    70       ALLOC_SIGNAL_IN ( in_ICACHE_REQ_ADDRESS_ADDRESS,"address_address",Taddress_t,_param->_size_instruction_address);
    71       ALLOC_SIGNAL_OUT(out_ICACHE_REQ_QUEUE_ADDRESS  ,"queue_address"  ,Taddress_t,_param->_size_instruction_address);
     62      ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_VAL            ,"val"            ,Tcontrol_t,1);
     63      ALLOC0_SIGNAL_IN ( in_ICACHE_REQ_ADDRESS_VAL    ,"address_val"    ,Tcontrol_t,1);
     64      ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_QUEUE_VAL      ,"queue_val"      ,Tcontrol_t,1);
     65      ALLOC0_SIGNAL_IN ( in_ICACHE_REQ_ACK            ,"ack"            ,Tcontrol_t,1);
     66      ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS_ACK    ,"address_ack"    ,Tcontrol_t,1);
     67      ALLOC0_SIGNAL_IN ( in_ICACHE_REQ_QUEUE_ACK      ,"queue_ack"      ,Tcontrol_t,1);
     68      ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_TYPE           ,"type"           ,Ticache_type_t,_param->_size_icache_type);
     69      ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS        ,"address"        ,Taddress_t,_param->_size_instruction_address);
     70      ALLOC0_SIGNAL_IN ( in_ICACHE_REQ_ADDRESS_ADDRESS,"address_address",Taddress_t,_param->_size_instruction_address);
     71      ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_QUEUE_ADDRESS  ,"queue_address"  ,Taddress_t,_param->_size_instruction_address);
     72
     73      ALLOC0_INTERFACE_END();
    7274    }
    7375
    7476    // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7577    {
    76       ALLOC_INTERFACE("event",IN, EAST, "Event interface.");
     78      ALLOC0_INTERFACE_BEGIN("event",IN, EAST, _("Event interface."));
    7779
    78       ALLOC_SIGNAL_IN ( in_EVENT_VAL        ,"val"        ,Tcontrol_t,1);
    79       ALLOC_SIGNAL_OUT(out_EVENT_ADDRESS_VAL,"address_val",Tcontrol_t,1);
    80       ALLOC_SIGNAL_OUT(out_EVENT_QUEUE_VAL  ,"queue_val"  ,Tcontrol_t,1);
    81       ALLOC_SIGNAL_OUT(out_EVENT_ACK        ,"ack"        ,Tcontrol_t,1);
    82       ALLOC_SIGNAL_IN ( in_EVENT_ADDRESS_ACK,"address_ack",Tcontrol_t,1);
    83       ALLOC_SIGNAL_IN ( in_EVENT_QUEUE_ACK  ,"queue_ack"  ,Tcontrol_t,1);
     80      ALLOC0_SIGNAL_IN ( in_EVENT_VAL        ,"val"        ,Tcontrol_t,1);
     81      ALLOC0_SIGNAL_OUT(out_EVENT_ADDRESS_VAL,"address_val",Tcontrol_t,1);
     82      ALLOC0_SIGNAL_OUT(out_EVENT_QUEUE_VAL  ,"queue_val"  ,Tcontrol_t,1);
     83      ALLOC0_SIGNAL_OUT(out_EVENT_ACK        ,"ack"        ,Tcontrol_t,1);
     84      ALLOC0_SIGNAL_IN ( in_EVENT_ADDRESS_ACK,"address_ack",Tcontrol_t,1);
     85      ALLOC0_SIGNAL_IN ( in_EVENT_QUEUE_ACK  ,"queue_ack"  ,Tcontrol_t,1);
     86
     87      ALLOC0_INTERFACE_END();
    8488    }
    8589
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_unit_Glue/src/Ifetch_unit_Glue_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_unit_Glue/include/Ifetch_unit_Glue.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2829        delete     in_NRESET;
    2930
    30         delete    out_ICACHE_REQ_VAL         ;
    31         delete     in_ICACHE_REQ_ADDRESS_VAL ;
    32         delete    out_ICACHE_REQ_QUEUE_VAL   ;
    33         delete     in_ICACHE_REQ_ACK         ;
    34         delete    out_ICACHE_REQ_ADDRESS_ACK ;
    35         delete     in_ICACHE_REQ_QUEUE_ACK   ;
    36         delete    out_ICACHE_REQ_TYPE        ;
    37         delete    out_ICACHE_REQ_ADDRESS         ;
    38         delete     in_ICACHE_REQ_ADDRESS_ADDRESS ;
    39         delete    out_ICACHE_REQ_QUEUE_ADDRESS   ;
    40        
    41         delete     in_EVENT_VAL              ;
    42         delete    out_EVENT_ADDRESS_VAL      ;
    43         delete    out_EVENT_QUEUE_VAL        ;
    44         delete    out_EVENT_ACK              ;
    45         delete     in_EVENT_ADDRESS_ACK      ;
    46         delete     in_EVENT_QUEUE_ACK        ;
     31        DELETE0_SIGNAL(out_ICACHE_REQ_VAL            ,1);
     32        DELETE0_SIGNAL( in_ICACHE_REQ_ADDRESS_VAL    ,1);
     33        DELETE0_SIGNAL(out_ICACHE_REQ_QUEUE_VAL      ,1);
     34        DELETE0_SIGNAL( in_ICACHE_REQ_ACK            ,1);
     35        DELETE0_SIGNAL(out_ICACHE_REQ_ADDRESS_ACK    ,1);
     36        DELETE0_SIGNAL( in_ICACHE_REQ_QUEUE_ACK      ,1);
     37        DELETE0_SIGNAL(out_ICACHE_REQ_TYPE           ,_param->_size_icache_type);
     38        DELETE0_SIGNAL(out_ICACHE_REQ_ADDRESS        ,_param->_size_instruction_address);
     39        DELETE0_SIGNAL( in_ICACHE_REQ_ADDRESS_ADDRESS,_param->_size_instruction_address);
     40        DELETE0_SIGNAL(out_ICACHE_REQ_QUEUE_ADDRESS  ,_param->_size_instruction_address);
     41       
     42        DELETE0_SIGNAL( in_EVENT_VAL        ,1);
     43        DELETE0_SIGNAL(out_EVENT_ADDRESS_VAL,1);
     44        DELETE0_SIGNAL(out_EVENT_QUEUE_VAL  ,1);
     45        DELETE0_SIGNAL(out_EVENT_ACK        ,1);
     46        DELETE0_SIGNAL( in_EVENT_ADDRESS_ACK,1);
     47        DELETE0_SIGNAL( in_EVENT_QUEUE_ACK  ,1);
    4748      }
    48 
    4949    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    5050
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/SelfTest/config.cfg

    r85 r112  
    11Ifetch_unit
    2 1       8       *2      # _size_queue                   
     28       16      *2      # _size_queue                   
    331       8       *2      # _nb_instruction               
    441       1       *2      # _size_branch_update_prediction
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/SelfTest/src/test.cpp

    r101 r112  
    6666  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
    6767
    68   ALLOC_SC_SIGNAL (out_ICACHE_REQ_VAL                     ,"out_ICACHE_REQ_VAL                     ",Tcontrol_t           );
    69   ALLOC_SC_SIGNAL ( in_ICACHE_REQ_ACK                     ," in_ICACHE_REQ_ACK                     ",Tcontrol_t           );
    70 //ALLOC_SC_SIGNAL (out_ICACHE_REQ_THREAD_ID               ,"out_ICACHE_REQ_THREAD_ID               ",Tcontext_t           );
    71   ALLOC_SC_SIGNAL (out_ICACHE_REQ_PACKET_ID               ,"out_ICACHE_REQ_PACKET_ID               ",Tpacket_t            );
    72   ALLOC_SC_SIGNAL (out_ICACHE_REQ_ADDRESS                 ,"out_ICACHE_REQ_ADDRESS                 ",Ticache_instruction_t);
    73   ALLOC_SC_SIGNAL (out_ICACHE_REQ_TYPE                    ,"out_ICACHE_REQ_TYPE                    ",Ticache_type_t       );
    74   ALLOC_SC_SIGNAL ( in_ICACHE_RSP_VAL                     ," in_ICACHE_RSP_VAL                     ",Tcontrol_t           );
    75   ALLOC_SC_SIGNAL (out_ICACHE_RSP_ACK                     ,"out_ICACHE_RSP_ACK                     ",Tcontrol_t           );
    76 //ALLOC_SC_SIGNAL ( in_ICACHE_RSP_THREAD_ID               ," in_ICACHE_RSP_THREAD_ID               ",Tcontext_t           );
    77   ALLOC_SC_SIGNAL ( in_ICACHE_RSP_PACKET_ID               ," in_ICACHE_RSP_PACKET_ID               ",Tpacket_t            );
     68  ALLOC0_SC_SIGNAL(out_ICACHE_REQ_VAL                     ,"out_ICACHE_REQ_VAL                     ",Tcontrol_t           );
     69  ALLOC0_SC_SIGNAL( in_ICACHE_REQ_ACK                     ," in_ICACHE_REQ_ACK                     ",Tcontrol_t           );
     70//ALLOC0_SC_SIGNAL(out_ICACHE_REQ_THREAD_ID               ,"out_ICACHE_REQ_THREAD_ID               ",Tcontext_t           );
     71  ALLOC0_SC_SIGNAL(out_ICACHE_REQ_PACKET_ID               ,"out_ICACHE_REQ_PACKET_ID               ",Tpacket_t            );
     72  ALLOC0_SC_SIGNAL(out_ICACHE_REQ_ADDRESS                 ,"out_ICACHE_REQ_ADDRESS                 ",Ticache_instruction_t);
     73  ALLOC0_SC_SIGNAL(out_ICACHE_REQ_TYPE                    ,"out_ICACHE_REQ_TYPE                    ",Ticache_type_t       );
     74  ALLOC0_SC_SIGNAL( in_ICACHE_RSP_VAL                     ," in_ICACHE_RSP_VAL                     ",Tcontrol_t           );
     75  ALLOC0_SC_SIGNAL(out_ICACHE_RSP_ACK                     ,"out_ICACHE_RSP_ACK                     ",Tcontrol_t           );
     76//ALLOC0_SC_SIGNAL( in_ICACHE_RSP_THREAD_ID               ," in_ICACHE_RSP_THREAD_ID               ",Tcontext_t           );
     77  ALLOC0_SC_SIGNAL( in_ICACHE_RSP_PACKET_ID               ," in_ICACHE_RSP_PACKET_ID               ",Tpacket_t            );
    7878  ALLOC1_SC_SIGNAL( in_ICACHE_RSP_INSTRUCTION             ," in_ICACHE_RSP_INSTRUCTION             ",Ticache_instruction_t,_param->_nb_instruction);
    79   ALLOC_SC_SIGNAL ( in_ICACHE_RSP_ERROR                   ," in_ICACHE_RSP_ERROR                   ",Ticache_error_t      );
    80   ALLOC_SC_SIGNAL (out_PREDICT_VAL                        ,"out_PREDICT_VAL                        ",Tcontrol_t           );
    81   ALLOC_SC_SIGNAL ( in_PREDICT_ACK                        ," in_PREDICT_ACK                        ",Tcontrol_t           );
    82   ALLOC_SC_SIGNAL (out_PREDICT_PC_PREVIOUS                ,"out_PREDICT_PC_PREVIOUS                ",Tgeneral_address_t   );
    83   ALLOC_SC_SIGNAL (out_PREDICT_PC_CURRENT                 ,"out_PREDICT_PC_CURRENT                 ",Tgeneral_address_t   );
    84   ALLOC_SC_SIGNAL (out_PREDICT_PC_CURRENT_IS_DS_TAKE      ,"out_PREDICT_PC_CURRENT_IS_DS_TAKE      ",Tcontrol_t           );
    85   ALLOC_SC_SIGNAL ( in_PREDICT_PC_NEXT                    ," in_PREDICT_PC_NEXT                    ",Tgeneral_address_t   );
    86   ALLOC_SC_SIGNAL ( in_PREDICT_PC_NEXT_IS_DS_TAKE         ," in_PREDICT_PC_NEXT_IS_DS_TAKE         ",Tcontrol_t           );
     79  ALLOC0_SC_SIGNAL( in_ICACHE_RSP_ERROR                   ," in_ICACHE_RSP_ERROR                   ",Ticache_error_t      );
     80  ALLOC0_SC_SIGNAL(out_PREDICT_VAL                        ,"out_PREDICT_VAL                        ",Tcontrol_t           );
     81  ALLOC0_SC_SIGNAL( in_PREDICT_ACK                        ," in_PREDICT_ACK                        ",Tcontrol_t           );
     82  ALLOC0_SC_SIGNAL(out_PREDICT_PC_PREVIOUS                ,"out_PREDICT_PC_PREVIOUS                ",Tgeneral_address_t   );
     83  ALLOC0_SC_SIGNAL(out_PREDICT_PC_CURRENT                 ,"out_PREDICT_PC_CURRENT                 ",Tgeneral_address_t   );
     84  ALLOC0_SC_SIGNAL(out_PREDICT_PC_CURRENT_IS_DS_TAKE      ,"out_PREDICT_PC_CURRENT_IS_DS_TAKE      ",Tcontrol_t           );
     85  ALLOC0_SC_SIGNAL( in_PREDICT_PC_NEXT                    ," in_PREDICT_PC_NEXT                    ",Tgeneral_address_t   );
     86  ALLOC0_SC_SIGNAL( in_PREDICT_PC_NEXT_IS_DS_TAKE         ," in_PREDICT_PC_NEXT_IS_DS_TAKE         ",Tcontrol_t           );
    8787  ALLOC1_SC_SIGNAL( in_PREDICT_INSTRUCTION_ENABLE         ," in_PREDICT_INSTRUCTION_ENABLE         ",Tcontrol_t           ,_param->_nb_instruction);
    88   ALLOC_SC_SIGNAL ( in_PREDICT_INST_IFETCH_PTR            ," in_PREDICT_INST_IFETCH_PTR            ",Tinst_ifetch_ptr_t   );
    89   ALLOC_SC_SIGNAL ( in_PREDICT_BRANCH_STATE               ," in_PREDICT_BRANCH_STATE               ",Tbranch_state_t      );
    90   ALLOC_SC_SIGNAL ( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID," in_PREDICT_BRANCH_UPDATE_PREDICTION_ID",Tprediction_ptr_t    );
     88  ALLOC0_SC_SIGNAL( in_PREDICT_INST_IFETCH_PTR            ," in_PREDICT_INST_IFETCH_PTR            ",Tinst_ifetch_ptr_t   );
     89  ALLOC0_SC_SIGNAL( in_PREDICT_BRANCH_STATE               ," in_PREDICT_BRANCH_STATE               ",Tbranch_state_t      );
     90  ALLOC0_SC_SIGNAL( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID," in_PREDICT_BRANCH_UPDATE_PREDICTION_ID",Tprediction_ptr_t    );
    9191  ALLOC1_SC_SIGNAL(out_DECOD_VAL                          ,"out_DECOD_VAL                          ",Tcontrol_t           ,_param->_nb_instruction);
    9292  ALLOC1_SC_SIGNAL( in_DECOD_ACK                          ," in_DECOD_ACK                          ",Tcontrol_t           ,_param->_nb_instruction);
    9393  ALLOC1_SC_SIGNAL(out_DECOD_INSTRUCTION                  ,"out_DECOD_INSTRUCTION                  ",Tinstruction_t       ,_param->_nb_instruction);
    94 //ALLOC_SC_SIGNAL (out_DECOD_CONTEXT_ID                   ,"out_DECOD_CONTEXT_ID                   ",Tcontext_t           );
    95   ALLOC_SC_SIGNAL (out_DECOD_ADDRESS                      ,"out_DECOD_ADDRESS                      ",Tgeneral_address_t   );
    96   ALLOC_SC_SIGNAL (out_DECOD_INST_IFETCH_PTR              ,"out_DECOD_INST_IFETCH_PTR              ",Tinst_ifetch_ptr_t   );
    97   ALLOC_SC_SIGNAL (out_DECOD_BRANCH_STATE                 ,"out_DECOD_BRANCH_STATE                 ",Tbranch_state_t      );
    98   ALLOC_SC_SIGNAL (out_DECOD_BRANCH_UPDATE_PREDICTION_ID  ,"out_DECOD_BRANCH_UPDATE_PREDICTION_ID  ",Tprediction_ptr_t    );
    99   ALLOC_SC_SIGNAL (out_DECOD_EXCEPTION                    ,"out_DECOD_EXCEPTION                    ",Texception_t         );
    100   ALLOC_SC_SIGNAL ( in_EVENT_VAL                          ," in_EVENT_VAL                          ",Tcontrol_t           );
    101   ALLOC_SC_SIGNAL (out_EVENT_ACK                          ,"out_EVENT_ACK                          ",Tcontrol_t           );
    102   ALLOC_SC_SIGNAL ( in_EVENT_ADDRESS                      ," in_EVENT_ADDRESS                      ",Tgeneral_address_t   );
    103   ALLOC_SC_SIGNAL ( in_EVENT_ADDRESS_NEXT                 ," in_EVENT_ADDRESS_NEXT                 ",Tgeneral_address_t   );
    104   ALLOC_SC_SIGNAL ( in_EVENT_ADDRESS_NEXT_VAL             ," in_EVENT_ADDRESS_NEXT_VAL             ",Tcontrol_t           );
    105   ALLOC_SC_SIGNAL ( in_EVENT_IS_DS_TAKE                   ," in_EVENT_IS_DS_TAKE                   ",Tcontrol_t           );
     94//ALLOC0_SC_SIGNAL(out_DECOD_CONTEXT_ID                   ,"out_DECOD_CONTEXT_ID                   ",Tcontext_t           );
     95  ALLOC0_SC_SIGNAL(out_DECOD_ADDRESS                      ,"out_DECOD_ADDRESS                      ",Tgeneral_address_t   );
     96  ALLOC0_SC_SIGNAL(out_DECOD_INST_IFETCH_PTR              ,"out_DECOD_INST_IFETCH_PTR              ",Tinst_ifetch_ptr_t   );
     97  ALLOC0_SC_SIGNAL(out_DECOD_BRANCH_STATE                 ,"out_DECOD_BRANCH_STATE                 ",Tbranch_state_t      );
     98  ALLOC0_SC_SIGNAL(out_DECOD_BRANCH_UPDATE_PREDICTION_ID  ,"out_DECOD_BRANCH_UPDATE_PREDICTION_ID  ",Tprediction_ptr_t    );
     99  ALLOC0_SC_SIGNAL(out_DECOD_EXCEPTION                    ,"out_DECOD_EXCEPTION                    ",Texception_t         );
     100  ALLOC0_SC_SIGNAL( in_EVENT_VAL                          ," in_EVENT_VAL                          ",Tcontrol_t           );
     101  ALLOC0_SC_SIGNAL(out_EVENT_ACK                          ,"out_EVENT_ACK                          ",Tcontrol_t           );
     102  ALLOC0_SC_SIGNAL( in_EVENT_ADDRESS                      ," in_EVENT_ADDRESS                      ",Tgeneral_address_t   );
     103  ALLOC0_SC_SIGNAL( in_EVENT_ADDRESS_NEXT                 ," in_EVENT_ADDRESS_NEXT                 ",Tgeneral_address_t   );
     104  ALLOC0_SC_SIGNAL( in_EVENT_ADDRESS_NEXT_VAL             ," in_EVENT_ADDRESS_NEXT_VAL             ",Tcontrol_t           );
     105  ALLOC0_SC_SIGNAL( in_EVENT_IS_DS_TAKE                   ," in_EVENT_IS_DS_TAKE                   ",Tcontrol_t           );
    106106 
    107107  /********************************************************
     
    114114  (*(_Ifetch_unit->in_NRESET))       (*(in_NRESET));
    115115
    116   INSTANCE_SC_SIGNAL (_Ifetch_unit,out_ICACHE_REQ_VAL                     );
    117   INSTANCE_SC_SIGNAL (_Ifetch_unit, in_ICACHE_REQ_ACK                     );
    118 //INSTANCE_SC_SIGNAL (_Ifetch_unit,out_ICACHE_REQ_THREAD_ID               );
     116  INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_ICACHE_REQ_VAL                     );
     117  INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_ICACHE_REQ_ACK                     );
     118//INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_ICACHE_REQ_THREAD_ID               );
    119119  if (_param->_have_port_ifetch_queue_ptr)
    120   INSTANCE_SC_SIGNAL (_Ifetch_unit,out_ICACHE_REQ_PACKET_ID               );
    121   INSTANCE_SC_SIGNAL (_Ifetch_unit,out_ICACHE_REQ_ADDRESS                 );
    122   INSTANCE_SC_SIGNAL (_Ifetch_unit,out_ICACHE_REQ_TYPE                    );
    123   INSTANCE_SC_SIGNAL (_Ifetch_unit, in_ICACHE_RSP_VAL                     );
    124   INSTANCE_SC_SIGNAL (_Ifetch_unit,out_ICACHE_RSP_ACK                     );
    125 //INSTANCE_SC_SIGNAL (_Ifetch_unit, in_ICACHE_RSP_THREAD_ID               );
     120  INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_ICACHE_REQ_PACKET_ID               );
     121  INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_ICACHE_REQ_ADDRESS                 );
     122  INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_ICACHE_REQ_TYPE                    );
     123  INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_ICACHE_RSP_VAL                     );
     124  INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_ICACHE_RSP_ACK                     );
     125//INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_ICACHE_RSP_THREAD_ID               );
    126126  if (_param->_have_port_ifetch_queue_ptr)
    127   INSTANCE_SC_SIGNAL (_Ifetch_unit, in_ICACHE_RSP_PACKET_ID               );
     127  INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_ICACHE_RSP_PACKET_ID               );
    128128  INSTANCE1_SC_SIGNAL(_Ifetch_unit, in_ICACHE_RSP_INSTRUCTION             ,_param->_nb_instruction);
    129   INSTANCE_SC_SIGNAL (_Ifetch_unit, in_ICACHE_RSP_ERROR                   );
    130   INSTANCE_SC_SIGNAL (_Ifetch_unit,out_PREDICT_VAL                        );
    131   INSTANCE_SC_SIGNAL (_Ifetch_unit, in_PREDICT_ACK                        );
    132   INSTANCE_SC_SIGNAL (_Ifetch_unit,out_PREDICT_PC_PREVIOUS                );
    133   INSTANCE_SC_SIGNAL (_Ifetch_unit,out_PREDICT_PC_CURRENT                 );
    134   INSTANCE_SC_SIGNAL (_Ifetch_unit,out_PREDICT_PC_CURRENT_IS_DS_TAKE      );
    135   INSTANCE_SC_SIGNAL (_Ifetch_unit, in_PREDICT_PC_NEXT                    );
    136   INSTANCE_SC_SIGNAL (_Ifetch_unit, in_PREDICT_PC_NEXT_IS_DS_TAKE         );
     129  INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_ICACHE_RSP_ERROR                   );
     130  INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_PREDICT_VAL                        );
     131  INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_PREDICT_ACK                        );
     132  INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_PREDICT_PC_PREVIOUS                );
     133  INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_PREDICT_PC_CURRENT                 );
     134  INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_PREDICT_PC_CURRENT_IS_DS_TAKE      );
     135  INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_PREDICT_PC_NEXT                    );
     136  INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_PREDICT_PC_NEXT_IS_DS_TAKE         );
    137137  INSTANCE1_SC_SIGNAL(_Ifetch_unit, in_PREDICT_INSTRUCTION_ENABLE         ,_param->_nb_instruction);
    138138  if (_param->_have_port_inst_ifetch_ptr)
    139   INSTANCE_SC_SIGNAL (_Ifetch_unit, in_PREDICT_INST_IFETCH_PTR            );
    140   INSTANCE_SC_SIGNAL (_Ifetch_unit, in_PREDICT_BRANCH_STATE               );
     139  INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_PREDICT_INST_IFETCH_PTR            );
     140  INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_PREDICT_BRANCH_STATE               );
    141141  if (_param->_have_port_depth)
    142   INSTANCE_SC_SIGNAL (_Ifetch_unit, in_PREDICT_BRANCH_UPDATE_PREDICTION_ID);
     142  INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_PREDICT_BRANCH_UPDATE_PREDICTION_ID);
    143143  INSTANCE1_SC_SIGNAL(_Ifetch_unit,out_DECOD_VAL                          ,_param->_nb_instruction);
    144144  INSTANCE1_SC_SIGNAL(_Ifetch_unit, in_DECOD_ACK                          ,_param->_nb_instruction);
    145145  INSTANCE1_SC_SIGNAL(_Ifetch_unit,out_DECOD_INSTRUCTION                  ,_param->_nb_instruction);
    146 //INSTANCE_SC_SIGNAL (_Ifetch_unit,out_DECOD_CONTEXT_ID                   );
    147   INSTANCE_SC_SIGNAL (_Ifetch_unit,out_DECOD_ADDRESS                      );
     146//INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_DECOD_CONTEXT_ID                   );
     147  INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_DECOD_ADDRESS                      );
    148148  if (_param->_have_port_inst_ifetch_ptr)
    149   INSTANCE_SC_SIGNAL (_Ifetch_unit,out_DECOD_INST_IFETCH_PTR              );
    150   INSTANCE_SC_SIGNAL (_Ifetch_unit,out_DECOD_BRANCH_STATE                 );
     149  INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_DECOD_INST_IFETCH_PTR              );
     150  INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_DECOD_BRANCH_STATE                 );
    151151  if (_param->_have_port_depth)
    152   INSTANCE_SC_SIGNAL (_Ifetch_unit,out_DECOD_BRANCH_UPDATE_PREDICTION_ID  );
    153   INSTANCE_SC_SIGNAL (_Ifetch_unit,out_DECOD_EXCEPTION                    );
    154   INSTANCE_SC_SIGNAL (_Ifetch_unit, in_EVENT_VAL                          );
    155   INSTANCE_SC_SIGNAL (_Ifetch_unit,out_EVENT_ACK                          );
    156   INSTANCE_SC_SIGNAL (_Ifetch_unit, in_EVENT_ADDRESS                      );
    157   INSTANCE_SC_SIGNAL (_Ifetch_unit, in_EVENT_ADDRESS_NEXT                 );
    158   INSTANCE_SC_SIGNAL (_Ifetch_unit, in_EVENT_ADDRESS_NEXT_VAL             );
    159   INSTANCE_SC_SIGNAL (_Ifetch_unit, in_EVENT_IS_DS_TAKE                   );
     152  INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_DECOD_BRANCH_UPDATE_PREDICTION_ID  );
     153  INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_DECOD_EXCEPTION                    );
     154  INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_EVENT_VAL                          );
     155  INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_EVENT_ACK                          );
     156  INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_EVENT_ADDRESS                      );
     157  INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_EVENT_ADDRESS_NEXT                 );
     158  INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_EVENT_ADDRESS_NEXT_VAL             );
     159  INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_EVENT_IS_DS_TAKE                   );
    160160
    161161  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/src/Ifetch_unit_allocation.cpp

    r88 r112  
    4747                                                         ,IN
    4848                                                         ,SOUTH,
    49                                                          "Generalist interface"
     49                                                         _("Generalist interface")
    5050#endif
    5151                                                         );
     
    5757    // ~~~~~[ Interface "icache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5858    {
    59       ALLOC_INTERFACE("icache_req",OUT, WEST, _("Instruction cache request."));
    60 
    61       ALLOC_VALACK_OUT(out_ICACHE_REQ_VAL      ,VAL);
    62       ALLOC_VALACK_IN ( in_ICACHE_REQ_ACK      ,ACK);
    63     //ALLOC_SIGNAL_OUT(out_ICACHE_REQ_THREAD_ID,"thread_id",Tcontext_t           ,_param->_size_context_id );
    64       ALLOC_SIGNAL_OUT(out_ICACHE_REQ_PACKET_ID,"packet_id",Tpacket_t            ,_param->_size_ifetch_queue_ptr  );
    65       ALLOC_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS  ,"address"  ,Ticache_instruction_t,_param->_size_instruction_address    );
    66       ALLOC_SIGNAL_OUT(out_ICACHE_REQ_TYPE     ,"type"     ,Ticache_type_t       ,_param->_size_icache_type);
     59      ALLOC0_INTERFACE_BEGIN("icache_req",OUT, WEST, _("Instruction cache request."));
     60
     61      ALLOC0_VALACK_OUT(out_ICACHE_REQ_VAL      ,VAL);
     62      ALLOC0_VALACK_IN ( in_ICACHE_REQ_ACK      ,ACK);
     63    //ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_THREAD_ID,"thread_id",Tcontext_t           ,_param->_size_context_id );
     64      ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_PACKET_ID,"packet_id",Tpacket_t            ,_param->_size_ifetch_queue_ptr  );
     65      ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS  ,"address"  ,Ticache_instruction_t,_param->_size_instruction_address    );
     66      ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_TYPE     ,"type"     ,Ticache_type_t       ,_param->_size_icache_type);
     67
     68      ALLOC0_INTERFACE_END();
    6769    }
    6870
    6971    // ~~~~~[ Interface "icache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7072    {
    71       ALLOC_INTERFACE("icache_rsp",IN , WEST, _("Instruction cache respons."));
    72 
    73       ALLOC_VALACK_IN  ( in_ICACHE_RSP_VAL        ,VAL);
    74       ALLOC_VALACK_OUT (out_ICACHE_RSP_ACK        ,ACK);
    75     //ALLOC_SIGNAL_IN  ( in_ICACHE_RSP_THREAD_ID  ,"thread_id"  ,Tcontext_t           ,_param->_size_context_id  );
    76       ALLOC_SIGNAL_IN  ( in_ICACHE_RSP_PACKET_ID  ,"packet_id"  ,Tpacket_t            ,_param->_size_ifetch_queue_ptr   );
    77       ALLOC_SIGNAL_IN  ( in_ICACHE_RSP_ERROR      ,"error"      ,Ticache_error_t      ,_param->_size_icache_error);
    78     }
    79     {
    80       ALLOC1_INTERFACE("icache_rsp",IN , WEST, _("Instruction cache respons."),_param->_nb_instruction);
     73      ALLOC0_INTERFACE_BEGIN("icache_rsp",IN , WEST, _("Instruction cache respons."));
     74
     75      ALLOC0_VALACK_IN  ( in_ICACHE_RSP_VAL        ,VAL);
     76      ALLOC0_VALACK_OUT (out_ICACHE_RSP_ACK        ,ACK);
     77    //ALLOC0_SIGNAL_IN  ( in_ICACHE_RSP_THREAD_ID  ,"thread_id"  ,Tcontext_t           ,_param->_size_context_id  );
     78      ALLOC0_SIGNAL_IN  ( in_ICACHE_RSP_PACKET_ID  ,"packet_id"  ,Tpacket_t            ,_param->_size_ifetch_queue_ptr   );
     79      ALLOC0_SIGNAL_IN  ( in_ICACHE_RSP_ERROR      ,"error"      ,Ticache_error_t      ,_param->_size_icache_error);
     80
     81      ALLOC0_INTERFACE_END();
     82    }
     83    {
     84      ALLOC1_INTERFACE_BEGIN("icache_rsp",IN , WEST, _("Instruction cache respons."),_param->_nb_instruction);
    8185
    8286      ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_INSTRUCTION,"instruction",Ticache_instruction_t,_param->_size_instruction );
     87
     88      ALLOC1_INTERFACE_END(_param->_nb_instruction);
    8389    }
    8490
    8591    // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8692    {
    87       ALLOC_INTERFACE("predict",OUT, NORTH, _("Predict the next pc."));
    88 
    89       ALLOC_VALACK_OUT (out_PREDICT_VAL                        ,VAL);
    90       ALLOC_VALACK_IN  ( in_PREDICT_ACK                        ,ACK);
    91       ALLOC_SIGNAL_OUT (out_PREDICT_PC_PREVIOUS                ,"pc_previous"                ,Tgeneral_address_t,_param->_size_instruction_address);
    92       ALLOC_SIGNAL_OUT (out_PREDICT_PC_CURRENT                 ,"pc_current"                 ,Tgeneral_address_t,_param->_size_instruction_address);
    93       ALLOC_SIGNAL_OUT (out_PREDICT_PC_CURRENT_IS_DS_TAKE      ,"pc_current_is_ds_take"      ,Tcontrol_t        ,1);
    94       ALLOC_SIGNAL_IN  ( in_PREDICT_PC_NEXT                    ,"pc_next"                    ,Tgeneral_address_t,_param->_size_instruction_address);
    95       ALLOC_SIGNAL_IN  ( in_PREDICT_PC_NEXT_IS_DS_TAKE         ,"pc_next_is_ds_take"         ,Tcontrol_t        ,1);
    96       ALLOC_SIGNAL_IN  ( in_PREDICT_INST_IFETCH_PTR            ,"inst_ifetch_ptr"            ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr);
    97       ALLOC_SIGNAL_IN  ( in_PREDICT_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t   ,_param->_size_branch_state);
    98       ALLOC_SIGNAL_IN  ( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth);
    99     }
    100     {
    101       ALLOC1_INTERFACE("predict",IN , NORTH, _("Predict the next pc."),_param->_nb_instruction);
     93      ALLOC0_INTERFACE_BEGIN("predict",OUT, NORTH, _("Predict the next pc."));
     94
     95      ALLOC0_VALACK_OUT (out_PREDICT_VAL                        ,VAL);
     96      ALLOC0_VALACK_IN  ( in_PREDICT_ACK                        ,ACK);
     97      ALLOC0_SIGNAL_OUT (out_PREDICT_PC_PREVIOUS                ,"pc_previous"                ,Tgeneral_address_t,_param->_size_instruction_address);
     98      ALLOC0_SIGNAL_OUT (out_PREDICT_PC_CURRENT                 ,"pc_current"                 ,Tgeneral_address_t,_param->_size_instruction_address);
     99      ALLOC0_SIGNAL_OUT (out_PREDICT_PC_CURRENT_IS_DS_TAKE      ,"pc_current_is_ds_take"      ,Tcontrol_t        ,1);
     100      ALLOC0_SIGNAL_IN  ( in_PREDICT_PC_NEXT                    ,"pc_next"                    ,Tgeneral_address_t,_param->_size_instruction_address);
     101      ALLOC0_SIGNAL_IN  ( in_PREDICT_PC_NEXT_IS_DS_TAKE         ,"pc_next_is_ds_take"         ,Tcontrol_t        ,1);
     102      ALLOC0_SIGNAL_IN  ( in_PREDICT_INST_IFETCH_PTR            ,"inst_ifetch_ptr"            ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr);
     103      ALLOC0_SIGNAL_IN  ( in_PREDICT_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t   ,_param->_size_branch_state);
     104      ALLOC0_SIGNAL_IN  ( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth);
     105
     106      ALLOC0_INTERFACE_END();
     107    }
     108    {
     109      ALLOC1_INTERFACE_BEGIN("predict",IN , NORTH, _("Predict the next pc."),_param->_nb_instruction);
    102110
    103111      ALLOC1_SIGNAL_IN ( in_PREDICT_INSTRUCTION_ENABLE         ,"instruction_enable"         ,Tcontrol_t        ,1);
     112
     113      ALLOC1_INTERFACE_END(_param->_nb_instruction);
    104114    }
    105115
    106116    // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    107117    {
    108       ALLOC_INTERFACE("decod",OUT , EAST, _("Send bundle to the decod unit."));
    109 
    110     //ALLOC_SIGNAL_OUT (out_DECOD_CONTEXT_ID                 ,"context_id"                 ,Tcontext_t        ,_param->_size_context_id);
    111       ALLOC_SIGNAL_OUT (out_DECOD_ADDRESS                    ,"address"                    ,Tgeneral_address_t,_param->_size_instruction_address);
    112       ALLOC_SIGNAL_OUT (out_DECOD_INST_IFETCH_PTR            ,"inst_ifetch_ptr"            ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr);
    113       ALLOC_SIGNAL_OUT (out_DECOD_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t   ,_param->_size_branch_state);
    114       ALLOC_SIGNAL_OUT (out_DECOD_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth);
    115       ALLOC_SIGNAL_OUT (out_DECOD_EXCEPTION                  ,"exception"                  ,Texception_t      ,_param->_size_exception_ifetch);
    116     }
    117     {
    118       ALLOC1_INTERFACE("decod",OUT , EAST, _("Send bundle to the decod unit."),_param->_nb_instruction);
     118      ALLOC0_INTERFACE_BEGIN("decod",OUT , EAST, _("Send bundle to the decod unit."));
     119
     120    //ALLOC0_SIGNAL_OUT (out_DECOD_CONTEXT_ID                 ,"context_id"                 ,Tcontext_t        ,_param->_size_context_id);
     121      ALLOC0_SIGNAL_OUT (out_DECOD_ADDRESS                    ,"address"                    ,Tgeneral_address_t,_param->_size_instruction_address);
     122      ALLOC0_SIGNAL_OUT (out_DECOD_INST_IFETCH_PTR            ,"inst_ifetch_ptr"            ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr);
     123      ALLOC0_SIGNAL_OUT (out_DECOD_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t   ,_param->_size_branch_state);
     124      ALLOC0_SIGNAL_OUT (out_DECOD_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth);
     125      ALLOC0_SIGNAL_OUT (out_DECOD_EXCEPTION                  ,"exception"                  ,Texception_t      ,_param->_size_exception_ifetch);
     126
     127      ALLOC0_INTERFACE_END();
     128    }
     129    {
     130      ALLOC1_INTERFACE_BEGIN("decod",OUT , EAST, _("Send bundle to the decod unit."),_param->_nb_instruction);
    119131
    120132      ALLOC1_VALACK_OUT(out_DECOD_VAL                        ,VAL);
    121133      ALLOC1_VALACK_IN ( in_DECOD_ACK                        ,ACK);
    122134      ALLOC1_SIGNAL_OUT(out_DECOD_INSTRUCTION                ,"instruction"                ,Tinstruction_t    ,_param->_size_instruction);
     135
     136      ALLOC1_INTERFACE_END(_param->_nb_instruction);
    123137    }
    124138
    125139    // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    126140    {
    127       ALLOC_INTERFACE("event",IN , NORTH, _("Event interface."));
    128 
    129       ALLOC_VALACK_IN ( in_EVENT_VAL              ,VAL);
    130       ALLOC_VALACK_OUT(out_EVENT_ACK              ,ACK);
    131       ALLOC_SIGNAL_IN ( in_EVENT_ADDRESS          ,"address"         ,Tgeneral_address_t,_param->_size_instruction_address);
    132       ALLOC_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT     ,"address_next"    ,Tgeneral_address_t,_param->_size_instruction_address);
    133       ALLOC_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT_VAL ,"address_next_val",Tcontrol_t,1);
    134       ALLOC_SIGNAL_IN ( in_EVENT_IS_DS_TAKE       ,"is_ds_take"      ,Tcontrol_t,1);
     141      ALLOC0_INTERFACE_BEGIN("event",IN , NORTH, _("Event interface."));
     142
     143      ALLOC0_VALACK_IN ( in_EVENT_VAL              ,VAL);
     144      ALLOC0_VALACK_OUT(out_EVENT_ACK              ,ACK);
     145      ALLOC0_SIGNAL_IN ( in_EVENT_ADDRESS          ,"address"         ,Tgeneral_address_t,_param->_size_instruction_address);
     146      ALLOC0_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT     ,"address_next"    ,Tgeneral_address_t,_param->_size_instruction_address);
     147      ALLOC0_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT_VAL ,"address_next_val",Tcontrol_t,1);
     148      ALLOC0_SIGNAL_IN ( in_EVENT_IS_DS_TAKE       ,"is_ds_take"      ,Tcontrol_t,1);
     149 
     150      ALLOC0_INTERFACE_END();
    135151    }
    136152   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/src/Ifetch_unit_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/include/Ifetch_unit.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2728        delete     in_NRESET;
    2829
    29         delete    out_ICACHE_REQ_VAL                      ;
    30         delete     in_ICACHE_REQ_ACK                      ;
    31       //delete    out_ICACHE_REQ_THREAD_ID                ;
    32         if (_param->_have_port_ifetch_queue_ptr)
    33         delete    out_ICACHE_REQ_PACKET_ID                ;
    34         delete    out_ICACHE_REQ_ADDRESS                  ;
    35         delete    out_ICACHE_REQ_TYPE                     ;
     30        DELETE0_SIGNAL(out_ICACHE_REQ_VAL      ,1);
     31        DELETE0_SIGNAL( in_ICACHE_REQ_ACK      ,1);
     32//      DELETE0_SIGNAL(out_ICACHE_REQ_THREAD_ID,_param->_size_context_id );
     33        DELETE0_SIGNAL(out_ICACHE_REQ_PACKET_ID,_param->_size_ifetch_queue_ptr  );
     34        DELETE0_SIGNAL(out_ICACHE_REQ_ADDRESS  ,_param->_size_instruction_address    );
     35        DELETE0_SIGNAL(out_ICACHE_REQ_TYPE     ,_param->_size_icache_type);
    3636
    37         delete     in_ICACHE_RSP_VAL                      ;
    38         delete    out_ICACHE_RSP_ACK                      ;
    39       //delete     in_ICACHE_RSP_THREAD_ID                ;
    40         if (_param->_have_port_ifetch_queue_ptr)
    41         delete     in_ICACHE_RSP_PACKET_ID                ;
    42         delete []  in_ICACHE_RSP_INSTRUCTION              ;
    43         delete     in_ICACHE_RSP_ERROR                    ;
     37        DELETE0_SIGNAL( in_ICACHE_RSP_VAL        ,1);
     38        DELETE0_SIGNAL(out_ICACHE_RSP_ACK        ,1);
     39    //  DELETE0_SIGNAL( in_ICACHE_RSP_THREAD_ID  ,_param->_size_context_id  );
     40        DELETE0_SIGNAL( in_ICACHE_RSP_PACKET_ID  ,_param->_size_ifetch_queue_ptr   );
     41        DELETE0_SIGNAL( in_ICACHE_RSP_ERROR      ,_param->_size_icache_error);
     42        DELETE1_SIGNAL( in_ICACHE_RSP_INSTRUCTION,_param->_size_instruction,_param->_nb_instruction);
    4443
    45         delete    out_PREDICT_VAL                         ;
    46         delete     in_PREDICT_ACK                         ;
    47         delete    out_PREDICT_PC_PREVIOUS                 ;
    48         delete    out_PREDICT_PC_CURRENT                  ;
    49         delete    out_PREDICT_PC_CURRENT_IS_DS_TAKE       ;
    50         delete     in_PREDICT_PC_NEXT                     ;
    51         delete     in_PREDICT_PC_NEXT_IS_DS_TAKE          ;
    52         delete []  in_PREDICT_INSTRUCTION_ENABLE          ;
    53         if (_param->_have_port_inst_ifetch_ptr)
    54         delete     in_PREDICT_INST_IFETCH_PTR             ;
    55         delete     in_PREDICT_BRANCH_STATE                ;
    56         if (_param->_have_port_depth)
    57         delete     in_PREDICT_BRANCH_UPDATE_PREDICTION_ID ;
     44        DELETE0_SIGNAL(out_PREDICT_VAL                        ,1);
     45        DELETE0_SIGNAL( in_PREDICT_ACK                        ,1);
     46        DELETE0_SIGNAL(out_PREDICT_PC_PREVIOUS                ,_param->_size_instruction_address);
     47        DELETE0_SIGNAL(out_PREDICT_PC_CURRENT                 ,_param->_size_instruction_address);
     48        DELETE0_SIGNAL(out_PREDICT_PC_CURRENT_IS_DS_TAKE      ,1);
     49        DELETE0_SIGNAL( in_PREDICT_PC_NEXT                    ,_param->_size_instruction_address);
     50        DELETE0_SIGNAL( in_PREDICT_PC_NEXT_IS_DS_TAKE         ,1);
     51        DELETE0_SIGNAL( in_PREDICT_INST_IFETCH_PTR            ,_param->_size_inst_ifetch_ptr);
     52        DELETE0_SIGNAL( in_PREDICT_BRANCH_STATE               ,_param->_size_branch_state);
     53        DELETE0_SIGNAL( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID,_param->_size_depth);
     54        DELETE1_SIGNAL( in_PREDICT_INSTRUCTION_ENABLE         ,1,_param->_nb_instruction);
    5855
    59         delete [] out_DECOD_VAL                           ;
    60         delete []  in_DECOD_ACK                           ;
    61         delete [] out_DECOD_INSTRUCTION                   ;
    62       //delete    out_DECOD_CONTEXT_ID                    ;
    63         delete    out_DECOD_ADDRESS                       ;
    64         if (_param->_have_port_inst_ifetch_ptr)
    65         delete    out_DECOD_INST_IFETCH_PTR               ;
    66         delete    out_DECOD_BRANCH_STATE                  ;
    67         if (_param->_have_port_depth)
    68         delete    out_DECOD_BRANCH_UPDATE_PREDICTION_ID   ;
    69         delete    out_DECOD_EXCEPTION                     ;
     56    //  DELETE0_SIGNAL(out_DECOD_CONTEXT_ID                 ,_param->_size_context_id);
     57        DELETE0_SIGNAL(out_DECOD_ADDRESS                    ,_param->_size_instruction_address);
     58        DELETE0_SIGNAL(out_DECOD_INST_IFETCH_PTR            ,_param->_size_inst_ifetch_ptr);
     59        DELETE0_SIGNAL(out_DECOD_BRANCH_STATE               ,_param->_size_branch_state);
     60        DELETE0_SIGNAL(out_DECOD_BRANCH_UPDATE_PREDICTION_ID,_param->_size_depth);
     61        DELETE0_SIGNAL(out_DECOD_EXCEPTION                  ,_param->_size_exception_ifetch);
     62        DELETE1_SIGNAL(out_DECOD_VAL                        ,1,_param->_nb_instruction);
     63        DELETE1_SIGNAL( in_DECOD_ACK                        ,1,_param->_nb_instruction);
     64        DELETE1_SIGNAL(out_DECOD_INSTRUCTION                ,_param->_size_instruction,_param->_nb_instruction);
    7065
    71         delete     in_EVENT_VAL                           ;
    72         delete    out_EVENT_ACK                           ;
    73         delete     in_EVENT_ADDRESS                       ;
    74         delete     in_EVENT_ADDRESS_NEXT                  ;
    75         delete     in_EVENT_ADDRESS_NEXT_VAL              ;
    76         delete     in_EVENT_IS_DS_TAKE                    ;
     66        DELETE0_SIGNAL( in_EVENT_VAL              ,1);
     67        DELETE0_SIGNAL(out_EVENT_ACK              ,1);
     68        DELETE0_SIGNAL( in_EVENT_ADDRESS          ,_param->_size_instruction_address);
     69        DELETE0_SIGNAL( in_EVENT_ADDRESS_NEXT     ,_param->_size_instruction_address);
     70        DELETE0_SIGNAL( in_EVENT_ADDRESS_NEXT_VAL ,1);
     71        DELETE0_SIGNAL( in_EVENT_IS_DS_TAKE       ,1);
    7772      }
     73
    7874    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    7975    delete _component_address_management;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue_allocation.cpp

    r88 r112  
    4949                                                         ,IN
    5050                                                         ,SOUTH,
    51                                                          "Generalist interface"
     51                                                         _("Generalist interface")
    5252#endif
    5353                                                         );
     
    6060    {
    6161      {
    62         ALLOC1_INTERFACE("predict", IN, WEST, "predict",_param->_nb_inst_predict);
     62        ALLOC1_INTERFACE_BEGIN("predict", IN, WEST, _("predict"),_param->_nb_inst_predict);
    6363
    6464        ALLOC1_SIGNAL_IN ( in_PREDICT_VAL           , "val"           ,Tcontrol_t         , 1);
     
    8484        ALLOC1_SIGNAL_IN ( in_PREDICT_VICTIM_VICTIM , "victim_victim" ,Tptr_t             , _param->_size_victim);
    8585          }
     86
     87        ALLOC1_INTERFACE_END(_param->_nb_inst_predict);
    8688      }
    8789      {
    88         ALLOC2_INTERFACE("predict", IN, WEST, "predict",_param->_nb_inst_predict, _param->_associativity);
     90        ALLOC2_INTERFACE_BEGIN("predict", IN, WEST, _("predict"),_param->_nb_inst_predict, _param->_associativity);
    8991
    9092        ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_HIT         ,"register_hit"         ,Tcontrol_t         ,1);
     
    9496        ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_LAST_TAKE   ,"register_last_take"   ,Tcontrol_t         ,1);
    9597        ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_IS_ACCURATE ,"register_is_accurate" ,Tcontrol_t         ,1);
     98
     99        ALLOC2_INTERFACE_END(_param->_nb_inst_predict, _param->_associativity);
    96100      }
    97101    }
     
    99103    // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    100104    {
    101       ALLOC1_INTERFACE("decod", IN, WEST, "decod",_param->_nb_inst_decod);
     105      ALLOC1_INTERFACE_BEGIN("decod", IN, WEST, _("decod"),_param->_nb_inst_decod);
    102106
    103107      ALLOC1_SIGNAL_IN ( in_DECOD_VAL           ,"val"           ,Tcontrol_t     ,1);
     
    115119      ALLOC1_SIGNAL_OUT(out_DECOD_VICTIM_ADDRESS,"victim_address",Tgeneral_data_t,_param->_size_victim_address);
    116120        }
     121
     122      ALLOC1_INTERFACE_END(_param->_nb_inst_decod);
    117123    }
    118124
    119125    // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    120126    {
    121       ALLOC1_INTERFACE("update", IN, WEST, "update",_param->_nb_inst_update);
     127      ALLOC1_INTERFACE_BEGIN("update", IN, WEST, _("update"),_param->_nb_inst_update);
    122128
    123129      ALLOC1_SIGNAL_IN ( in_UPDATE_VAL           ,"val"           ,Tcontrol_t     ,1);
     
    135141      ALLOC1_SIGNAL_OUT(out_UPDATE_VICTIM_ADDRESS,"victim_address",Tgeneral_data_t,_param->_size_victim_address);
    136142        }
     143
     144      ALLOC1_INTERFACE_END(_param->_nb_inst_update);
    137145    }
    138146
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/include/Branch_Target_Buffer_Glue.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2930        delete     in_NRESET;
    3031
    31         delete []  in_PREDICT_VAL                    ;
    32         delete [] out_PREDICT_ACK                    ;
    33         delete [] out_PREDICT_HIT                    ;
    34         delete [] out_PREDICT_ADDRESS_SRC            ;
    35         delete [] out_PREDICT_ADDRESS_DEST           ;
    36         delete [] out_PREDICT_CONDITION              ;
    37         delete [] out_PREDICT_LAST_TAKE              ;
    38         delete [] out_PREDICT_IS_ACCURATE            ;
    39         delete [] out_PREDICT_REGISTER_VAL           ;
    40         delete []  in_PREDICT_REGISTER_ACK           ;
    41         delete []  in_PREDICT_REGISTER_HIT           ;
    42         delete []  in_PREDICT_REGISTER_ADDRESS_SRC   ;
    43         delete []  in_PREDICT_REGISTER_ADDRESS_DEST  ;
    44         delete []  in_PREDICT_REGISTER_CONDITION     ;
    45         delete []  in_PREDICT_REGISTER_LAST_TAKE     ;
    46         delete []  in_PREDICT_REGISTER_IS_ACCURATE   ;
     32        DELETE1_SIGNAL( in_PREDICT_VAL           ,_param->_nb_inst_predict, 1);
     33        DELETE1_SIGNAL(out_PREDICT_ACK           ,_param->_nb_inst_predict, 1);
     34        DELETE1_SIGNAL(out_PREDICT_HIT           ,_param->_nb_inst_predict, 1);
     35        DELETE1_SIGNAL(out_PREDICT_ADDRESS_SRC   ,_param->_nb_inst_predict, _param->_size_instruction_address);
     36        DELETE1_SIGNAL(out_PREDICT_ADDRESS_DEST  ,_param->_nb_inst_predict, _param->_size_instruction_address);
     37        DELETE1_SIGNAL(out_PREDICT_CONDITION     ,_param->_nb_inst_predict, _param->_size_branch_condition);
     38        DELETE1_SIGNAL(out_PREDICT_LAST_TAKE     ,_param->_nb_inst_predict, 1);
     39        DELETE1_SIGNAL(out_PREDICT_IS_ACCURATE   ,_param->_nb_inst_predict, 1);
     40        DELETE1_SIGNAL(out_PREDICT_REGISTER_VAL  ,_param->_nb_inst_predict, 1);
     41        DELETE1_SIGNAL( in_PREDICT_REGISTER_ACK  ,_param->_nb_inst_predict, 1);
    4742        if (_param->_have_port_victim)
    4843          {
    49         delete []  in_PREDICT_SORT_VAL               ;
    50         delete []  in_PREDICT_SORT_INDEX             ;
    51         delete [] out_PREDICT_VICTIM_VAL             ;
    52         delete []  in_PREDICT_VICTIM_ACK             ;
    53         delete [] out_PREDICT_VICTIM_HIT             ;
    54         if (not _param->_is_full_associative)
    55         delete [] out_PREDICT_VICTIM_ADDRESS         ;
    56         delete [] out_PREDICT_VICTIM_INDEX           ;
    57         delete []  in_PREDICT_VICTIM_VICTIM          ;
     44        DELETE1_SIGNAL( in_PREDICT_SORT_VAL      ,_param->_nb_inst_predict,1);
     45        DELETE1_SIGNAL( in_PREDICT_SORT_INDEX    ,_param->_nb_inst_predict,_param->_size_victim);
     46
     47        DELETE1_SIGNAL(out_PREDICT_VICTIM_VAL    ,_param->_nb_inst_predict, 1);
     48        DELETE1_SIGNAL( in_PREDICT_VICTIM_ACK    ,_param->_nb_inst_predict, 1);
     49        DELETE1_SIGNAL(out_PREDICT_VICTIM_HIT    ,_param->_nb_inst_predict, 1);
     50        DELETE1_SIGNAL(out_PREDICT_VICTIM_ADDRESS,_param->_nb_inst_predict, _param->_size_victim_address);
     51        DELETE1_SIGNAL(out_PREDICT_VICTIM_INDEX  ,_param->_nb_inst_predict, _param->_size_victim);
     52        DELETE1_SIGNAL( in_PREDICT_VICTIM_VICTIM ,_param->_nb_inst_predict, _param->_size_victim);
    5853          }
    59         delete []  in_DECOD_VAL                      ;
    60         delete [] out_DECOD_ACK                      ;
    61         if (not _param->_is_full_associative)
    62         delete []  in_DECOD_ADDRESS_SRC              ;
    63         delete [] out_DECOD_REGISTER_VAL             ;
    64         delete []  in_DECOD_REGISTER_ACK             ;
    65         if (_param->_have_port_victim)
    66           {
    67         delete [] out_DECOD_VICTIM_VAL               ;
    68         delete []  in_DECOD_VICTIM_ACK               ;
    69         if (not _param->_is_full_associative)
    70         delete [] out_DECOD_VICTIM_ADDRESS           ;
    71           }
    72         delete []  in_UPDATE_VAL                     ;
    73         delete [] out_UPDATE_ACK                     ;
    74         if (not _param->_is_full_associative)
    75         delete []  in_UPDATE_ADDRESS_SRC             ;
    76         delete [] out_UPDATE_REGISTER_VAL            ;
    77         delete []  in_UPDATE_REGISTER_ACK            ;
    78         if (_param->_have_port_victim)
    79           {
    80         delete [] out_UPDATE_VICTIM_VAL              ;
    81         delete []  in_UPDATE_VICTIM_ACK              ;
    82         if (not _param->_is_full_associative)
    83         delete [] out_UPDATE_VICTIM_ADDRESS          ;
    84           }
     54
     55        DELETE2_SIGNAL( in_PREDICT_REGISTER_HIT         ,_param->_nb_inst_predict, _param->_associativity,1);
     56        DELETE2_SIGNAL( in_PREDICT_REGISTER_ADDRESS_SRC ,_param->_nb_inst_predict, _param->_associativity,_param->_size_instruction_address);
     57        DELETE2_SIGNAL( in_PREDICT_REGISTER_ADDRESS_DEST,_param->_nb_inst_predict, _param->_associativity,_param->_size_instruction_address);
     58        DELETE2_SIGNAL( in_PREDICT_REGISTER_CONDITION   ,_param->_nb_inst_predict, _param->_associativity,_param->_size_branch_condition);
     59        DELETE2_SIGNAL( in_PREDICT_REGISTER_LAST_TAKE   ,_param->_nb_inst_predict, _param->_associativity,1);
     60        DELETE2_SIGNAL( in_PREDICT_REGISTER_IS_ACCURATE ,_param->_nb_inst_predict, _param->_associativity,1);
     61
     62        DELETE1_SIGNAL( in_DECOD_VAL           ,_param->_nb_inst_decod,1);
     63        DELETE1_SIGNAL(out_DECOD_ACK           ,_param->_nb_inst_decod,1);
     64        if (not _param->_is_full_associative)
     65        DELETE1_SIGNAL( in_DECOD_ADDRESS_SRC   ,_param->_nb_inst_decod,_param->_size_instruction_address);
     66     
     67        DELETE1_SIGNAL(out_DECOD_REGISTER_VAL  ,_param->_nb_inst_decod,1);
     68        DELETE1_SIGNAL( in_DECOD_REGISTER_ACK  ,_param->_nb_inst_decod,1);
     69        if (_param->_have_port_victim)
     70          {
     71        DELETE1_SIGNAL(out_DECOD_VICTIM_VAL    ,_param->_nb_inst_decod,1);
     72        DELETE1_SIGNAL( in_DECOD_VICTIM_ACK    ,_param->_nb_inst_decod,1);
     73        DELETE1_SIGNAL(out_DECOD_VICTIM_ADDRESS,_param->_nb_inst_decod,_param->_size_victim_address);
     74          }
     75
     76        DELETE1_SIGNAL( in_UPDATE_VAL           ,_param->_nb_inst_update,1);
     77        DELETE1_SIGNAL(out_UPDATE_ACK           ,_param->_nb_inst_update,1);
     78        if (not _param->_is_full_associative)
     79        DELETE1_SIGNAL( in_UPDATE_ADDRESS_SRC   ,_param->_nb_inst_update,_param->_size_instruction_address);
     80        DELETE1_SIGNAL(out_UPDATE_REGISTER_VAL  ,_param->_nb_inst_update,1);
     81        DELETE1_SIGNAL( in_UPDATE_REGISTER_ACK  ,_param->_nb_inst_update,1);
     82        if (_param->_have_port_victim)
     83          {
     84        DELETE1_SIGNAL(out_UPDATE_VICTIM_VAL    ,_param->_nb_inst_update,1);
     85        DELETE1_SIGNAL( in_UPDATE_VICTIM_ACK    ,_param->_nb_inst_update,1);
     86        DELETE1_SIGNAL(out_UPDATE_VICTIM_ADDRESS,_param->_nb_inst_update,_param->_size_victim_address);
     87          }
     88
    8589      }
    8690    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register/src/Branch_Target_Buffer_Register_allocation.cpp

    r88 r112  
    4949                                                         ,IN
    5050                                                         ,SOUTH,
    51                                                          "Generalist interface"
     51                                                         _("Generalist interface")
    5252#endif
    5353                                                         );
     
    5959    // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6060    {
    61       ALLOC1_INTERFACE("predict", IN, SOUTH, "Compute next pc.", _param->_nb_inst_predict);
     61      ALLOC1_INTERFACE_BEGIN("predict", IN, SOUTH, _("Compute next pc."), _param->_nb_inst_predict);
    6262
    6363      ALLOC1_VALACK_IN ( in_PREDICT_VAL         ,VAL);
     
    6666      ALLOC1_SIGNAL_IN ( in_PREDICT_ADDRESS     ,"address"     ,Tgeneral_data_t    ,_param->_size_instruction_address);
    6767
    68       {
    69         ALLOC2_INTERFACE("predict", OUT, SOUTH, "Compute next pc.", _param->_nb_inst_predict, _param->_associativity);
    70  
    71         ALLOC2_SIGNAL_OUT(out_PREDICT_HIT         ,"hit"         ,Tcontrol_t         ,1);
    72         ALLOC2_SIGNAL_OUT(out_PREDICT_ADDRESS_SRC ,"address_src" ,Tgeneral_data_t    ,_param->_size_instruction_address);
    73         ALLOC2_SIGNAL_OUT(out_PREDICT_ADDRESS_DEST,"address_dest",Tgeneral_data_t    ,_param->_size_instruction_address);
    74         ALLOC2_SIGNAL_OUT(out_PREDICT_CONDITION   ,"condition"   ,Tbranch_condition_t,_param->_size_branch_state);
    75         ALLOC2_SIGNAL_OUT(out_PREDICT_LAST_TAKE   ,"last_take"   ,Tcontrol_t         ,1);
    76         ALLOC2_SIGNAL_OUT(out_PREDICT_IS_ACCURATE ,"is_accurate" ,Tcontrol_t         ,1);
    77       }
     68      ALLOC1_INTERFACE_END(_param->_nb_inst_predict);
     69    }
     70    {
     71      ALLOC2_INTERFACE_BEGIN("predict", OUT, SOUTH, _("Compute next pc."), _param->_nb_inst_predict, _param->_associativity);
     72     
     73      ALLOC2_SIGNAL_OUT(out_PREDICT_HIT         ,"hit"         ,Tcontrol_t         ,1);
     74      ALLOC2_SIGNAL_OUT(out_PREDICT_ADDRESS_SRC ,"address_src" ,Tgeneral_data_t    ,_param->_size_instruction_address);
     75      ALLOC2_SIGNAL_OUT(out_PREDICT_ADDRESS_DEST,"address_dest",Tgeneral_data_t    ,_param->_size_instruction_address);
     76      ALLOC2_SIGNAL_OUT(out_PREDICT_CONDITION   ,"condition"   ,Tbranch_condition_t,_param->_size_branch_state);
     77      ALLOC2_SIGNAL_OUT(out_PREDICT_LAST_TAKE   ,"last_take"   ,Tcontrol_t         ,1);
     78      ALLOC2_SIGNAL_OUT(out_PREDICT_IS_ACCURATE ,"is_accurate" ,Tcontrol_t         ,1);
     79
     80      ALLOC2_INTERFACE_END(_param->_nb_inst_predict, _param->_associativity);
    7881    }
    7982
    8083    // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8184    {
    82       ALLOC1_INTERFACE("decod", IN, SOUTH, "decod instruction", _param->_nb_inst_decod);
     85      ALLOC1_INTERFACE_BEGIN("decod", IN, SOUTH, _("decod instruction"), _param->_nb_inst_decod);
    8386
    8487      ALLOC1_VALACK_IN ( in_DECOD_VAL            ,VAL);
     
    97100      ALLOC1_SIGNAL_IN ( in_DECOD_MISS_PREDICTION,"miss_prediction",Tcontrol_t         ,1);
    98101      ALLOC1_SIGNAL_IN ( in_DECOD_IS_ACCURATE    ,"is_accurate"    ,Tcontrol_t         ,1);
     102
     103      ALLOC1_INTERFACE_END(_param->_nb_inst_decod);
    99104    }
    100105
    101106    // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    102107    {
    103       ALLOC1_INTERFACE("update", IN, SOUTH, "update instruction", _param->_nb_inst_update);
     108      ALLOC1_INTERFACE_BEGIN("update", IN, SOUTH, _("update instruction"), _param->_nb_inst_update);
    104109
    105110      ALLOC1_VALACK_IN ( in_UPDATE_VAL            ,VAL);
     
    117122      ALLOC1_SIGNAL_IN ( in_UPDATE_LAST_TAKE      ,"last_take"      ,Tcontrol_t         ,1);
    118123      ALLOC1_SIGNAL_IN ( in_UPDATE_MISS_PREDICTION,"miss_prediction",Tcontrol_t         ,1);
     124
     125      ALLOC1_INTERFACE_END(_param->_nb_inst_update);
    119126    }
    120127
     
    122129      {
    123130    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    124     reg_BTB = new btb_entry_t * [_param->_size_bank];
    125     for (uint32_t i=0; i<_param->_size_bank; i++)
    126       reg_BTB [i] = new btb_entry_t [_param->_associativity];
     131        ALLOC2(reg_BTB,btb_entry_t,_param->_size_bank,_param->_associativity);
    127132
    128     internal_DECOD_ACK        = new Tcontrol_t [_param->_nb_inst_decod];
    129     internal_DECOD_HIT        = new Tcontrol_t [_param->_nb_inst_decod];
    130     internal_DECOD_NUM_BANK   = new uint32_t   [_param->_nb_inst_decod];
    131     internal_DECOD_NUM_ENTRY  = new uint32_t   [_param->_nb_inst_decod];
     133        ALLOC1(internal_DECOD_ACK       ,Tcontrol_t,_param->_nb_inst_decod );
     134        ALLOC1(internal_DECOD_HIT       ,Tcontrol_t,_param->_nb_inst_decod );
     135        ALLOC1(internal_DECOD_NUM_BANK  ,uint32_t  ,_param->_nb_inst_decod );
     136        ALLOC1(internal_DECOD_NUM_ENTRY ,uint32_t  ,_param->_nb_inst_decod );
    132137
    133     internal_UPDATE_ACK       = new Tcontrol_t [_param->_nb_inst_update];
    134     internal_UPDATE_HIT       = new Tcontrol_t [_param->_nb_inst_update];
    135     internal_UPDATE_NUM_BANK  = new uint32_t   [_param->_nb_inst_update];
    136     internal_UPDATE_NUM_ENTRY = new uint32_t   [_param->_nb_inst_update];
     138        ALLOC1(internal_UPDATE_ACK      ,Tcontrol_t,_param->_nb_inst_update);
     139        ALLOC1(internal_UPDATE_HIT      ,Tcontrol_t,_param->_nb_inst_update);
     140        ALLOC1(internal_UPDATE_NUM_BANK ,uint32_t  ,_param->_nb_inst_update);
     141        ALLOC1(internal_UPDATE_NUM_ENTRY,uint32_t  ,_param->_nb_inst_update);
    137142      }
    138143
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register/src/Branch_Target_Buffer_Register_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register/include/Branch_Target_Buffer_Register.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2930        delete    in_NRESET;
    3031
    31         delete []  in_PREDICT_VAL           ;
    32         delete [] out_PREDICT_ACK           ;
    33         if (_param->_have_port_context_id)
    34         delete []  in_PREDICT_CONTEXT_ID    ;
    35         delete []  in_PREDICT_ADDRESS       ;
    36         delete [] out_PREDICT_HIT           ;
    37         delete [] out_PREDICT_ADDRESS_SRC   ;
    38         delete [] out_PREDICT_ADDRESS_DEST  ;
    39         delete [] out_PREDICT_CONDITION     ;
    40         delete [] out_PREDICT_LAST_TAKE     ;
    41         delete [] out_PREDICT_IS_ACCURATE   ;
    42         delete []  in_DECOD_VAL             ;
    43         delete [] out_DECOD_ACK             ;
    44         if (_param->_have_port_victim)
    45           {
    46         delete [] out_DECOD_HIT             ;
    47         delete [] out_DECOD_HIT_INDEX       ;
    48         delete []  in_DECOD_VICTIM          ;
    49           }
    50         if (_param->_have_port_context_id)
    51         delete []  in_DECOD_CONTEXT_ID      ;
    52         delete []  in_DECOD_ADDRESS_SRC     ;
    53         delete []  in_DECOD_ADDRESS_DEST    ;
    54         delete []  in_DECOD_CONDITION       ;
    55         delete []  in_DECOD_LAST_TAKE       ;
    56         delete []  in_DECOD_MISS_PREDICTION ;
    57         delete []  in_DECOD_IS_ACCURATE     ;
    58         delete []  in_UPDATE_VAL            ;
    59         delete [] out_UPDATE_ACK            ;
    60         if (_param->_have_port_victim)
    61           {
    62         delete [] out_UPDATE_HIT            ;
    63         delete [] out_UPDATE_HIT_INDEX      ;
    64         delete []  in_UPDATE_VICTIM         ;
    65           }
    66         if (_param->_have_port_context_id)
    67         delete []  in_UPDATE_CONTEXT_ID     ;
    68         delete []  in_UPDATE_ADDRESS_SRC    ;
    69         delete []  in_UPDATE_ADDRESS_DEST   ;
    70         delete []  in_UPDATE_CONDITION      ;
    71         delete []  in_UPDATE_LAST_TAKE      ;
    72         delete []  in_UPDATE_MISS_PREDICTION;
     32        DELETE1_SIGNAL( in_PREDICT_VAL         ,_param->_nb_inst_predict,1);
     33        DELETE1_SIGNAL(out_PREDICT_ACK         ,_param->_nb_inst_predict,1);
     34        DELETE1_SIGNAL( in_PREDICT_CONTEXT_ID  ,_param->_nb_inst_predict,_param->_size_context_id);
     35        DELETE1_SIGNAL( in_PREDICT_ADDRESS     ,_param->_nb_inst_predict,_param->_size_instruction_address);
     36        DELETE2_SIGNAL(out_PREDICT_HIT         , _param->_nb_inst_predict, _param->_associativity,1);
     37        DELETE2_SIGNAL(out_PREDICT_ADDRESS_SRC , _param->_nb_inst_predict, _param->_associativity,_param->_size_instruction_address);
     38        DELETE2_SIGNAL(out_PREDICT_ADDRESS_DEST, _param->_nb_inst_predict, _param->_associativity,_param->_size_instruction_address);
     39        DELETE2_SIGNAL(out_PREDICT_CONDITION   , _param->_nb_inst_predict, _param->_associativity,_param->_size_branch_state);
     40        DELETE2_SIGNAL(out_PREDICT_LAST_TAKE   , _param->_nb_inst_predict, _param->_associativity,1);
     41        DELETE2_SIGNAL(out_PREDICT_IS_ACCURATE , _param->_nb_inst_predict, _param->_associativity,1);
     42 
     43        DELETE1_SIGNAL( in_DECOD_VAL            , _param->_nb_inst_decod,1);
     44        DELETE1_SIGNAL(out_DECOD_ACK            , _param->_nb_inst_decod,1);
     45        if (_param->_have_port_victim)
     46        {
     47        DELETE1_SIGNAL(out_DECOD_HIT            , _param->_nb_inst_decod,1);
     48        DELETE1_SIGNAL(out_DECOD_HIT_INDEX      , _param->_nb_inst_decod,_param->_size_victim);
     49        DELETE1_SIGNAL( in_DECOD_VICTIM         , _param->_nb_inst_decod,_param->_size_victim);
     50        }
     51        DELETE1_SIGNAL( in_DECOD_CONTEXT_ID     , _param->_nb_inst_decod,_param->_size_context_id);
     52        DELETE1_SIGNAL( in_DECOD_ADDRESS_SRC    , _param->_nb_inst_decod,_param->_size_instruction_address);
     53        DELETE1_SIGNAL( in_DECOD_ADDRESS_DEST   , _param->_nb_inst_decod,_param->_size_instruction_address);
     54        DELETE1_SIGNAL( in_DECOD_CONDITION      , _param->_nb_inst_decod,_param->_size_branch_state);
     55        DELETE1_SIGNAL( in_DECOD_LAST_TAKE      , _param->_nb_inst_decod,1);
     56        DELETE1_SIGNAL( in_DECOD_MISS_PREDICTION, _param->_nb_inst_decod,1);
     57        DELETE1_SIGNAL( in_DECOD_IS_ACCURATE    , _param->_nb_inst_decod,1);
     58 
     59        DELETE1_SIGNAL( in_UPDATE_VAL            , _param->_nb_inst_update,1);
     60        DELETE1_SIGNAL(out_UPDATE_ACK            , _param->_nb_inst_update,1);
     61        if (_param->_have_port_victim)
     62        {
     63        DELETE1_SIGNAL(out_UPDATE_HIT            , _param->_nb_inst_update,1);
     64        DELETE1_SIGNAL(out_UPDATE_HIT_INDEX      , _param->_nb_inst_update,_param->_size_victim);
     65        DELETE1_SIGNAL( in_UPDATE_VICTIM         , _param->_nb_inst_update,_param->_size_victim);
     66        }
     67        DELETE1_SIGNAL( in_UPDATE_CONTEXT_ID     , _param->_nb_inst_update,_param->_size_context_id);
     68        DELETE1_SIGNAL( in_UPDATE_ADDRESS_SRC    , _param->_nb_inst_update,_param->_size_instruction_address);
     69        DELETE1_SIGNAL( in_UPDATE_ADDRESS_DEST   , _param->_nb_inst_update,_param->_size_instruction_address);
     70        DELETE1_SIGNAL( in_UPDATE_CONDITION      , _param->_nb_inst_update,_param->_size_branch_state);
     71        DELETE1_SIGNAL( in_UPDATE_LAST_TAKE      , _param->_nb_inst_update,1);
     72        DELETE1_SIGNAL( in_UPDATE_MISS_PREDICTION, _param->_nb_inst_update,1);
     73 
     74        DELETE2(reg_BTB                  ,_param->_size_bank,_param->_associativity);
    7375
    74         delete [] reg_BTB;
    75 
    76         delete [] internal_DECOD_ACK       ;
    77         delete [] internal_DECOD_HIT       ;
    78         delete [] internal_DECOD_NUM_BANK  ;
    79         delete [] internal_DECOD_NUM_ENTRY ;
    80 
    81         delete [] internal_UPDATE_ACK      ;
    82         delete [] internal_UPDATE_HIT      ;
    83         delete [] internal_UPDATE_NUM_BANK ;
    84         delete [] internal_UPDATE_NUM_ENTRY;
     76        DELETE1(internal_DECOD_ACK       ,_param->_nb_inst_decod );
     77        DELETE1(internal_DECOD_HIT       ,_param->_nb_inst_decod );
     78        DELETE1(internal_DECOD_NUM_BANK  ,_param->_nb_inst_decod );
     79        DELETE1(internal_DECOD_NUM_ENTRY ,_param->_nb_inst_decod );
     80        DELETE1(internal_UPDATE_ACK      ,_param->_nb_inst_update);
     81        DELETE1(internal_UPDATE_HIT      ,_param->_nb_inst_update);
     82        DELETE1(internal_UPDATE_NUM_BANK ,_param->_nb_inst_update);
     83        DELETE1(internal_UPDATE_NUM_ENTRY,_param->_nb_inst_update);
    8584      }
    8685
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/src/Branch_Target_Buffer_allocation.cpp

    r108 r112  
    4949                                                         ,IN
    5050                                                         ,SOUTH,
    51                                                          "Generalist interface"
     51                                                         _("Generalist interface")
    5252#endif
    5353                                                         );
     
    5959    // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6060    {
    61       ALLOC1_INTERFACE("predict", IN, SOUTH, "Predict (next pc) interface", _param->_nb_inst_predict);
     61      ALLOC1_INTERFACE_BEGIN("predict", IN, SOUTH, _("Predict (next pc) interface"), _param->_nb_inst_predict);
    6262
    6363      ALLOC1_VALACK_IN ( in_PREDICT_VAL         ,VAL);
     
    7171      ALLOC1_SIGNAL_OUT(out_PREDICT_LAST_TAKE   ,"last_take"   ,Tcontrol_t         ,1);
    7272      ALLOC1_SIGNAL_OUT(out_PREDICT_IS_ACCURATE ,"is_accurate" ,Tcontrol_t         ,1);
     73
     74      ALLOC1_INTERFACE_END(param->_nb_inst_predict);
    7375    }
    7476
    7577    // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7678    {
    77       ALLOC1_INTERFACE("decod", IN, SOUTH, "Decod Interface", _param->_nb_inst_decod);
     79      ALLOC1_INTERFACE_BEGIN("decod", IN, SOUTH, _("Decod Interface"), _param->_nb_inst_decod);
    7880   
    7981      ALLOC1_VALACK_IN ( in_DECOD_VAL            ,VAL);
     
    8688      ALLOC1_SIGNAL_IN ( in_DECOD_MISS_PREDICTION,"miss_prediction",Tcontrol_t         ,1);
    8789      ALLOC1_SIGNAL_IN ( in_DECOD_IS_ACCURATE    ,"is_accurate"    ,Tcontrol_t         ,1);
     90
     91      ALLOC1_INTERFACE_END(_param->_nb_inst_decod);
    8892    }
    8993
    9094    // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    9195    {
    92       ALLOC1_INTERFACE("update", IN, SOUTH, "Update interface", _param->_nb_inst_update);
     96      ALLOC1_INTERFACE_BEGIN("update", IN, SOUTH, _("Update interface"), _param->_nb_inst_update);
    9397   
    9498      ALLOC1_VALACK_IN ( in_UPDATE_VAL            ,VAL);
     
    100104      ALLOC1_SIGNAL_IN ( in_UPDATE_LAST_TAKE      ,"last_take"      ,Tcontrol_t         ,1);
    101105      ALLOC1_SIGNAL_IN ( in_UPDATE_MISS_PREDICTION,"miss_prediction",Tcontrol_t         ,1);
     106
     107      ALLOC1_INTERFACE_END(_param->_nb_inst_update);
    102108    }
    103109
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/src/Branch_Target_Buffer_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/include/Branch_Target_Buffer.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2829        delete    in_NRESET;
    2930
    30         delete []  in_PREDICT_VAL           ;
    31         delete [] out_PREDICT_ACK           ;
    32         if (_param->_have_port_context_id)
    33         delete []  in_PREDICT_CONTEXT_ID    ;
    34         delete []  in_PREDICT_ADDRESS       ;
    35         delete [] out_PREDICT_HIT           ;
    36         delete [] out_PREDICT_ADDRESS_SRC   ;
    37         delete [] out_PREDICT_ADDRESS_DEST  ;
    38         delete [] out_PREDICT_CONDITION     ;
    39         delete [] out_PREDICT_LAST_TAKE     ;
    40         delete [] out_PREDICT_IS_ACCURATE   ;
     31        DELETE1_SIGNAL( in_PREDICT_VAL           ,_param->_nb_inst_predict,1);
     32        DELETE1_SIGNAL(out_PREDICT_ACK           ,_param->_nb_inst_predict,1);
     33        DELETE1_SIGNAL( in_PREDICT_CONTEXT_ID    ,_param->_nb_inst_predict,_param->_size_context_id);
     34        DELETE1_SIGNAL( in_PREDICT_ADDRESS       ,_param->_nb_inst_predict,_param->_size_instruction_address);
     35        DELETE1_SIGNAL(out_PREDICT_HIT           ,_param->_nb_inst_predict,1);
     36        DELETE1_SIGNAL(out_PREDICT_ADDRESS_SRC   ,_param->_nb_inst_predict,_param->_size_instruction_address);
     37        DELETE1_SIGNAL(out_PREDICT_ADDRESS_DEST  ,_param->_nb_inst_predict,_param->_size_instruction_address);
     38        DELETE1_SIGNAL(out_PREDICT_CONDITION     ,_param->_nb_inst_predict,_param->_size_branch_condition);
     39        DELETE1_SIGNAL(out_PREDICT_LAST_TAKE     ,_param->_nb_inst_predict,1);
     40        DELETE1_SIGNAL(out_PREDICT_IS_ACCURATE   ,_param->_nb_inst_predict,1);
    4141
    42         delete []  in_DECOD_VAL             ;
    43         delete [] out_DECOD_ACK             ;
    44         if (_param->_have_port_context_id)
    45         delete []  in_DECOD_CONTEXT_ID      ;
    46         delete []  in_DECOD_ADDRESS_SRC     ;
    47         delete []  in_DECOD_ADDRESS_DEST    ;
    48         delete []  in_DECOD_CONDITION       ;
    49         delete []  in_DECOD_LAST_TAKE       ;
    50         delete []  in_DECOD_MISS_PREDICTION ;
    51         delete []  in_DECOD_IS_ACCURATE     ;
     42        DELETE1_SIGNAL( in_DECOD_VAL             ,_param->_nb_inst_decod,1);
     43        DELETE1_SIGNAL(out_DECOD_ACK             ,_param->_nb_inst_decod,1);
     44        DELETE1_SIGNAL( in_DECOD_CONTEXT_ID      ,_param->_nb_inst_decod,_param->_size_context_id);
     45        DELETE1_SIGNAL( in_DECOD_ADDRESS_SRC     ,_param->_nb_inst_decod,_param->_size_instruction_address);
     46        DELETE1_SIGNAL( in_DECOD_ADDRESS_DEST    ,_param->_nb_inst_decod,_param->_size_instruction_address);
     47        DELETE1_SIGNAL( in_DECOD_CONDITION       ,_param->_nb_inst_decod,_param->_size_branch_condition);
     48        DELETE1_SIGNAL( in_DECOD_LAST_TAKE       ,_param->_nb_inst_decod,1);
     49        DELETE1_SIGNAL( in_DECOD_MISS_PREDICTION ,_param->_nb_inst_decod,1);
     50        DELETE1_SIGNAL( in_DECOD_IS_ACCURATE     ,_param->_nb_inst_decod,1);
    5251
    53         delete []  in_UPDATE_VAL            ;
    54         delete [] out_UPDATE_ACK            ;
    55         if (_param->_have_port_context_id)
    56         delete []  in_UPDATE_CONTEXT_ID     ;
    57         delete []  in_UPDATE_ADDRESS_SRC    ;
    58         delete []  in_UPDATE_ADDRESS_DEST   ;
    59         delete []  in_UPDATE_CONDITION      ;
    60         delete []  in_UPDATE_LAST_TAKE      ;
    61         delete []  in_UPDATE_MISS_PREDICTION;
     52        DELETE1_SIGNAL( in_UPDATE_VAL            ,_param->_nb_inst_update,1);
     53        DELETE1_SIGNAL(out_UPDATE_ACK            ,_param->_nb_inst_update,1);
     54        DELETE1_SIGNAL( in_UPDATE_CONTEXT_ID     ,_param->_nb_inst_update,_param->_size_context_id);
     55        DELETE1_SIGNAL( in_UPDATE_ADDRESS_SRC    ,_param->_nb_inst_update,_param->_size_instruction_address);
     56        DELETE1_SIGNAL( in_UPDATE_ADDRESS_DEST   ,_param->_nb_inst_update,_param->_size_instruction_address);
     57        DELETE1_SIGNAL( in_UPDATE_CONDITION      ,_param->_nb_inst_update,_param->_size_branch_condition);
     58        DELETE1_SIGNAL( in_UPDATE_LAST_TAKE      ,_param->_nb_inst_update,1);
     59        DELETE1_SIGNAL( in_UPDATE_MISS_PREDICTION,_param->_nb_inst_update,1);
    6260      }
    6361    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/SelfTest/src/test.cpp

    r88 r112  
    5151  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
    5252
    53   ALLOC1_SC_SIGNAL( in_PREDICT_VAL                  ," in_PREDICT_VAL                  ",Tcontrol_t,_param->_nb_inst_predict);
    54   ALLOC1_SC_SIGNAL(out_PREDICT_ACK                  ,"out_PREDICT_ACK                  ",Tcontrol_t,_param->_nb_inst_predict);
    55   ALLOC1_SC_SIGNAL( in_PREDICT_ADDRESS_SRC          ," in_PREDICT_ADDRESS_SRC          ",Taddress_t,_param->_nb_inst_predict);
    56   ALLOC1_SC_SIGNAL( in_PREDICT_STATIC               ," in_PREDICT_STATIC               ",Tcontrol_t,_param->_nb_inst_predict);
    57   ALLOC1_SC_SIGNAL( in_PREDICT_LAST_TAKE            ," in_PREDICT_LAST_TAKE            ",Tcontrol_t,_param->_nb_inst_predict);
    58   ALLOC1_SC_SIGNAL(out_PREDICT_HISTORY              ,"out_PREDICT_HISTORY              ",Thistory_t,_param->_nb_inst_predict);
    59   ALLOC1_SC_SIGNAL(out_PREDICT_DIRECTION            ,"out_PREDICT_DIRECTION            ",Tcontrol_t,_param->_nb_inst_predict);
    60   ALLOC1_SC_SIGNAL(out_PREDICT_PREDICTOR_VAL        ,"out_PREDICT_PREDICTOR_VAL        ",Tcontrol_t,_param->_nb_inst_predict);
    61   ALLOC1_SC_SIGNAL( in_PREDICT_PREDICTOR_ACK        ," in_PREDICT_PREDICTOR_ACK        ",Tcontrol_t,_param->_nb_inst_predict);
    62   ALLOC1_SC_SIGNAL(out_PREDICT_PREDICTOR_ADDRESS_SRC,"out_PREDICT_PREDICTOR_ADDRESS_SRC",Taddress_t,_param->_nb_inst_predict);
    63   ALLOC1_SC_SIGNAL( in_PREDICT_PREDICTOR_HISTORY    ," in_PREDICT_PREDICTOR_HISTORY    ",Thistory_t,_param->_nb_inst_predict);
    64   ALLOC1_SC_SIGNAL( in_PREDICT_PREDICTOR_DIRECTION  ," in_PREDICT_PREDICTOR_DIRECTION  ",Tcontrol_t,_param->_nb_inst_predict);
    65   ALLOC1_SC_SIGNAL( in_UPDATE_VAL                   ," in_UPDATE_VAL                   ",Tcontrol_t,_param->_nb_inst_update);
    66   ALLOC1_SC_SIGNAL(out_UPDATE_ACK                   ,"out_UPDATE_ACK                   ",Tcontrol_t,_param->_nb_inst_update);
    67   ALLOC1_SC_SIGNAL( in_UPDATE_ADDRESS               ," in_UPDATE_ADDRESS               ",Taddress_t,_param->_nb_inst_update);
    68   ALLOC1_SC_SIGNAL( in_UPDATE_HISTORY               ," in_UPDATE_HISTORY               ",Thistory_t,_param->_nb_inst_update);
    69   ALLOC1_SC_SIGNAL( in_UPDATE_DIRECTION             ," in_UPDATE_DIRECTION             ",Tcontrol_t,_param->_nb_inst_update);
    70   ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTOR_VAL         ,"out_UPDATE_PREDICTOR_VAL         ",Tcontrol_t,_param->_nb_inst_update);
    71   ALLOC1_SC_SIGNAL( in_UPDATE_PREDICTOR_ACK         ," in_UPDATE_PREDICTOR_ACK         ",Tcontrol_t,_param->_nb_inst_update);
    72   ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTOR_ADDRESS     ,"out_UPDATE_PREDICTOR_ADDRESS     ",Taddress_t,_param->_nb_inst_update);
    73   ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTOR_HISTORY     ,"out_UPDATE_PREDICTOR_HISTORY     ",Thistory_t,_param->_nb_inst_update);
    74   ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTOR_DIRECTION   ,"out_UPDATE_PREDICTOR_DIRECTION   ",Tcontrol_t,_param->_nb_inst_update);
     53  ALLOC1_SC_SIGNAL( in_PREDICT_VAL                        ," in_PREDICT_VAL                        ",Tcontrol_t,_param->_nb_inst_predict);
     54  ALLOC1_SC_SIGNAL(out_PREDICT_ACK                        ,"out_PREDICT_ACK                        ",Tcontrol_t,_param->_nb_inst_predict);
     55  ALLOC1_SC_SIGNAL( in_PREDICT_ADDRESS_SRC                ," in_PREDICT_ADDRESS_SRC                ",Taddress_t,_param->_nb_inst_predict);
     56  ALLOC1_SC_SIGNAL( in_PREDICT_STATIC                     ," in_PREDICT_STATIC                     ",Tcontrol_t,_param->_nb_inst_predict);
     57  ALLOC1_SC_SIGNAL( in_PREDICT_LAST_TAKE                  ," in_PREDICT_LAST_TAKE                  ",Tcontrol_t,_param->_nb_inst_predict);
     58  ALLOC1_SC_SIGNAL(out_PREDICT_HISTORY                    ,"out_PREDICT_HISTORY                    ",Thistory_t,_param->_nb_inst_predict);
     59  ALLOC1_SC_SIGNAL(out_PREDICT_DIRECTION                  ,"out_PREDICT_DIRECTION                  ",Tcontrol_t,_param->_nb_inst_predict);
     60  ALLOC1_SC_SIGNAL(out_PREDICT_PREDICTOR_VAL              ,"out_PREDICT_PREDICTOR_VAL              ",Tcontrol_t,_param->_nb_inst_predict);
     61  ALLOC1_SC_SIGNAL( in_PREDICT_PREDICTOR_ACK              ," in_PREDICT_PREDICTOR_ACK              ",Tcontrol_t,_param->_nb_inst_predict);
     62  ALLOC1_SC_SIGNAL(out_PREDICT_PREDICTOR_ADDRESS_SRC      ,"out_PREDICT_PREDICTOR_ADDRESS_SRC      ",Taddress_t,_param->_nb_inst_predict);
     63  ALLOC1_SC_SIGNAL( in_PREDICT_PREDICTOR_HISTORY          ," in_PREDICT_PREDICTOR_HISTORY          ",Thistory_t,_param->_nb_inst_predict);
     64  ALLOC1_SC_SIGNAL( in_PREDICT_PREDICTOR_DIRECTION        ," in_PREDICT_PREDICTOR_DIRECTION        ",Tcontrol_t,_param->_nb_inst_predict);
     65  ALLOC1_SC_SIGNAL( in_UPDATE_VAL                         ," in_UPDATE_VAL                         ",Tcontrol_t,_param->_nb_inst_update);
     66  ALLOC1_SC_SIGNAL(out_UPDATE_ACK                         ,"out_UPDATE_ACK                         ",Tcontrol_t,_param->_nb_inst_update);
     67  ALLOC1_SC_SIGNAL( in_UPDATE_ADDRESS                     ," in_UPDATE_ADDRESS                     ",Taddress_t,_param->_nb_inst_update);
     68  ALLOC1_SC_SIGNAL( in_UPDATE_HISTORY                     ," in_UPDATE_HISTORY                     ",Thistory_t,_param->_nb_inst_update);
     69  ALLOC1_SC_SIGNAL( in_UPDATE_DIRECTION                   ," in_UPDATE_DIRECTION                   ",Tcontrol_t,_param->_nb_inst_update);
     70  ALLOC1_SC_SIGNAL( in_UPDATE_PREDICTION_IFETCH           ," in_UPDATE_PREDICTION_IFETCH           ",Tcontrol_t,_param->_nb_inst_update);
     71  ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTOR_VAL               ,"out_UPDATE_PREDICTOR_VAL               ",Tcontrol_t,_param->_nb_inst_update);
     72  ALLOC1_SC_SIGNAL( in_UPDATE_PREDICTOR_ACK               ," in_UPDATE_PREDICTOR_ACK               ",Tcontrol_t,_param->_nb_inst_update);
     73  ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTOR_ADDRESS           ,"out_UPDATE_PREDICTOR_ADDRESS           ",Taddress_t,_param->_nb_inst_update);
     74  ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTOR_HISTORY           ,"out_UPDATE_PREDICTOR_HISTORY           ",Thistory_t,_param->_nb_inst_update);
     75  ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTOR_DIRECTION         ,"out_UPDATE_PREDICTOR_DIRECTION         ",Tcontrol_t,_param->_nb_inst_update);
     76  ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTOR_PREDICTION_IFETCH ,"out_UPDATE_PREDICTOR_PREDICTION_IFETCH ",Tcontrol_t,_param->_nb_inst_update);
    7577
    7678  /********************************************************
     
    8385  (*(_Direction_Glue->in_NRESET))       (*(in_NRESET));
    8486
    85   INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_VAL                  ,_param->_nb_inst_predict);
    86   INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_ACK                  ,_param->_nb_inst_predict);
    87   INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_ADDRESS_SRC          ,_param->_nb_inst_predict);
    88   INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_STATIC               ,_param->_nb_inst_predict);
    89   INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_LAST_TAKE            ,_param->_nb_inst_predict);
    90   if (_param->_have_port_history)
    91   INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_HISTORY              ,_param->_nb_inst_predict);
    92   INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_DIRECTION            ,_param->_nb_inst_predict);
    93   if (_param->_have_component_meta_predictor)
    94     {
    95   INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_PREDICTOR_VAL        ,_param->_nb_inst_predict);
    96   INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_PREDICTOR_ACK        ,_param->_nb_inst_predict);
    97   INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_PREDICTOR_ADDRESS_SRC,_param->_nb_inst_predict);
    98   if (_param->_have_port_history)
    99   INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_PREDICTOR_HISTORY    ,_param->_nb_inst_predict);
    100   INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_PREDICTOR_DIRECTION  ,_param->_nb_inst_predict);
    101     }
    102 
    103   INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_VAL                   ,_param->_nb_inst_update );
    104   INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_ACK                   ,_param->_nb_inst_update );
    105   INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_ADDRESS               ,_param->_nb_inst_update );
    106   if (_param->_have_port_history)
    107   INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_HISTORY               ,_param->_nb_inst_update );
    108   INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_DIRECTION             ,_param->_nb_inst_update );
    109   if (_param->_have_component_meta_predictor)
    110     {
    111   INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_PREDICTOR_VAL         ,_param->_nb_inst_update );
    112   INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_PREDICTOR_ACK         ,_param->_nb_inst_update );
    113   INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_PREDICTOR_ADDRESS     ,_param->_nb_inst_update );
    114   if (_param->_have_port_history)
    115   INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_PREDICTOR_HISTORY     ,_param->_nb_inst_update );
    116   INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_PREDICTOR_DIRECTION   ,_param->_nb_inst_update );
     87  INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_VAL                        ,_param->_nb_inst_predict);
     88  INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_ACK                        ,_param->_nb_inst_predict);
     89  INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_ADDRESS_SRC                ,_param->_nb_inst_predict);
     90  INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_STATIC                     ,_param->_nb_inst_predict);
     91  INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_LAST_TAKE                  ,_param->_nb_inst_predict);
     92  if (_param->_have_port_history)                                           
     93  INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_HISTORY                    ,_param->_nb_inst_predict);
     94  INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_DIRECTION                  ,_param->_nb_inst_predict);
     95  if (_param->_have_component_meta_predictor)                               
     96    {                                                                       
     97  INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_PREDICTOR_VAL              ,_param->_nb_inst_predict);
     98  INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_PREDICTOR_ACK              ,_param->_nb_inst_predict);
     99  INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_PREDICTOR_ADDRESS_SRC      ,_param->_nb_inst_predict);
     100  if (_param->_have_port_history)                                           
     101  INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_PREDICTOR_HISTORY          ,_param->_nb_inst_predict);
     102  INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_PREDICTOR_DIRECTION        ,_param->_nb_inst_predict);
     103    }                                                                       
     104                                                                             
     105  INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_VAL                         ,_param->_nb_inst_update );
     106  INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_ACK                         ,_param->_nb_inst_update );
     107  INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_ADDRESS                     ,_param->_nb_inst_update );
     108  if (_param->_have_port_history)                                           
     109  INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_HISTORY                     ,_param->_nb_inst_update );
     110  INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_DIRECTION                   ,_param->_nb_inst_update );
     111  INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_PREDICTION_IFETCH           ,_param->_nb_inst_update );
     112  if (_param->_have_component_meta_predictor)                               
     113    {                                                                       
     114  INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_PREDICTOR_VAL               ,_param->_nb_inst_update );
     115  INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_PREDICTOR_ACK               ,_param->_nb_inst_update );
     116  INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_PREDICTOR_ADDRESS           ,_param->_nb_inst_update );
     117  if (_param->_have_port_history)                                           
     118  INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_PREDICTOR_HISTORY           ,_param->_nb_inst_update );
     119  INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_PREDICTOR_DIRECTION         ,_param->_nb_inst_update );
     120  INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_PREDICTOR_PREDICTION_IFETCH ,_param->_nb_inst_update );
    117121    }
    118122
     
    163167          in_UPDATE_HISTORY              [i]->write(range<Thistory_t>(rand(),_param->_size_history));
    164168          in_UPDATE_DIRECTION            [i]->write(rand()%2);
     169          in_UPDATE_PREDICTION_IFETCH    [i]->write(rand()%2);
    165170          in_UPDATE_PREDICTOR_ACK        [i]->write(rand()%2);
    166171        }
     
    228233            case PREDICTOR_CUSTOM      :
    229234              {
    230                 TEST(Tcontrol_t,out_UPDATE_ACK                 [i]->read(), in_UPDATE_PREDICTOR_ACK [i]->read());
    231                 TEST(Tcontrol_t,out_UPDATE_PREDICTOR_VAL       [i]->read(), in_UPDATE_VAL           [i]->read());
    232                 TEST(Taddress_t,out_UPDATE_PREDICTOR_ADDRESS   [i]->read(), in_UPDATE_ADDRESS       [i]->read());
    233                 TEST(Thistory_t,out_UPDATE_PREDICTOR_HISTORY   [i]->read(), in_UPDATE_HISTORY       [i]->read());
    234                 TEST(Tcontrol_t,out_UPDATE_PREDICTOR_DIRECTION [i]->read(), in_UPDATE_DIRECTION     [i]->read());
     235                TEST(Tcontrol_t,out_UPDATE_ACK                        [i]->read(), in_UPDATE_PREDICTOR_ACK       [i]->read());
     236                TEST(Tcontrol_t,out_UPDATE_PREDICTOR_VAL              [i]->read(), in_UPDATE_VAL                 [i]->read());
     237                TEST(Taddress_t,out_UPDATE_PREDICTOR_ADDRESS          [i]->read(), in_UPDATE_ADDRESS             [i]->read());
     238                TEST(Thistory_t,out_UPDATE_PREDICTOR_HISTORY          [i]->read(), in_UPDATE_HISTORY             [i]->read());
     239                TEST(Tcontrol_t,out_UPDATE_PREDICTOR_DIRECTION        [i]->read(), in_UPDATE_DIRECTION           [i]->read());
     240                TEST(Tcontrol_t,out_UPDATE_PREDICTOR_PREDICTION_IFETCH[i]->read(), in_UPDATE_PREDICTION_IFETCH   [i]->read());
    235241               
    236242                break;
     
    281287  delete []  in_UPDATE_HISTORY               ;
    282288  delete []  in_UPDATE_DIRECTION             ;
     289  delete []  in_UPDATE_PREDICTION_IFETCH     ;
    283290  delete [] out_UPDATE_PREDICTOR_VAL         ;
    284291  delete []  in_UPDATE_PREDICTOR_ACK         ;
     
    286293  delete [] out_UPDATE_PREDICTOR_HISTORY     ;
    287294  delete [] out_UPDATE_PREDICTOR_DIRECTION   ;
     295  delete [] out_UPDATE_PREDICTOR_PREDICTION_IFETCH;
    288296#endif
    289297
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/include/Direction_Glue.h

    r82 r112  
    7979
    8080    // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    81   public    : SC_IN (Tcontrol_t)           **  in_UPDATE_VAL                ;
    82   public    : SC_OUT(Tcontrol_t)           ** out_UPDATE_ACK                ;
    83   public    : SC_IN (Taddress_t)           **  in_UPDATE_ADDRESS            ;
    84   public    : SC_IN (Thistory_t)           **  in_UPDATE_HISTORY            ;
    85   public    : SC_IN (Tcontrol_t)           **  in_UPDATE_DIRECTION          ;
     81  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_VAL                        ;
     82  public    : SC_OUT(Tcontrol_t)           ** out_UPDATE_ACK                        ;
     83  public    : SC_IN (Taddress_t)           **  in_UPDATE_ADDRESS                    ;
     84  public    : SC_IN (Thistory_t)           **  in_UPDATE_HISTORY                    ;
     85  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_DIRECTION                  ;
     86  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_PREDICTION_IFETCH          ;
    8687
    87   public    : SC_OUT(Tcontrol_t)           ** out_UPDATE_PREDICTOR_VAL      ;
    88   public    : SC_IN (Tcontrol_t)           **  in_UPDATE_PREDICTOR_ACK      ;
    89   public    : SC_OUT(Taddress_t)           ** out_UPDATE_PREDICTOR_ADDRESS  ;
    90   public    : SC_OUT(Thistory_t)           ** out_UPDATE_PREDICTOR_HISTORY  ;
    91   public    : SC_OUT(Tcontrol_t)           ** out_UPDATE_PREDICTOR_DIRECTION;
     88  public    : SC_OUT(Tcontrol_t)           ** out_UPDATE_PREDICTOR_VAL              ;
     89  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_PREDICTOR_ACK              ;
     90  public    : SC_OUT(Taddress_t)           ** out_UPDATE_PREDICTOR_ADDRESS          ;
     91  public    : SC_OUT(Thistory_t)           ** out_UPDATE_PREDICTOR_HISTORY          ;
     92  public    : SC_OUT(Tcontrol_t)           ** out_UPDATE_PREDICTOR_DIRECTION        ;
     93  public    : SC_OUT(Tcontrol_t)           ** out_UPDATE_PREDICTOR_PREDICTION_IFETCH;
    9294
    9395    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/src/Direction_Glue.cpp

    r107 r112  
    215215//          sensitive << (*(in_CLOCK)).neg(); // don't use internal register
    216216            for (uint32_t i=0; i<_param->_nb_inst_update; i++)
    217               sensitive << (*(in_UPDATE_VAL           [i]))
    218                         << (*(in_UPDATE_PREDICTOR_ACK [i]))
    219                         << (*(in_UPDATE_ADDRESS       [i]))
    220                         << (*(in_UPDATE_HISTORY       [i]))
    221                         << (*(in_UPDATE_DIRECTION     [i]));
     217              sensitive << (*(in_UPDATE_VAL               [i]))
     218                        << (*(in_UPDATE_PREDICTOR_ACK     [i]))
     219                        << (*(in_UPDATE_ADDRESS           [i]))
     220                        << (*(in_UPDATE_HISTORY           [i]))
     221                        << (*(in_UPDATE_DIRECTION         [i]))
     222                        << (*(in_UPDATE_PREDICTION_IFETCH [i]))
     223                ;
    222224
    223225#  ifdef SYSTEMCASS_SPECIFIC
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/src/Direction_Glue_allocation.cpp

    r88 r112  
    5959    // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6060    {
    61       ALLOC1_INTERFACE("predict", IN, SOUTH, "predict's interface", _param->_nb_inst_predict);
     61      ALLOC1_INTERFACE_BEGIN("predict", IN, SOUTH, _("predict's interface"), _param->_nb_inst_predict);
    6262
    6363      ALLOC1_SIGNAL_IN ( in_PREDICT_VAL                  ,"val"                  ,Tcontrol_t,1);
     
    6868      ALLOC1_SIGNAL_OUT(out_PREDICT_HISTORY              ,"history"              ,Thistory_t,_param->_size_history);
    6969      ALLOC1_SIGNAL_OUT(out_PREDICT_DIRECTION            ,"direction"            ,Tcontrol_t,1);
    70       if (_param->_have_component_meta_predictor)
    71         {
     70
     71      if (_param->_have_component_meta_predictor)                               
     72        {                                                                       
    7273      ALLOC1_SIGNAL_OUT(out_PREDICT_PREDICTOR_VAL        ,"predictor_val"        ,Tcontrol_t,1);
    7374      ALLOC1_SIGNAL_IN ( in_PREDICT_PREDICTOR_ACK        ,"predictor_ack"        ,Tcontrol_t,1);
     
    7677      ALLOC1_SIGNAL_IN ( in_PREDICT_PREDICTOR_DIRECTION  ,"predictor_direction"  ,Tcontrol_t,1);
    7778        }
     79
     80      ALLOC1_INTERFACE_END(_param->_nb_inst_predict);
    7881    }
    7982
    8083    // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8184    {
    82       ALLOC1_INTERFACE("update", IN, SOUTH, "update's interface", _param->_nb_inst_update);
     85      ALLOC1_INTERFACE_BEGIN("update", IN, SOUTH, _("update's interface"), _param->_nb_inst_update);
    8386
    84       ALLOC1_SIGNAL_IN ( in_UPDATE_VAL                ,"val"                ,Tcontrol_t,1);
    85       ALLOC1_SIGNAL_OUT(out_UPDATE_ACK                ,"ack"                ,Tcontrol_t,1);
    86       ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS            ,"address"            ,Taddress_t,_param->_size_instruction_address);
    87       ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY            ,"history"            ,Thistory_t,_param->_size_history);
    88       ALLOC1_SIGNAL_IN ( in_UPDATE_DIRECTION          ,"direction"          ,Tcontrol_t,1);
     87      ALLOC1_SIGNAL_IN ( in_UPDATE_VAL                        ,"val"                        ,Tcontrol_t,1);
     88      ALLOC1_SIGNAL_OUT(out_UPDATE_ACK                        ,"ack"                        ,Tcontrol_t,1);
     89      ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS                    ,"address"                    ,Taddress_t,_param->_size_instruction_address);
     90      ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY                    ,"history"                    ,Thistory_t,_param->_size_history);
     91      ALLOC1_SIGNAL_IN ( in_UPDATE_DIRECTION                  ,"direction"                  ,Tcontrol_t,1);
     92      ALLOC1_SIGNAL_IN ( in_UPDATE_PREDICTION_IFETCH          ,"prediction_ifetch"          ,Tcontrol_t,1);
     93
    8994      if (_param->_have_component_meta_predictor)
    9095        {
    91       ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTOR_VAL      ,"predictor_val"      ,Tcontrol_t,1);
    92       ALLOC1_SIGNAL_IN ( in_UPDATE_PREDICTOR_ACK      ,"predictor_ack"      ,Tcontrol_t,1);
    93       ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTOR_ADDRESS  ,"predictor_address"  ,Taddress_t,_param->_size_instruction_address);
    94       ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTOR_HISTORY  ,"predictor_history"  ,Thistory_t,_param->_size_history);
    95       ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTOR_DIRECTION,"predictor_direction",Tcontrol_t,1);
     96      ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTOR_VAL              ,"predictor_val"              ,Tcontrol_t,1);
     97      ALLOC1_SIGNAL_IN ( in_UPDATE_PREDICTOR_ACK              ,"predictor_ack"              ,Tcontrol_t,1);
     98      ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTOR_ADDRESS          ,"predictor_address"          ,Taddress_t,_param->_size_instruction_address);
     99      ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTOR_HISTORY          ,"predictor_history"          ,Thistory_t,_param->_size_history);
     100      ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTOR_DIRECTION        ,"predictor_direction"        ,Tcontrol_t,1);
     101      ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTOR_PREDICTION_IFETCH,"predictor_prediction_ifetch",Tcontrol_t,1);
    96102        }
     103
     104      ALLOC1_INTERFACE_END(_param->_nb_inst_update);
    97105    }
    98106   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/src/Direction_Glue_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/include/Direction_Glue.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2930        delete    in_NRESET;
    3031
    31         delete []  in_PREDICT_VAL                  ;
    32         delete [] out_PREDICT_ACK                  ;
    33         delete []  in_PREDICT_ADDRESS_SRC          ;
    34         delete []  in_PREDICT_STATIC               ;
    35         delete []  in_PREDICT_LAST_TAKE            ;
    36         if (_param->_have_port_history)
    37         delete [] out_PREDICT_HISTORY              ;
    38         delete [] out_PREDICT_DIRECTION            ;
    39         if (_param->_have_component_meta_predictor)
    40           {
    41         delete [] out_PREDICT_PREDICTOR_VAL        ;
    42         delete []  in_PREDICT_PREDICTOR_ACK        ;
    43         delete [] out_PREDICT_PREDICTOR_ADDRESS_SRC;
    44         if (_param->_have_port_history)
    45         delete []  in_PREDICT_PREDICTOR_HISTORY    ;
    46         delete []  in_PREDICT_PREDICTOR_DIRECTION  ;
    47           }
    48         delete []  in_UPDATE_VAL                ;
    49         delete [] out_UPDATE_ACK                ;
    50         delete []  in_UPDATE_ADDRESS            ;
    51         if (_param->_have_port_history)
    52         delete []  in_UPDATE_HISTORY            ;
    53         delete []  in_UPDATE_DIRECTION          ;
    54         if (_param->_have_component_meta_predictor)
    55           {
    56         delete [] out_UPDATE_PREDICTOR_VAL      ;
    57         delete []  in_UPDATE_PREDICTOR_ACK      ;
    58         delete [] out_UPDATE_PREDICTOR_ADDRESS  ;
    59         if (_param->_have_port_history)
    60         delete [] out_UPDATE_PREDICTOR_HISTORY  ;
    61         delete [] out_UPDATE_PREDICTOR_DIRECTION;
    62           }
     32        DELETE1_SIGNAL( in_PREDICT_VAL                  , _param->_nb_inst_predict,1);
     33        DELETE1_SIGNAL(out_PREDICT_ACK                  , _param->_nb_inst_predict,1);
     34        DELETE1_SIGNAL( in_PREDICT_ADDRESS_SRC          , _param->_nb_inst_predict,_param->_size_instruction_address);
     35        DELETE1_SIGNAL( in_PREDICT_STATIC               , _param->_nb_inst_predict,1);
     36        DELETE1_SIGNAL( in_PREDICT_LAST_TAKE            , _param->_nb_inst_predict,1);
     37        DELETE1_SIGNAL(out_PREDICT_HISTORY              , _param->_nb_inst_predict,_param->_size_history);
     38        DELETE1_SIGNAL(out_PREDICT_DIRECTION            , _param->_nb_inst_predict,1);
     39        if (_param->_have_component_meta_predictor)                               
     40          {                                                                       
     41        DELETE1_SIGNAL(out_PREDICT_PREDICTOR_VAL        , _param->_nb_inst_predict,1);
     42        DELETE1_SIGNAL( in_PREDICT_PREDICTOR_ACK        , _param->_nb_inst_predict,1);
     43        DELETE1_SIGNAL(out_PREDICT_PREDICTOR_ADDRESS_SRC, _param->_nb_inst_predict,_param->_size_instruction_address);
     44        DELETE1_SIGNAL( in_PREDICT_PREDICTOR_HISTORY    , _param->_nb_inst_predict,_param->_size_history);
     45        DELETE1_SIGNAL( in_PREDICT_PREDICTOR_DIRECTION  , _param->_nb_inst_predict,1);
     46          }
     47
     48        DELETE1_SIGNAL( in_UPDATE_VAL                        ,_param->_nb_inst_update,1);
     49        DELETE1_SIGNAL(out_UPDATE_ACK                        ,_param->_nb_inst_update,1);
     50        DELETE1_SIGNAL( in_UPDATE_ADDRESS                    ,_param->_nb_inst_update,_param->_size_instruction_address);
     51        DELETE1_SIGNAL( in_UPDATE_HISTORY                    ,_param->_nb_inst_update,_param->_size_history);
     52        DELETE1_SIGNAL( in_UPDATE_DIRECTION                  ,_param->_nb_inst_update,1);
     53        DELETE1_SIGNAL( in_UPDATE_PREDICTION_IFETCH          ,_param->_nb_inst_update,1);
     54        if (_param->_have_component_meta_predictor)
     55          {
     56        DELETE1_SIGNAL(out_UPDATE_PREDICTOR_VAL              ,_param->_nb_inst_update,1);
     57        DELETE1_SIGNAL( in_UPDATE_PREDICTOR_ACK              ,_param->_nb_inst_update,1);
     58        DELETE1_SIGNAL(out_UPDATE_PREDICTOR_ADDRESS          ,_param->_nb_inst_update,_param->_size_instruction_address);
     59        DELETE1_SIGNAL(out_UPDATE_PREDICTOR_HISTORY          ,_param->_nb_inst_update,_param->_size_history);
     60        DELETE1_SIGNAL(out_UPDATE_PREDICTOR_DIRECTION        ,_param->_nb_inst_update,1);
     61        DELETE1_SIGNAL(out_UPDATE_PREDICTOR_PREDICTION_IFETCH,_param->_nb_inst_update,1);
     62          }
    6363      }
     64
    6465    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    65 
    6666    delete _component;
    6767
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/src/Direction_Glue_genMealy_update.cpp

    r107 r112  
    2828    for (uint32_t i=0; i<_param->_nb_inst_update; i++)
    2929      {
    30         PORT_WRITE(out_UPDATE_PREDICTOR_VAL       [i], PORT_READ(in_UPDATE_VAL           [i]));
    31         PORT_WRITE(out_UPDATE_ACK                 [i], PORT_READ(in_UPDATE_PREDICTOR_ACK [i]));
    32         PORT_WRITE(out_UPDATE_PREDICTOR_ADDRESS   [i], PORT_READ(in_UPDATE_ADDRESS       [i]));
    33         PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY   [i], PORT_READ(in_UPDATE_HISTORY       [i]));
    34         PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION [i], PORT_READ(in_UPDATE_DIRECTION     [i]));
     30        PORT_WRITE(out_UPDATE_PREDICTOR_VAL               [i], PORT_READ(in_UPDATE_VAL               [i]));
     31        PORT_WRITE(out_UPDATE_ACK                         [i], PORT_READ(in_UPDATE_PREDICTOR_ACK     [i]));
     32        PORT_WRITE(out_UPDATE_PREDICTOR_ADDRESS           [i], PORT_READ(in_UPDATE_ADDRESS           [i]));
     33        PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY           [i], PORT_READ(in_UPDATE_HISTORY           [i]));
     34        PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION         [i], PORT_READ(in_UPDATE_DIRECTION         [i]));
     35        PORT_WRITE(out_UPDATE_PREDICTOR_PREDICTION_IFETCH [i], PORT_READ(in_UPDATE_PREDICTION_IFETCH [i]));
    3536      }
    3637   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/SelfTest/src/test.cpp

    r111 r112  
    6464  ALLOC1_SC_SIGNAL(out_UPDATE_ACK                     ,"out_UPDATE_ACK                     ",Tcontrol_t,_param->_nb_inst_update);
    6565  ALLOC1_SC_SIGNAL( in_UPDATE_HISTORY                 ," in_UPDATE_HISTORY                 ",Thistory_t,_param->_nb_inst_update);
     66  ALLOC1_SC_SIGNAL( in_UPDATE_HISTORY_VAL             ," in_UPDATE_HISTORY_VAL             ",Tcontrol_t,_param->_nb_inst_update);
    6667  ALLOC1_SC_SIGNAL( in_UPDATE_DIRECTION               ," in_UPDATE_DIRECTION               ",Tcontrol_t,_param->_nb_inst_update);
    6768  ALLOC2_SC_SIGNAL(out_UPDATE_PREDICTOR_VAL           ,"out_UPDATE_PREDICTOR_VAL           ",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_update);
    6869  ALLOC2_SC_SIGNAL( in_UPDATE_PREDICTOR_ACK           ," in_UPDATE_PREDICTOR_ACK           ",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_update);
    6970  ALLOC2_SC_SIGNAL(out_UPDATE_PREDICTOR_HISTORY       ,"out_UPDATE_PREDICTOR_HISTORY       ",Thistory_t,_param->_nb_predictor,_param->_nb_inst_update);
     71  ALLOC2_SC_SIGNAL(out_UPDATE_PREDICTOR_HISTORY_VAL   ,"out_UPDATE_PREDICTOR_HISTORY_VAL   ",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_update);
    7072  ALLOC2_SC_SIGNAL(out_UPDATE_PREDICTOR_DIRECTION     ,"out_UPDATE_PREDICTOR_DIRECTION     ",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_update);
    7173  ALLOC2_SC_SIGNAL(out_UPDATE_PREDICTOR_MISS          ,"out_UPDATE_PREDICTOR_MISS          ",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_update);
     
    100102  INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue,out_UPDATE_ACK                     ,_param->_nb_inst_update);
    101103  INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue, in_UPDATE_HISTORY                 ,_param->_nb_inst_update);
     104  INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue, in_UPDATE_HISTORY_VAL             ,_param->_nb_inst_update);
    102105  INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue, in_UPDATE_DIRECTION               ,_param->_nb_inst_update);
    103106
     
    105108  INSTANCE2_SC_SIGNAL(_Meta_Predictor_Glue, in_UPDATE_PREDICTOR_ACK           ,_param->_nb_predictor,_param->_nb_inst_update);
    106109  INSTANCE2_SC_SIGNAL(_Meta_Predictor_Glue,out_UPDATE_PREDICTOR_HISTORY       ,_param->_nb_predictor,_param->_nb_inst_update);
     110  INSTANCE2_SC_SIGNAL(_Meta_Predictor_Glue,out_UPDATE_PREDICTOR_HISTORY_VAL   ,_param->_nb_predictor,_param->_nb_inst_update);
    107111  INSTANCE2_SC_SIGNAL(_Meta_Predictor_Glue,out_UPDATE_PREDICTOR_DIRECTION     ,_param->_nb_predictor,_param->_nb_inst_update);
    108112  for (uint32_t i=0; i<_param->_nb_predictor; ++i)
     
    169173  DELETE1_SC_SIGNAL(out_UPDATE_ACK                     ,_param->_nb_inst_update);
    170174  DELETE1_SC_SIGNAL( in_UPDATE_HISTORY                 ,_param->_nb_inst_update);
     175  DELETE1_SC_SIGNAL( in_UPDATE_HISTORY_VAL             ,_param->_nb_inst_update);
    171176  DELETE1_SC_SIGNAL( in_UPDATE_DIRECTION               ,_param->_nb_inst_update);
    172177
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/include/Meta_Predictor_Glue.h

    r111 r112  
    8383  public    : SC_OUT(Tcontrol_t)           ** out_UPDATE_ACK                     ;//              [nb_inst_update]
    8484  public    : SC_IN (Thistory_t)           **  in_UPDATE_HISTORY                 ;//              [nb_inst_update]
     85  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_HISTORY_VAL             ;//              [nb_inst_update]
    8586  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_DIRECTION               ;//              [nb_inst_update]
    8687
     
    8889  public    : SC_IN (Tcontrol_t)          ***  in_UPDATE_PREDICTOR_ACK           ;//[nb_predictor][nb_inst_update]
    8990  public    : SC_OUT(Thistory_t)          *** out_UPDATE_PREDICTOR_HISTORY       ;//[nb_predictor][nb_inst_update]
     91  public    : SC_OUT(Tcontrol_t)          *** out_UPDATE_PREDICTOR_HISTORY_VAL   ;//[nb_predictor][nb_inst_update]
    9092  public    : SC_OUT(Tcontrol_t)          *** out_UPDATE_PREDICTOR_DIRECTION     ;//[nb_predictor][nb_inst_update]
    9193  public    : SC_OUT(Tcontrol_t)          *** out_UPDATE_PREDICTOR_MISS          ;//[nb_predictor][nb_inst_update] // if update_on_prediction
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue.cpp

    r111 r112  
    101101//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
    102102        for (uint32_t i=0; i<_param->_nb_inst_update; ++i)
    103           sensitive << (*(in_UPDATE_HISTORY   [i]))
    104                     << (*(in_UPDATE_DIRECTION [i]));
     103          sensitive << (*(in_UPDATE_HISTORY     [i]))
     104                    << (*(in_UPDATE_HISTORY_VAL [i]))
     105                    << (*(in_UPDATE_DIRECTION   [i]));
    105106
    106107# ifdef SYSTEMCASS_SPECIFIC
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_allocation.cpp

    r111 r112  
    6161    // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6262    {
    63       ALLOC1_INTERFACE("predict",IN,NORTH,_("Predict next address"),_param->_nb_inst_predict);
     63      ALLOC1_INTERFACE_BEGIN("predict",IN,NORTH,_("Predict next address"),_param->_nb_inst_predict);
    6464
    6565      ALLOC1_SIGNAL_IN ( in_PREDICT_VAL                    ,"VAL"          ,Tcontrol_t,1);
     
    6767      ALLOC1_SIGNAL_OUT(out_PREDICT_HISTORY                ,"HISTORY"      ,Thistory_t,_param->_size_history);
    6868      ALLOC1_SIGNAL_OUT(out_PREDICT_DIRECTION              ,"DIRECTION"    ,Tcontrol_t,1);
     69
     70      ALLOC1_INTERFACE_END(_param->_nb_inst_predict);
    6971    }
    7072
    7173    {
    72       ALLOC2_INTERFACE("predict_predictor",IN,NORTH,_("Predict next address"),_param->_nb_predictor,_param->_nb_inst_predict);
     74      ALLOC2_INTERFACE_BEGIN("predict_predictor",IN,NORTH,_("Predict next address"),_param->_nb_predictor,_param->_nb_inst_predict);
    7375     
    7476      ALLOC2_SIGNAL_OUT(out_PREDICT_PREDICTOR_VAL          ,"VAL"          ,Tcontrol_t,1);
     
    7880      ALLOC2_SIGNAL_OUT(out_PREDICT_PREDICTOR_DIRECTION_VAL,"DIRECTION_VAL",Tcontrol_t,(_param->_predictor_update_on_prediction [it1])?1:0);
    7981      ALLOC2_SIGNAL_OUT(out_PREDICT_PREDICTOR_DIRECTION    ,"DIRECTION"    ,Tcontrol_t,(_param->_predictor_update_on_prediction [it1])?1:0);
     82
     83      ALLOC2_INTERFACE_END(_param->_nb_predictor,_param->_nb_inst_predict);
    8084    }
    8185
    8286    // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8387    {
    84       ALLOC1_INTERFACE("update",IN,NORTH,_("Update predictor"),_param->_nb_inst_update);
     88      ALLOC1_INTERFACE_BEGIN("update",IN,NORTH,_("Update predictor"),_param->_nb_inst_update);
    8589     
    8690      ALLOC1_SIGNAL_IN ( in_UPDATE_VAL                     ,"VAL"          ,Tcontrol_t,1);
    8791      ALLOC1_SIGNAL_OUT(out_UPDATE_ACK                     ,"ACK"          ,Tcontrol_t,1);
    8892      ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY                 ,"HISTORY"      ,Thistory_t,_param->_size_history);
     93      ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY_VAL             ,"HISTORY_VAL"  ,Tcontrol_t,1);
    8994      ALLOC1_SIGNAL_IN ( in_UPDATE_DIRECTION               ,"DIRECTION"    ,Tcontrol_t,1);
     95
     96      ALLOC1_INTERFACE_END(_param->_nb_inst_update);
    9097    }
    9198    {
    92       ALLOC2_INTERFACE("update_predictor",IN,NORTH,_("Update predictor"),_param->_nb_predictor,_param->_nb_inst_update);
     99      ALLOC2_INTERFACE_BEGIN("update_predictor",IN,NORTH,_("Update predictor"),_param->_nb_predictor,_param->_nb_inst_update);
    93100     
    94101      ALLOC2_SIGNAL_OUT(out_UPDATE_PREDICTOR_VAL           ,"VAL"          ,Tcontrol_t,1);
    95102      ALLOC2_SIGNAL_IN ( in_UPDATE_PREDICTOR_ACK           ,"ACK"          ,Tcontrol_t,1);
    96103      ALLOC2_SIGNAL_OUT(out_UPDATE_PREDICTOR_HISTORY       ,"HISTORY"      ,Thistory_t,_param->_predictor_size_history[it1]);
     104      ALLOC2_SIGNAL_OUT(out_UPDATE_PREDICTOR_HISTORY_VAL   ,"HISTORY_VAL"  ,Tcontrol_t,1);
    97105      ALLOC2_SIGNAL_OUT(out_UPDATE_PREDICTOR_DIRECTION     ,"DIRECTION"    ,Tcontrol_t,1);
    98106      ALLOC2_SIGNAL_OUT(out_UPDATE_PREDICTOR_MISS          ,"MISS"         ,Tcontrol_t,(_param->_predictor_update_on_prediction [it1])?1:0);
     107
     108      ALLOC2_INTERFACE_END(_param->_nb_predictor,_param->_nb_inst_update);
    99109    }
    100110
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_deallocation.cpp

    r111 r112  
    4646        DELETE1_SIGNAL(out_UPDATE_ACK                     ,_param->_nb_inst_update,1);
    4747        DELETE1_SIGNAL( in_UPDATE_HISTORY                 ,_param->_nb_inst_update,_param->_size_history);
     48        DELETE1_SIGNAL( in_UPDATE_HISTORY_VAL             ,_param->_nb_inst_update,1);
    4849        DELETE1_SIGNAL( in_UPDATE_DIRECTION               ,_param->_nb_inst_update,1);
    4950
     
    5152        DELETE2_SIGNAL( in_UPDATE_PREDICTOR_ACK           ,_param->_nb_predictor,_param->_nb_inst_update,1);
    5253        DELETE2_SIGNAL(out_UPDATE_PREDICTOR_HISTORY       ,_param->_nb_predictor,_param->_nb_inst_update,_param->_predictor_size_history[it1]);
     54        DELETE2_SIGNAL(out_UPDATE_PREDICTOR_HISTORY_VAL   ,_param->_nb_predictor,_param->_nb_inst_update,1);
    5355        DELETE2_SIGNAL(out_UPDATE_PREDICTOR_DIRECTION     ,_param->_nb_predictor,_param->_nb_inst_update,1);
    5456        DELETE2_SIGNAL(out_UPDATE_PREDICTOR_MISS          ,_param->_nb_predictor,_param->_nb_inst_update,(_param->_predictor_update_on_prediction [it1])?1:0);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_genMealy_update.cpp

    r111 r112  
    2929    for (uint32_t i=0; i<_param->_nb_inst_update; ++i)
    3030      {
    31         Thistory_t history   = PORT_READ(in_UPDATE_HISTORY   [i]);
    32         Tcontrol_t direction = PORT_READ(in_UPDATE_DIRECTION [i]);
     31        Thistory_t history     = PORT_READ(in_UPDATE_HISTORY     [i]);
     32        Tcontrol_t history_val = PORT_READ(in_UPDATE_HISTORY_VAL [i]);
     33        Tcontrol_t direction   = PORT_READ(in_UPDATE_DIRECTION   [i]);
    3334
    3435        switch (_param->_nb_predictor)
     
    3839              Thistory_t history_0       =  history;
    3940              Tcontrol_t direction_old_0 = (history_0>>_param->_predictor_history_shift_msb[0])&1;
    40               PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY   [0][i],history_0);
    41               PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION [0][i],direction);
     41              PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY     [0][i],history_0);
     42              PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY_VAL [0][i],history_val);
     43              PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION   [0][i],direction);
    4244              if (_param->_predictor_update_on_prediction [0])
    43               PORT_WRITE(out_UPDATE_PREDICTOR_MISS      [0][i],direction xor direction_old_0);
     45              PORT_WRITE(out_UPDATE_PREDICTOR_MISS        [0][i],direction xor direction_old_0);
    4446
    4547              break;
     
    8385                                   (not direction and direction_old_0));
    8486
    85               PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION [0][i],direction);
    86               PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION [1][i],direction);
    87               PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION [2][i],direction_new_2);
     87              PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION   [0][i],direction);
     88              PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION   [1][i],direction);
     89              PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION   [2][i],direction_new_2);
    8890
    8991              if (_param->_predictor_update_on_prediction [0])
    90               PORT_WRITE(out_UPDATE_PREDICTOR_MISS      [0][i],direction       xor direction_old_0);
     92              PORT_WRITE(out_UPDATE_PREDICTOR_MISS        [0][i],direction       xor direction_old_0);
    9193              if (_param->_predictor_update_on_prediction [1])
    92               PORT_WRITE(out_UPDATE_PREDICTOR_MISS      [1][i],direction       xor direction_old_1);
     94              PORT_WRITE(out_UPDATE_PREDICTOR_MISS        [1][i],direction       xor direction_old_1);
    9395              if (_param->_predictor_update_on_prediction [2])
    94               PORT_WRITE(out_UPDATE_PREDICTOR_MISS      [2][i],direction_new_2 xor direction_old_2);
     96              PORT_WRITE(out_UPDATE_PREDICTOR_MISS        [2][i],direction_new_2 xor direction_old_2);
    9597
    96               PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY   [0][i],history_0);
    97               PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY   [1][i],history_1);
    98               PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY   [2][i],history_2);
     98              PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY     [0][i],history_0);
     99              PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY     [1][i],history_1);
     100              PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY     [2][i],history_2);
     101
     102              PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY_VAL [0][i],history_val);
     103              PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY_VAL [1][i],history_val);
     104              PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY_VAL [2][i],history_val);
    99105
    100106              break;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/SelfTest/src/test.cpp

    r111 r112  
    6060  ALLOC1_SC_SIGNAL( in_UPDATE_ADDRESS       ," in_UPDATE_ADDRESS       ",Taddress_t,_param->_nb_inst_update);
    6161  ALLOC1_SC_SIGNAL( in_UPDATE_HISTORY       ," in_UPDATE_HISTORY       ",Thistory_t,_param->_nb_inst_update);
     62  ALLOC1_SC_SIGNAL( in_UPDATE_HISTORY_VAL   ," in_UPDATE_HISTORY_VAL   ",Tcontrol_t,_param->_nb_inst_update);
    6263  ALLOC1_SC_SIGNAL( in_UPDATE_DIRECTION     ," in_UPDATE_DIRECTION     ",Tcontrol_t,_param->_nb_inst_update);
    6364 
     
    8182  INSTANCE1_SC_SIGNAL(_Meta_Predictor, in_UPDATE_ADDRESS       ,_param->_nb_inst_update);
    8283  INSTANCE1_SC_SIGNAL(_Meta_Predictor, in_UPDATE_HISTORY       ,_param->_nb_inst_update);
     84  INSTANCE1_SC_SIGNAL(_Meta_Predictor, in_UPDATE_HISTORY_VAL   ,_param->_nb_inst_update);
    8385  INSTANCE1_SC_SIGNAL(_Meta_Predictor, in_UPDATE_DIRECTION     ,_param->_nb_inst_update);
    8486
     
    137139  DELETE1_SC_SIGNAL( in_UPDATE_ADDRESS       ,_param->_nb_inst_update);
    138140  DELETE1_SC_SIGNAL( in_UPDATE_HISTORY       ,_param->_nb_inst_update);
     141  DELETE1_SC_SIGNAL( in_UPDATE_HISTORY_VAL   ,_param->_nb_inst_update);
    139142  DELETE1_SC_SIGNAL( in_UPDATE_DIRECTION     ,_param->_nb_inst_update);
    140143    }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/src/test.cpp

    r111 r112  
    6363  ALLOC1_SC_SIGNAL( in_UPDATE_ADDRESS       ," in_UPDATE_ADDRESS       ",Taddress_t,_param->_nb_inst_update);
    6464  ALLOC1_SC_SIGNAL( in_UPDATE_HISTORY       ," in_UPDATE_HISTORY       ",Thistory_t,_param->_nb_inst_update);
     65  ALLOC1_SC_SIGNAL( in_UPDATE_HISTORY_VAL   ," in_UPDATE_HISTORY_VAL   ",Tcontrol_t,_param->_nb_inst_update);
    6566  ALLOC1_SC_SIGNAL( in_UPDATE_DIRECTION     ," in_UPDATE_DIRECTION     ",Tcontrol_t,_param->_nb_inst_update);
    6667  ALLOC1_SC_SIGNAL( in_UPDATE_MISS          ," in_UPDATE_MISS          ",Tcontrol_t,_param->_nb_inst_update);
     
    9091  INSTANCE1_SC_SIGNAL(_Two_Level_Branch_Predictor, in_UPDATE_ADDRESS       ,_param->_nb_inst_update);
    9192  INSTANCE1_SC_SIGNAL(_Two_Level_Branch_Predictor, in_UPDATE_HISTORY       ,_param->_nb_inst_update);
     93  INSTANCE1_SC_SIGNAL(_Two_Level_Branch_Predictor, in_UPDATE_HISTORY_VAL   ,_param->_nb_inst_update);
    9294  INSTANCE1_SC_SIGNAL(_Two_Level_Branch_Predictor, in_UPDATE_DIRECTION     ,_param->_nb_inst_update);
    9395  if (_param->_update_on_prediction)
     
    155157              {
    156158                bool val = ((rand()%2)<percent_transaction_update);
    157                 in_UPDATE_VAL       [port]->write(val);
    158                 in_UPDATE_DIRECTION [port]->write(0);
     159                in_UPDATE_VAL         [port]->write(val);
     160                in_UPDATE_DIRECTION   [port]->write(0);
    159161               
    160162                if (_param->_update_on_prediction)
    161                   in_UPDATE_MISS      [port]->write(1); // miss
    162                 in_UPDATE_HISTORY   [port]->write(0);
    163                 in_UPDATE_ADDRESS   [port]->write(bht_num_reg);
     163                in_UPDATE_MISS        [port]->write(1); // miss
     164                in_UPDATE_HISTORY     [port]->write(0);
     165                in_UPDATE_HISTORY_VAL [port]->write(0);
     166                in_UPDATE_ADDRESS     [port]->write(bht_num_reg);
    164167               
    165168                SC_START(0);
     
    185188                  {
    186189                    bool val = ((rand()%2)<percent_transaction_update);
    187                     in_UPDATE_VAL       [port]->write(val);
    188                     in_UPDATE_DIRECTION [port]->write(0);
     190                    in_UPDATE_VAL         [port]->write(val);
     191                    in_UPDATE_DIRECTION   [port]->write(0);
    189192                   
    190193                    if (_param->_update_on_prediction)
    191                       in_UPDATE_MISS      [port]->write(1); // miss
    192                     in_UPDATE_HISTORY   [port]->write(i<<_param->_bht_history_rshift);
    193                     in_UPDATE_ADDRESS   [port]->write(pht_num_bank<<_param->_pht_address_bank_rshift);
     194                      in_UPDATE_MISS        [port]->write(1); // miss
     195                    in_UPDATE_HISTORY     [port]->write(i<<_param->_bht_history_rshift);
     196                    in_UPDATE_HISTORY_VAL [port]->write(1);
     197                    in_UPDATE_ADDRESS     [port]->write(pht_num_bank<<_param->_pht_address_bank_rshift);
    194198                   
    195199                    SC_START(0);
     
    241245  DELETE1_SC_SIGNAL( in_UPDATE_ADDRESS       ,_param->_nb_inst_update);
    242246  DELETE1_SC_SIGNAL( in_UPDATE_HISTORY       ,_param->_nb_inst_update);
     247  DELETE1_SC_SIGNAL( in_UPDATE_HISTORY_VAL   ,_param->_nb_inst_update);
    243248  DELETE1_SC_SIGNAL( in_UPDATE_DIRECTION     ,_param->_nb_inst_update);
    244249  DELETE1_SC_SIGNAL( in_UPDATE_MISS          ,_param->_nb_inst_update);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/include/Parameters.h

    r111 r112  
    5959  public : Taddress_t _pht_address_bank_rshift ;
    6060
     61  public : Thistory_t _bht_init_take           ;
     62  public : Thistory_t _bht_init_ntake          ;
     63
     64  public : Thistory_t _pht_init_take           ;
     65  public : Thistory_t _pht_init_ntake          ;
     66
    6167    //-----[ methods ]-----------------------------------------------------------
    6268  public : Parameters  (uint32_t nb_inst_predict       ,
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/include/Two_Level_Branch_Predictor.h

    r111 r112  
    8080  public    : SC_IN (Taddress_t)           **  in_UPDATE_ADDRESS       ;//[nb_inst_update]
    8181  public    : SC_IN (Thistory_t)           **  in_UPDATE_HISTORY       ;//[nb_inst_update]
     82  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_HISTORY_VAL   ;//[nb_inst_update]
    8283  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_DIRECTION     ;//[nb_inst_update]
    8384  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_MISS          ;//[nb_inst_update] // if update_on_prediction
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/src/Parameters.cpp

    r111 r112  
    4444    _bht_nb_shifter          = (have_bht)?(bht_nb_shifter  ):0;
    4545    _have_pht                = have_pht              ;
    46     _pht_size_counter        = (have_pht)?(pht_size_counter      ):0;
    47     _pht_nb_counter          = (have_pht)?(pht_nb_counter        ):0;
     46    _pht_size_counter        = (have_pht)?(pht_size_counter):0;
     47    _pht_nb_counter          = (have_pht)?(pht_nb_counter  ):0;
    4848    _pht_size_address_share  = (have_bht and have_pht)?(pht_size_address_share):0;
    4949    _update_on_prediction    = update_on_prediction  ;
     
    5454    test();                 
    5555
     56    // history to update_prediction_table :
     57    //  MSB : pht_history
     58    //  LSB : bht_history
     59                       
    5660    _size_history            = _bht_size_shifter + _pht_size_counter;
    57                              
    5861    _bht_history_mask        = gen_mask<Thistory_t>(_bht_size_shifter);
    5962    _bht_history_rshift      = 0;
     
    6770    log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * _pht_history_rshift       : %d",_pht_history_rshift);
    6871
     72    _bht_init_take           = (Thistory_t)(-1)&_bht_history_mask;
     73    _bht_init_ntake          = 0;
     74    _pht_init_take           = (1<<(_pht_size_counter-1)); // size = 4 : 1000/2
     75    _pht_init_ntake          = _pht_init_take-1;           // size = 4 : 0111/2
     76
     77    log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * _bht_init_take            : 0x%x",_bht_init_take );
     78    log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * _bht_init_ntake           : 0x%x",_bht_init_ntake);
     79    log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * _pht_init_take            : 0x%x",_pht_init_take );
     80    log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * _pht_init_ntake           : 0x%x",_pht_init_ntake);
     81   
    6982    if (_have_bht)
    7083      {
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_allocation.cpp

    r111 r112  
    5959    // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6060    {
    61       ALLOC1_INTERFACE("predict",IN,WEST,_("Predict direction interface"),_param->_nb_inst_predict);
     61      ALLOC1_INTERFACE_BEGIN("predict",IN,WEST,_("Predict direction interface"),_param->_nb_inst_predict);
    6262
    6363      ALLOC1_VALACK_IN ( in_PREDICT_VAL          ,VAL);
     
    7171      ALLOC1_SIGNAL_IN ( in_PREDICT_DIRECTION    ,"DIRECTION"    ,Tcontrol_t,1                    );
    7272        }
     73
     74      ALLOC1_INTERFACE_END(_param->_nb_inst_predict);
    7375    }
    7476
    7577    // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7678    {
    77       ALLOC1_INTERFACE("update",IN,WEST,_("Update direction interface"),_param->_nb_inst_update);
     79      ALLOC1_INTERFACE_BEGIN("update",IN,WEST,_("Update direction interface"),_param->_nb_inst_update);
    7880
    7981      ALLOC1_VALACK_IN ( in_UPDATE_VAL           ,VAL);
     
    8183      ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS       ,"ADDRESS"      ,Taddress_t,_param->_size_address);
    8284      ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY       ,"HISTORY"      ,Thistory_t,_param->_size_history);
     85      ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY_VAL   ,"HISTORY_VAL"  ,Tcontrol_t,1                    );
    8386      ALLOC1_SIGNAL_IN ( in_UPDATE_DIRECTION     ,"DIRECTION"    ,Tcontrol_t,1                    );
    8487      if (_param->_update_on_prediction)
    8588      ALLOC1_SIGNAL_IN ( in_UPDATE_MISS          ,"MISS"         ,Tcontrol_t,1                    );
     89
     90      ALLOC1_INTERFACE_END(_param->_nb_inst_update);
    8691    }
     92
     93    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8794
    8895    if (usage_is_set(_usage,USE_SYSTEMC))
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_deallocation.cpp

    r111 r112  
    4646        DELETE1_SIGNAL( in_UPDATE_ADDRESS       ,_param->_nb_inst_update,_param->_size_address);
    4747        DELETE1_SIGNAL( in_UPDATE_HISTORY       ,_param->_nb_inst_update,_param->_size_history);
     48        DELETE1_SIGNAL( in_UPDATE_HISTORY_VAL   ,_param->_nb_inst_update,1                    );
    4849        DELETE1_SIGNAL( in_UPDATE_DIRECTION     ,_param->_nb_inst_update,1                    );
    4950        if (_param->_update_on_prediction)                             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_transition.cpp

    r111 r112  
    9090            {
    9191              log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * UPDATE [%d]",i);
     92              log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * miss             : %d",PORT_READ(in_UPDATE_MISS [i]));
     93              log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * update_on_predict: %d",_param->_update_on_prediction);
    9294             
    9395              // Update if
    9496              //  * update_on_prediction and miss
    9597              //  * not update_on_prediction
    96               if (not _param->_update_on_prediction or (_param->_update_on_prediction and PORT_READ(in_UPDATE_MISS [i])))
    97                 {
    98                   Taddress_t address     = PORT_READ(in_UPDATE_ADDRESS   [i]);
    99                   Thistory_t history     = PORT_READ(in_UPDATE_HISTORY   [i]);
    100                   Tcontrol_t direction   = PORT_READ(in_UPDATE_DIRECTION [i])&1;
     98              Tcontrol_t history_val = PORT_READ(in_UPDATE_HISTORY_VAL [i]);
     99
     100              if (not _param->_update_on_prediction or
     101                  (_param->_update_on_prediction and PORT_READ(in_UPDATE_MISS [i])) or
     102                  not history_val // static_prediction
     103                  )
     104                {
     105                  Taddress_t address     = PORT_READ(in_UPDATE_ADDRESS     [i]);
     106                  Thistory_t history     = PORT_READ(in_UPDATE_HISTORY     [i]);
     107                  Tcontrol_t direction   = PORT_READ(in_UPDATE_DIRECTION   [i])&1;
    101108
    102109                  log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * address          : %.8x",address);
    103110                  log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * direction        : %d",direction);
     111                  log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * history_val      : %d",direction);
    104112
    105113                  Thistory_t pht_bht_history = 0;
     
    107115                  if (_param->_have_bht)
    108116                    {
     117                      log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * bht");
     118
    109119                      Thistory_t bht_history = (history>>_param->_bht_history_rshift)&_param->_bht_history_mask;
    110120                      Thistory_t bht_num_reg = address & _param->_bht_address_mask;
    111121                     
     122                      log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"    * bht_history (old): %x",bht_history);
     123                      log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"    * bht_num_reg      : %x",bht_num_reg);
     124                     
     125                      // BHT : shift register
     126                      if (not history_val)
     127                        bht_history = (direction)?_param->_bht_init_take:_param->_bht_init_ntake;
     128                      else
     129                        bht_history = ((bht_history<<1) | direction)&_param->_bht_history_mask ;
     130                       
    112131                      pht_bht_history = bht_history;
    113                      
    114                       log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * bht_history (old): %x",bht_history);
    115                       log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * bht_num_reg      : %x",bht_num_reg);
    116                      
    117                       // BHT : shift register
    118                      
    119                       bht_history = ((bht_history<<1) | direction)&_param->_bht_history_mask ;
    120                       log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * bht_history (new): %x",bht_history);
     132                      log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"    * bht_history (new): %x",bht_history);
    121133                      reg_BHT [bht_num_reg]               = bht_history;
    122134                    }
     
    124136                  if (_param->_have_pht)
    125137                    {
     138                      log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * pht");
     139
    126140                      Thistory_t pht_history = (history>>_param->_pht_history_rshift)&_param->_pht_history_mask;
    127141                      Thistory_t pht_num_reg = pht_bht_history xor ((address&_param->_pht_address_share_mask)<<_param->_pht_address_share_lshift);
    128142                      Thistory_t pht_num_bank= (address>>_param->_pht_address_bank_rshift)&_param->_pht_address_bank_mask;
    129143                     
    130                       log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * bht_history (old): %x",pht_bht_history);
    131                       log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * pht_history (old): %x",pht_history);
    132                       log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * pht_num_reg      : %x",pht_num_reg);
    133                       log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * pht_num_bank     : %x",pht_num_bank);
     144                      log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"    * bht_history (old): %x",pht_bht_history);
     145                      log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"    * pht_history (old): %x",pht_history);
     146                      log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"    * pht_num_reg      : %x",pht_num_reg);
     147                      log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"    * pht_num_bank     : %x",pht_num_bank);
    134148                     
    135149                      // PHT : saturation counter
    136                       pht_history = (direction==1)?((pht_history<_param->_pht_counter_max)?(pht_history+1):(pht_history)):((pht_history>0)?(pht_history-1):(pht_history));
    137                      
    138                       log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * pht_history (new): %x",pht_history);
     150                      if (not history_val)
     151                        pht_history = (direction)?_param->_pht_init_take:_param->_pht_init_ntake;
     152                      else
     153                        pht_history = (direction==1)?((pht_history<_param->_pht_counter_max)?(pht_history+1):(pht_history)):((pht_history>0)?(pht_history-1):(pht_history));
     154                     
     155                      log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"    * pht_history (new): %x",pht_history);
    139156                     
    140157                      reg_PHT [pht_num_bank][pht_num_reg] = pht_history;
     
    145162
    146163#if defined(DEBUG) and DEBUG_Two_Level_Branch_Predictor and (DEBUG >= DEBUG_TRACE)
    147     if (0)
     164    if (1)
    148165    {
    149166      log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  * Dump Two_Level_Branch_Predictor");
     
    180197          for (uint32_t num_bank=0; num_bank <_param->_pht_nb_bank; ++num_bank)
    181198            {
    182               log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  [%.4d]",num_bank);
    183 
    184               for (uint32_t i=0; i<_param->_pht_size_bank; i+=limit)
    185                 {
    186                   std::string str = "";
     199              if (_param->_pht_size_bank == 1)
     200                {
     201                  log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  [%.4d][0000] %4x",num_bank,reg_PHT[num_bank][0]);
     202                }
     203              else
     204                {
     205                  log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"  [%.4d]",num_bank);
    187206                 
    188                   for (uint32_t j=0; j<limit; j++)
     207                  for (uint32_t i=0; i<_param->_pht_size_bank; i+=limit)
    189208                    {
    190                       uint32_t index = i+j;
    191                       if (index >= _param->_pht_nb_counter)
    192                         break;
    193                       else
    194                         str+=toString("[%.4d] %.4x ",index,reg_PHT[num_bank][index]);
     209                      std::string str = "";
     210                     
     211                      for (uint32_t j=0; j<limit; j++)
     212                        {
     213                          uint32_t index = i+j;
     214                          if (index >= _param->_pht_size_bank)
     215                            break;
     216                          else
     217                            str+=toString("[%.4d] %.4x ",index,reg_PHT[num_bank][index]);
     218                        }
     219                     
     220                      log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"    %s",str.c_str());
    195221                    }
    196                  
    197                   log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION,"    %s",str.c_str());
    198222                }
    199223            }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/include/Meta_Predictor.h

    r111 r112  
    8080  public    : SC_IN (Taddress_t)           **  in_UPDATE_ADDRESS       ;//[nb_inst_update]
    8181  public    : SC_IN (Thistory_t)           **  in_UPDATE_HISTORY       ;//[nb_inst_update]
     82  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_HISTORY_VAL   ;//[nb_inst_update]
    8283  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_DIRECTION     ;//[nb_inst_update]
    8384
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/src/Meta_Predictor_allocation.cpp

    r111 r112  
    5858    // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC1_INTERFACE("predict",IN,WEST,_("Predict direction interface"),_param->_nb_inst_predict);
     60      ALLOC1_INTERFACE_BEGIN("predict",IN,WEST,_("Predict direction interface"),_param->_nb_inst_predict);
    6161
    6262      ALLOC1_VALACK_IN ( in_PREDICT_VAL          ,VAL);
     
    6565      ALLOC1_SIGNAL_OUT(out_PREDICT_DIRECTION    ,"DIRECTION"    ,Tcontrol_t,1                    );
    6666      ALLOC1_SIGNAL_OUT(out_PREDICT_HISTORY      ,"HISTORY"      ,Thistory_t,_param->_size_history);
     67
     68      ALLOC1_INTERFACE_END(_param->_nb_inst_predict);
    6769    }
    6870
    6971    // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7072    {
    71       ALLOC1_INTERFACE("update",IN,WEST,_("Update direction interface"),_param->_nb_inst_update);
     73      ALLOC1_INTERFACE_BEGIN("update",IN,WEST,_("Update direction interface"),_param->_nb_inst_update);
    7274
    7375      ALLOC1_VALACK_IN ( in_UPDATE_VAL           ,VAL);
     
    7577      ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS       ,"ADDRESS"      ,Taddress_t,_param->_size_address);
    7678      ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY       ,"HISTORY"      ,Thistory_t,_param->_size_history);
     79      ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY_VAL   ,"HISTORY_VAL"  ,Tcontrol_t,1                    );
    7780      ALLOC1_SIGNAL_IN ( in_UPDATE_DIRECTION     ,"DIRECTION"    ,Tcontrol_t,1                    );
     81
     82      ALLOC1_INTERFACE_END(_param->_nb_inst_update);
    7883    }
    7984   
     
    218223          COMPONENT_MAP(_component,src , "in_UPDATE_"                          +toString(j)+"_HISTORY"      ,
    219224                                   dest,"out_UPDATE_PREDICTOR_"+toString(i)+"_"+toString(j)+"_HISTORY"      );
     225          COMPONENT_MAP(_component,src , "in_UPDATE_"                          +toString(j)+"_HISTORY_VAL"  ,
     226                                   dest,"out_UPDATE_PREDICTOR_"+toString(i)+"_"+toString(j)+"_HISTORY_VAL"  );
    220227          if (_param->_predictor_update_on_prediction [i])
    221228          COMPONENT_MAP(_component,src , "in_UPDATE_"                          +toString(j)+"_MISS"         ,
     
    286293#endif
    287294
    288           PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_VAL"      ,
    289                               dest, "in_UPDATE_"+toString(i)+"_VAL"      );
    290           PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_ACK"      ,
    291                               dest,"out_UPDATE_"+toString(i)+"_ACK"      );
    292           PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_HISTORY"  ,
    293                               dest, "in_UPDATE_"+toString(i)+"_HISTORY"  );
    294           PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_DIRECTION",
    295                               dest, "in_UPDATE_"+toString(i)+"_DIRECTION");
    296         }
    297      
    298       //  out_UPDATE_PREDICTOR_VAL       -> two_level_branch_predictor. in_UPDATE_PREDICTOR_VAL     
    299       //   in_UPDATE_PREDICTOR_ACK       -> two_level_branch_predictor.out_UPDATE_PREDICTOR_ACK     
    300       //  out_UPDATE_PREDICTOR_HISTORY   -> two_level_branch_predictor. in_UPDATE_PREDICTOR_HISTORY 
    301       //  out_UPDATE_PREDICTOR_DIRECTION -> two_level_branch_predictor. in_UPDATE_PREDICTOR_DIRECTION
    302       //  out_UPDATE_PREDICTOR_MISS      -> two_level_branch_predictor. in_UPDATE_PREDICTOR_MISS     
     295          PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_VAL"        ,
     296                              dest, "in_UPDATE_"+toString(i)+"_VAL"        );
     297          PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_ACK"        ,
     298                              dest,"out_UPDATE_"+toString(i)+"_ACK"        );
     299          PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_HISTORY"    ,
     300                              dest, "in_UPDATE_"+toString(i)+"_HISTORY"    );
     301          PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_HISTORY_VAL",
     302                              dest, "in_UPDATE_"+toString(i)+"_HISTORY_VAL");
     303          PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_DIRECTION"  ,
     304                              dest, "in_UPDATE_"+toString(i)+"_DIRECTION"  );
     305        }
     306     
     307      //  out_UPDATE_PREDICTOR_VAL        -> two_level_branch_predictor. in_UPDATE_PREDICTOR_VAL     
     308      //   in_UPDATE_PREDICTOR_ACK        -> two_level_branch_predictor.out_UPDATE_PREDICTOR_ACK     
     309      //  out_UPDATE_PREDICTOR_HISTORY    -> two_level_branch_predictor. in_UPDATE_PREDICTOR_HISTORY 
     310      //  out_UPDATE_PREDICTOR_HISTORY_VAL-> two_level_branch_predictor. in_UPDATE_PREDICTOR_HISTORY 
     311      //  out_UPDATE_PREDICTOR_DIRECTION  -> two_level_branch_predictor. in_UPDATE_PREDICTOR_DIRECTION
     312      //  out_UPDATE_PREDICTOR_MISS       -> two_level_branch_predictor. in_UPDATE_PREDICTOR_MISS     
    303313
    304314    }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/src/Meta_Predictor_deallocation.cpp

    r111 r112  
    4040        DELETE1_SIGNAL( in_UPDATE_ADDRESS       ,_param->_nb_inst_update,_param->_size_address);
    4141        DELETE1_SIGNAL( in_UPDATE_HISTORY       ,_param->_nb_inst_update,_param->_size_history);
     42        DELETE1_SIGNAL( in_UPDATE_HISTORY_VAL   ,_param->_nb_inst_update,1                    );
    4243        DELETE1_SIGNAL( in_UPDATE_DIRECTION     ,_param->_nb_inst_update,1                    );
    4344      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/src/Parameters.cpp

    r111 r112  
    6464    if (_have_meta_predictor)
    6565      _predictor_update_on_prediction [_nb_predictor-1] = false;
     66
     67//     // All predictor can't update on prediction ....
     68//     for (uint32_t i=0; i<_nb_predictor; ++i)
     69//       _predictor_update_on_prediction [i] = false;
    6670
    6771    _param_two_level_branch_predictor = new morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::direction::meta_predictor::two_level_branch_predictor::Parameters * [_nb_predictor];
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/include/Direction.h

    r111 r112  
    6363
    6464    // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    65   public    : SC_IN (Tcontrol_t)           **  in_PREDICT_VAL        ;
    66   public    : SC_OUT(Tcontrol_t)           ** out_PREDICT_ACK        ;
    67   public    : SC_IN (Taddress_t)           **  in_PREDICT_ADDRESS_SRC;
    68   public    : SC_IN (Tcontrol_t)           **  in_PREDICT_STATIC     ;
    69   public    : SC_IN (Tcontrol_t)           **  in_PREDICT_LAST_TAKE  ;
    70   public    : SC_OUT(Thistory_t)           ** out_PREDICT_HISTORY    ;
    71   public    : SC_OUT(Tcontrol_t)           ** out_PREDICT_DIRECTION  ;
     65  public    : SC_IN (Tcontrol_t)           **  in_PREDICT_VAL             ;
     66  public    : SC_OUT(Tcontrol_t)           ** out_PREDICT_ACK             ;
     67  public    : SC_IN (Taddress_t)           **  in_PREDICT_ADDRESS_SRC     ;
     68  public    : SC_IN (Tcontrol_t)           **  in_PREDICT_STATIC          ;
     69  public    : SC_IN (Tcontrol_t)           **  in_PREDICT_LAST_TAKE       ;
     70  public    : SC_OUT(Thistory_t)           ** out_PREDICT_HISTORY         ;
     71  public    : SC_OUT(Tcontrol_t)           ** out_PREDICT_DIRECTION       ;
    7272
    7373    // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    74   public    : SC_IN (Tcontrol_t)           **  in_UPDATE_VAL        ;
    75   public    : SC_OUT(Tcontrol_t)           ** out_UPDATE_ACK        ;
    76   public    : SC_IN (Taddress_t)           **  in_UPDATE_ADDRESS    ;
    77   public    : SC_IN (Thistory_t)           **  in_UPDATE_HISTORY    ;
    78   public    : SC_IN (Tcontrol_t)           **  in_UPDATE_DIRECTION  ;
     74  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_VAL              ;
     75  public    : SC_OUT(Tcontrol_t)           ** out_UPDATE_ACK              ;
     76  public    : SC_IN (Taddress_t)           **  in_UPDATE_ADDRESS          ;
     77  public    : SC_IN (Thistory_t)           **  in_UPDATE_HISTORY          ;
     78  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_DIRECTION        ;
     79  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_PREDICTION_IFETCH;
    7980
    8081    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/src/Direction_allocation.cpp

    r111 r112  
    4949                                                         ,IN
    5050                                                         ,SOUTH,
    51                                                          "Generalist interface"
     51                                                         _("Generalist interface")
    5252#endif
    5353                                                         );
     
    5959    // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6060    {
    61       ALLOC1_INTERFACE("predict", IN, SOUTH, "Interface predict",_param->_nb_inst_predict);
     61      ALLOC1_INTERFACE_BEGIN("predict", IN, SOUTH, _("Interface predict"),_param->_nb_inst_predict);
    6262
    6363      ALLOC1_VALACK_IN ( in_PREDICT_VAL        ,VAL);
     
    6868      ALLOC1_SIGNAL_OUT(out_PREDICT_HISTORY    ,"history"    ,Thistory_t,_param->_size_history);
    6969      ALLOC1_SIGNAL_OUT(out_PREDICT_DIRECTION  ,"direction"  ,Tcontrol_t,1);
     70
     71      ALLOC1_INTERFACE_END(_param->_nb_inst_predict);
    7072    }
    7173
    7274    // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7375    {
    74       ALLOC1_INTERFACE("update", IN, SOUTH, "Interface update",_param->_nb_inst_update);
    75 
    76       ALLOC1_VALACK_IN ( in_UPDATE_VAL      ,VAL);
    77       ALLOC1_VALACK_OUT(out_UPDATE_ACK      ,ACK);
    78       ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS  ,"address"  ,Taddress_t,_param->_size_instruction_address);
    79       ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY  ,"history"  ,Thistory_t,_param->_size_history);
    80       ALLOC1_SIGNAL_IN ( in_UPDATE_DIRECTION,"direction",Tcontrol_t,1);
     76      ALLOC1_INTERFACE_BEGIN("update", IN, SOUTH, _("Interface update"),_param->_nb_inst_update);
     77
     78      ALLOC1_VALACK_IN ( in_UPDATE_VAL              ,VAL);
     79      ALLOC1_VALACK_OUT(out_UPDATE_ACK              ,ACK);
     80      ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS          ,"address"          ,Taddress_t,_param->_size_instruction_address);
     81      ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY          ,"history"          ,Thistory_t,_param->_size_history);
     82      ALLOC1_SIGNAL_IN ( in_UPDATE_DIRECTION        ,"direction"        ,Tcontrol_t,1);
     83      ALLOC1_SIGNAL_IN ( in_UPDATE_PREDICTION_IFETCH,"prediction_ifetch",Tcontrol_t,1);
     84
     85      ALLOC1_INTERFACE_END(_param->_nb_inst_update);
    8186    }
    8287
     
    183188          COMPONENT_MAP(_component,src , "in_UPDATE_"+toString(i)+          "_HISTORY"    ,
    184189                                   dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_HISTORY"    );
     190          COMPONENT_MAP(_component,src , "in_UPDATE_"+toString(i)+          "_HISTORY_VAL"      ,
     191                                   dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_PREDICTION_IFETCH");
    185192        }
    186193    }
     
    212219#endif
    213220         
    214           PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_VAL"        ,
    215                               dest, "in_PREDICT_"+toString(i)+"_VAL"        );
    216           PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_ACK"        ,
    217                               dest,"out_PREDICT_"+toString(i)+"_ACK"        );
    218           PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_ADDRESS_SRC",
    219                               dest, "in_PREDICT_"+toString(i)+"_ADDRESS_SRC");
    220           PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_STATIC"     ,
    221                               dest, "in_PREDICT_"+toString(i)+"_STATIC"     );
    222           PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_LAST_TAKE"  ,
    223                               dest, "in_PREDICT_"+toString(i)+"_LAST_TAKE"  );
    224           if (_param->_have_port_history)
    225           PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_HISTORY"    ,
    226                               dest,"out_PREDICT_"+toString(i)+"_HISTORY"    );
    227           PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_DIRECTION"  ,
    228                               dest,"out_PREDICT_"+toString(i)+"_DIRECTION"  );
    229 
    230 //        PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_PREDICTOR_VAL"        ,dest,"out_PREDICT_"+toString(i)+"_PREDICTOR_VAL"        );
    231 //        PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_PREDICTOR_ACK"        ,dest, "in_PREDICT_"+toString(i)+"_PREDICTOR_ACK"        );
    232 //        PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_PREDICTOR_ADDRESS_SRC",dest,"out_PREDICT_"+toString(i)+"_PREDICTOR_ADDRESS_SRC");
    233 //        PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_PREDICTOR_HISTORY"    ,dest, "in_PREDICT_"+toString(i)+"_PREDICTOR_HISTORY"    );
    234 //        PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_PREDICTOR_DIRECTION"  ,dest, "in_PREDICT_"+toString(i)+"_PREDICTOR_DIRECTION"  );
     221          PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_VAL"              ,
     222                              dest, "in_PREDICT_"+toString(i)+"_VAL"              );
     223          PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_ACK"              ,
     224                              dest,"out_PREDICT_"+toString(i)+"_ACK"              );
     225          PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_ADDRESS_SRC"      ,
     226                              dest, "in_PREDICT_"+toString(i)+"_ADDRESS_SRC"      );
     227          PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_STATIC"           ,
     228                              dest, "in_PREDICT_"+toString(i)+"_STATIC"           );
     229          PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_LAST_TAKE"        ,
     230                              dest, "in_PREDICT_"+toString(i)+"_LAST_TAKE"        );
     231          if (_param->_have_port_history)                                         
     232          PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_HISTORY"          ,
     233                              dest,"out_PREDICT_"+toString(i)+"_HISTORY"          );
     234          PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_DIRECTION"        ,
     235                              dest,"out_PREDICT_"+toString(i)+"_DIRECTION"        );
     236
     237//        PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_PREDICTOR_VAL"              ,dest,"out_PREDICT_"+toString(i)+"_PREDICTOR_VAL"              );
     238//        PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_PREDICTOR_ACK"              ,dest, "in_PREDICT_"+toString(i)+"_PREDICTOR_ACK"              );
     239//        PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_PREDICTOR_ADDRESS_SRC"      ,dest,"out_PREDICT_"+toString(i)+"_PREDICTOR_ADDRESS_SRC"      );
     240//        PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_PREDICTOR_HISTORY"          ,dest, "in_PREDICT_"+toString(i)+"_PREDICTOR_HISTORY"          );
     241//        PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_PREDICTOR_DIRECTION"        ,dest, "in_PREDICT_"+toString(i)+"_PREDICTOR_DIRECTION"        );
    235242        }
    236243     
     
    243250#endif
    244251
    245           PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_VAL"      ,
    246                               dest, "in_UPDATE_"+toString(i)+"_VAL"      );
    247           PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_ACK"      ,
    248                               dest,"out_UPDATE_"+toString(i)+"_ACK"      );
    249           PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_ADDRESS"  ,
    250                               dest, "in_UPDATE_"+toString(i)+"_ADDRESS"  );
     252          PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_VAL"              ,
     253                              dest, "in_UPDATE_"+toString(i)+"_VAL"              );
     254          PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_ACK"              ,
     255                              dest,"out_UPDATE_"+toString(i)+"_ACK"              );
     256          PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_ADDRESS"          ,
     257                              dest, "in_UPDATE_"+toString(i)+"_ADDRESS"          );
    251258          if (_param->_have_port_history)
    252           PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_HISTORY"  ,
    253                               dest, "in_UPDATE_"+toString(i)+"_HISTORY"  );
    254           PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_DIRECTION",
    255                               dest, "in_UPDATE_"+toString(i)+"_DIRECTION");
    256 //        PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_PREDICTOR_VAL"      ,dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_VAL"      );
    257 //        PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_PREDICTOR_ACK"      ,dest, "in_UPDATE_"+toString(i)+"_PREDICTOR_ACK"      );
    258 //        PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_PREDICTOR_ADDRESS"  ,dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_ADDRESS"  );
    259 //        PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_PREDICTOR_HISTORY"  ,dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_HISTORY"  );
    260 //        PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_PREDICTOR_DIRECTION",dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_DIRECTION");
     259          PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_HISTORY"          ,
     260                              dest, "in_UPDATE_"+toString(i)+"_HISTORY"          );
     261          PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_DIRECTION"        ,
     262                              dest, "in_UPDATE_"+toString(i)+"_DIRECTION"        );
     263          PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_PREDICTION_IFETCH",
     264                              dest, "in_UPDATE_"+toString(i)+"_PREDICTION_IFETCH");
     265
     266//        PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_PREDICTOR_VAL"              ,dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_VAL"              );
     267//        PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_PREDICTOR_ACK"              ,dest, "in_UPDATE_"+toString(i)+"_PREDICTOR_ACK"              );
     268//        PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_PREDICTOR_ADDRESS"          ,dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_ADDRESS"          );
     269//        PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_PREDICTOR_HISTORY"          ,dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_HISTORY"          );
     270//        PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_PREDICTOR_DIRECTION"        ,dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_DIRECTION"        );
     271//        PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_PREDICTOR_PREDICTION_IFETCH",dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_PREDICTION_IFETCH");
     272
    261273      }
    262274    }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/src/Direction_deallocation.cpp

    r111 r112  
    77
    88#include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/include/Direction.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2829        delete    in_NRESET;
    2930
    30         delete []  in_PREDICT_VAL             ;
    31         delete [] out_PREDICT_ACK             ;
    32         delete []  in_PREDICT_ADDRESS_SRC     ;
    33         delete []  in_PREDICT_STATIC          ;
    34         delete []  in_PREDICT_LAST_TAKE       ;
    35         if (_param->_have_port_history)
    36         delete [] out_PREDICT_HISTORY         ;
    37         delete [] out_PREDICT_DIRECTION       ;
    38         delete []  in_UPDATE_VAL              ;
    39         delete [] out_UPDATE_ACK              ;
    40         delete []  in_UPDATE_ADDRESS          ;
    41         if (_param->_have_port_history)
    42         delete []  in_UPDATE_HISTORY          ;
    43         delete []  in_UPDATE_DIRECTION        ;
     31        DELETE1_SIGNAL( in_PREDICT_VAL        ,_param->_nb_inst_predict,1);
     32        DELETE1_SIGNAL(out_PREDICT_ACK        ,_param->_nb_inst_predict,1);
     33        DELETE1_SIGNAL( in_PREDICT_ADDRESS_SRC,_param->_nb_inst_predict,_param->_size_instruction_address);
     34        DELETE1_SIGNAL( in_PREDICT_STATIC     ,_param->_nb_inst_predict,1);
     35        DELETE1_SIGNAL( in_PREDICT_LAST_TAKE  ,_param->_nb_inst_predict,1);
     36        DELETE1_SIGNAL(out_PREDICT_HISTORY    ,_param->_nb_inst_predict,_param->_size_history);
     37        DELETE1_SIGNAL(out_PREDICT_DIRECTION  ,_param->_nb_inst_predict,1);
     38
     39        DELETE1_SIGNAL( in_UPDATE_VAL              ,_param->_nb_inst_update,1);
     40        DELETE1_SIGNAL(out_UPDATE_ACK              ,_param->_nb_inst_update,1);
     41        DELETE1_SIGNAL( in_UPDATE_ADDRESS          ,_param->_nb_inst_update,_param->_size_instruction_address);
     42        DELETE1_SIGNAL( in_UPDATE_HISTORY          ,_param->_nb_inst_update,_param->_size_history);
     43        DELETE1_SIGNAL( in_UPDATE_DIRECTION        ,_param->_nb_inst_update,1);
     44        DELETE1_SIGNAL( in_UPDATE_PREDICTION_IFETCH,_param->_nb_inst_update,1);
    4445      }
    4546    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Prediction_unit_Glue/SelfTest/src/test.cpp

    r110 r112  
    208208    {
    209209      if (_param->_have_port_inst_ifetch_ptr)
    210         INSTANCE_SC_SIGNAL(_Prediction_unit_Glue,out_PREDICT_INST_IFETCH_PTR [i]);
     210        INSTANCE0_SC_SIGNAL(_Prediction_unit_Glue,out_PREDICT_INST_IFETCH_PTR [i]);
    211211      if (_param->_have_port_depth)
    212         INSTANCE_SC_SIGNAL(_Prediction_unit_Glue,out_PREDICT_BRANCH_UPDATE_PREDICTION_ID [i]);
     212        INSTANCE0_SC_SIGNAL(_Prediction_unit_Glue,out_PREDICT_BRANCH_UPDATE_PREDICTION_ID [i]);
    213213    }
    214214
     
    350350//       if (_param->_have_port_depth)
    351351//      {
    352 //        INSTANCE_SC_SIGNAL(_Prediction_unit_Glue, in_DEPTH_UPT_TAIL      [i]);
    353 //        INSTANCE_SC_SIGNAL(_Prediction_unit_Glue,out_DEPTH_TAIL          [i]);
     352//        INSTANCE0_SC_SIGNAL(_Prediction_unit_Glue, in_DEPTH_UPT_TAIL      [i]);
     353//        INSTANCE0_SC_SIGNAL(_Prediction_unit_Glue,out_DEPTH_TAIL          [i]);
    354354//      }
    355 //        INSTANCE_SC_SIGNAL(_Prediction_unit_Glue, in_DEPTH_UPT_NB_BRANCH [i]);
    356 //        INSTANCE_SC_SIGNAL(_Prediction_unit_Glue,out_DEPTH_NB_BRANCH     [i]);
     355//        INSTANCE0_SC_SIGNAL(_Prediction_unit_Glue, in_DEPTH_UPT_NB_BRANCH [i]);
     356//        INSTANCE0_SC_SIGNAL(_Prediction_unit_Glue,out_DEPTH_NB_BRANCH     [i]);
    357357//     }
    358358
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Prediction_unit_Glue/src/Prediction_unit_Glue_allocation.cpp

    r110 r112  
    4747                                                         ,IN
    4848                                                         ,SOUTH,
    49                                                          "Generalist interface"
     49                                                         _("Generalist interface")
    5050#endif
    5151                                                         );
     
    5858    {
    5959      {
    60         ALLOC1_INTERFACE("predict",IN,SOUTH,"Interface with ifetch unit",_param->_nb_context);
     60        ALLOC1_INTERFACE_BEGIN("predict",IN,SOUTH,_("Interface with ifetch unit"),_param->_nb_context);
    6161       
    6262        ALLOC1_VALACK_IN ( in_PREDICT_VAL                        ,VAL);
     
    7070        ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t    ,_param->_size_branch_state);
    7171        ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t  ,_param->_size_depth);
    72       }
    73       {
    74         ALLOC2_INTERFACE("predict",IN,SOUTH,"Interface with ifetch unit",_param->_nb_context,_param->_nb_instruction[it1]);
     72
     73        ALLOC1_INTERFACE_END(_param->_nb_context);
     74      }
     75      {
     76        ALLOC2_INTERFACE_BEGIN("predict",IN,SOUTH,_("Interface with ifetch unit"),_param->_nb_context,_param->_nb_instruction[it1]);
     77
    7578        _ALLOC2_SIGNAL_OUT(out_PREDICT_INSTRUCTION_ENABLE         ,"instruction_enable"         ,Tcontrol_t         ,1,_param->_nb_context,_param->_nb_instruction[it1]);
    76       }
    77      
    78       {
    79         ALLOC1_INTERFACE("predict_btb",OUT,NORTH,"Interface with ifetch unit",_param->_nb_inst_branch_predict);
     79
     80        ALLOC2_INTERFACE_END(_param->_nb_context,_param->_nb_instruction[it1]);
     81      }
     82     
     83      {
     84        ALLOC1_INTERFACE_BEGIN("predict_btb",OUT,NORTH,_("Interface with ifetch unit"),_param->_nb_inst_branch_predict);
    8085       
    8186        ALLOC1_VALACK_OUT(out_PREDICT_BTB_VAL         ,VAL);
     
    8994//      ALLOC1_SIGNAL_IN ( in_PREDICT_BTB_LAST_TAKE   ,"last_take"   ,Tcontrol_t         ,1);
    9095        ALLOC1_SIGNAL_IN ( in_PREDICT_BTB_IS_ACCURATE ,"is_accurate" ,Tcontrol_t         ,1);
    91       }
    92      
    93       {
    94         ALLOC1_INTERFACE("predict_dir",OUT,NORTH,"Interface with ifetch unit",_param->_nb_inst_branch_predict);
     96
     97        ALLOC1_INTERFACE_END(_param->_nb_inst_branch_predict);
     98      }
     99     
     100      {
     101        ALLOC1_INTERFACE_BEGIN("predict_dir",OUT,NORTH,_("Interface with ifetch unit"),_param->_nb_inst_branch_predict);
    95102       
    96103        ALLOC1_VALACK_OUT(out_PREDICT_DIR_VAL        ,VAL);
     
    101108//      ALLOC1_SIGNAL_IN ( in_PREDICT_DIR_HISTORY    ,"history"    ,Thistory_t         ,_param->_size_history);
    102109        ALLOC1_SIGNAL_IN ( in_PREDICT_DIR_DIRECTION  ,"direction"  ,Tcontrol_t         ,1);
    103       }
    104      
    105       {
    106         ALLOC1_INTERFACE("predict_ras",OUT,NORTH,"Interface with ifetch unit",_param->_nb_inst_branch_predict);
     110
     111        ALLOC1_INTERFACE_END(_param->_nb_inst_branch_predict);
     112      }
     113     
     114      {
     115        ALLOC1_INTERFACE_BEGIN("predict_ras",OUT,NORTH,_("Interface with ifetch unit"),_param->_nb_inst_branch_predict);
    107116       
    108117        ALLOC1_VALACK_OUT(out_PREDICT_RAS_VAL         ,VAL);
     
    114123        ALLOC1_SIGNAL_IN ( in_PREDICT_RAS_ADDRESS_POP ,"address_pop" ,Taddress_t         ,_param->_size_instruction_address);
    115124//      ALLOC1_SIGNAL_IN ( in_PREDICT_RAS_INDEX       ,"index"       ,Tptr_t             ,_param->_size_ras_index);
    116       }
    117      
    118       {
    119         ALLOC1_INTERFACE("predict_upt",OUT,NORTH,"Interface with ifetch unit",_param->_nb_inst_branch_predict);
     125
     126        ALLOC1_INTERFACE_END(_param->_nb_inst_branch_predict);
     127      }
     128     
     129      {
     130        ALLOC1_INTERFACE_BEGIN("predict_upt",OUT,NORTH,_("Interface with ifetch unit"),_param->_nb_inst_branch_predict);
    120131       
    121132        ALLOC1_VALACK_OUT(out_PREDICT_UPT_VAL             ,VAL);
     
    131142        ALLOC1_SIGNAL_OUT(out_PREDICT_UPT_RAS_ADDRESS     ,"ras_address"     ,Taddress_t         ,_param->_size_instruction_address);
    132143//      ALLOC1_SIGNAL_OUT(out_PREDICT_UPT_RAS_INDEX       ,"ras_index"       ,Tptr_t             ,_param->_size_ras_index);
     144
     145        ALLOC1_INTERFACE_END(_param->_nb_inst_branch_predict);
    133146      }
    134147    }
     
    137150    {
    138151      {
    139         ALLOC2_INTERFACE("decod",IN,SOUTH,"Interface with decod unit",_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);
     152        ALLOC2_INTERFACE_BEGIN("decod",IN,SOUTH,_("Interface with decod unit"),_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);
    140153       
    141154        _ALLOC2_VALACK_IN ( in_DECOD_VAL                        ,VAL,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);
     
    150163        _ALLOC2_SIGNAL_IN ( in_DECOD_ADDRESS_DEST               ,"address_dest"               ,Taddress_t         ,_param->_size_instruction_address         ,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);
    151164        _ALLOC2_SIGNAL_OUT(out_DECOD_CAN_CONTINUE               ,"can_continue"               ,Tcontrol_t         ,1                                         ,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);
    152       }
    153 
    154       {
    155         ALLOC1_INTERFACE("decod_btb",OUT,NORTH,"Interface with decod unit",_param->_nb_inst_branch_decod);
     165
     166        ALLOC2_INTERFACE_END(_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);
     167      }
     168
     169      {
     170        ALLOC1_INTERFACE_BEGIN("decod_btb",OUT,NORTH,_("Interface with decod unit"),_param->_nb_inst_branch_decod);
    156171
    157172        ALLOC1_VALACK_OUT(out_DECOD_BTB_VAL            ,VAL);
     
    164179        ALLOC1_SIGNAL_OUT(out_DECOD_BTB_MISS_PREDICTION,"miss_prediction",Tcontrol_t         ,1);
    165180        ALLOC1_SIGNAL_OUT(out_DECOD_BTB_IS_ACCURATE    ,"is_accurate"    ,Tcontrol_t         ,1);
    166       }
    167 
    168       {
    169         ALLOC1_INTERFACE("decod_ras",OUT,NORTH,"Interface with decod unit",_param->_nb_inst_branch_decod);
     181
     182        ALLOC1_INTERFACE_END(_param->_nb_inst_branch_decod);
     183      }
     184
     185      {
     186        ALLOC1_INTERFACE_BEGIN("decod_ras",OUT,NORTH,_("Interface with decod unit"),_param->_nb_inst_branch_decod);
    170187                                                                                     
    171188        ALLOC1_VALACK_OUT(out_DECOD_RAS_VAL            ,VAL);
     
    178195//      ALLOC1_SIGNAL_IN ( in_DECOD_RAS_INDEX          ,"index"          ,Tptr_t    ,_param->_size_ras_index);
    179196        ALLOC1_SIGNAL_OUT(out_DECOD_RAS_MISS_PREDICTION,"miss_prediction",Tcontrol_t,1);
    180       }
    181 
    182       {
    183         ALLOC1_INTERFACE("decod_upt",OUT,NORTH,"Interface with decod unit",_param->_nb_inst_branch_decod);
     197
     198        ALLOC1_INTERFACE_END(_param->_nb_inst_branch_decod);
     199      }
     200
     201      {
     202        ALLOC1_INTERFACE_BEGIN("decod_upt",OUT,NORTH,_("Interface with decod unit"),_param->_nb_inst_branch_decod);
    184203                                                                                     
    185204        ALLOC1_VALACK_OUT(out_DECOD_UPT_VAL                 ,VAL);
     
    197216        ALLOC1_SIGNAL_OUT(out_DECOD_UPT_IS_ACCURATE         ,"is_accurate"         ,Tcontrol_t         ,1);
    198217        ALLOC1_SIGNAL_IN ( in_DECOD_UPT_CAN_CONTINUE        ,"can_continue"        ,Tcontrol_t         ,1);
     218
     219        ALLOC1_INTERFACE_END(_param->_nb_inst_branch_decod);
    199220      }
    200221    }
     
    203224    {
    204225      {
    205         ALLOC1_INTERFACE("update_btb",OUT,SOUTH,"Interface with update unit",_param->_nb_inst_branch_update);
     226        ALLOC1_INTERFACE_BEGIN("update_btb",OUT,SOUTH,_("Interface with update unit"),_param->_nb_inst_branch_update);
    206227
    207228        ALLOC1_VALACK_OUT(out_UPDATE_BTB_VAL                  ,VAL);
     
    213234//      ALLOC1_SIGNAL_OUT(out_UPDATE_BTB_LAST_TAKE            ,"last_take"            ,Tcontrol_t         ,1);
    214235//      ALLOC1_SIGNAL_OUT(out_UPDATE_BTB_MISS_PREDICTION      ,"miss_prediction"      ,Tcontrol_t         ,1);
    215       }
    216 
    217       {
    218         ALLOC1_INTERFACE("update_dir",OUT,NORTH,"Interface with update unit",_param->_nb_inst_branch_update);
     236
     237        ALLOC1_INTERFACE_END(_param->_nb_inst_branch_update);
     238      }
     239
     240      {
     241        ALLOC1_INTERFACE_BEGIN("update_dir",OUT,NORTH,_("Interface with update unit"),_param->_nb_inst_branch_update);
    219242
    220243        ALLOC1_VALACK_OUT(out_UPDATE_DIR_VAL                  ,VAL);
     
    223246//      ALLOC1_SIGNAL_OUT(out_UPDATE_DIR_HISTORY              ,"history"              ,Thistory_t         ,_param->_size_history);
    224247//      ALLOC1_SIGNAL_OUT(out_UPDATE_DIR_DIRECTION            ,"direction"            ,Tcontrol_t         ,1);
    225       }
    226 
    227       {
    228         ALLOC1_INTERFACE("update_ras",OUT,NORTH,"Interface with update unit",_param->_nb_inst_branch_update);
     248
     249        ALLOC1_INTERFACE_END(_param->_nb_inst_branch_update);
     250      }
     251
     252      {
     253        ALLOC1_INTERFACE_BEGIN("update_ras",OUT,NORTH,_("Interface with update unit"),_param->_nb_inst_branch_update);
    229254
    230255        ALLOC1_VALACK_OUT(out_UPDATE_RAS_VAL                  ,VAL);
     
    236261//      ALLOC1_SIGNAL_OUT(out_UPDATE_RAS_MISS_PREDICTION      ,"miss_prediction"      ,Tcontrol_t         ,1);
    237262//      ALLOC1_SIGNAL_OUT(out_UPDATE_RAS_PREDICTION_IFETCH    ,"prediction_ifetch"    ,Tcontrol_t         ,1);
    238       }
    239 
    240       {
    241         ALLOC1_INTERFACE("update_upt",IN ,NORTH,"Interface with update unit",_param->_nb_inst_branch_update);
     263
     264        ALLOC1_INTERFACE_END(_param->_nb_inst_branch_update);
     265      }
     266
     267      {
     268        ALLOC1_INTERFACE_BEGIN("update_upt",IN ,NORTH,_("Interface with update unit"),_param->_nb_inst_branch_update);
    242269
    243270        ALLOC1_VALACK_IN ( in_UPDATE_UPT_VAL                  ,VAL);
     
    257284//      ALLOC1_SIGNAL_IN ( in_UPDATE_UPT_RAS_INDEX            ,"ras_index"            ,Tptr_t             ,_param->_size_ras_index);
    258285//      ALLOC1_SIGNAL_IN ( in_UPDATE_UPT_RAS_PREDICTION_IFETCH,"ras_prediction_ifetch",Tcontrol_t         ,1);
     286
     287        ALLOC1_INTERFACE_END(_param->_nb_inst_branch_update);
    259288      }
    260289    }
     
    262291//  // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
    263292//  {
    264 //    ALLOC1_INTERFACE("depth",IN,NORTH,"Interface with depth",_param->_nb_context);
     293//    ALLOC1_INTERFACE_BEGIN("depth",IN,NORTH,_("Interface with depth"),_param->_nb_context);
    265294//
    266295//    ALLOC1_SIGNAL_IN ( in_DEPTH_UPT_NB_BRANCH,"upt_nb_branch",Tdepth_t,_param->_size_depth+1);
     
    268297//    ALLOC1_SIGNAL_OUT(out_DEPTH_NB_BRANCH    ,"nb_branch"    ,Tdepth_t,_param->_size_depth+1);
    269298//    ALLOC1_SIGNAL_OUT(out_DEPTH_TAIL         ,"tail"         ,Tdepth_t,_param->_size_depth);
     299//
     300//    ALLOC1_INTERFACE_END(_param->_nb_context);
    270301//  }
    271302
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_allocation.cpp

    r100 r112  
    4646                                                         ,IN
    4747                                                         ,SOUTH,
    48                                                          "Generalist interface"
     48                                                         _("Generalist interface")
    4949#endif
    5050                                                         );
     
    5656    // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5757    {
    58       ALLOC1_INTERFACE("predict", IN, SOUTH, "predict's interface", _param->_nb_inst_predict);
     58      ALLOC1_INTERFACE_BEGIN("predict", IN, SOUTH, _("predict's interface"), _param->_nb_inst_predict);
    5959
    6060      ALLOC1_VALACK_IN ( in_PREDICT_VAL         ,VAL);
     
    6666      ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_POP ,"address_pop" ,Taddress_t,_param->_size_instruction_address);
    6767      ALLOC1_SIGNAL_OUT(out_PREDICT_INDEX       ,"index"       ,Tptr_t    ,_param->_size_index);
     68
     69      ALLOC1_INTERFACE_END(_param->_nb_inst_predict);
    6870    }
    6971
    7072    // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7173    {
    72       ALLOC1_INTERFACE("decod", IN, SOUTH, "decod's interface", _param->_nb_inst_decod);
     74      ALLOC1_INTERFACE_BEGIN("decod", IN, SOUTH, _("decod's interface"), _param->_nb_inst_decod);
    7375
    7476      ALLOC1_VALACK_IN ( in_DECOD_VAL            ,VAL);
     
    8183      ALLOC1_SIGNAL_OUT(out_DECOD_INDEX          ,"index"          ,Tptr_t    ,_param->_size_index);
    8284      ALLOC1_SIGNAL_IN ( in_DECOD_MISS_PREDICTION,"miss_prediction",Tcontrol_t,1);
     85
     86      ALLOC1_INTERFACE_END(_param->_nb_inst_decod);
    8387    }
    8488
    8589    // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8690    {
    87       ALLOC1_INTERFACE("update", IN, SOUTH, "update's interface", _param->_nb_inst_update);
     91      ALLOC1_INTERFACE_BEGIN("update", IN, SOUTH, _("update's interface"), _param->_nb_inst_update);
    8892
    8993      ALLOC1_VALACK_IN ( in_UPDATE_VAL              ,VAL);
     
    96100      ALLOC1_SIGNAL_IN ( in_UPDATE_MISS_PREDICTION  ,"miss_prediction"  ,Tcontrol_t,1);
    97101      ALLOC1_SIGNAL_IN ( in_UPDATE_PREDICTION_IFETCH,"prediction_ifetch",Tcontrol_t,1);
     102
     103      ALLOC1_INTERFACE_END(_param->_nb_inst_update);
    98104    }
    99105
     
    101107      {
    102108    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     109        ALLOC2(reg_stack            ,ras_entry_t,_param->_nb_context,_param->_size_queue [it1]);
    103110
    104     reg_stack = new ras_entry_t * [_param->_nb_context];
    105     for (uint32_t i=0; i<_param->_nb_context; i++)
    106       reg_stack [i] = new ras_entry_t [_param->_size_queue [i]];
     111        ALLOC1(reg_TOP              ,Tptr_t     ,_param->_nb_context);
     112//      ALLOC1(reg_BOTTOM           ,Tptr_t     ,_param->_nb_context);
     113        ALLOC1(reg_NB_ELT           ,Tptr_t     ,_param->_nb_context);
    107114
    108     reg_TOP              = new Tptr_t     [_param->_nb_context];
    109 //  reg_BOTTOM           = new Tptr_t     [_param->_nb_context];
    110     reg_NB_ELT           = new Tptr_t     [_param->_nb_context];
     115        ALLOC1(reg_PREDICT_TOP      ,Tptr_t     ,_param->_nb_context);
     116//      ALLOC1(reg_PREDICT_BOTTOM   ,Tptr_t     ,_param->_nb_context);
     117        ALLOC1(reg_PREDICT_NB_ELT   ,Tptr_t     ,_param->_nb_context);
    111118
    112     reg_PREDICT_TOP      = new Tptr_t     [_param->_nb_context];
    113 //  reg_PREDICT_BOTTOM   = new Tptr_t     [_param->_nb_context];
    114     reg_PREDICT_NB_ELT   = new Tptr_t     [_param->_nb_context];
    115 
    116     internal_PREDICT_ACK = new Tcontrol_t [_param->_nb_inst_predict];
    117     internal_PREDICT_HIT = new Tcontrol_t [_param->_nb_inst_predict];
    118     internal_DECOD_ACK   = new Tcontrol_t [_param->_nb_inst_decod  ];
    119     internal_DECOD_HIT   = new Tcontrol_t [_param->_nb_inst_decod  ];
    120     internal_UPDATE_ACK  = new Tcontrol_t [_param->_nb_inst_update ];
     119        ALLOC1(internal_PREDICT_ACK ,Tcontrol_t ,_param->_nb_inst_predict);
     120        ALLOC1(internal_PREDICT_HIT ,Tcontrol_t ,_param->_nb_inst_predict);
     121        ALLOC1(internal_DECOD_ACK   ,Tcontrol_t ,_param->_nb_inst_decod  );
     122        ALLOC1(internal_DECOD_HIT   ,Tcontrol_t ,_param->_nb_inst_decod  );
     123        ALLOC1(internal_UPDATE_ACK  ,Tcontrol_t ,_param->_nb_inst_update );
    121124      }
    122125
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_deallocation.cpp

    r100 r112  
    5959       
    6060        // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    61        
    62         for (uint32_t i=0; i<_param->_nb_context; i++)
    63           delete [] reg_stack [i];
    64         delete [] reg_stack;
    65         delete [] reg_TOP;
    66 //      delete [] reg_BOTTOM;
    67         delete [] reg_NB_ELT;
    68         delete [] reg_PREDICT_TOP;
    69 //      delete [] reg_PREDICT_BOTTOM;
    70         delete [] reg_PREDICT_NB_ELT;
    71        
    72         delete [] internal_PREDICT_ACK;
    73         delete [] internal_PREDICT_HIT;
    74         delete [] internal_DECOD_ACK;
    75         delete [] internal_DECOD_HIT;
    76         delete [] internal_UPDATE_ACK;
     61        DELETE2(reg_stack            ,_param->_nb_context,_param->_size_queue [it1]);
     62
     63        DELETE1(reg_TOP              ,_param->_nb_context);
     64//      DELETE1(reg_BOTTOM           ,_param->_nb_context);
     65        DELETE1(reg_NB_ELT           ,_param->_nb_context);
     66
     67        DELETE1(reg_PREDICT_TOP      ,_param->_nb_context);
     68//      DELETE1(reg_PREDICT_BOTTOM   ,_param->_nb_context);
     69        DELETE1(reg_PREDICT_NB_ELT   ,_param->_nb_context);
     70
     71        DELETE1(internal_PREDICT_ACK ,_param->_nb_inst_predict);
     72        DELETE1(internal_PREDICT_HIT ,_param->_nb_inst_predict);
     73        DELETE1(internal_DECOD_ACK   ,_param->_nb_inst_decod  );
     74        DELETE1(internal_DECOD_HIT   ,_param->_nb_inst_decod  );
     75        DELETE1(internal_UPDATE_ACK  ,_param->_nb_inst_update );
    7776      }
    7877
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/SelfTest/src/test.cpp

    r111 r112  
    126126  ALLOC1_SC_SIGNAL(out_UPDATE_MISS_PREDICTION         ,"out_UPDATE_MISS_PREDICTION         ",Tcontrol_t         ,_param->_nb_inst_update);
    127127  ALLOC1_SC_SIGNAL(out_UPDATE_DIRECTION_GOOD          ,"out_UPDATE_DIRECTION_GOOD          ",Tcontrol_t         ,_param->_nb_inst_update);
     128  ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTION_IFETCH       ,"out_UPDATE_PREDICTION_IFETCH       ",Tcontrol_t         ,_param->_nb_inst_update);
    128129  ALLOC1_SC_SIGNAL(out_UPDATE_BTB_VAL                 ,"out_UPDATE_BTB_VAL                 ",Tcontrol_t         ,_param->_nb_inst_update);
    129130  ALLOC1_SC_SIGNAL(out_UPDATE_BTB_ADDRESS_SRC         ,"out_UPDATE_BTB_ADDRESS_SRC         ",Taddress_t         ,_param->_nb_inst_update);
     
    137138  ALLOC1_SC_SIGNAL(out_UPDATE_RAS_ADDRESS             ,"out_UPDATE_RAS_ADDRESS             ",Taddress_t         ,_param->_nb_inst_update);
    138139  ALLOC1_SC_SIGNAL(out_UPDATE_RAS_INDEX               ,"out_UPDATE_RAS_INDEX               ",Tptr_t             ,_param->_nb_inst_update);
    139   ALLOC1_SC_SIGNAL(out_UPDATE_RAS_PREDICTION_IFETCH   ,"out_UPDATE_RAS_PREDICTION_IFETCH   ",Tcontrol_t         ,_param->_nb_inst_update);
    140140
    141141  ALLOC1_SC_SIGNAL( in_EVENT_VAL                      ," in_EVENT_VAL                      ",Tcontrol_t         ,_param->_nb_context);
     
    223223  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_MISS_PREDICTION         ,_param->_nb_inst_update);
    224224  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_DIRECTION_GOOD          ,_param->_nb_inst_update);
     225  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_PREDICTION_IFETCH       ,_param->_nb_inst_update);
    225226  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_BTB_VAL                 ,_param->_nb_inst_update);
    226227  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_BTB_ADDRESS_SRC         ,_param->_nb_inst_update);
     
    235236  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_RAS_ADDRESS             ,_param->_nb_inst_update);
    236237  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_RAS_INDEX               ,_param->_nb_inst_update);
    237   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_RAS_PREDICTION_IFETCH   ,_param->_nb_inst_update);
    238238  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_EVENT_VAL                      ,_param->_nb_context);
    239239  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_EVENT_ACK                      ,_param->_nb_context);
     
    575575                      TEST(Tcontrol_t         ,out_UPDATE_MISS_PREDICTION       [port]->read(),it_upt->miss_commit);
    576576                      TEST(Tcontrol_t         ,out_UPDATE_DIRECTION_GOOD        [port]->read(),it_upt->take_good);
     577                      TEST(Tcontrol_t         ,out_UPDATE_PREDICTION_IFETCH     [port]->read(),not it_upt->miss_ifetch);
    577578                      TEST(Tcontrol_t         ,out_UPDATE_BTB_VAL               [port]->read(),update_btb(it_upt->condition));
    578579                      if (update_btb(it_upt->condition))
     
    593594                      TEST(Taddress_t         ,out_UPDATE_RAS_ADDRESS           [port]->read(),it_upt->ras_address);
    594595                      TEST(Tptr_t             ,out_UPDATE_RAS_INDEX             [port]->read(),it_upt->ras_index);
    595                       TEST(Tcontrol_t         ,out_UPDATE_RAS_PREDICTION_IFETCH [port]->read(),not it_upt->miss_ifetch);
    596596                        }
    597597                      ++ it_upt;
     
    906906                      TEST(Taddress_t         ,out_UPDATE_RAS_ADDRESS           [port]->read(),it_upt->ras_address);
    907907                      TEST(Tptr_t             ,out_UPDATE_RAS_INDEX             [port]->read(),it_upt->ras_index);
    908                       TEST(Tcontrol_t         ,out_UPDATE_RAS_PREDICTION_IFETCH [port]->read(),not it_upt->miss_ifetch);
     908                      TEST(Tcontrol_t         ,out_UPDATE_PREDICTION_IFETCH    [port]->read(),not it_upt->miss_ifetch);
    909909                        }
    910910                      ++ it_upt;
     
    12811281                      TEST(Taddress_t         ,out_UPDATE_RAS_ADDRESS           [port]->read(),it_ufpt->ras_address);
    12821282                      TEST(Tptr_t             ,out_UPDATE_RAS_INDEX             [port]->read(),it_ufpt->ras_index);
    1283                       TEST(Tcontrol_t         ,out_UPDATE_RAS_PREDICTION_IFETCH [port]->read(),not it_ufpt->miss_ifetch);
     1283                      TEST(Tcontrol_t         ,out_UPDATE_PREDICTION_IFETCH    [port]->read(),not it_ufpt->miss_ifetch);
    12841284                        }
    12851285                    }
     
    13531353                      TEST(Taddress_t         ,out_UPDATE_RAS_ADDRESS           [port]->read(),it_upt->ras_address);
    13541354                      TEST(Tptr_t             ,out_UPDATE_RAS_INDEX             [port]->read(),it_upt->ras_index);
    1355                       TEST(Tcontrol_t         ,out_UPDATE_RAS_PREDICTION_IFETCH [port]->read(),not it_upt->miss_ifetch);
     1355                      TEST(Tcontrol_t         ,out_UPDATE_PREDICTION_IFETCH    [port]->read(),not it_upt->miss_ifetch);
    13561356                        }
    13571357                      ++ it_upt;
     
    18881888                              TEST(Taddress_t         ,out_UPDATE_RAS_ADDRESS           [port]->read(),it_ufpt->ras_address);
    18891889                              TEST(Tptr_t             ,out_UPDATE_RAS_INDEX             [port]->read(),it_ufpt->ras_index);
    1890                               TEST(Tcontrol_t         ,out_UPDATE_RAS_PREDICTION_IFETCH [port]->read(),not it_ufpt->miss_ifetch);
     1890                              TEST(Tcontrol_t         ,out_UPDATE_PREDICTION_IFETCH    [port]->read(),not it_ufpt->miss_ifetch);
    18911891                            }
    18921892                        }
     
    19761976                        TEST(Taddress_t         ,out_UPDATE_RAS_ADDRESS           [port]->read(),it_upt->ras_address);
    19771977                        TEST(Tptr_t             ,out_UPDATE_RAS_INDEX             [port]->read(),it_upt->ras_index);
    1978                         TEST(Tcontrol_t         ,out_UPDATE_RAS_PREDICTION_IFETCH [port]->read(),not it_upt->miss_ifetch);
     1978                        TEST(Tcontrol_t         ,out_UPDATE_PREDICTION_IFETCH    [port]->read(),not it_upt->miss_ifetch);
    19791979                          }
    19801980
     
    21032103                        TEST(Taddress_t         ,out_UPDATE_RAS_ADDRESS           [port]->read(),it_upt->ras_address);
    21042104                        TEST(Tptr_t             ,out_UPDATE_RAS_INDEX             [port]->read(),it_upt->ras_index);
    2105                         TEST(Tcontrol_t         ,out_UPDATE_RAS_PREDICTION_IFETCH [port]->read(),not it_upt->miss_ifetch);
     2105                        TEST(Tcontrol_t         ,out_UPDATE_PREDICTION_IFETCH    [port]->read(),not it_upt->miss_ifetch);
    21062106                          }
    21072107
     
    25442544                              TEST(Taddress_t         ,out_UPDATE_RAS_ADDRESS           [port]->read(),it_ufpt->ras_address);
    25452545                              TEST(Tptr_t             ,out_UPDATE_RAS_INDEX             [port]->read(),it_ufpt->ras_index);
    2546                               TEST(Tcontrol_t         ,out_UPDATE_RAS_PREDICTION_IFETCH [port]->read(),not it_ufpt->miss_ifetch);
     2546                              TEST(Tcontrol_t         ,out_UPDATE_PREDICTION_IFETCH    [port]->read(),not it_ufpt->miss_ifetch);
    25472547                            }
    25482548                        }
     
    26372637                        TEST(Taddress_t         ,out_UPDATE_RAS_ADDRESS           [port]->read(),it_upt->ras_address);
    26382638                        TEST(Tptr_t             ,out_UPDATE_RAS_INDEX             [port]->read(),it_upt->ras_index);
    2639                         TEST(Tcontrol_t         ,out_UPDATE_RAS_PREDICTION_IFETCH [port]->read(),not it_upt->miss_ifetch);
     2639                        TEST(Tcontrol_t         ,out_UPDATE_PREDICTION_IFETCH    [port]->read(),not it_upt->miss_ifetch);
    26402640                          }
    26412641//                         -- it_upt;
     
    27632763                        TEST(Taddress_t         ,out_UPDATE_RAS_ADDRESS           [port]->read(),it_upt->ras_address);
    27642764                        TEST(Tptr_t             ,out_UPDATE_RAS_INDEX             [port]->read(),it_upt->ras_index);
    2765                         TEST(Tcontrol_t         ,out_UPDATE_RAS_PREDICTION_IFETCH [port]->read(),not it_upt->miss_ifetch);
     2765                        TEST(Tcontrol_t         ,out_UPDATE_PREDICTION_IFETCH    [port]->read(),not it_upt->miss_ifetch);
    27662766                          }
    27672767
     
    28702870  delete [] out_UPDATE_MISS_PREDICTION      ;
    28712871  delete [] out_UPDATE_DIRECTION_GOOD       ;
     2872  delete [] out_UPDATE_PREDICTION_IFETCH    ;
    28722873  delete [] out_UPDATE_BTB_VAL              ;
    28732874  delete [] out_UPDATE_BTB_ADDRESS_SRC      ;
     
    28812882  delete [] out_UPDATE_RAS_ADDRESS          ;
    28822883  delete [] out_UPDATE_RAS_INDEX            ;
    2883   delete [] out_UPDATE_RAS_PREDICTION_IFETCH;
    28842884
    28852885  DELETE1_SC_SIGNAL( in_EVENT_VAL                      ,_param->_nb_context);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Types.h

    r111 r112  
    8888  public : Tcontrol_t          _ifetch_prediction; // not in ufpt
    8989
     90    // to branchement_log_file
    9091  public : bool                _retire_ok        ;
     92  public : bool                _miss_prediction  ;
    9193  };
    9294
     
    115117#define pop_ras(cond)     ((cond == BRANCH_CONDITION_READ_STACK                    ))
    116118
    117 #define need_update(cond) update_ras(cond)
     119#define need_update(cond) (update_ras(cond) or update_dir(cond))
    118120
    119121}; // end namespace update_prediction_table
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Update_Prediction_Table.h

    r111 r112  
    130130  public    : SC_OUT(Tcontrol_t         )  ** out_UPDATE_MISS_PREDICTION         ; //[nb_inst_update]
    131131  public    : SC_OUT(Tcontrol_t         )  ** out_UPDATE_DIRECTION_GOOD          ; //[nb_inst_update]
     132  public    : SC_OUT(Tcontrol_t         )  ** out_UPDATE_PREDICTION_IFETCH       ; //[nb_inst_update]
    132133  public    : SC_OUT(Tcontrol_t         )  ** out_UPDATE_BTB_VAL                 ; //[nb_inst_update]
    133134  public    : SC_OUT(Taddress_t         )  ** out_UPDATE_BTB_ADDRESS_SRC         ; //[nb_inst_update]
     
    141142  public    : SC_OUT(Taddress_t         )  ** out_UPDATE_RAS_ADDRESS             ; //[nb_inst_update]
    142143  public    : SC_OUT(Tptr_t             )  ** out_UPDATE_RAS_INDEX               ; //[nb_inst_update]
    143   public    : SC_OUT(Tcontrol_t         )  ** out_UPDATE_RAS_PREDICTION_IFETCH   ; //[nb_inst_update]
    144144
    145145    // ~~~~~[ Interface : "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    183183  private   : bool                          * reg_EVENT_VAL                      ; //[nb_context]
    184184  private   : uint32_t                      * reg_EVENT_UPT_PTR                  ; //[nb_context]
     185  private   : bool                          * reg_EVENT_UPT_FULL                 ; //[nb_context]
    185186
    186187  private   : event_state_t                 * reg_EVENT_STATE                    ; //[nb_context]
    187   private   : event_source_t                * reg_EVENT_SOURCE                   ; //[nb_context]
     188  private   : bool                          * reg_EVENT_IS_BRANCH                ; //[nb_context]
    188189  private   : Tdepth_t                      * reg_EVENT_DEPTH                    ; //[nb_context]
    189190  private   : Taddress_t                    * reg_EVENT_ADDRESS_SRC              ; //[nb_context] // Address branch
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_allocation.cpp

    r111 r112  
    4848                                                         ,IN
    4949                                                         ,SOUTH,
    50                                                          "Generalist interface"
     50                                                         _("Generalist interface")
    5151#endif
    5252                                                         );
     
    5858    // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC1_INTERFACE("predict", IN,SOUTH, "predict", _param->_nb_inst_predict);
     60      ALLOC1_INTERFACE_BEGIN("predict", IN,SOUTH, _("predict"), _param->_nb_inst_predict);
    6161     
    6262      ALLOC1_VALACK_IN ( in_PREDICT_VAL                 ,VAL);
     
    7272      ALLOC1_SIGNAL_IN ( in_PREDICT_RAS_ADDRESS         ,"ras_address"         ,Taddress_t         ,_param->_size_instruction_address);
    7373      ALLOC1_SIGNAL_IN ( in_PREDICT_RAS_INDEX           ,"ras_index"           ,Tptr_t             ,_param->_max_size_ras_index);
     74
     75      ALLOC1_INTERFACE_END(_param->_nb_inst_predict);
    7476    }
    7577
    7678    // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7779    {
    78       ALLOC1_INTERFACE("decod", IN,SOUTH, "decod", _param->_nb_inst_decod);
     80      ALLOC1_INTERFACE_BEGIN("decod", IN,SOUTH, _("decod"), _param->_nb_inst_decod);
    7981
    8082      ALLOC1_VALACK_IN ( in_DECOD_VAL                 ,VAL);
     
    9395      ALLOC1_SIGNAL_IN ( in_DECOD_IS_ACCURATE         ,"is_accurate"         ,Tcontrol_t         ,1);
    9496      ALLOC1_SIGNAL_OUT(out_DECOD_CAN_CONTINUE        ,"can_continue"        ,Tcontrol_t         ,1);
     97
     98      ALLOC1_INTERFACE_END(_param->_nb_inst_decod);
    9599    }
    96100
    97101    // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    98102    {
    99       ALLOC1_INTERFACE("branch_complete", IN,SOUTH, "branch_complete", _param->_nb_inst_branch_complete);
     103      ALLOC1_INTERFACE_BEGIN("branch_complete", IN,SOUTH, _("branch_complete"), _param->_nb_inst_branch_complete);
    100104     
    101105      ALLOC1_VALACK_IN ( in_BRANCH_COMPLETE_VAL            ,VAL);
     
    109113//       ALLOC1_SIGNAL_OUT(out_BRANCH_COMPLETE_ADDRESS_SRC    ,"address_src"    ,Taddress_t,_param->_size_instruction_address);
    110114//       ALLOC1_SIGNAL_OUT(out_BRANCH_COMPLETE_ADDRESS_DEST   ,"address_dest"   ,Taddress_t,_param->_size_instruction_address);
     115
     116      ALLOC1_INTERFACE_END(_param->_nb_inst_branch_complete);
    111117    }
    112118
    113119    // ~~~~~[ Interface : "branch_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    114120    {
    115       ALLOC1_INTERFACE("branch_event", IN,SOUTH, "branch_event", _param->_nb_context);
     121      ALLOC1_INTERFACE_BEGIN("branch_event", IN,SOUTH, _("branch_event"), _param->_nb_context);
    116122     
    117123      ALLOC1_VALACK_OUT(out_BRANCH_EVENT_VAL              ,VAL);
     
    123129      ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_ADDRESS_DEST_VAL ,"address_dest_val",Tcontrol_t,1);
    124130      ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_ADDRESS_DEST     ,"address_dest"    ,Taddress_t,_param->_size_instruction_address);
     131
     132      ALLOC1_INTERFACE_END(_param->_nb_context);
    125133    }
    126134
    127135    // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    128136    {
    129       ALLOC1_INTERFACE("update",OUT,SOUTH, "update", _param->_nb_inst_update);
     137      ALLOC1_INTERFACE_BEGIN("update",OUT,SOUTH, "update", _param->_nb_inst_update);
    130138
    131139      ALLOC1_VALACK_OUT(out_UPDATE_VAL                  ,VAL);
     
    134142      ALLOC1_SIGNAL_OUT(out_UPDATE_MISS_PREDICTION      ,"miss_prediction"      ,Tcontrol_t         ,1);
    135143      ALLOC1_SIGNAL_OUT(out_UPDATE_DIRECTION_GOOD       ,"direction_good"       ,Tcontrol_t         ,1);
     144      ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTION_IFETCH    ,"prediction_ifetch"    ,Tcontrol_t         ,1);
    136145      ALLOC1_SIGNAL_OUT(out_UPDATE_BTB_VAL              ,"btb_val"              ,Tcontrol_t         ,1);
    137146      ALLOC1_SIGNAL_OUT(out_UPDATE_BTB_ADDRESS_SRC      ,"btb_address_src"      ,Taddress_t         ,_param->_size_instruction_address);
     
    145154      ALLOC1_SIGNAL_OUT(out_UPDATE_RAS_ADDRESS          ,"ras_address"          ,Taddress_t         ,_param->_size_instruction_address);
    146155      ALLOC1_SIGNAL_OUT(out_UPDATE_RAS_INDEX            ,"ras_index"            ,Tptr_t             ,_param->_max_size_ras_index);
    147       ALLOC1_SIGNAL_OUT(out_UPDATE_RAS_PREDICTION_IFETCH,"ras_prediction_ifetch",Tcontrol_t         ,1);
     156     
     157      ALLOC1_INTERFACE_END(_param->_nb_inst_update);
    148158    }
    149159
    150160    // ~~~~~[ Interface : "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    151161    {
    152       ALLOC1_INTERFACE("event", IN,SOUTH,"event", _param->_nb_context);
     162      ALLOC1_INTERFACE_BEGIN("event", IN,SOUTH,_("event"), _param->_nb_context);
    153163
    154164      ALLOC1_VALACK_IN ( in_EVENT_VAL    ,VAL);
     
    156166      ALLOC1_SIGNAL_IN ( in_EVENT_TYPE   ,"type" ,Tevent_type_t ,_param->_size_event_type );
    157167      ALLOC1_SIGNAL_IN ( in_EVENT_DEPTH  ,"depth",Tdepth_t      ,_param->_size_depth      );
     168
     169      ALLOC1_INTERFACE_END(_param->_nb_context);
    158170    }
    159171
    160172    // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    161173    {
    162       ALLOC1_INTERFACE("depth",OUT,SOUTH, "depth", _param->_nb_context);
     174      ALLOC1_INTERFACE_BEGIN("depth",OUT,SOUTH, _("depth"), _param->_nb_context);
     175
    163176      ALLOC1_SIGNAL_OUT(out_DEPTH_VAL    ,"VAL"    ,Tcontrol_t,1);
    164177      ALLOC1_SIGNAL_OUT(out_DEPTH_CURRENT,"CURRENT",Tdepth_t  ,_param->_size_depth);
     
    166179      ALLOC1_SIGNAL_OUT(out_DEPTH_MAX    ,"MAX"    ,Tdepth_t  ,_param->_size_depth);
    167180      ALLOC1_SIGNAL_OUT(out_DEPTH_FULL   ,"FULL"   ,Tcontrol_t,1);
     181
     182      ALLOC1_INTERFACE_END(_param->_nb_context);
    168183    }
    169184
     
    209224    ALLOC1(reg_EVENT_VAL                    ,bool         ,_param->_nb_context);
    210225    ALLOC1(reg_EVENT_UPT_PTR                ,uint32_t     ,_param->_nb_context);
     226    ALLOC1(reg_EVENT_UPT_FULL               ,bool         ,_param->_nb_context);
    211227
    212228    ALLOC1(reg_EVENT_STATE                  ,event_state_t ,_param->_nb_context);
    213     ALLOC1(reg_EVENT_SOURCE                 ,event_source_t,_param->_nb_context);
     229    ALLOC1(reg_EVENT_IS_BRANCH              ,bool          ,_param->_nb_context);
    214230    ALLOC1(reg_EVENT_DEPTH                  ,Tdepth_t      ,_param->_nb_context);
    215231    ALLOC1(reg_EVENT_ADDRESS_SRC            ,Taddress_t    ,_param->_nb_context);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_deallocation.cpp

    r111 r112  
    2929        delete    in_NRESET;
    3030
    31         // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    32         delete []  in_PREDICT_VAL                 ;
    33         delete [] out_PREDICT_ACK                 ;
    34         if (_param->_have_port_context_id)
    35         delete []  in_PREDICT_CONTEXT_ID          ;
    36         delete []  in_PREDICT_BTB_ADDRESS_SRC     ;
    37         delete []  in_PREDICT_BTB_ADDRESS_DEST    ;
    38         delete []  in_PREDICT_BTB_CONDITION       ;
    39         delete []  in_PREDICT_BTB_LAST_TAKE       ;
    40         delete []  in_PREDICT_BTB_IS_ACCURATE     ;
    41         if (_param->_have_port_history)
    42         delete []  in_PREDICT_DIR_HISTORY         ;
    43         delete []  in_PREDICT_RAS_ADDRESS         ;
    44         delete []  in_PREDICT_RAS_INDEX           ;
    45         if (_param->_have_port_depth)
    46         delete [] out_PREDICT_UPDATE_PREDICTION_ID;
    47        
    48         // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    49         delete []  in_DECOD_VAL                   ;
    50         delete [] out_DECOD_ACK                   ;
    51         if (_param->_have_port_context_id)
    52         delete []  in_DECOD_CONTEXT_ID            ;
    53         delete []  in_DECOD_BTB_ADDRESS_SRC       ;
    54         delete []  in_DECOD_BTB_ADDRESS_DEST      ;
    55         delete []  in_DECOD_BTB_CONDITION         ;
    56         delete []  in_DECOD_BTB_LAST_TAKE         ;
    57         delete []  in_DECOD_RAS_ADDRESS           ;
    58         delete []  in_DECOD_RAS_INDEX             ;
    59         delete []  in_DECOD_MISS_IFETCH           ;
    60         delete []  in_DECOD_MISS_DECOD            ;
    61         if (_param->_have_port_depth)
    62         delete []  in_DECOD_UPDATE_PREDICTION_ID  ;
    63 //      if (_param->_have_port_depth)
    64 //      delete [] out_DECOD_DEPTH                 ;
    65         delete []  in_DECOD_IS_ACCURATE           ;
    66         delete [] out_DECOD_CAN_CONTINUE          ;
    67        
    68         // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    69         delete []  in_BRANCH_COMPLETE_VAL            ;
    70         delete [] out_BRANCH_COMPLETE_ACK            ;
    71         if (_param->_have_port_context_id)
    72         delete []  in_BRANCH_COMPLETE_CONTEXT_ID     ;
    73         if (_param->_have_port_depth)
    74         delete []  in_BRANCH_COMPLETE_DEPTH          ;
    75         delete []  in_BRANCH_COMPLETE_ADDRESS        ;
    76         delete []  in_BRANCH_COMPLETE_NO_SEQUENCE    ;
    77         delete [] out_BRANCH_COMPLETE_MISS_PREDICTION;
    78 //      delete [] out_BRANCH_COMPLETE_TAKE           ;
    79 //      delete [] out_BRANCH_COMPLETE_ADDRESS_SRC    ;
    80 //      delete [] out_BRANCH_COMPLETE_ADDRESS_DEST   ;
     31        // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     32        DELETE1_SIGNAL( in_PREDICT_VAL                 ,_param->_nb_inst_predict,1);
     33        DELETE1_SIGNAL(out_PREDICT_ACK                 ,_param->_nb_inst_predict,1);
     34        DELETE1_SIGNAL( in_PREDICT_CONTEXT_ID          ,_param->_nb_inst_predict,_param->_size_context_id);
     35        DELETE1_SIGNAL(out_PREDICT_UPDATE_PREDICTION_ID,_param->_nb_inst_predict,_param->_size_depth);
     36        DELETE1_SIGNAL( in_PREDICT_BTB_ADDRESS_SRC     ,_param->_nb_inst_predict,_param->_size_instruction_address);
     37        DELETE1_SIGNAL( in_PREDICT_BTB_ADDRESS_DEST    ,_param->_nb_inst_predict,_param->_size_instruction_address);
     38        DELETE1_SIGNAL( in_PREDICT_BTB_CONDITION       ,_param->_nb_inst_predict,_param->_size_branch_condition);
     39        DELETE1_SIGNAL( in_PREDICT_BTB_LAST_TAKE       ,_param->_nb_inst_predict,1);
     40        DELETE1_SIGNAL( in_PREDICT_BTB_IS_ACCURATE     ,_param->_nb_inst_predict,1);
     41        DELETE1_SIGNAL( in_PREDICT_DIR_HISTORY         ,_param->_nb_inst_predict,_param->_size_history);
     42        DELETE1_SIGNAL( in_PREDICT_RAS_ADDRESS         ,_param->_nb_inst_predict,_param->_size_instruction_address);
     43        DELETE1_SIGNAL( in_PREDICT_RAS_INDEX           ,_param->_nb_inst_predict,_param->_max_size_ras_index);
     44
     45        // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     46        DELETE1_SIGNAL( in_DECOD_VAL                 ,_param->_nb_inst_decod,1);
     47        DELETE1_SIGNAL(out_DECOD_ACK                 ,_param->_nb_inst_decod,1);
     48        DELETE1_SIGNAL( in_DECOD_CONTEXT_ID          ,_param->_nb_inst_decod,_param->_size_context_id);
     49        DELETE1_SIGNAL( in_DECOD_BTB_ADDRESS_SRC     ,_param->_nb_inst_decod,_param->_size_instruction_address);
     50        DELETE1_SIGNAL( in_DECOD_BTB_ADDRESS_DEST    ,_param->_nb_inst_decod,_param->_size_instruction_address);
     51        DELETE1_SIGNAL( in_DECOD_BTB_CONDITION       ,_param->_nb_inst_decod,_param->_size_branch_condition);
     52        DELETE1_SIGNAL( in_DECOD_BTB_LAST_TAKE       ,_param->_nb_inst_decod,1);
     53        DELETE1_SIGNAL( in_DECOD_RAS_ADDRESS         ,_param->_nb_inst_decod,_param->_size_instruction_address);
     54        DELETE1_SIGNAL( in_DECOD_RAS_INDEX           ,_param->_nb_inst_decod,_param->_max_size_ras_index);
     55        DELETE1_SIGNAL( in_DECOD_MISS_IFETCH         ,_param->_nb_inst_decod,1);
     56        DELETE1_SIGNAL( in_DECOD_MISS_DECOD          ,_param->_nb_inst_decod,1);
     57        DELETE1_SIGNAL( in_DECOD_UPDATE_PREDICTION_ID,_param->_nb_inst_decod,_param->_size_depth);
     58//      DELETE1_SIGNAL(out_DECOD_DEPTH               ,_param->_nb_inst_decod,_param->_size_depth);
     59        DELETE1_SIGNAL( in_DECOD_IS_ACCURATE         ,_param->_nb_inst_decod,1);
     60        DELETE1_SIGNAL(out_DECOD_CAN_CONTINUE        ,_param->_nb_inst_decod,1);
     61
     62        // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     63        DELETE1_SIGNAL( in_BRANCH_COMPLETE_VAL            ,_param->_nb_inst_branch_complete,1);
     64        DELETE1_SIGNAL(out_BRANCH_COMPLETE_ACK            ,_param->_nb_inst_branch_complete,1);
     65        DELETE1_SIGNAL( in_BRANCH_COMPLETE_CONTEXT_ID     ,_param->_nb_inst_branch_complete,_param->_size_context_id);
     66        DELETE1_SIGNAL( in_BRANCH_COMPLETE_DEPTH          ,_param->_nb_inst_branch_complete,_param->_size_depth);
     67        DELETE1_SIGNAL( in_BRANCH_COMPLETE_ADDRESS        ,_param->_nb_inst_branch_complete,_param->_size_instruction_address);
     68        DELETE1_SIGNAL( in_BRANCH_COMPLETE_NO_SEQUENCE    ,_param->_nb_inst_branch_complete,1);
     69        DELETE1_SIGNAL(out_BRANCH_COMPLETE_MISS_PREDICTION,_param->_nb_inst_branch_complete,1);
     70//      DELETE1_SIGNAL(out_BRANCH_COMPLETE_TAKE           ,_param->_nb_inst_branch_complete,1);
     71//      DELETE1_SIGNAL(out_BRANCH_COMPLETE_ADDRESS_SRC    ,_param->_nb_inst_branch_complete,_param->_size_instruction_address);
     72//      DELETE1_SIGNAL(out_BRANCH_COMPLETE_ADDRESS_DEST   ,_param->_nb_inst_branch_complete,_param->_size_instruction_address);
    8173
    8274        // ~~~~~[ Interface : "branch_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    9082        DELETE1_SIGNAL(out_BRANCH_EVENT_ADDRESS_DEST     ,_param->_nb_context,_param->_size_instruction_address);
    9183
    92         // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    93         delete [] out_UPDATE_VAL                  ;
    94         delete []  in_UPDATE_ACK                  ;
    95         if (_param->_have_port_context_id)
    96         delete [] out_UPDATE_CONTEXT_ID           ;
    97         delete [] out_UPDATE_MISS_PREDICTION      ;
    98         delete [] out_UPDATE_DIRECTION_GOOD       ;
    99         delete [] out_UPDATE_BTB_VAL              ;
    100         delete [] out_UPDATE_BTB_ADDRESS_SRC      ;
    101         delete [] out_UPDATE_BTB_ADDRESS_DEST     ;
    102         delete [] out_UPDATE_BTB_CONDITION        ;
    103         delete [] out_UPDATE_DIR_VAL              ;
    104         if (_param->_have_port_history)
    105         delete [] out_UPDATE_DIR_HISTORY          ;
    106         delete [] out_UPDATE_RAS_VAL              ;
    107         delete [] out_UPDATE_RAS_FLUSH            ;
    108         delete [] out_UPDATE_RAS_PUSH             ;
    109         delete [] out_UPDATE_RAS_ADDRESS          ;
    110         delete [] out_UPDATE_RAS_INDEX            ;
    111         delete [] out_UPDATE_RAS_PREDICTION_IFETCH;
     84        // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     85        DELETE1_SIGNAL(out_UPDATE_VAL                  ,_param->_nb_inst_update,1);
     86        DELETE1_SIGNAL( in_UPDATE_ACK                  ,_param->_nb_inst_update,1);
     87        DELETE1_SIGNAL(out_UPDATE_CONTEXT_ID           ,_param->_nb_inst_update,_param->_size_context_id);
     88        DELETE1_SIGNAL(out_UPDATE_MISS_PREDICTION      ,_param->_nb_inst_update,1);
     89        DELETE1_SIGNAL(out_UPDATE_DIRECTION_GOOD       ,_param->_nb_inst_update,1);
     90        DELETE1_SIGNAL(out_UPDATE_PREDICTION_IFETCH    ,_param->_nb_inst_update,1);
     91        DELETE1_SIGNAL(out_UPDATE_BTB_VAL              ,_param->_nb_inst_update,1);
     92        DELETE1_SIGNAL(out_UPDATE_BTB_ADDRESS_SRC      ,_param->_nb_inst_update,_param->_size_instruction_address);
     93        DELETE1_SIGNAL(out_UPDATE_BTB_ADDRESS_DEST     ,_param->_nb_inst_update,_param->_size_instruction_address);
     94        DELETE1_SIGNAL(out_UPDATE_BTB_CONDITION        ,_param->_nb_inst_update,_param->_size_branch_condition);
     95        DELETE1_SIGNAL(out_UPDATE_DIR_VAL              ,_param->_nb_inst_update,1);
     96        DELETE1_SIGNAL(out_UPDATE_DIR_HISTORY          ,_param->_nb_inst_update,_param->_size_history);
     97        DELETE1_SIGNAL(out_UPDATE_RAS_VAL              ,_param->_nb_inst_update,1);
     98        DELETE1_SIGNAL(out_UPDATE_RAS_FLUSH            ,_param->_nb_inst_update,1);
     99        DELETE1_SIGNAL(out_UPDATE_RAS_PUSH             ,_param->_nb_inst_update,1);
     100        DELETE1_SIGNAL(out_UPDATE_RAS_ADDRESS          ,_param->_nb_inst_update,_param->_size_instruction_address);
     101        DELETE1_SIGNAL(out_UPDATE_RAS_INDEX            ,_param->_nb_inst_update,_param->_max_size_ras_index);
    112102
    113103        // ~~~~~[ Interface : "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    162152        DELETE1(reg_EVENT_VAL                    ,_param->_nb_context);
    163153        DELETE1(reg_EVENT_UPT_PTR                ,_param->_nb_context);
     154        DELETE1(reg_EVENT_UPT_FULL               ,_param->_nb_context);
    164155
    165156        DELETE1(reg_EVENT_STATE                  ,_param->_nb_context);
    166         DELETE1(reg_EVENT_SOURCE                 ,_param->_nb_context);
     157        DELETE1(reg_EVENT_IS_BRANCH              ,_param->_nb_context);
    167158        DELETE1(reg_EVENT_DEPTH                  ,_param->_nb_context);
    168159        DELETE1(reg_EVENT_ADDRESS_SRC            ,_param->_nb_context);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMoore.cpp

    r111 r112  
    9898        Tcontrol_t          miss_prediction      ;
    9999        Tcontrol_t          direction_good       ;
     100        Tcontrol_t          prediction_ifetch    ;
    100101        Tcontrol_t          btb_val              ;
    101102        Taddress_t          btb_address_src      ;
     
    109110        Taddress_t          ras_address          ;
    110111        Tptr_t              ras_index            ;
    111         Tcontrol_t          ras_prediction_ifetch;
    112112
    113113        // Test if update fetch prediction table need update port
     
    133133                miss_prediction       = 1;
    134134//              direction_good        = ;
     135                prediction_ifetch     = 1;
    135136                btb_val               = 0; // don't update btb (is update by the event branch)
    136 //              btb_address_src       = ;
    137 //              btb_address_dest      = ;
    138 //              btb_condition         = ;
    139                 dir_val               = 0; // don't update btb (is update by the event branch (if conditionnal branch))
    140 //              dir_history           = ;
     137//              btb_address_src       = reg_UPDATE_PREDICTION_TABLE [context][depth]._address_src ;
     138//              btb_address_dest      = reg_UPDATE_PREDICTION_TABLE [context][depth]._address_dest;
     139//              btb_condition         = condition;
     140                dir_val               = update_ras(condition);
     141                dir_history           = reg_UPDATE_PREDICTION_TABLE [context][depth]._history;
    141142                // repop/ repush data -> don't corrupt ras
    142143                ras_val               = update_ras(condition);
     
    145146                ras_address           = reg_UPDATE_FETCH_PREDICTION_TABLE [context][depth]._address_ras;
    146147                ras_index             = reg_UPDATE_FETCH_PREDICTION_TABLE [context][depth]._index_ras;
    147                 ras_prediction_ifetch = 1;
    148148               
    149149                internal_UPDATE_FROM_UFPT [i] = true;
     
    200200                miss_prediction       = (state != UPDATE_PREDICTION_STATE_OK);
    201201                direction_good        = reg_UPDATE_PREDICTION_TABLE [context][depth]._good_take   ;
     202                prediction_ifetch     = ifetch;
    202203                btb_val               = state_is_ok_ko and update_btb(condition);
    203204                btb_address_src       = reg_UPDATE_PREDICTION_TABLE [context][depth]._address_src ;
    204205                btb_address_dest      = reg_UPDATE_PREDICTION_TABLE [context][depth]._address_dest;
    205206                btb_condition         = condition;
    206                 dir_val               = state_is_ok_ko and update_dir(condition) and ifetch; // if not ifetch, then static prediction
     207                dir_val               = // state_is_ok_ko and
     208                                        update_dir(condition); // if not ifetch, then static prediction
    207209                dir_history           = reg_UPDATE_PREDICTION_TABLE [context][depth]._history     ;
    208210                ras_val               = update_ras(condition); // repop/ repush data -> don't corrupt ras
     
    213215                ras_address           = (ras_flush)?(reg_UPDATE_PREDICTION_TABLE [context][depth]._address_src+2):reg_UPDATE_PREDICTION_TABLE [context][depth]._address_ras;
    214216                ras_index             = reg_UPDATE_PREDICTION_TABLE [context][depth]._index_ras;
    215                 ras_prediction_ifetch = ifetch;
    216217
    217218                internal_UPDATE_FROM_UFPT [i] = false;
     
    257258        PORT_WRITE(out_UPDATE_MISS_PREDICTION       [i],miss_prediction      );
    258259        PORT_WRITE(out_UPDATE_DIRECTION_GOOD        [i],direction_good       );
     260        PORT_WRITE(out_UPDATE_PREDICTION_IFETCH     [i],prediction_ifetch    );
    259261        PORT_WRITE(out_UPDATE_BTB_VAL               [i],btb_val              );
    260262        PORT_WRITE(out_UPDATE_BTB_ADDRESS_SRC       [i],btb_address_src      );
     
    269271        PORT_WRITE(out_UPDATE_RAS_ADDRESS           [i],ras_address          );
    270272        PORT_WRITE(out_UPDATE_RAS_INDEX             [i],ras_index            );
    271         PORT_WRITE(out_UPDATE_RAS_PREDICTION_IFETCH [i],ras_prediction_ifetch);
    272273          }
    273274      }
     
    290291      }
    291292      }
     293    else
     294      {
     295        for (uint32_t i=0; i<_param->_nb_inst_update; i++)
     296          {
     297            internal_UPDATE_VAL             [i] = 0;
     298            internal_UPDATE_VAL_WITHOUT_ACK [i] = 0;
     299          }
     300        for (uint32_t i=0; i<_param->_nb_context; i++)
     301          {
     302            internal_BRANCH_EVENT_VAL       [i] = 0;
     303          }
     304      }
     305
    292306
    293307    log_end(Update_Prediction_Table,FUNCTION);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_transition.cpp

    r111 r112  
    5353            reg_EVENT_VAL            [i] = false;
    5454            reg_EVENT_STATE          [i] = EVENT_STATE_OK;
     55            reg_EVENT_IS_BRANCH      [i] = true;
    5556          }
    5657      }
     
    100101              // Test if state is end
    101102//               if (end_ok or end_ko)
     103             
     104              log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * state is STATE_END      : %d",end);
     105              log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * reg_UPT_BOTTOM (before) : %d",reg_UPT_BOTTOM         [i]);
     106
    102107              if (end)
    103108                {
     
    108113                      branchement_log_file [num_thread]
    109114                        << std::hex
    110                         << "0x" << reg_UPDATE_PREDICTION_TABLE [i][bottom]._address_src  << " "
    111                         << "0x" << reg_UPDATE_PREDICTION_TABLE [i][bottom]._address_dest << " "
     115                        << "0x" << reg_UPDATE_PREDICTION_TABLE [i][bottom]._address_src       << " "
     116                        << "0x" << reg_UPDATE_PREDICTION_TABLE [i][bottom]._address_dest      << " "
    112117                        << std::dec
    113                         <<         reg_UPDATE_PREDICTION_TABLE [i][bottom]._good_take    << " "
     118                        <<         reg_UPDATE_PREDICTION_TABLE [i][bottom]._good_take         << " - "
     119                        << "["  << sc_simulation_time() << "] " << " "
     120                        <<         reg_UPDATE_PREDICTION_TABLE [i][bottom]._miss_prediction   << " "
     121                        <<         reg_UPDATE_PREDICTION_TABLE [i][bottom]._ifetch_prediction << " "
     122                        << "("  << (uint32_t)reg_UPDATE_PREDICTION_TABLE [i][bottom]._condition         << ")"
    114123                        << std::endl;
    115124                    }
     
    128137//                   if (bottom = reg_UPT_UPDATE [i])
    129138//                     reg_UPT_UPDATE [i] = reg_UPT_BOTTOM [i];
    130 
    131                   if (reg_EVENT_VAL [i] and (reg_EVENT_UPT_PTR [i] == bottom))
     139                }// @@@
     140             
     141              log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * reg_UPT_BOTTOM (after ) : %d",reg_UPT_BOTTOM         [i]);
     142              log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * reg_EVENT_VAL           : %d",reg_EVENT_VAL     [i]);
     143              log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * reg_EVENT_UPT_PTR       : %d",reg_EVENT_UPT_PTR [i]);
     144              log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * reg_EVENT_UPT_FULL      : %d",reg_EVENT_UPT_FULL[i]);
     145
     146              if (reg_EVENT_VAL [i] and (reg_EVENT_UPT_PTR [i] == bottom))
     147                {
     148                  log_printf(TRACE,Update_Prediction_Table,FUNCTION,"  * END EVENT");
     149
     150                  if ((reg_EVENT_IS_BRANCH [i] == false) and (reg_EVENT_UPT_FULL [i] == false))
     151                    reg_EVENT_STATE[i] = EVENT_STATE_OK;
     152
     153                  if ((reg_EVENT_IS_BRANCH [i] == true) or (reg_EVENT_UPT_FULL [i] == false))
    132154                    {
    133                       log_printf(TRACE,Update_Prediction_Table,FUNCTION,"  * END EVENT");
    134                      
    135                       reg_EVENT_VAL  [i] = false;
    136                       reg_UPT_TOP    [i] = reg_UPT_TOP_EVENT [i];
    137                       reg_UPT_UPDATE [i] = reg_UPT_TOP_EVENT [i];
    138                      
    139                       if (reg_UPT_BOTTOM [i] != reg_UPT_TOP [i])
    140                         reg_UPT_EMPTY [i] = false;
    141 
    142                       log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * reg_UPT_TOP             : %d",reg_UPT_TOP            [i]);
    143                       log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * reg_UPT_TOP_EVENT       : %d",reg_UPT_TOP_EVENT      [i]);
    144                       log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * reg_UPT_UPDATE          : %d",reg_UPT_UPDATE         [i]);
    145                       log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * reg_UPT_EMPTY           : %d",reg_UPT_EMPTY          [i]);
     155                  reg_EVENT_VAL       [i] = false;
     156//                reg_EVENT_IS_BRANCH [i] = true;
     157                  reg_UPT_TOP         [i] = reg_UPT_TOP_EVENT [i];
     158                  reg_UPT_UPDATE      [i] = reg_UPT_TOP_EVENT [i];
     159                 
     160                  if (reg_UPT_BOTTOM [i] != reg_UPT_TOP [i])
     161                    reg_UPT_EMPTY [i] = false;
    146162                    }
    147163
     164                  log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * reg_UPT_TOP             : %d",reg_UPT_TOP            [i]);
     165                  log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * reg_UPT_TOP_EVENT       : %d",reg_UPT_TOP_EVENT      [i]);
     166                  log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * reg_UPT_UPDATE          : %d",reg_UPT_UPDATE         [i]);
     167                  log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * reg_UPT_EMPTY           : %d",reg_UPT_EMPTY          [i]);
     168               
    148169                }
     170             
     171              if (end)
     172                reg_EVENT_UPT_FULL [i] = false;
    149173            }
    150174          }
     
    245269                      log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * EVENT [%d] <- EVENT_STATE_UPDATE_CONTEXT (decod - miss - no flush ufpt)",context);
    246270                      reg_EVENT_STATE [context] = EVENT_STATE_UPDATE_CONTEXT;
     271//                       reg_EVENT_SOURCE[context] = EVENT_SOURCE_UFPT;
    247272                    }
    248273                  else
     
    251276                      reg_EVENT_STATE [context] = EVENT_STATE_MISS_FLUSH_UFPT;
    252277                    }
    253                   reg_EVENT_SOURCE          [context] = EVENT_SOURCE_UFPT;
    254278
    255279                  // Flush UPFT
    256280                  flush_UFPT [context] = true;
    257281
     282                  reg_EVENT_IS_BRANCH       [context] = true;
    258283                  reg_EVENT_DEPTH           [context] = upt_ptr_write;
    259284                  reg_EVENT_ADDRESS_SRC     [context] = address_src; // delay_slot is compute in Context_State
     
    357382                  (internal_UPDATE_VAL_WITHOUT_ACK [i] and can_continue [context]))
    358383                {
    359                   Tdepth_t   depth     = internal_UPDATE_DEPTH      [i];
     384                  Tdepth_t   depth     = internal_UPDATE_DEPTH [i];
    360385                 
    361386                  log_printf(TRACE,Update_Prediction_Table,FUNCTION,"  * UPDATE[%d] - Accepted",i);
     
    369394//                       if (reg_UFPT_UPDATE [context] == reg_UFPT_BOTTOM [context])
    370395                      if ((--reg_UFPT_NB_UPDATE [context])==0)
    371                         switch (reg_EVENT_STATE [context])
    372                           {
    373                           case EVENT_STATE_MISS_FLUSH_UFPT         : reg_EVENT_STATE [context] = EVENT_STATE_UPDATE_CONTEXT; break;
    374                             // impossible to have an update on ufpt and reg_upt_update>reg_upt_top
    375                           case EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT : reg_EVENT_STATE [context] = EVENT_STATE_MISS_FLUSH_UPT ; break;
    376                           case EVENT_STATE_EVENT_FLUSH_UFPT        : reg_EVENT_STATE [context] = EVENT_STATE_OK             ; break;
    377                           case EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT: reg_EVENT_STATE [context] = EVENT_STATE_EVENT_FLUSH_UPT; break;
    378                           default : break;
    379                           }
     396                        {
     397                          switch (reg_EVENT_STATE [context])
     398                            {
     399                            case EVENT_STATE_MISS_FLUSH_UFPT         :
     400                              {
     401                                reg_EVENT_STATE [context] = EVENT_STATE_UPDATE_CONTEXT;
     402//                                 reg_EVENT_SOURCE[context] = EVENT_SOURCE_UFPT;
     403
     404                                break;
     405                              }
     406                              // impossible to have an update on ufpt and reg_upt_update>reg_upt_top
     407                            case EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT : reg_EVENT_STATE [context] = EVENT_STATE_MISS_FLUSH_UPT ; break;
     408                            case EVENT_STATE_EVENT_FLUSH_UFPT        : reg_EVENT_STATE [context] = EVENT_STATE_OK             ; break;
     409                            case EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT: reg_EVENT_STATE [context] = EVENT_STATE_EVENT_FLUSH_UPT; break;
     410                            default : break;
     411                            }
     412                        }
    380413                     
    381414                      log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * Update Fetch Prediction Table");
     
    405438                    {
    406439                      log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * Update Prediction Table");
    407                      
     440                      log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * reg_UPT_UPDATE (before) : %d",reg_UPT_UPDATE [context]);
     441                      log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * reg_EVENT_STATE         : %s",toString(reg_EVENT_STATE [context]).c_str());
     442 
    408443                      // Change state
    409444#ifdef DEBUG_TEST
     
    430465
    431466                      if (ok or ko)
    432                         reg_UPDATE_PREDICTION_TABLE [context][depth]._retire_ok = true;
     467                        {
     468                          reg_UPDATE_PREDICTION_TABLE [context][depth]._retire_ok       = true;
     469                          reg_UPDATE_PREDICTION_TABLE [context][depth]._miss_prediction = ko;
     470                        }
    433471
    434472                      // Have an update, test the state to transiste to the good state
     
    444482                          reg_UPDATE_PREDICTION_TABLE [context][depth]._state = UPDATE_PREDICTION_STATE_END_KO;
    445483
    446                           reg_EVENT_VAL     [context] = true;
    447                           reg_EVENT_UPT_PTR [context] = depth;
     484                          reg_EVENT_VAL      [context] = true;
     485                          reg_EVENT_UPT_PTR  [context] = depth;
     486//                        reg_EVENT_UPT_FULL [context] = 0;
     487//                        reg_EVENT_UPT_FULL        [i] = (not reg_UPT_EMPTY [i] and (bottom == reg_UPT_TOP [i]));
     488
    448489
    449490#ifdef STATISTICS
     
    473514                      // Update pointer
    474515                      //  * if update RAS : update pointer is decreaste until it equal at top pointer
     516                      log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * internal_UPDATE_RAS [%d] : %d",i,internal_UPDATE_RAS [i]);
     517                     
    475518                      if (internal_UPDATE_RAS [i])
    476519                        {
    477520                          // if end_event, restart too bottom, else decrease pointer
    478521                          bool end_event  = (reg_UPT_UPDATE [context] == reg_UPT_TOP [context]);
     522
     523                          log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * end_event               : %d",end_event);
     524                          log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * bottom                  : %d",reg_UPT_BOTTOM[context]);
    479525                         
    480                           reg_UPT_UPDATE [context] = (end_event)?reg_UPT_BOTTOM[context]:(((depth==0)?_param->_size_upt_queue[context]:depth)-1);
    481526                          if (end_event)
    482527                            {
    483 //                               reg_UPT_UPDATE [context] = reg_UPT_BOTTOM[context];
     528                              reg_UPT_UPDATE [context] = (end_event)?reg_UPT_BOTTOM[context]:(((depth==0)?_param->_size_upt_queue[context]:depth)-1);
     529//                            reg_UPT_UPDATE [context] = reg_UPT_BOTTOM[context];
    484530
    485531                              if (reg_EVENT_STATE [context] == EVENT_STATE_EVENT_FLUSH_UPT)
     
    488534                                }
    489535                              else
    490                                 reg_EVENT_STATE [context] = EVENT_STATE_UPDATE_CONTEXT;
     536                                {
     537                                  reg_EVENT_STATE [context] = EVENT_STATE_UPDATE_CONTEXT;
     538//                                   reg_EVENT_SOURCE[context] = EVENT_SOURCE_UPT;
     539                                }
    491540                            }
    492541                          else
     
    497546                      else
    498547                        {
     548                          log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * next update");
     549                         
    499550                          // increase pointer
    500551                          reg_UPT_UPDATE [context] = (depth+1)%_param->_size_upt_queue[context];
     
    502553                     
    503554                      // Free the branch with no accurate ?
    504                       if ( (reg_UPDATE_PREDICTION_TABLE [context][depth]._is_accurate == false) and not ko)
     555                      if ((reg_UPDATE_PREDICTION_TABLE [context][depth]._is_accurate == false) and not ko)
    505556                        reg_IS_ACCURATE [context] = true;
     557
     558                      log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * reg_UPT_UPDATE (after ) : %d",reg_UPT_UPDATE[context]);
     559                      log_printf(TRACE,Update_Prediction_Table,FUNCTION,"      * reg_EVENT_STATE         : %s",toString(reg_EVENT_STATE [context]).c_str());
    506560                    }
    507561                }
     
    513567          reg_UPDATE_PRIORITY = (reg_UPDATE_PRIORITY+1)%_param->_nb_context;
    514568        }
    515 
    516569
    517570        // ===================================================================
     
    533586
    534587              log_printf(TRACE,Update_Prediction_Table,FUNCTION,"  * BRANCH_COMPLETE[%d] - Accepted",i);
    535               log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * context        : %d",context);
    536               log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * depth          : %d",depth);
    537               log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * miss           : %d",miss);
     588              log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * context             : %d",context);
     589              log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * depth               : %d",depth);
     590              log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * miss                : %d",miss);
     591              log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_EVENT_STATE     : %s",toString(reg_EVENT_STATE [context]).c_str());
    538592             
    539593              if (miss)
     
    546600                  event_state_t event_state         = reg_EVENT_STATE [context];
    547601                  upt_state_t   event_top           = reg_UPDATE_PREDICTION_TABLE [context][top]._state;
     602
     603                  log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * event_top           : %s",toString(event_top).c_str());
     604
    548605                  bool          previous_ufpt_event = ((event_state == EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT ) or
    549606                                                       (event_state == EVENT_STATE_MISS_FLUSH_UFPT         ) or
     
    551608                                                       (event_state == EVENT_STATE_EVENT_FLUSH_UFPT        ));
    552609
    553                   bool          previous_upt_event  = ((event_state == EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT ) or
    554                                                        (event_state == EVENT_STATE_MISS_FLUSH_UPT          ) or
    555                                                        (event_state == EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT) or
    556                                                        (event_state == EVENT_STATE_EVENT_FLUSH_UPT         ) or
    557                                                        (event_top   == UPDATE_PREDICTION_STATE_END_KO      ) or
    558                                                        (event_top   == UPDATE_PREDICTION_STATE_KO          )
    559 //                                                   (event_state == EVENT_STATE_WAIT_END_EVENT          ) or
    560 //                                                   ((event_state == EVENT_STATE_UPDATE_CONTEXT         ) and
    561 //                                                    (reg_EVENT_SOURCE [context] == EVENT_SOURCE_UPT))
    562                                                   );
     610                  bool          previous_upt_event  = (false
     611                                                       or  (event_state == EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT )
     612                                                       or  (event_state == EVENT_STATE_MISS_FLUSH_UPT          )
     613                                                       or  (event_state == EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT)
     614                                                       or  (event_state == EVENT_STATE_EVENT_FLUSH_UPT         )
     615                                                       or  (event_top   == UPDATE_PREDICTION_STATE_END_KO      )
     616                                                       or  (event_top   == UPDATE_PREDICTION_STATE_KO          )
     617//                                                     or  (event_state == EVENT_STATE_WAIT_END_EVENT          )
     618//                                                        or ((event_state == EVENT_STATE_UPDATE_CONTEXT          )
     619//                                                            and (reg_EVENT_SOURCE [context] == EVENT_SOURCE_UPT))
     620                                                       );
    563621//                bool          update_ras     = (new_update != depth);
    564622
     
    568626                  log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * previous_upt_event  : %d",previous_upt_event);
    569627                  log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * previous_ufpt_event : %d",previous_ufpt_event);
    570 
     628                  log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_UPT_UPDATE      : %d",reg_UPT_UPDATE [context]);
     629                         
    571630                  // Have a miss !!!
    572631                  // Flush UPFT
    573                   flush_UFPT [context] = not previous_ufpt_event;
     632                  flush_UFPT [context] |= not previous_ufpt_event;
    574633                 
    575634                  if (reg_UPDATE_PREDICTION_TABLE [context][depth]._state == UPDATE_PREDICTION_STATE_WAIT_END)
     
    587646                      reg_UPT_TOP       [context] = depth;
    588647//                    reg_UPT_TOP_EVENT [context] = top;
    589 
     648                     
    590649                      if (not previous_upt_event)
    591650                        {
     
    604663                                // Have already update predictor
    605664                                reg_UPDATE_PREDICTION_TABLE [context][top]._state = UPDATE_PREDICTION_STATE_END;
     665                                reg_UPT_UPDATE              [context] = new_update;
    606666                                break;
    607667                              }
     
    649709                          }
    650710                        }
    651                       reg_EVENT_SOURCE          [context] = EVENT_SOURCE_UPT;
     711//                       reg_EVENT_SOURCE          [context] = EVENT_SOURCE_UPT;
    652712                     
    653713                      // else no update
    654714                     
     715                      reg_EVENT_IS_BRANCH       [context] = true;
    655716                      reg_EVENT_DEPTH           [context] = depth;
    656717                      reg_EVENT_ADDRESS_SRC     [context] = address_src; // delay_slot is compute in Context_State
     
    675736                }
    676737
     738              log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_EVENT_STATE     : %s",toString(reg_EVENT_STATE [context]).c_str());
     739
    677740              // In all case : update good_take
    678741              reg_UPDATE_PREDICTION_TABLE [context][depth]._good_take    = good_take;
     
    686749                reg_UPDATE_PREDICTION_TABLE [context][depth]._address_dest = good_addr;
    687750            }
     751
    688752
    689753        // ===================================================================
     
    779843                   
    780844                    // Flush UPT
    781                     Tdepth_t depth      = (_param->_have_port_depth)?PORT_READ(in_EVENT_DEPTH [i]):0;
    782                     uint32_t top        = reg_UPT_TOP    [i];
    783                     uint32_t bottom     = reg_UPT_BOTTOM [i];
    784                     uint32_t new_update = ((top==0)?_param->_size_upt_queue[i]:top)-1;
    785 //                     bool     empty      = reg_UPT_EMPTY [i];
    786 
     845                    uint32_t bottom = reg_UPT_BOTTOM [i];
     846
     847                    log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * bottom     : %d",bottom);
     848
     849//                     event_state_t event_state         = reg_EVENT_STATE [i];
     850//                     bool          previous_update_ras = ((event_state == EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT ) or
     851//                                                          (event_state == EVENT_STATE_MISS_FLUSH_UPT          ) or
     852//                                                          (event_state == EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT) or
     853//                                                          (event_state == EVENT_STATE_EVENT_FLUSH_UPT));
     854
     855                    bool     find   = false; // have slot to update ???
     856                    Tdepth_t top    = bottom;
     857                    Tdepth_t update = bottom;
     858                    bool     empty  = reg_UPT_EMPTY [i];
     859
     860                    // flush all slot, because this event is in head of rob
     861                    for (uint32_t j=0; j<_param->_size_upt_queue[i]; ++j)
     862                      {
     863                        Tdepth_t x = (bottom+j)%_param->_size_upt_queue[i];
     864                       
     865                        if ((reg_UPDATE_PREDICTION_TABLE [i][x]._state != UPDATE_PREDICTION_STATE_END) and
     866                            (reg_UPDATE_PREDICTION_TABLE [i][x]._state != UPDATE_PREDICTION_STATE_EMPTY))
     867                          {
     868                            find = true; // find a not empty slot
     869                            reg_UPDATE_PREDICTION_TABLE [i][x]._state = UPDATE_PREDICTION_STATE_EVENT;
     870                            reg_UPDATE_PREDICTION_TABLE [i][x]._retire_ok = false;
     871                            update = x;
     872                          }
     873
     874                        if (reg_UPDATE_PREDICTION_TABLE [i][x]._state != UPDATE_PREDICTION_STATE_EMPTY)
     875                          top = x+1;
     876                      }
     877
     878                    top = top%_param->_size_upt_queue[i];
     879
     880                    log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * find       : %d",find);
    787881                    log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * top        : %d",top);
    788                     log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * depth      : %d",depth);
    789                     log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * new_update : %d",new_update);
    790 
    791                     event_state_t event_state         = reg_EVENT_STATE [i];
    792                     bool          previous_update_ras = ((event_state == EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT ) or
    793                                                          (event_state == EVENT_STATE_MISS_FLUSH_UPT          ) or
    794                                                          (event_state == EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT) or
    795                                                          (event_state == EVENT_STATE_EVENT_FLUSH_UPT));
    796 
    797                     bool     find = false; // have slot to update ???
    798                     Tdepth_t depth_new = depth;
    799 
    800                     // flush all slot after the event
    801                     for (uint32_t j=(depth+1)%_param->_size_upt_queue[i];
    802                          j!=top;
    803                          j=(j+1)%_param->_size_upt_queue[i])
    804                       if ((reg_UPDATE_PREDICTION_TABLE [i][j]._state != UPDATE_PREDICTION_STATE_END) and
    805                           (reg_UPDATE_PREDICTION_TABLE [i][j]._state != UPDATE_PREDICTION_STATE_EMPTY))
    806                         {
    807                           find = true;
    808                           reg_UPDATE_PREDICTION_TABLE [i][j]._state = UPDATE_PREDICTION_STATE_EVENT;
    809                           reg_UPDATE_PREDICTION_TABLE [i][j]._retire_ok = false;
    810                         }
    811                       else
    812                         if (not find) // while state == end or empty
    813                           depth_new ++;
    814                    
    815                     if ((reg_UPDATE_PREDICTION_TABLE [i][depth]._state != UPDATE_PREDICTION_STATE_END) and
    816                         (reg_UPDATE_PREDICTION_TABLE [i][depth]._state != UPDATE_PREDICTION_STATE_EMPTY))
    817                       {
    818                         find = true;
    819                         reg_UPDATE_PREDICTION_TABLE [i][depth]._state = UPDATE_PREDICTION_STATE_EVENT;
    820                         reg_UPDATE_PREDICTION_TABLE [i][depth]._retire_ok = false;
    821 
    822                       }
    823                     else
    824                       // while state == end or empty
    825                       depth = (depth_new+1)%_param->_size_upt_queue[i];
    826 
    827                     log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * find       : %d",find);
    828                     log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * depth_new  : %d",depth_new);
    829882                   
    830883                    // Test if have update slot
    831884                    if (find)
    832885                      {
    833 //                         // flush all slot after the event
    834 //                         for (uint32_t j=(depth+1)%_param->_size_upt_queue[i];
    835 //                              j!=top;
    836 //                              j=(j+1)%_param->_size_upt_queue[i])
    837 //                           reg_UPDATE_PREDICTION_TABLE [i][j]._state = UPDATE_PREDICTION_STATE_EVENT;
    838 
    839 //                         reg_UPDATE_PREDICTION_TABLE [i][depth]._state = UPDATE_PREDICTION_STATE_EVENT;
    840                        
    841                         // reg_UPT_BOTTOM    [i];
    842886                        // TODO : special case : event is an exception on branch, also depth is not valid
    843                         reg_UPT_TOP       [i] = depth; // depth is again valid
     887                        reg_UPT_TOP       [i] = top; // depth is again valid
    844888                        reg_UPT_TOP_EVENT [i] = top;
    845889                       
     
    847891                          reg_UPT_EMPTY [i] = true;
    848892                      }
    849 
    850                     bool     full       = ((depth == top) and (top == bottom) and not reg_UPT_EMPTY [i]);
    851                     bool     update_ras = find and ((top != depth) or full);
    852                    
    853                     log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * update_ras : %d",update_ras);
    854                    
    855                     if (not previous_update_ras and update_ras)
    856                       reg_UPT_UPDATE [i]  = new_update;
     893                    reg_UPT_UPDATE [i]  = update;
    857894             
    858895                    // new state :
     
    862899                    //            * ok : nothing
    863900                    //            * ko : flush upt
    864                     reg_EVENT_VAL     [i] = true;
    865                     reg_EVENT_UPT_PTR [i] = depth;
    866 
     901                    reg_EVENT_VAL             [i] = find;
     902                    reg_EVENT_IS_BRANCH       [i] = false;
     903                    reg_EVENT_UPT_PTR         [i] = top;
     904                    reg_EVENT_UPT_FULL        [i] = (not empty and (bottom == reg_UPT_TOP [i]));
     905                    reg_EVENT_DEPTH           [i] = top;
     906//                  reg_EVENT_ADDRESS_SRC     [i] = address_src; // delay_slot is compute in I_State
     907//                  reg_EVENT_ADDRESS_DEST_VAL[i] = good_take;
     908//                  reg_EVENT_ADDRESS_DEST    [i] = good_addr;
     909
     910                    log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_UPT_BOTTOM                   : %d",reg_UPT_BOTTOM          [i]);
     911                    log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_UPT_TOP                      : %d",reg_UPT_TOP             [i]);
     912                    log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_UPT_EMPTY                    : %d",reg_UPT_EMPTY           [i]);
     913
     914                    log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_EVENT_VAL                    : %d",reg_EVENT_VAL           [i]);
     915                    log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_EVENT_UPT_PTR                : %d",reg_EVENT_UPT_PTR       [i]);
     916                    log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_EVENT_UPT_FULL               : %d",reg_EVENT_UPT_FULL      [i]);
    867917                    log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_UFPT_NB_NEED_UPDATE          : %d",reg_UFPT_NB_NEED_UPDATE [i]);
    868 //                     if (reg_UFPT_NB_NEED_UPDATE [i] > 0)
     918                    log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_UFPT_NB_UPDATE               : %d",reg_UFPT_NB_UPDATE      [i]);
     919
    869920                    if ( (reg_UFPT_NB_NEED_UPDATE [i] > 0) or
    870921                         (reg_UFPT_NB_UPDATE      [i] > 0))
    871922                      {
    872                         if (update_ras)
     923                        if (find)
    873924                          {
    874                             log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT (branch_complete - miss)",i);
     925                            log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT (event - find)",i);
    875926                            reg_EVENT_STATE [i] = EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT;
    876927                          }
    877928                        else
    878929                          {
    879                             log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UFPT (branch_complete - miss)",i);
     930                            log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UFPT (event - not find)",i);
     931//                          reg_EVENT_VAL   [i] = false;
     932
    880933                            reg_EVENT_STATE [i] = EVENT_STATE_EVENT_FLUSH_UFPT;
    881934                          }                         
     
    883936                    else
    884937                      {
    885 //                         if (not previous_update_ras)
    886                         if (update_ras)
     938                        if (find)
    887939                          {
    888940                            // have ras prediction ?
    889                             log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UPT (branch_complete - miss)",i);
     941                            log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UPT (event - find)",i);
    890942                           
    891943                            reg_EVENT_STATE [i] = EVENT_STATE_EVENT_FLUSH_UPT;
     
    894946                          {
    895947                            // special case : nothing
    896                             reg_EVENT_VAL     [i] = false;
     948                            log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UPT (event - not find)",i);
     949
     950//                          reg_EVENT_VAL     [i] = false;
    897951
    898952                            reg_EVENT_STATE [i] = EVENT_STATE_OK;
     
    902956                    // else no update
    903957                   
    904                     reg_EVENT_DEPTH           [i] = depth;
    905 //                  reg_EVENT_ADDRESS_SRC     [i] = address_src; // delay_slot is compute in I_State
    906 //                  reg_EVENT_ADDRESS_DEST_VAL[i] = good_take;
    907 //                  reg_EVENT_ADDRESS_DEST    [i] = good_addr;
     958//                     Tdepth_t depth      = (_param->_have_port_depth)?PORT_READ(in_EVENT_DEPTH [i]):0;
     959//                     uint32_t top        = reg_UPT_TOP    [i];
     960//                     uint32_t bottom     = reg_UPT_BOTTOM [i];
     961//                     uint32_t new_update = ((top==0)?_param->_size_upt_queue[i]:top)-1;
     962// //                     bool     empty      = reg_UPT_EMPTY [i];
     963
     964//                     log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * top        : %d",top);
     965//                     log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * depth      : %d",depth);
     966//                     log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * new_update : %d",new_update);
     967
     968//                     event_state_t event_state         = reg_EVENT_STATE [i];
     969//                     bool          previous_update_ras = ((event_state == EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT ) or
     970//                                                          (event_state == EVENT_STATE_MISS_FLUSH_UPT          ) or
     971//                                                          (event_state == EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT) or
     972//                                                          (event_state == EVENT_STATE_EVENT_FLUSH_UPT));
     973
     974//                     bool     find = false; // have slot to update ???
     975//                     Tdepth_t depth_new = depth;
     976
     977//                     // flush all slot, because this event is in head of rob
     978//                     for (uint32_t j=(depth+1)%_param->_size_upt_queue[i];
     979//                          //uint32_t j=bottom;
     980//                          j!=top;
     981//                          j=(j+1)%_param->_size_upt_queue[i])
     982//                       if ((reg_UPDATE_PREDICTION_TABLE [i][j]._state != UPDATE_PREDICTION_STATE_END) and
     983//                           (reg_UPDATE_PREDICTION_TABLE [i][j]._state != UPDATE_PREDICTION_STATE_EMPTY))
     984//                         {
     985//                           find = true;
     986//                           reg_UPDATE_PREDICTION_TABLE [i][j]._state = UPDATE_PREDICTION_STATE_EVENT;
     987//                           reg_UPDATE_PREDICTION_TABLE [i][j]._retire_ok = false;
     988//                         }
     989//                       else
     990//                         if (not find) // while state == end or empty
     991//                           depth_new ++;
     992                   
     993//                     if ((reg_UPDATE_PREDICTION_TABLE [i][depth]._state != UPDATE_PREDICTION_STATE_END) and
     994//                         (reg_UPDATE_PREDICTION_TABLE [i][depth]._state != UPDATE_PREDICTION_STATE_EMPTY))
     995//                       {
     996//                         find = true;
     997//                         reg_UPDATE_PREDICTION_TABLE [i][depth]._state = UPDATE_PREDICTION_STATE_EVENT;
     998//                         reg_UPDATE_PREDICTION_TABLE [i][depth]._retire_ok = false;
     999
     1000//                       }
     1001//                     else
     1002//                       // while state == end or empty
     1003//                       depth = (depth_new+1)%_param->_size_upt_queue[i];
     1004
     1005//                     log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * find       : %d",find);
     1006//                     log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * depth_new  : %d",depth_new);
     1007                   
     1008//                     // Test if have update slot
     1009//                     if (find)
     1010//                       {
     1011// //                         // flush all slot after the event
     1012// //                         for (uint32_t j=(depth+1)%_param->_size_upt_queue[i];
     1013// //                              j!=top;
     1014// //                              j=(j+1)%_param->_size_upt_queue[i])
     1015// //                           reg_UPDATE_PREDICTION_TABLE [i][j]._state = UPDATE_PREDICTION_STATE_EVENT;
     1016
     1017// //                         reg_UPDATE_PREDICTION_TABLE [i][depth]._state = UPDATE_PREDICTION_STATE_EVENT;
     1018                       
     1019//                         // reg_UPT_BOTTOM    [i];
     1020//                         // TODO : special case : event is an exception on branch, also depth is not valid
     1021//                         reg_UPT_TOP       [i] = depth; // depth is again valid
     1022//                         reg_UPT_TOP_EVENT [i] = top;
     1023                       
     1024//                         if (bottom == reg_UPT_TOP [i])
     1025//                           reg_UPT_EMPTY [i] = true;
     1026//                       }
     1027
     1028//                     bool     full       = ((depth == top) and (top == bottom) and not reg_UPT_EMPTY [i]);
     1029//                     bool     update_ras = find and ((top != depth) or full);
     1030                   
     1031//                     log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * update_ras : %d",update_ras);
     1032                   
     1033//                     if (not previous_update_ras and update_ras)
     1034//                       reg_UPT_UPDATE [i]  = new_update;
     1035             
     1036//                     // new state :
     1037//                     //   * test if ufpt is empty
     1038//                     //     * ok : flush upft and upt
     1039//                     //     * ko : test if have previous flush upt
     1040//                     //            * ok : nothing
     1041//                     //            * ko : flush upt
     1042//                     reg_EVENT_VAL     [i] = update_ras;
     1043//                     reg_EVENT_UPT_PTR [i] = depth;
     1044
     1045//                     log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_UFPT_NB_NEED_UPDATE          : %d",reg_UFPT_NB_NEED_UPDATE [i]);
     1046// //                     if (reg_UFPT_NB_NEED_UPDATE [i] > 0)
     1047//                     if ( (reg_UFPT_NB_NEED_UPDATE [i] > 0) or
     1048//                          (reg_UFPT_NB_UPDATE      [i] > 0))
     1049//                       {
     1050//                         if (update_ras)
     1051//                           {
     1052//                             log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT (branch_complete - miss)",i);
     1053//                             reg_EVENT_STATE [i] = EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT;
     1054//                           }
     1055//                         else
     1056//                           {
     1057//                             log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UFPT (branch_complete - miss)",i);
     1058// //                          reg_EVENT_VAL   [i] = false;
     1059
     1060//                             reg_EVENT_STATE [i] = EVENT_STATE_EVENT_FLUSH_UFPT;
     1061//                           }                         
     1062//                       }
     1063//                     else
     1064//                       {
     1065// //                         if (not previous_update_ras)
     1066//                         if (update_ras)
     1067//                           {
     1068//                             // have ras prediction ?
     1069//                             log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UPT (branch_complete - miss)",i);
     1070                           
     1071//                             reg_EVENT_STATE [i] = EVENT_STATE_EVENT_FLUSH_UPT;
     1072//                           }
     1073//                         else
     1074//                           {
     1075//                             // special case : nothing
     1076// //                          reg_EVENT_VAL     [i] = false;
     1077
     1078//                             reg_EVENT_STATE [i] = EVENT_STATE_OK;
     1079//                           }
     1080//                       }
     1081
     1082//                     // else no update
     1083                   
     1084//                     reg_EVENT_DEPTH           [i] = depth;
     1085// //                  reg_EVENT_ADDRESS_SRC     [i] = address_src; // delay_slot is compute in I_State
     1086// //                  reg_EVENT_ADDRESS_DEST_VAL[i] = good_take;
     1087// //                  reg_EVENT_ADDRESS_DEST    [i] = good_addr;
    9081088
    9091089                    break;
     
    9941174        log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_EVENT_VAL             : %d"  ,reg_EVENT_VAL             [i]);
    9951175        log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_EVENT_UPT_PTR         : %d"  ,reg_EVENT_UPT_PTR         [i]);
     1176        log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_EVENT_UPT_FULL        : %d"  ,reg_EVENT_UPT_FULL        [i]);
    9961177        log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_EVENT_STATE           : %s"  ,toString(reg_EVENT_STATE [i]).c_str());
    997         log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_EVENT_SOURCE          : %s"  ,toString(reg_EVENT_SOURCE[i]).c_str());
     1178        log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_EVENT_IS_BRANCH       : %d"  ,reg_EVENT_IS_BRANCH       [i]);
    9981179        log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_EVENT_DEPTH           : %d"  ,reg_EVENT_DEPTH           [i]);
    9991180        log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * reg_EVENT_ADDRESS_SRC     : %.8x (%.8x)",reg_EVENT_ADDRESS_SRC     [i],reg_EVENT_ADDRESS_SRC     [i]<<2);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/src/Prediction_unit_allocation.cpp

    r111 r112  
    4545                                                         ,IN
    4646                                                         ,SOUTH,
    47                                                          "Generalist interface"
     47                                                         _("Generalist interface")
    4848#endif
    4949                                                         );
     
    5656    {
    5757      {
    58         ALLOC1_INTERFACE("predict",IN,SOUTH,"Interface with ifetch unit",_param->_nb_context);
     58        ALLOC1_INTERFACE_BEGIN("predict",IN,SOUTH,_("Interface with ifetch unit"),_param->_nb_context);
    5959       
    6060        ALLOC1_VALACK_IN ( in_PREDICT_VAL                        ,VAL);
     
    6868        ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t    ,_param->_size_branch_state);
    6969        ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t  ,_param->_size_depth);
     70
     71        ALLOC1_INTERFACE_END(_param->_nb_context);
    7072      }
    7173      {
    72         ALLOC2_INTERFACE("predict",IN,SOUTH,"Interface with ifetch unit",_param->_nb_context,_param->_nb_instruction[it1]);
     74        ALLOC2_INTERFACE_BEGIN("predict",IN,SOUTH,_("Interface with ifetch unit"),_param->_nb_context,_param->_nb_instruction[it1]);
     75
    7376        _ALLOC2_SIGNAL_OUT(out_PREDICT_INSTRUCTION_ENABLE         ,"instruction_enable"         ,Tcontrol_t         ,1,_param->_nb_context,_param->_nb_instruction[it1]);
     77
     78        ALLOC2_INTERFACE_END(_param->_nb_context,_param->_nb_instruction[it1]);
    7479      }
    7580    }
     
    7883    {
    7984      {
    80         ALLOC2_INTERFACE("decod",IN,SOUTH,"Interface with decod unit",_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);
     85        ALLOC2_INTERFACE_BEGIN("decod",IN,SOUTH,_("Interface with decod unit"),_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);
    8186       
    8287        _ALLOC2_VALACK_IN ( in_DECOD_VAL                        ,VAL,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);
     
    9196        _ALLOC2_SIGNAL_IN ( in_DECOD_ADDRESS_DEST               ,"address_dest"               ,Taddress_t         ,_param->_size_address         ,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);
    9297        _ALLOC2_SIGNAL_OUT(out_DECOD_CAN_CONTINUE               ,"can_continue"               ,Tcontrol_t         ,1                             ,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);
     98
     99
     100        ALLOC2_INTERFACE_END(_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);
    93101      }
    94102    }
     
    96104    // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    97105    {
    98       ALLOC1_INTERFACE("branch_complete", IN,SOUTH, "branch_complete", _param->_nb_inst_branch_complete);
     106      ALLOC1_INTERFACE_BEGIN("branch_complete", IN,SOUTH, _("branch_complete"), _param->_nb_inst_branch_complete);
    99107     
    100108      ALLOC1_VALACK_IN ( in_BRANCH_COMPLETE_VAL            ,VAL);
     
    108116//       ALLOC1_SIGNAL_OUT(out_BRANCH_COMPLETE_ADDRESS_SRC    ,"address_src"    ,Taddress_t,_param->_size_address);
    109117//       ALLOC1_SIGNAL_OUT(out_BRANCH_COMPLETE_ADDRESS_DEST   ,"address_dest"   ,Taddress_t,_param->_size_address);
     118
     119      ALLOC1_INTERFACE_END(_param->_nb_inst_branch_complete);
    110120    }
    111121
    112122    // ~~~~~[ Interface : "branch_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    113123    {
    114       ALLOC1_INTERFACE("branch_event", IN,SOUTH, "branch_event", _param->_nb_context);
     124      ALLOC1_INTERFACE_BEGIN("branch_event", IN,SOUTH, _("branch_event"), _param->_nb_context);
    115125     
    116126      ALLOC1_VALACK_OUT(out_BRANCH_EVENT_VAL              ,VAL);
     
    122132      ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_ADDRESS_DEST_VAL ,"address_dest_val",Tcontrol_t,1);
    123133      ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_ADDRESS_DEST     ,"address_dest"    ,Taddress_t,_param->_size_address);
     134
     135      ALLOC1_INTERFACE_END(_param->_nb_context);
    124136    }
    125137
    126138    // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
    127139    {
    128       ALLOC1_INTERFACE("depth",OUT,SOUTH,"Interface with depth",_param->_nb_context);
     140      ALLOC1_INTERFACE_BEGIN("depth",OUT,SOUTH,_("Interface with depth"),_param->_nb_context);
    129141
    130142      ALLOC1_SIGNAL_OUT(out_DEPTH_VAL          ,"val"          ,Tcontrol_t,1);
     
    133145      ALLOC1_SIGNAL_OUT(out_DEPTH_MAX          ,"max"          ,Tdepth_t  ,_param->_size_depth);
    134146      ALLOC1_SIGNAL_OUT(out_DEPTH_FULL         ,"full"         ,Tcontrol_t,1);
     147
     148      ALLOC1_INTERFACE_END(_param->_nb_context);
    135149    }
    136150
    137151    // ~~~~~[ Interface : "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    138152    {
    139       ALLOC1_INTERFACE("event", IN,SOUTH,"event", _param->_nb_context);
     153      ALLOC1_INTERFACE_BEGIN("event", IN,SOUTH,_("event"), _param->_nb_context);
    140154
    141155      ALLOC1_VALACK_IN ( in_EVENT_VAL    ,VAL);
     
    143157      ALLOC1_SIGNAL_IN ( in_EVENT_TYPE   ,"type" ,Tevent_type_t ,_param->_size_event_type );
    144158      ALLOC1_SIGNAL_IN ( in_EVENT_DEPTH  ,"depth",Tdepth_t      ,_param->_size_depth      );
     159
     160      ALLOC1_INTERFACE_END(_param->_nb_context);
    145161    }
    146162
     
    421437          COMPONENT_MAP(_component,src , "in_UPDATE_"+toString(i)+    "_DIRECTION",
    422438                                   dest,"out_UPDATE_"+toString(i)+    "_DIRECTION_GOOD");
    423          
     439          COMPONENT_MAP(_component,src , "in_UPDATE_"+toString(i)+    "_PREDICTION_IFETCH",
     440                                   dest,"out_UPDATE_"+toString(i)+    "_PREDICTION_IFETCH");
    424441        }
    425442    }
     
    532549                                   dest,"out_UPDATE_"+toString(i)+    "_MISS_PREDICTION"  );
    533550          COMPONENT_MAP(_component,src , "in_UPDATE_"+toString(i)+    "_PREDICTION_IFETCH",
    534                                    dest,"out_UPDATE_"+toString(i)+"_RAS_PREDICTION_IFETCH");
     551                                   dest,"out_UPDATE_"+toString(i)+    "_PREDICTION_IFETCH");
    535552        }
    536553    }
     
    656673          //in_UPDATE_UPT_RAS_FLUSH             - component_map return_address_stack
    657674          //in_UPDATE_UPT_RAS_INDEX             - component_map return_address_stack
    658           //in_UPDATE_UPT_RAS_PREDICTION_IFETCH - component_map return_address_stack
     675          //in_UPDATE_UPT_PREDICTION_IFETCH     - component_map return_address_stack, direction
    659676        }
    660677
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/src/Front_end_allocation.cpp

    r111 r112  
    5858    // ~~~~~[ Interface "icache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC1_INTERFACE("icache_req",OUT, WEST, _("Instruction cache request."),_param->_nb_context);
     60      ALLOC1_INTERFACE_BEGIN("icache_req",OUT, WEST, _("Instruction cache request."),_param->_nb_context);
    6161
    6262      ALLOC1_VALACK_OUT (out_ICACHE_REQ_VAL                   ,VAL);
     
    6666      ALLOC1_SIGNAL_OUT (out_ICACHE_REQ_ADDRESS               ,"address"          ,Ticache_instruction_t,_param->_size_instruction_address              );
    6767      ALLOC1_SIGNAL_OUT (out_ICACHE_REQ_TYPE                  ,"type"             ,Ticache_type_t       ,_param->_size_icache_type          );
     68
     69      ALLOC1_INTERFACE_END(_param->_nb_context);
    6870    }
    6971
    7072    // ~~~~~[ Interface "icache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7173    {
    72       ALLOC1_INTERFACE("icache_rsp",IN , WEST, _("Instruction cache respons."),_param->_nb_context);
     74      ALLOC1_INTERFACE_BEGIN("icache_rsp",IN , WEST, _("Instruction cache respons."),_param->_nb_context);
    7375
    7476      ALLOC1_VALACK_IN  ( in_ICACHE_RSP_VAL                   ,VAL);
     
    7779      ALLOC1_SIGNAL_IN  ( in_ICACHE_RSP_PACKET_ID             ,"packet_id"        ,Tpacket_t            ,_param->_size_ifetch_queue_ptr     );
    7880      ALLOC1_SIGNAL_IN  ( in_ICACHE_RSP_ERROR                 ,"error"            ,Ticache_error_t      ,_param->_size_icache_error         );
    79     }
    80     {
    81       ALLOC2_INTERFACE("icache_rsp",IN , WEST, "Instruction cache respons.",_param->_nb_context,_param->_nb_inst_fetch[it1]);
     81
     82      ALLOC1_INTERFACE_END(_param->_nb_context);
     83    }
     84    {
     85      ALLOC2_INTERFACE_BEGIN("icache_rsp",IN , WEST, _("Instruction cache respons."),_param->_nb_context,_param->_nb_inst_fetch[it1]);
    8286
    8387      _ALLOC2_SIGNAL_IN ( in_ICACHE_RSP_INSTRUCTION           ,"instruction"      ,Ticache_instruction_t,_param->_size_instruction ,_param->_nb_context,_param->_nb_inst_fetch[it1]);
    84     }
    85 
     88
     89      ALLOC2_INTERFACE_END(_param->_nb_context,_param->_nb_inst_fetch[it1]);
     90    }
    8691
    8792    // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8893    {
    89       ALLOC1_INTERFACE("decod",OUT,EAST,_("Decoded instruction, send to ooo_engine"),_param->_sum_inst_decod);
     94      ALLOC1_INTERFACE_BEGIN("decod",OUT,EAST,_("Decoded instruction, send to ooo_engine"),_param->_sum_inst_decod);
    9095
    9196      ALLOC1_VALACK_OUT (out_DECOD_VAL                        , VAL);
     
    115120      ALLOC1_SIGNAL_OUT (out_DECOD_EXCEPTION_USE              ,"EXCEPTION_USE"    ,Texception_t         ,_param->_size_exception_use         );
    116121      ALLOC1_SIGNAL_OUT (out_DECOD_EXCEPTION                  ,"EXCEPTION"        ,Texception_t         ,_param->_size_exception             );
     122
     123      ALLOC1_INTERFACE_END(_param->_sum_inst_decod);
    117124    }
    118125   
    119126    // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    120127    {
    121       ALLOC1_INTERFACE("branch_complete",IN,EAST,_("Branch commit"),_param->_nb_inst_branch_complete);
     128      ALLOC1_INTERFACE_BEGIN("branch_complete",IN,EAST,_("Branch commit"),_param->_nb_inst_branch_complete);
    122129
    123130      ALLOC1_VALACK_IN  ( in_BRANCH_COMPLETE_VAL              , VAL);
     
    128135      ALLOC1_SIGNAL_IN  ( in_BRANCH_COMPLETE_NO_SEQUENCE      ,"NO_SEQUENCE"      ,Tcontrol_t           ,1                       );
    129136      ALLOC1_SIGNAL_OUT (out_BRANCH_COMPLETE_MISS_PREDICTION  ,"MISS_PREDICTION"  ,Tcontrol_t           ,1                       );
     137
     138      ALLOC1_INTERFACE_END(_param->_nb_inst_branch_complete);
    130139    }
    131140
    132141   // ~~~~~[ Interface : "commit_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    133142    {
    134       ALLOC_INTERFACE("commit_event",IN,EAST,_("Out Of Order engine have an event"));
    135 
    136       ALLOC_VALACK_IN   ( in_COMMIT_EVENT_VAL                 , VAL);
    137       ALLOC_VALACK_OUT  (out_COMMIT_EVENT_ACK                 , ACK);
    138       ALLOC_SIGNAL_IN   ( in_COMMIT_EVENT_CONTEXT_ID          ,"CONTEXT_ID"       ,Tcontext_t           ,_param->_size_context_id);
    139       ALLOC_SIGNAL_IN   ( in_COMMIT_EVENT_DEPTH               ,"DEPTH"            ,Tdepth_t             ,_param->_size_depth     );
    140       ALLOC_SIGNAL_IN   ( in_COMMIT_EVENT_TYPE                ,"TYPE"             ,Tevent_type_t        ,_param->_size_event_type);
    141       ALLOC_SIGNAL_IN   ( in_COMMIT_EVENT_IS_DELAY_SLOT       ,"IS_DELAY_SLOT"    ,Tcontrol_t           ,1                       );
    142       ALLOC_SIGNAL_IN   ( in_COMMIT_EVENT_ADDRESS             ,"ADDRESS"          ,Taddress_t           ,_param->_size_instruction_address   );
    143       ALLOC_SIGNAL_IN   ( in_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,"ADDRESS_EPCR_VAL" ,Tcontrol_t           ,1                       );
    144       ALLOC_SIGNAL_IN   ( in_COMMIT_EVENT_ADDRESS_EPCR        ,"ADDRESS_EPCR"     ,Taddress_t           ,_param->_size_instruction_address   );
    145       ALLOC_SIGNAL_IN   ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,"ADDRESS_EEAR_VAL" ,Tcontrol_t           ,1                       );
    146       ALLOC_SIGNAL_IN   ( in_COMMIT_EVENT_ADDRESS_EEAR        ,"ADDRESS_EEAR"     ,Tgeneral_data_t      ,_param->_size_general_data          );
     143      ALLOC0_INTERFACE_BEGIN("commit_event",IN,EAST,_("Out Of Order engine have an event"));
     144
     145      ALLOC0_VALACK_IN   ( in_COMMIT_EVENT_VAL                 , VAL);
     146      ALLOC0_VALACK_OUT  (out_COMMIT_EVENT_ACK                 , ACK);
     147      ALLOC0_SIGNAL_IN   ( in_COMMIT_EVENT_CONTEXT_ID          ,"CONTEXT_ID"       ,Tcontext_t           ,_param->_size_context_id);
     148      ALLOC0_SIGNAL_IN   ( in_COMMIT_EVENT_DEPTH               ,"DEPTH"            ,Tdepth_t             ,_param->_size_depth     );
     149      ALLOC0_SIGNAL_IN   ( in_COMMIT_EVENT_TYPE                ,"TYPE"             ,Tevent_type_t        ,_param->_size_event_type);
     150      ALLOC0_SIGNAL_IN   ( in_COMMIT_EVENT_IS_DELAY_SLOT       ,"IS_DELAY_SLOT"    ,Tcontrol_t           ,1                       );
     151      ALLOC0_SIGNAL_IN   ( in_COMMIT_EVENT_ADDRESS             ,"ADDRESS"          ,Taddress_t           ,_param->_size_instruction_address   );
     152      ALLOC0_SIGNAL_IN   ( in_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,"ADDRESS_EPCR_VAL" ,Tcontrol_t           ,1                       );
     153      ALLOC0_SIGNAL_IN   ( in_COMMIT_EVENT_ADDRESS_EPCR        ,"ADDRESS_EPCR"     ,Taddress_t           ,_param->_size_instruction_address   );
     154      ALLOC0_SIGNAL_IN   ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,"ADDRESS_EEAR_VAL" ,Tcontrol_t           ,1                       );
     155      ALLOC0_SIGNAL_IN   ( in_COMMIT_EVENT_ADDRESS_EEAR        ,"ADDRESS_EEAR"     ,Tgeneral_data_t      ,_param->_size_general_data          );
     156
     157      ALLOC0_INTERFACE_END();
    147158    }
    148159
    149160    // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    150161    {
    151       ALLOC1_INTERFACE("event",OUT,EAST,_("Event interface"),_param->_nb_context);
     162      ALLOC1_INTERFACE_BEGIN("event",OUT,EAST,_("Event interface"),_param->_nb_context);
    152163
    153164      ALLOC1_VALACK_OUT (out_EVENT_VAL                        , VAL);
     
    157168      ALLOC1_SIGNAL_OUT (out_EVENT_ADDRESS_NEXT_VAL           ,"ADDRESS_NEXT_VAL" ,Tcontrol_t           ,1                    );
    158169      ALLOC1_SIGNAL_OUT (out_EVENT_IS_DS_TAKE                 ,"IS_DS_TAKE"       ,Tcontrol_t           ,1                    );
     170
     171      ALLOC1_INTERFACE_END(_param->_nb_context);
    159172    }
    160173
    161174    // ~~~~~[ Interface "spr_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    162175    {
    163       ALLOC1_INTERFACE("spr_event",OUT,EAST,_("Event interface with the special registerFile"),_param->_nb_context);
     176      ALLOC1_INTERFACE_BEGIN("spr_event",OUT,EAST,_("Event interface with the special registerFile"),_param->_nb_context);
    164177
    165178      ALLOC1_VALACK_OUT (out_SPR_EVENT_VAL                    , VAL);
     
    170183      ALLOC1_SIGNAL_OUT (out_SPR_EVENT_SR_DSX                 ,"SR_DSX"           ,Tcontrol_t           ,1                );
    171184      ALLOC1_SIGNAL_OUT (out_SPR_EVENT_SR_TO_ESR              ,"SR_TO_ESR"        ,Tcontrol_t           ,1                );
     185
     186      ALLOC1_INTERFACE_END(_param->_nb_context);
    172187    }                                                                                   
    173188
    174189    // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    175190    {
    176       ALLOC1_INTERFACE("nb_inst",IN,EAST,_("Instruction number"),_param->_nb_context);
     191      ALLOC1_INTERFACE_BEGIN("nb_inst",IN,EAST,_("Instruction number"),_param->_nb_context);
    177192
    178193      ALLOC1_SIGNAL_IN  ( in_NB_INST_COMMIT_ALL               ,"COMMIT_ALL"       ,Tcounter_t           ,_param->_size_nb_inst_commit);
    179194      ALLOC1_SIGNAL_IN  ( in_NB_INST_COMMIT_MEM               ,"COMMIT_MEM"       ,Tcounter_t           ,_param->_size_nb_inst_commit);
    180195      ALLOC1_SIGNAL_OUT (out_NB_INST_DECOD_ALL                ,"DECOD_ALL"        ,Tcounter_t           ,_param->_size_nb_inst_decod );
     196
     197      ALLOC1_INTERFACE_END(_param->_nb_context);
    181198    }
    182199
    183200    // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    184201    {
    185       ALLOC1_INTERFACE("depth",OUT,EAST,_("Interface depth"),_param->_nb_context);
     202      ALLOC1_INTERFACE_BEGIN("depth",OUT,EAST,_("Interface depth"),_param->_nb_context);
    186203
    187204      ALLOC1_SIGNAL_OUT (out_DEPTH_MIN                        ,"MIN"              ,Tdepth_t             ,_param->_size_depth);
    188205      ALLOC1_SIGNAL_OUT (out_DEPTH_MAX                        ,"MAX"              ,Tdepth_t             ,_param->_size_depth);
    189206      ALLOC1_SIGNAL_OUT (out_DEPTH_FULL                       ,"FULL"             ,Tcontrol_t           ,1);
     207
     208      ALLOC1_INTERFACE_END(_param->_nb_context);
    190209    }
    191210
    192211    // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
    193212    {
    194       ALLOC1_INTERFACE("spr",IN,EAST,_("Interface with the special registerFile"),_param->_nb_context);
     213      ALLOC1_INTERFACE_BEGIN("spr",IN,EAST,_("Interface with the special registerFile"),_param->_nb_context);
    195214     
    196215      ALLOC1_SIGNAL_IN  ( in_SPR_SR_IEE                       ,"SR_IEE"           ,Tcontrol_t           ,1);
    197216      ALLOC1_SIGNAL_IN  ( in_SPR_SR_EPH                       ,"SR_EPH"           ,Tcontrol_t           ,1);
     217
     218      ALLOC1_INTERFACE_END(_param->_nb_context);
    198219    }
    199220
    200221    // ~~~~~[ Interface : "interrupt" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    201222    {
    202       ALLOC1_INTERFACE("interrupt",IN,NORTH,_("Interrupt Exception"),_param->_nb_context);
     223      ALLOC1_INTERFACE_BEGIN("interrupt",IN,NORTH,_("Interrupt Exception"),_param->_nb_context);
    203224
    204225      ALLOC1_SIGNAL_IN  ( in_INTERRUPT_ENABLE                 ,"ENABLE"           ,Tcontrol_t           ,1);
     226
     227      ALLOC1_INTERFACE_END(_param->_nb_context);
    205228    }
    206229
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/src/Front_end_deallocation.cpp

    r108 r112  
    7676        DELETE1_SIGNAL(out_BRANCH_COMPLETE_MISS_PREDICTION  ,_param->_nb_inst_branch_complete,1                       );
    7777
    78         DELETE_SIGNAL ( in_COMMIT_EVENT_VAL                 , 1);
    79         DELETE_SIGNAL (out_COMMIT_EVENT_ACK                 , 1);
    80         DELETE_SIGNAL ( in_COMMIT_EVENT_CONTEXT_ID          ,_param->_size_context_id);
    81         DELETE_SIGNAL ( in_COMMIT_EVENT_DEPTH               ,_param->_size_depth     );
    82         DELETE_SIGNAL ( in_COMMIT_EVENT_TYPE                ,_param->_size_event_type);
    83         DELETE_SIGNAL ( in_COMMIT_EVENT_IS_DELAY_SLOT       ,1                       );
    84         DELETE_SIGNAL ( in_COMMIT_EVENT_ADDRESS             ,_param->_size_instruction_address   );
    85         DELETE_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,1                       );
    86         DELETE_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EPCR        ,_param->_size_instruction_address   );
    87         DELETE_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,1                       );
    88         DELETE_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EEAR        ,_param->_size_instruction_address   );
     78        DELETE0_SIGNAL( in_COMMIT_EVENT_VAL                 , 1);
     79        DELETE0_SIGNAL(out_COMMIT_EVENT_ACK                 , 1);
     80        DELETE0_SIGNAL( in_COMMIT_EVENT_CONTEXT_ID          ,_param->_size_context_id);
     81        DELETE0_SIGNAL( in_COMMIT_EVENT_DEPTH               ,_param->_size_depth     );
     82        DELETE0_SIGNAL( in_COMMIT_EVENT_TYPE                ,_param->_size_event_type);
     83        DELETE0_SIGNAL( in_COMMIT_EVENT_IS_DELAY_SLOT       ,1                       );
     84        DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS             ,_param->_size_instruction_address   );
     85        DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,1                       );
     86        DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR        ,_param->_size_instruction_address   );
     87        DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,1                       );
     88        DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR        ,_param->_size_instruction_address   );
    8989
    9090        DELETE1_SIGNAL(out_EVENT_VAL                        ,_param->_nb_context, 1);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/SelfTest/src/test.cpp

    r110 r112  
    153153  ALLOC1_SC_SIGNAL(out_BRANCH_COMPLETE_NO_SEQUENCE    ,"out_BRANCH_COMPLETE_NO_SEQUENCE    ",Tcontrol_t        ,_param->_nb_inst_branch_complete);
    154154  ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION," in_BRANCH_COMPLETE_MISS_PREDICTION",Tcontrol_t        ,_param->_nb_inst_branch_complete);
    155   ALLOC_SC_SIGNAL (out_UPDATE_VAL                      ,"out_UPDATE_VAL                      ",Tcontrol_t        );
    156   ALLOC_SC_SIGNAL ( in_UPDATE_ACK                      ," in_UPDATE_ACK                      ",Tcontrol_t        );
    157   ALLOC_SC_SIGNAL (out_UPDATE_CONTEXT_ID               ,"out_UPDATE_CONTEXT_ID               ",Tcontext_t        );
    158   ALLOC_SC_SIGNAL (out_UPDATE_FRONT_END_ID             ,"out_UPDATE_FRONT_END_ID             ",Tcontext_t        );
    159   ALLOC_SC_SIGNAL (out_UPDATE_DEPTH                    ,"out_UPDATE_DEPTH                    ",Tdepth_t          );
    160   ALLOC_SC_SIGNAL (out_UPDATE_TYPE                     ,"out_UPDATE_TYPE                     ",Tevent_type_t     );
    161   ALLOC_SC_SIGNAL (out_UPDATE_IS_DELAY_SLOT            ,"out_UPDATE_IS_DELAY_SLOT            ",Tcontrol_t        );
    162   ALLOC_SC_SIGNAL (out_UPDATE_ADDRESS                  ,"out_UPDATE_ADDRESS                  ",Taddress_t        );
    163   ALLOC_SC_SIGNAL (out_UPDATE_ADDRESS_EPCR_VAL         ,"out_UPDATE_ADDRESS_EPCR_VAL         ",Tcontrol_t        );
    164   ALLOC_SC_SIGNAL (out_UPDATE_ADDRESS_EPCR             ,"out_UPDATE_ADDRESS_EPCR             ",Taddress_t        );
    165   ALLOC_SC_SIGNAL (out_UPDATE_ADDRESS_EEAR_VAL         ,"out_UPDATE_ADDRESS_EEAR_VAL         ",Tcontrol_t        );
    166   ALLOC_SC_SIGNAL (out_UPDATE_ADDRESS_EEAR             ,"out_UPDATE_ADDRESS_EEAR             ",Tgeneral_data_t   );
     155  ALLOC0_SC_SIGNAL(out_UPDATE_VAL                      ,"out_UPDATE_VAL                      ",Tcontrol_t        );
     156  ALLOC0_SC_SIGNAL( in_UPDATE_ACK                      ," in_UPDATE_ACK                      ",Tcontrol_t        );
     157  ALLOC0_SC_SIGNAL(out_UPDATE_CONTEXT_ID               ,"out_UPDATE_CONTEXT_ID               ",Tcontext_t        );
     158  ALLOC0_SC_SIGNAL(out_UPDATE_FRONT_END_ID             ,"out_UPDATE_FRONT_END_ID             ",Tcontext_t        );
     159  ALLOC0_SC_SIGNAL(out_UPDATE_DEPTH                    ,"out_UPDATE_DEPTH                    ",Tdepth_t          );
     160  ALLOC0_SC_SIGNAL(out_UPDATE_TYPE                     ,"out_UPDATE_TYPE                     ",Tevent_type_t     );
     161  ALLOC0_SC_SIGNAL(out_UPDATE_IS_DELAY_SLOT            ,"out_UPDATE_IS_DELAY_SLOT            ",Tcontrol_t        );
     162  ALLOC0_SC_SIGNAL(out_UPDATE_ADDRESS                  ,"out_UPDATE_ADDRESS                  ",Taddress_t        );
     163  ALLOC0_SC_SIGNAL(out_UPDATE_ADDRESS_EPCR_VAL         ,"out_UPDATE_ADDRESS_EPCR_VAL         ",Tcontrol_t        );
     164  ALLOC0_SC_SIGNAL(out_UPDATE_ADDRESS_EPCR             ,"out_UPDATE_ADDRESS_EPCR             ",Taddress_t        );
     165  ALLOC0_SC_SIGNAL(out_UPDATE_ADDRESS_EEAR_VAL         ,"out_UPDATE_ADDRESS_EEAR_VAL         ",Tcontrol_t        );
     166  ALLOC0_SC_SIGNAL(out_UPDATE_ADDRESS_EEAR             ,"out_UPDATE_ADDRESS_EEAR             ",Tgeneral_data_t   );
    167167
    168168  ALLOC2_SC_SIGNAL( in_EVENT_VAL             ," in_EVENT_VAL             ",Tcontrol_t,_param->_nb_front_end,_param->_nb_context[it1]);
     
    304304  INSTANCE1_SC_SIGNAL(_Commit_unit,out_BRANCH_COMPLETE_NO_SEQUENCE    ,_param->_nb_inst_branch_complete);
    305305  INSTANCE1_SC_SIGNAL(_Commit_unit, in_BRANCH_COMPLETE_MISS_PREDICTION,_param->_nb_inst_branch_complete);
    306   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_VAL                      );
    307   INSTANCE_SC_SIGNAL (_Commit_unit, in_UPDATE_ACK                      );
     306  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_VAL                      );
     307  INSTANCE0_SC_SIGNAL(_Commit_unit, in_UPDATE_ACK                      );
    308308  if (_param->_have_port_context_id)
    309   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_CONTEXT_ID               );
     309  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_CONTEXT_ID               );
    310310  if (_param->_have_port_front_end_id)
    311   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_FRONT_END_ID             );
     311  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_FRONT_END_ID             );
    312312  if (_param->_have_port_depth)
    313   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_DEPTH                    );
    314   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_TYPE                     );
    315   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_IS_DELAY_SLOT            );
    316   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_ADDRESS                  );
    317   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_ADDRESS_EPCR_VAL         );
    318   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_ADDRESS_EPCR             );
    319   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_ADDRESS_EEAR_VAL         );
    320   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_ADDRESS_EEAR             );
     313  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_DEPTH                    );
     314  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_TYPE                     );
     315  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_IS_DELAY_SLOT            );
     316  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS                  );
     317  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS_EPCR_VAL         );
     318  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS_EPCR             );
     319  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS_EEAR_VAL         );
     320  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS_EEAR             );
    321321
    322322  INSTANCE2_SC_SIGNAL(_Commit_unit, in_EVENT_VAL                       ,_param->_nb_front_end, _param->_nb_context[it1]);
     
    708708  DELETE1_SC_SIGNAL(out_BRANCH_COMPLETE_NO_SEQUENCE    ,_param->_nb_inst_branch_complete);
    709709  DELETE1_SC_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION,_param->_nb_inst_branch_complete);
    710   DELETE_SC_SIGNAL (out_UPDATE_VAL                      );
    711   DELETE_SC_SIGNAL ( in_UPDATE_ACK                      );
    712   DELETE_SC_SIGNAL (out_UPDATE_CONTEXT_ID               );
    713   DELETE_SC_SIGNAL (out_UPDATE_FRONT_END_ID             );
    714   DELETE_SC_SIGNAL (out_UPDATE_DEPTH                    );
    715   DELETE_SC_SIGNAL (out_UPDATE_TYPE                     );
    716   DELETE_SC_SIGNAL (out_UPDATE_IS_DELAY_SLOT            );
    717   DELETE_SC_SIGNAL (out_UPDATE_ADDRESS                  );
    718   DELETE_SC_SIGNAL (out_UPDATE_ADDRESS_EPCR_VAL         );
    719   DELETE_SC_SIGNAL (out_UPDATE_ADDRESS_EPCR             );
    720   DELETE_SC_SIGNAL (out_UPDATE_ADDRESS_EEAR_VAL         );
    721   DELETE_SC_SIGNAL (out_UPDATE_ADDRESS_EEAR             );
     710  DELETE0_SC_SIGNAL(out_UPDATE_VAL                      );
     711  DELETE0_SC_SIGNAL( in_UPDATE_ACK                      );
     712  DELETE0_SC_SIGNAL(out_UPDATE_CONTEXT_ID               );
     713  DELETE0_SC_SIGNAL(out_UPDATE_FRONT_END_ID             );
     714  DELETE0_SC_SIGNAL(out_UPDATE_DEPTH                    );
     715  DELETE0_SC_SIGNAL(out_UPDATE_TYPE                     );
     716  DELETE0_SC_SIGNAL(out_UPDATE_IS_DELAY_SLOT            );
     717  DELETE0_SC_SIGNAL(out_UPDATE_ADDRESS                  );
     718  DELETE0_SC_SIGNAL(out_UPDATE_ADDRESS_EPCR_VAL         );
     719  DELETE0_SC_SIGNAL(out_UPDATE_ADDRESS_EPCR             );
     720  DELETE0_SC_SIGNAL(out_UPDATE_ADDRESS_EEAR_VAL         );
     721  DELETE0_SC_SIGNAL(out_UPDATE_ADDRESS_EEAR             );
    722722
    723723  DELETE2_SC_SIGNAL( in_EVENT_VAL                       ,_param->_nb_front_end, _param->_nb_context[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Commit_unit.h

    r111 r112  
    238238  private   : Tevent_state_t               ** reg_EVENT_STATE                      ;//[nb_front_end][nb_context]
    239239  private   : bool                         ** reg_EVENT_FLUSH                      ;//[nb_front_end][nb_context]
     240  private   : bool                         ** reg_EVENT_STOP                       ;//[nb_front_end][nb_context]
    240241
    241242//private   : Taddress_t                   ** reg_PC_PREVIOUS                      ;//[nb_front_end][nb_context]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Types.h

    r111 r112  
    3535      ROB_STORE_HEAD_KO              , //
    3636      ROB_OTHER_WAIT_END             , //
    37       ROB_MISS_WAIT_END              , //
     37
     38      ROB_EVENT_WAIT_END             , //
     39
    3840      ROB_END_OK_SPECULATIVE         , //
    3941      ROB_END_OK                     , //
     
    4951      ROB_END_EXCEPTION_UPDATE       , //
    5052      ROB_END_EXCEPTION                //
     53
    5154    } rob_state_t;
    5255
     
    121124      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_HEAD_KO              : return "ROB_STORE_HEAD_KO"               ; break;
    122125      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_OTHER_WAIT_END             : return "ROB_OTHER_WAIT_END"              ; break;
    123       case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_MISS_WAIT_END              : return "ROB_MISS_WAIT_END"               ; break;
     126      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_EVENT_WAIT_END             : return "ROB_EVENT_WAIT_END"              ; break;
    124127      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_OK_SPECULATIVE         : return "ROB_END_OK_SPECULATIVE"          ; break;
    125128      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_OK                     : return "ROB_END_OK"                      ; break;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit.cpp

    r110 r112  
    118118# ifdef SYSTEMCASS_SPECIFIC
    119119        // List dependency information
    120         for (uint32_t i=0; i<_param->_nb_rename_unit; i++)
    121           for (uint32_t j=0; j<_param->_nb_inst_insert[i]; j++)
    122             for (uint32_t x=0; x<_param->_nb_rename_unit; x++)
    123               for (uint32_t y=0; y<_param->_nb_inst_insert[x]; y++)
    124                 {
    125                   (*(out_INSERT_ACK       [i][j])) (*(in_INSERT_VAL [x][y]));
    126                   if (_param->_have_port_rob_ptr)
    127                   (*(out_INSERT_PACKET_ID [i][j])) (*(in_INSERT_VAL [x][y]));
    128                 }
     120//      for (uint32_t i=0; i<_param->_nb_rename_unit; i++)
     121//        for (uint32_t j=0; j<_param->_nb_inst_insert[i]; j++)
     122//          for (uint32_t x=0; x<_param->_nb_rename_unit; x++)
     123//            for (uint32_t y=0; y<_param->_nb_inst_insert[x]; y++)
     124//              {
     125//                (*(out_INSERT_ACK       [i][j])) (*(in_INSERT_VAL [x][y]));
     126//                if (_param->_have_port_rob_ptr)
     127//                (*(out_INSERT_PACKET_ID [i][j])) (*(in_INSERT_VAL [x][y]));
     128//              }
    129129# endif   
    130130
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_allocation.cpp

    r111 r112  
    5858    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC2_INTERFACE("insert", IN, SOUTH, _("Interface with rename_unit."),_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     60      ALLOC2_INTERFACE_BEGIN("insert", IN, SOUTH, _("Interface with rename_unit."),_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    6161
    6262      _ALLOC2_VALACK_IN ( in_INSERT_VAL                     ,VAL,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     
    9696      _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY_OLD      ,"num_reg_re_phy_old"   ,Tspecial_address_t,_param->_size_special_register      ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    9797      _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY_NEW      ,"num_reg_re_phy_new"   ,Tspecial_address_t,_param->_size_special_register      ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     98
     99      ALLOC2_INTERFACE_END(_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    98100    }
    99101
    100102    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    101103    {
    102       ALLOC2_INTERFACE("retire",OUT,SOUTH, _("Interface to update rename_unit."),_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     104      ALLOC2_INTERFACE_BEGIN("retire",OUT,SOUTH, _("Interface to update rename_unit."),_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    103105     
    104106      _ALLOC2_VALACK_OUT(out_RETIRE_VAL                     ,VAL,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     
    125127      _ALLOC2_SIGNAL_OUT(out_RETIRE_NUM_REG_RE_PHY_OLD      ,"num_reg_re_phy_old"   ,Tspecial_address_t,_param->_size_special_register      ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    126128      _ALLOC2_SIGNAL_OUT(out_RETIRE_NUM_REG_RE_PHY_NEW      ,"num_reg_re_phy_new"   ,Tspecial_address_t,_param->_size_special_register      ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     129
     130      ALLOC2_INTERFACE_END(_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    127131    }
    128132
    129133    // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    130134    {
    131       ALLOC2_INTERFACE("retire_event",OUT,SOUTH, _("Interface to update rename_unit."),_param->_nb_front_end,_param->_nb_context[it1]);
     135      ALLOC2_INTERFACE_BEGIN("retire_event",OUT,SOUTH, _("Interface to update rename_unit."),_param->_nb_front_end,_param->_nb_context[it1]);
    132136   
    133137      _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_VAL               ,VAL,_param->_nb_front_end,_param->_nb_context[it1]);
    134138      _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_ACK               ,ACK,_param->_nb_front_end,_param->_nb_context[it1]);
    135139      _ALLOC2_SIGNAL_OUT(out_RETIRE_EVENT_STATE             ,"state"                ,Tevent_state_t    ,_param->_size_event_state           ,_param->_nb_front_end,_param->_nb_context[it1]);
     140
     141      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
    136142    }
    137143
    138144    // ~~~~~[ Interface : "commit" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    139145    {
    140       ALLOC1_INTERFACE("commit",IN,EAST,_("End of execute."),_param->_nb_inst_commit);
     146      ALLOC1_INTERFACE_BEGIN("commit",IN,EAST,_("End of execute."),_param->_nb_inst_commit);
    141147
    142148      ALLOC1_VALACK_IN ( in_COMMIT_VAL               ,VAL);
     
    152158//    ALLOC1_SIGNAL_OUT(out_COMMIT_NUM_REG_RD        ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register+_param->_size_rename_unit_id);
    153159      ALLOC1_SIGNAL_OUT(out_COMMIT_NUM_REG_RD        ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register);
     160
     161      ALLOC1_INTERFACE_END(_param->_nb_inst_commit);
    154162    }
    155163
    156164    // ~~~~~[ Interface : "reexecute" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    157165    {
    158       ALLOC1_INTERFACE("reexecute",OUT,EAST,_("Interface to reexecute an instruction (store)"),_param->_nb_inst_reexecute);
     166      ALLOC1_INTERFACE_BEGIN("reexecute",OUT,EAST,_("Interface to reexecute an instruction (store)"),_param->_nb_inst_reexecute);
    159167
    160168      ALLOC1_VALACK_OUT(out_REEXECUTE_VAL                  ,VAL);
     
    166174      ALLOC1_SIGNAL_OUT(out_REEXECUTE_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type);
    167175      ALLOC1_SIGNAL_OUT(out_REEXECUTE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr);
     176
     177      ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute);
    168178    }
    169179
    170180    // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    171181    {
    172       ALLOC1_INTERFACE("branch_complete",OUT,WEST,_("Interface to reexecute an instruction (store)"),_param->_nb_inst_branch_complete);
     182      ALLOC1_INTERFACE_BEGIN("branch_complete",OUT,WEST,_("Interface to reexecute an instruction (store)"),_param->_nb_inst_branch_complete);
    173183
    174184      ALLOC1_VALACK_OUT(out_BRANCH_COMPLETE_VAL            ,VAL);
     
    181191      ALLOC1_SIGNAL_OUT(out_BRANCH_COMPLETE_NO_SEQUENCE    ,"no_sequence"    ,Tcontrol_t         ,1);
    182192      ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_MISS_PREDICTION,"miss_prediction",Tcontrol_t         ,1);
     193
     194      ALLOC1_INTERFACE_END(_param->_nb_inst_branch_complete);
    183195    }
    184196
    185197    // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    186198    {
    187       ALLOC_INTERFACE("update", OUT, WEST,_("Interface with to Context State."));
    188 
    189       ALLOC_VALACK_OUT(out_UPDATE_VAL                      ,VAL);
    190       ALLOC_VALACK_IN ( in_UPDATE_ACK                      ,ACK);
    191       ALLOC_SIGNAL_OUT(out_UPDATE_CONTEXT_ID               ,"context_id"      ,Tcontext_t         ,_param->_size_context_id);
    192       ALLOC_SIGNAL_OUT(out_UPDATE_FRONT_END_ID             ,"front_end_id"    ,Tcontext_t         ,_param->_size_front_end_id);
    193       ALLOC_SIGNAL_OUT(out_UPDATE_DEPTH                    ,"depth"           ,Tdepth_t           ,_param->_size_depth    );
    194       ALLOC_SIGNAL_OUT(out_UPDATE_TYPE                     ,"type"            ,Tevent_type_t      ,_param->_size_event_type);
    195       ALLOC_SIGNAL_OUT(out_UPDATE_IS_DELAY_SLOT            ,"is_delay_slot"   ,Tcontrol_t         ,1);
    196       ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS                  ,"address"         ,Taddress_t         ,_param->_size_instruction_address);
    197       ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS_EPCR_VAL         ,"address_epcr_val",Tcontrol_t         ,1);
    198       ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS_EPCR             ,"address_epcr"    ,Taddress_t         ,_param->_size_instruction_address);
    199       ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS_EEAR_VAL         ,"address_eear_val",Tcontrol_t         ,1);
    200       ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS_EEAR             ,"address_eear"    ,Tgeneral_data_t    ,_param->_size_general_data);
     199      ALLOC0_INTERFACE_BEGIN("update", OUT, WEST,_("Interface with to Context State."));
     200
     201      ALLOC0_VALACK_OUT(out_UPDATE_VAL                      ,VAL);
     202      ALLOC0_VALACK_IN ( in_UPDATE_ACK                      ,ACK);
     203      ALLOC0_SIGNAL_OUT(out_UPDATE_CONTEXT_ID               ,"context_id"      ,Tcontext_t         ,_param->_size_context_id);
     204      ALLOC0_SIGNAL_OUT(out_UPDATE_FRONT_END_ID             ,"front_end_id"    ,Tcontext_t         ,_param->_size_front_end_id);
     205      ALLOC0_SIGNAL_OUT(out_UPDATE_DEPTH                    ,"depth"           ,Tdepth_t           ,_param->_size_depth    );
     206      ALLOC0_SIGNAL_OUT(out_UPDATE_TYPE                     ,"type"            ,Tevent_type_t      ,_param->_size_event_type);
     207      ALLOC0_SIGNAL_OUT(out_UPDATE_IS_DELAY_SLOT            ,"is_delay_slot"   ,Tcontrol_t         ,1);
     208      ALLOC0_SIGNAL_OUT(out_UPDATE_ADDRESS                  ,"address"         ,Taddress_t         ,_param->_size_instruction_address);
     209      ALLOC0_SIGNAL_OUT(out_UPDATE_ADDRESS_EPCR_VAL         ,"address_epcr_val",Tcontrol_t         ,1);
     210      ALLOC0_SIGNAL_OUT(out_UPDATE_ADDRESS_EPCR             ,"address_epcr"    ,Taddress_t         ,_param->_size_instruction_address);
     211      ALLOC0_SIGNAL_OUT(out_UPDATE_ADDRESS_EEAR_VAL         ,"address_eear_val",Tcontrol_t         ,1);
     212      ALLOC0_SIGNAL_OUT(out_UPDATE_ADDRESS_EEAR             ,"address_eear"    ,Tgeneral_data_t    ,_param->_size_general_data);
     213
     214      ALLOC0_INTERFACE_END();
    201215    }
    202216
    203217    // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    204218    {
    205       ALLOC2_INTERFACE("event",IN,WEST,_("Interface with Context State (event)."),_param->_nb_front_end, _param->_nb_context[it1]);
     219      ALLOC2_INTERFACE_BEGIN("event",IN,WEST,_("Interface with Context State (event)."),_param->_nb_front_end, _param->_nb_context[it1]);
    206220
    207221      _ALLOC2_VALACK_IN ( in_EVENT_VAL             , VAL                                                           ,_param->_nb_front_end, _param->_nb_context[it1]);
     
    211225      _ALLOC2_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT_VAL,"ADDRESS_NEXT_VAL",Tcontrol_t,1                                ,_param->_nb_front_end, _param->_nb_context[it1]);
    212226      _ALLOC2_SIGNAL_IN ( in_EVENT_IS_DS_TAKE      ,"IS_DS_TAKE"      ,Tcontrol_t,1                                ,_param->_nb_front_end, _param->_nb_context[it1]);
     227
     228      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    213229    } 
    214230
    215231    // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    216232    {
    217       ALLOC2_INTERFACE("nb_inst",OUT,WEST,_("Interface with Context State (synchronization)."),_param->_nb_front_end, _param->_nb_context[it1]);
     233      ALLOC2_INTERFACE_BEGIN("nb_inst",OUT,WEST,_("Interface with Context State (synchronization)."),_param->_nb_front_end, _param->_nb_context[it1]);
    218234
    219235      _ALLOC2_SIGNAL_OUT(out_NB_INST_COMMIT_ALL             ,"commit_all",Tcounter_t         ,_param->_size_nb_inst_commit,_param->_nb_front_end, _param->_nb_context[it1]);
    220236      _ALLOC2_SIGNAL_OUT(out_NB_INST_COMMIT_MEM             ,"commit_mem",Tcounter_t         ,_param->_size_nb_inst_commit,_param->_nb_front_end, _param->_nb_context[it1]);
    221237      _ALLOC2_SIGNAL_IN ( in_NB_INST_DECOD_ALL              ,"decod_all" ,Tcounter_t         ,_param->_size_nb_inst_decod ,_param->_nb_front_end, _param->_nb_context[it1]);
     238
     239      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    222240    }
    223241
    224242    // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    225243    {
    226       ALLOC2_INTERFACE("depth",IN,WEST,_("Interface with Prediction unit."),_param->_nb_front_end, _param->_nb_context[it1]);
     244      ALLOC2_INTERFACE_BEGIN("depth",IN,WEST,_("Interface with Prediction unit."),_param->_nb_front_end, _param->_nb_context[it1]);
    227245
    228246      _ALLOC2_SIGNAL_IN ( in_DEPTH_MIN                     ,"min"      ,Tdepth_t           ,_param->_size_depth,_param->_nb_front_end, _param->_nb_context[it1]);
    229247      _ALLOC2_SIGNAL_IN ( in_DEPTH_MAX                     ,"max"      ,Tdepth_t           ,_param->_size_depth,_param->_nb_front_end, _param->_nb_context[it1]);
    230248      _ALLOC2_SIGNAL_IN ( in_DEPTH_FULL                    ,"full"     ,Tcontrol_t         ,1                  ,_param->_nb_front_end, _param->_nb_context[it1]);
     249
     250      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    231251    }
    232252
     
    234254    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    235255    {
    236       ALLOC2_INTERFACE("spr_read",IN ,EAST,_("Interface with special register file (read)."),_param->_nb_front_end, _param->_nb_context[it1]);
     256      ALLOC2_INTERFACE_BEGIN("spr_read",IN ,EAST,_("Interface with special register file (read)."),_param->_nb_front_end, _param->_nb_context[it1]);
    237257
    238258      _ALLOC2_SIGNAL_IN ( in_SPR_READ_SR_OVE                ,"sr_ove"    ,Tcontrol_t         ,1,_param->_nb_front_end, _param->_nb_context[it1]);
     259
     260      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    239261    }
    240262
    241263    // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    242264    {
    243       ALLOC2_INTERFACE("spr_write",OUT,EAST,_("Interface with special register file (write)."),_param->_nb_front_end, _param->_nb_context[it1]);
     265      ALLOC2_INTERFACE_BEGIN("spr_write",OUT,EAST,_("Interface with special register file (write)."),_param->_nb_front_end, _param->_nb_context[it1]);
    244266
    245267      _ALLOC2_VALACK_OUT(out_SPR_WRITE_VAL                    ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
     
    251273      _ALLOC2_SIGNAL_OUT(out_SPR_WRITE_SR_OV_VAL              ,"sr_ov_val"   ,Tcontrol_t         ,1                         ,_param->_nb_front_end, _param->_nb_context[it1]);
    252274      _ALLOC2_SIGNAL_OUT(out_SPR_WRITE_SR_OV                  ,"sr_ov"       ,Tcontrol_t         ,1                         ,_param->_nb_front_end, _param->_nb_context[it1]);
     275
     276      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    253277    }
    254278
     
    289313    ALLOC2(reg_EVENT_STATE          ,Tevent_state_t,_param->_nb_front_end,_param->_nb_context [it1]);
    290314    ALLOC2(reg_EVENT_FLUSH          ,bool          ,_param->_nb_front_end,_param->_nb_context [it1]);
     315    ALLOC2(reg_EVENT_STOP           ,bool          ,_param->_nb_front_end,_param->_nb_context [it1]);
    291316
    292317//  ALLOC2(reg_PC_PREVIOUS          ,Taddress_t    ,_param->_nb_front_end,_param->_nb_context [it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_deallocation.cpp

    r111 r112  
    124124        DELETE1_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION,_param->_nb_inst_branch_complete,1);
    125125
    126         DELETE_SIGNAL (out_UPDATE_VAL                      ,1                         );
    127         DELETE_SIGNAL ( in_UPDATE_ACK                      ,1                         );
    128         DELETE_SIGNAL (out_UPDATE_CONTEXT_ID               ,_param->_size_context_id  );
    129         DELETE_SIGNAL (out_UPDATE_FRONT_END_ID             ,_param->_size_front_end_id);
    130         DELETE_SIGNAL (out_UPDATE_DEPTH                    ,_param->_size_depth       );
    131         DELETE_SIGNAL (out_UPDATE_TYPE                     ,_param->_size_event_type  );
    132         DELETE_SIGNAL (out_UPDATE_IS_DELAY_SLOT            ,1                         );
    133         DELETE_SIGNAL (out_UPDATE_ADDRESS                  ,_param->_size_instruction_address     );
    134         DELETE_SIGNAL (out_UPDATE_ADDRESS_EPCR_VAL         ,1                         );
    135         DELETE_SIGNAL (out_UPDATE_ADDRESS_EPCR             ,_param->_size_instruction_address     );
    136         DELETE_SIGNAL (out_UPDATE_ADDRESS_EEAR_VAL         ,1                         );
    137         DELETE_SIGNAL (out_UPDATE_ADDRESS_EEAR             ,_param->_size_instruction_address     );
     126        DELETE0_SIGNAL(out_UPDATE_VAL                      ,1                         );
     127        DELETE0_SIGNAL( in_UPDATE_ACK                      ,1                         );
     128        DELETE0_SIGNAL(out_UPDATE_CONTEXT_ID               ,_param->_size_context_id  );
     129        DELETE0_SIGNAL(out_UPDATE_FRONT_END_ID             ,_param->_size_front_end_id);
     130        DELETE0_SIGNAL(out_UPDATE_DEPTH                    ,_param->_size_depth       );
     131        DELETE0_SIGNAL(out_UPDATE_TYPE                     ,_param->_size_event_type  );
     132        DELETE0_SIGNAL(out_UPDATE_IS_DELAY_SLOT            ,1                         );
     133        DELETE0_SIGNAL(out_UPDATE_ADDRESS                  ,_param->_size_instruction_address     );
     134        DELETE0_SIGNAL(out_UPDATE_ADDRESS_EPCR_VAL         ,1                         );
     135        DELETE0_SIGNAL(out_UPDATE_ADDRESS_EPCR             ,_param->_size_instruction_address     );
     136        DELETE0_SIGNAL(out_UPDATE_ADDRESS_EEAR_VAL         ,1                         );
     137        DELETE0_SIGNAL(out_UPDATE_ADDRESS_EEAR             ,_param->_size_instruction_address     );
    138138
    139139        DELETE2_SIGNAL( in_EVENT_VAL                       ,_param->_nb_front_end, _param->_nb_context[it1],1                    );
     
    194194        DELETE2(reg_EVENT_STATE          ,_param->_nb_front_end,_param->_nb_context [it1]);
    195195        DELETE2(reg_EVENT_FLUSH          ,_param->_nb_front_end,_param->_nb_context [it1]);
     196        DELETE2(reg_EVENT_STOP           ,_param->_nb_front_end,_param->_nb_context [it1]);
    196197//      DELETE2(reg_PC_PREVIOUS          ,_param->_nb_front_end,_param->_nb_context [it1]);
    197198        DELETE2(reg_PC_CURRENT           ,_param->_nb_front_end,_param->_nb_context [it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMealy_insert.cpp

    r100 r112  
    3030#endif
    3131    bool       can_rename_select [_param->_nb_rename_unit];
    32    
    33     // Initialisation
     32    bool       event_stop;
     33   
     34//     Initialisation
     35    event_stop = false; // one signal for all context.
     36    for (uint32_t i=0; i<_param->_nb_front_end; ++i)
     37      for (uint32_t j=0; j<_param->_nb_context[i]; ++j)
     38        event_stop |= reg_EVENT_STOP [i][j];
    3439    for (uint32_t i=0; i<_param->_nb_bank; i++)
    3540      {
     
    5257//     log_printf(TRACE,Commit_unit,FUNCTION,"  * reg_NUM_BANK_TAIL : %d",reg_NUM_BANK_TAIL);
    5358
    54     std::list<generic::priority::select_t> * select_insert = _priority_insert ->select(); // same select for all insert
    55     std::list<generic::priority::select_t>::iterator it=select_insert ->begin();
    56 
    57     // Scan all bank ...
    58     for (uint32_t i=0; i<_param->_nb_bank; i++)
     59    if (not event_stop)
    5960      {
    60         // compute the bank number (num_bank_tail is the older write slot)
    61         uint32_t num_bank = (reg_NUM_BANK_TAIL+i)%_param->_nb_bank;
    62 
    63 //      log_printf(TRACE,Commit_unit,FUNCTION,"  * BANK : %d", num_bank);
    64 //      log_printf(TRACE,Commit_unit,FUNCTION,"    * val  : %d", internal_BANK_INSERT_VAL [num_bank]);
    65 //      log_printf(TRACE,Commit_unit,FUNCTION,"    * full : %d", bank_full [num_bank]);
    66 
    67         // Scan all insert interface to find a valid transaction
    68         while (it!=select_insert ->end())
    69           {
    70             uint32_t num_rename_unit = it->grp;
    71             uint32_t num_inst_insert = it->elt;
    72 
    73             it++;
    74 
    75             log_printf(TRACE,Commit_unit,FUNCTION,"  * INSERT [%d][%d]", num_rename_unit,num_inst_insert);
    76 //          log_printf(TRACE,Commit_unit,FUNCTION,"    * INSERT_VAL        : %d", PORT_READ(in_INSERT_VAL [num_rename_unit][num_inst_insert]));
    77             log_printf(TRACE,Commit_unit,FUNCTION,"    * can_rename_select : %d", can_rename_select [num_rename_unit]);
    78 
    79             // Test if have instruction
    80             //   -> rename_unit_glue test the in-order insert !!!!!
    81             if (can_rename_select [num_rename_unit] // and
    82 //              PORT_READ(in_INSERT_VAL [num_rename_unit][num_inst_insert])
    83                 )
    84               {
    85                 log_printf(TRACE,Commit_unit,FUNCTION,"      * have instruction");
    86                 log_printf(TRACE,Commit_unit,FUNCTION,"      * bank_full : %d",bank_full [num_bank]);
    87 
    88                 // test if bank is not busy (full or previous access)
    89                 if (not bank_full [num_bank])
    90                   {
    91                     // find !!!
    92                     insert_ack       [num_rename_unit][num_inst_insert] = true;
    93 
    94                     Tpacket_t packet_id = ((num_bank << _param->_shift_num_bank) | reg_BANK_PTR [num_bank]);
    95 
     61        std::list<generic::priority::select_t> * select_insert = _priority_insert ->select(); // same select for all insert
     62        std::list<generic::priority::select_t>::iterator it=select_insert ->begin();
     63       
     64        // Scan all bank ...
     65        for (uint32_t i=0; i<_param->_nb_bank; i++)
     66          {
     67            // compute the bank number (num_bank_tail is the older write slot)
     68            uint32_t num_bank = (reg_NUM_BANK_TAIL+i)%_param->_nb_bank;
     69     
     70//          log_printf(TRACE,Commit_unit,FUNCTION,"  * BANK : %d", num_bank);
     71//          log_printf(TRACE,Commit_unit,FUNCTION,"    * val  : %d", internal_BANK_INSERT_VAL [num_bank]);
     72//          log_printf(TRACE,Commit_unit,FUNCTION,"    * full : %d", bank_full [num_bank]);
     73     
     74            // Scan all insert interface to find a valid transaction
     75            while (it!=select_insert ->end())
     76              {
     77                uint32_t num_rename_unit = it->grp;
     78                uint32_t num_inst_insert = it->elt;
     79     
     80                it++;
     81     
     82                log_printf(TRACE,Commit_unit,FUNCTION,"  * INSERT [%d][%d]", num_rename_unit,num_inst_insert);
     83//                  log_printf(TRACE,Commit_unit,FUNCTION,"    * INSERT_VAL        : %d", PORT_READ(in_INSERT_VAL [num_rename_unit][num_inst_insert]));
     84                log_printf(TRACE,Commit_unit,FUNCTION,"    * can_rename_select : %d", can_rename_select [num_rename_unit]);
     85     
     86                // Test if have instruction
     87                //   -> rename_unit_glue test the in-order insert !!!!!
     88                if (can_rename_select [num_rename_unit] // and
     89//              PORT_READ(in_INSERT_VAL [num_rename_unit][num_inst_insert])
     90                    )
     91                  {
     92                    log_printf(TRACE,Commit_unit,FUNCTION,"      * have instruction");
     93                    log_printf(TRACE,Commit_unit,FUNCTION,"      * bank_full : %d",bank_full [num_bank]);
     94                   
     95                    // test if bank is not busy (full or previous access)
     96                    if (not bank_full [num_bank])
     97                      {
     98                        // find !!!
     99                        insert_ack       [num_rename_unit][num_inst_insert] = true;
     100                       
     101                        Tpacket_t packet_id = ((num_bank << _param->_shift_num_bank) | reg_BANK_PTR [num_bank]);
     102                       
    96103#ifdef SYSTEMC_VHDL_COMPATIBILITY
    97                     insert_packet_id [num_rename_unit][num_inst_insert] = packet_id;
     104                        insert_packet_id [num_rename_unit][num_inst_insert] = packet_id;
    98105#else
    99                     if (_param->_have_port_rob_ptr  )
    100                     PORT_WRITE(out_INSERT_PACKET_ID [num_rename_unit][num_inst_insert],packet_id);
     106                        if (_param->_have_port_rob_ptr  )
     107                        PORT_WRITE(out_INSERT_PACKET_ID [num_rename_unit][num_inst_insert],packet_id);
    101108#endif
    102                     internal_BANK_INSERT_VAL             [num_bank] = true;
    103                     internal_BANK_INSERT_NUM_RENAME_UNIT [num_bank] = num_rename_unit;
    104                     internal_BANK_INSERT_NUM_INST        [num_bank] = num_inst_insert;
    105                    
    106                     break;
    107                   }
    108               }
     109                        internal_BANK_INSERT_VAL             [num_bank] = true;
     110                        internal_BANK_INSERT_NUM_RENAME_UNIT [num_bank] = num_rename_unit;
     111                        internal_BANK_INSERT_NUM_INST        [num_bank] = num_inst_insert;
     112                       
     113                        break;
     114                      }
     115                  }
    109116               
    110             // is a valid instruction, but it's not send at a bank
    111             //  ... invalid this rename_unit (because, insert in_order)
    112             can_rename_select [num_rename_unit] = false;
    113           }
     117                // is a valid instruction, but it's not send at a bank
     118                //  ... invalid this rename_unit (because, insert in_order)
     119                can_rename_select [num_rename_unit] = false;
     120              }
     121          }
    114122      }
    115123   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMealy_retire.cpp

    r110 r112  
    7676                PORT_READ(in_RETIRE_ACK [x][y])) // not busy
    7777              {
    78                 rob_state_t state = entry->state;
    79                
    80                 if ((state == ROB_END_OK         ) or
    81                     (state == ROB_END_KO         ) or
    82                     (state == ROB_END_BRANCH_MISS) or
    83                     (state == ROB_END_LOAD_MISS  ) or
    84                     (state == ROB_END_MISS       )//  or
    85 //                  (state == ROB_END_EXCEPTION)
    86                     )
    87                   {
    88                     Tcontext_t         front_end_id   = entry->front_end_id;
    89                     Tcontext_t         context_id     = entry->context_id; 
    90                     Tcontrol_t         write_re       = entry->write_re;
    91                     Tspecial_address_t num_reg_re_log = entry->num_reg_re_log;
    92 
    93                     // if state is ok, when write flags in the SR regsiters
    94                     bool spr_write_ack = true;
    95 
    96                     // Write in SR the good flag
    97                     if ((state == ROB_END_OK  ) and write_re)
    98                       // ROB_END_BRANCH_MISS is a valid branch instruction but don't modify RE
    99                       {
    100                         spr_write_ack = PORT_READ(in_SPR_WRITE_ACK [front_end_id][context_id]);
    101 
    102                         // retire_ack is set !!!
    103                         spr_write_val       [front_end_id][context_id] = 1;
    104 
    105                         Tspecial_data_t flags = entry->flags;
    106 
    107                         switch (num_reg_re_log)
    108                           {
    109                           case SPR_LOGIC_SR_F     :
    110                             {
    111                               spr_write_sr_f_val  [front_end_id][context_id] = 1;
    112                               spr_write_sr_f      [front_end_id][context_id] = (flags & FLAG_F )!=0;
    113 
    114                               break;
    115                             }
    116                           case SPR_LOGIC_SR_CY_OV :
    117                             {
    118                               spr_write_sr_cy_val [front_end_id][context_id] = 1;
    119                               spr_write_sr_ov_val [front_end_id][context_id] = 1;       
    120                               spr_write_sr_cy     [front_end_id][context_id] = (flags & FLAG_CY)!=0;
    121                               spr_write_sr_ov     [front_end_id][context_id] = (flags & FLAG_OV)!=0;
    122                        
    123                               break;
    124                             }
    125                           default :
    126                             {
     78                rob_state_t state        = entry->state;
     79                  if ((state == ROB_END_OK         ) or
     80                      (state == ROB_END_KO         ) or
     81                      (state == ROB_END_BRANCH_MISS) or
     82                      (state == ROB_END_LOAD_MISS  ) or
     83                      (state == ROB_END_MISS       )//  or
     84//                    (state == ROB_END_EXCEPTION)
     85                      )
     86                    {
     87                      Tcontrol_t         write_re       = entry->write_re;
     88                      Tspecial_address_t num_reg_re_log = entry->num_reg_re_log;
     89                      Tcontext_t         front_end_id   = entry->front_end_id;
     90                      Tcontext_t         context_id     = entry->context_id; 
     91                     
     92                      // if state is ok, when write flags in the SR regsiters
     93                      bool spr_write_ack = true;
     94                     
     95                      // Write in SR the good flag
     96                      if ((state == ROB_END_OK  ) and write_re)
     97                        // ROB_END_BRANCH_MISS is a valid branch instruction but don't modify RE
     98                        {
     99                          spr_write_ack = PORT_READ(in_SPR_WRITE_ACK [front_end_id][context_id]);
     100                         
     101                          // retire_ack is set !!!
     102                          spr_write_val       [front_end_id][context_id] = 1;
     103                         
     104                          Tspecial_data_t flags = entry->flags;
     105                         
     106                          switch (num_reg_re_log)
     107                            {
     108                            case SPR_LOGIC_SR_F     :
     109                              {
     110                                spr_write_sr_f_val  [front_end_id][context_id] = 1;
     111                                spr_write_sr_f      [front_end_id][context_id] = (flags & FLAG_F )!=0;
     112                               
     113                                break;
     114                              }
     115                            case SPR_LOGIC_SR_CY_OV :
     116                              {
     117                                spr_write_sr_cy_val [front_end_id][context_id] = 1;
     118                                spr_write_sr_ov_val [front_end_id][context_id] = 1;     
     119                                spr_write_sr_cy     [front_end_id][context_id] = (flags & FLAG_CY)!=0;
     120                                spr_write_sr_ov     [front_end_id][context_id] = (flags & FLAG_OV)!=0;
     121                               
     122                                break;
     123                              }
     124                            default :
     125                              {
    127126#ifdef DEBUG_TEST
    128                               throw ERRORMORPHEO(FUNCTION,_("Invalid num_reg_re_log.\n"));
     127                                throw ERRORMORPHEO(FUNCTION,_("Invalid num_reg_re_log.\n"));
    129128#endif
    130                             }
    131                           }
    132                       }
    133 
    134                     // find an instruction can be retire, and in order
    135 
    136                     if (spr_write_ack)
    137                       {
    138                         retire_val [x][y] = 1;
    139                         num_inst_retire [x] ++;
    140                         internal_BANK_RETIRE_VAL [num_bank] = true;
    141                       }
    142 
    143                     internal_BANK_RETIRE_NUM_RENAME_UNIT [num_bank] = x;
    144                     internal_BANK_RETIRE_NUM_INST        [num_bank] = y;
    145 
    146                     if (_param->_have_port_front_end_id)
    147                     PORT_WRITE(out_RETIRE_FRONT_END_ID          [x][y], front_end_id                );
    148                     if (_param->_have_port_context_id)
    149                     PORT_WRITE(out_RETIRE_CONTEXT_ID            [x][y], context_id                  );
    150 //                  PORT_WRITE(out_RETIRE_RENAME_UNIT_ID        [x][y], entry->rename_unit_id       );
    151                     PORT_WRITE(out_RETIRE_USE_STORE_QUEUE       [x][y], entry->use_store_queue      );
    152                     PORT_WRITE(out_RETIRE_USE_LOAD_QUEUE        [x][y], entry->use_load_queue       );
    153                     PORT_WRITE(out_RETIRE_STORE_QUEUE_PTR_WRITE [x][y], entry->store_queue_ptr_write);
    154                     if (_param->_have_port_load_queue_ptr)
    155                     PORT_WRITE(out_RETIRE_LOAD_QUEUE_PTR_WRITE  [x][y], entry->load_queue_ptr_write );
    156                     PORT_WRITE(out_RETIRE_READ_RA               [x][y], entry->read_ra              );
    157                     PORT_WRITE(out_RETIRE_NUM_REG_RA_PHY        [x][y], entry->num_reg_ra_phy       );
    158                     PORT_WRITE(out_RETIRE_READ_RB               [x][y], entry->read_rb              );
    159                     PORT_WRITE(out_RETIRE_NUM_REG_RB_PHY        [x][y], entry->num_reg_rb_phy       );
    160                     PORT_WRITE(out_RETIRE_READ_RC               [x][y], entry->read_rc              );
    161                     PORT_WRITE(out_RETIRE_NUM_REG_RC_PHY        [x][y], entry->num_reg_rc_phy       );
    162                     PORT_WRITE(out_RETIRE_WRITE_RD              [x][y], entry->write_rd             );
    163                     PORT_WRITE(out_RETIRE_NUM_REG_RD_LOG        [x][y], entry->num_reg_rd_log       );
    164                     PORT_WRITE(out_RETIRE_NUM_REG_RD_PHY_OLD    [x][y], entry->num_reg_rd_phy_old   );
    165                     PORT_WRITE(out_RETIRE_NUM_REG_RD_PHY_NEW    [x][y], entry->num_reg_rd_phy_new   );
    166                     PORT_WRITE(out_RETIRE_WRITE_RE              [x][y], write_re                    );
    167                     PORT_WRITE(out_RETIRE_NUM_REG_RE_LOG        [x][y], num_reg_re_log              );
    168                     PORT_WRITE(out_RETIRE_NUM_REG_RE_PHY_OLD    [x][y], entry->num_reg_re_phy_old   );
    169                     PORT_WRITE(out_RETIRE_NUM_REG_RE_PHY_NEW    [x][y], entry->num_reg_re_phy_new   );
    170 
    171                     // Event -> rob must be manage this event
    172                     if ((state == ROB_END_BRANCH_MISS) or
    173                         (state == ROB_END_LOAD_MISS))
    174                       can_retire [x] = false;
    175                   }
     129                              }
     130                            }
     131                        }
     132                     
     133                      // find an instruction can be retire, and in order
     134                     
     135                      if (spr_write_ack)
     136                        {
     137                          retire_val [x][y] = 1;
     138                          num_inst_retire [x] ++;
     139                          internal_BANK_RETIRE_VAL [num_bank] = true;
     140                        }
     141                     
     142                      internal_BANK_RETIRE_NUM_RENAME_UNIT [num_bank] = x;
     143                      internal_BANK_RETIRE_NUM_INST        [num_bank] = y;
     144                     
     145                      if (_param->_have_port_front_end_id)
     146                      PORT_WRITE(out_RETIRE_FRONT_END_ID          [x][y], front_end_id                );
     147                      if (_param->_have_port_context_id)
     148                      PORT_WRITE(out_RETIRE_CONTEXT_ID            [x][y], context_id                  );
     149//                    PORT_WRITE(out_RETIRE_RENAME_UNIT_ID        [x][y], entry->rename_unit_id       );
     150                      PORT_WRITE(out_RETIRE_USE_STORE_QUEUE       [x][y], entry->use_store_queue      );
     151                      PORT_WRITE(out_RETIRE_USE_LOAD_QUEUE        [x][y], entry->use_load_queue       );
     152                      PORT_WRITE(out_RETIRE_STORE_QUEUE_PTR_WRITE [x][y], entry->store_queue_ptr_write);
     153                      if (_param->_have_port_load_queue_ptr)
     154                      PORT_WRITE(out_RETIRE_LOAD_QUEUE_PTR_WRITE  [x][y], entry->load_queue_ptr_write );
     155                      PORT_WRITE(out_RETIRE_READ_RA               [x][y], entry->read_ra              );
     156                      PORT_WRITE(out_RETIRE_NUM_REG_RA_PHY        [x][y], entry->num_reg_ra_phy       );
     157                      PORT_WRITE(out_RETIRE_READ_RB               [x][y], entry->read_rb              );
     158                      PORT_WRITE(out_RETIRE_NUM_REG_RB_PHY        [x][y], entry->num_reg_rb_phy       );
     159                      PORT_WRITE(out_RETIRE_READ_RC               [x][y], entry->read_rc              );
     160                      PORT_WRITE(out_RETIRE_NUM_REG_RC_PHY        [x][y], entry->num_reg_rc_phy       );
     161                      PORT_WRITE(out_RETIRE_WRITE_RD              [x][y], entry->write_rd             );
     162                      PORT_WRITE(out_RETIRE_NUM_REG_RD_LOG        [x][y], entry->num_reg_rd_log       );
     163                      PORT_WRITE(out_RETIRE_NUM_REG_RD_PHY_OLD    [x][y], entry->num_reg_rd_phy_old   );
     164                      PORT_WRITE(out_RETIRE_NUM_REG_RD_PHY_NEW    [x][y], entry->num_reg_rd_phy_new   );
     165                      PORT_WRITE(out_RETIRE_WRITE_RE              [x][y], write_re                    );
     166                      PORT_WRITE(out_RETIRE_NUM_REG_RE_LOG        [x][y], num_reg_re_log              );
     167                      PORT_WRITE(out_RETIRE_NUM_REG_RE_PHY_OLD    [x][y], entry->num_reg_re_phy_old   );
     168                      PORT_WRITE(out_RETIRE_NUM_REG_RE_PHY_NEW    [x][y], entry->num_reg_re_phy_new   );
     169
     170                      // Event -> rob must be manage this event
     171                      if ((state == ROB_END_BRANCH_MISS) or
     172                          (state == ROB_END_LOAD_MISS))
     173                        can_retire [x] = false;
     174                    }
    176175              }
    177176
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp

    r111 r112  
    4949              reg_EVENT_STATE           [i][j] = EVENT_STATE_NO_EVENT;
    5050              reg_EVENT_FLUSH           [i][j] = false;
     51              reg_EVENT_STOP            [i][j] = false;
    5152
    5253//            reg_PC_PREVIOUS           [i][j] = (0x100-4)>>2;
     
    9091                      reg_EVENT_STATE [i][j] = EVENT_STATE_END;
    9192                      reg_EVENT_FLUSH [i][j] = false;
     93                      //reg_EVENT_STOP  [i][j] = false;
    9294                    }
    9395                  break;
     
    324326                      case ROB_BRANCH_WAIT_END : {state = (have_exception)?ROB_END_EXCEPTION_WAIT_HEAD:ROB_BRANCH_COMPLETE; break;}
    325327                        // Store KO
    326                       case ROB_MISS_WAIT_END   : {state = ROB_END_KO_SPECULATIVE; break;}
     328                      case ROB_EVENT_WAIT_END  : {state = ROB_END_KO_SPECULATIVE; break;}
    327329                        // Store OK, Load and other instruction
    328330                      case ROB_OTHER_WAIT_END  : {state = (have_exception)?ROB_END_EXCEPTION_WAIT_HEAD:((have_miss_speculation)?ROB_END_LOAD_MISS_SPECULATIVE:ROB_END_OK_SPECULATIVE); break;}
     
    333335                        }
    334336                      }
     337
     338                    if ((have_exception or have_miss_speculation) and
     339                        (reg_EVENT_FLUSH [entry->front_end_id][entry->context_id] == 0))
     340                      reg_EVENT_STOP [entry->front_end_id][entry->context_id] = true;
    335341
    336342                    // update Re Order Buffer
     
    364370               
    365371                log_printf(TRACE,Commit_unit,FUNCTION,"  * RETIRE            [%d][%d]",x,y);
     372                log_printf(TRACE,Commit_unit,FUNCTION,"    * num_bank     : %d",num_bank     );
    366373               
    367374#ifdef DEBUG_TEST
     
    381388                log_printf(TRACE,Commit_unit,FUNCTION,"    * front_end_id : %d",front_end_id );
    382389                log_printf(TRACE,Commit_unit,FUNCTION,"    * context_id   : %d",context_id   );
     390                log_printf(TRACE,Commit_unit,FUNCTION,"    * rob_ptr      : %d",((num_bank << _param->_shift_num_bank) | entry->ptr));
    383391                log_printf(TRACE,Commit_unit,FUNCTION,"    * num_thread   : %d",num_thread   );
    384392                log_printf(TRACE,Commit_unit,FUNCTION,"    * type         : %s",toString(type).c_str());
     
    406414//                     throw ERRORMORPHEO(FUNCTION,toString(_("Retire : Instruction's address_next (%.8x) is different of commit_unit's address_next (%.8x)"),entry->address_next,reg_PC_NEXT [front_end_id][context_id]));
    407415                  }
    408                
     416
    409417                if ((state == ROB_END_BRANCH_MISS) or
    410418                    (state == ROB_END_LOAD_MISS))
    411                   {
    412                     reg_EVENT_STATE [front_end_id][context_id] = EVENT_STATE_EVENT;
    413                     reg_EVENT_FLUSH [front_end_id][context_id] = true;
    414                   }
     419                    {
     420                      reg_EVENT_STATE [front_end_id][context_id] = EVENT_STATE_EVENT;
     421                      reg_EVENT_FLUSH [front_end_id][context_id] = true;
     422                      reg_EVENT_STOP  [front_end_id][context_id] = false;
     423                    }
    415424               
    416425#if defined(DEBUG) and defined(DEBUG_Commit_unit) and (DEBUG_Commit_unit == true)
     
    475484              {
    476485              case ROB_STORE_HEAD_OK : {state = ROB_OTHER_WAIT_END; break; }
    477               case ROB_STORE_HEAD_KO : {state = ROB_MISS_WAIT_END ; break; }
     486              case ROB_STORE_HEAD_KO : {state = ROB_EVENT_WAIT_END; break; }
    478487              default : {throw ERRORMORPHEO(FUNCTION,_("Reexecute : invalid state value.\n"));}
    479488              }
     
    500509                throw ERRORMORPHEO(FUNCTION,_("Branch_complete : Invalid state value.\n"));
    501510#endif
    502 
    503               entry->state = (PORT_READ(in_BRANCH_COMPLETE_MISS_PREDICTION [i]))?ROB_END_BRANCH_MISS_SPECULATIVE:ROB_END_OK_SPECULATIVE;
     511              Tcontrol_t miss = PORT_READ(in_BRANCH_COMPLETE_MISS_PREDICTION [i]);
     512             
     513              entry->state = (miss)?ROB_END_BRANCH_MISS_SPECULATIVE:ROB_END_OK_SPECULATIVE;
     514             
     515              if (miss and (reg_EVENT_FLUSH [entry->front_end_id][entry->context_id] == 0))
     516                reg_EVENT_STOP [entry->front_end_id][entry->context_id] = true;
     517
     518
    504519//               entry->state = ROB_END_OK_SPECULATIVE;
    505520            }
     
    612627                  switch (state)
    613628                    {
    614                     case ROB_BRANCH_WAIT_END             : {state = ROB_MISS_WAIT_END; break;}
    615                     case ROB_BRANCH_COMPLETE             : {state = ROB_END_MISS     ; break;}
     629                    case ROB_BRANCH_WAIT_END             : {state = ROB_EVENT_WAIT_END; break;}
     630                    case ROB_BRANCH_COMPLETE             : {state = ROB_END_MISS      ; break;}
    616631                    case ROB_END_BRANCH_MISS             :
    617                     case ROB_END_BRANCH_MISS_SPECULATIVE : {state = ROB_END_MISS     ; break;}
     632                    case ROB_END_BRANCH_MISS_SPECULATIVE : {state = ROB_END_MISS      ; break;}
    618633                    case ROB_END_LOAD_MISS_UPDATE        :
    619634                    case ROB_END_LOAD_MISS               :
    620                     case ROB_END_LOAD_MISS_SPECULATIVE   : {state = ROB_END_MISS     ; break;}
    621                     case ROB_STORE_WAIT_HEAD_OK          : {state = ROB_STORE_HEAD_KO; break;}
     635                    case ROB_END_LOAD_MISS_SPECULATIVE   : {state = ROB_END_MISS      ; break;}
     636                    case ROB_STORE_WAIT_HEAD_OK          : {state = ROB_STORE_HEAD_KO ; break;}
    622637                  //case ROB_STORE_WAIT_HEAD_KO          : {state = ; break;}
    623                     case ROB_OTHER_WAIT_END              : {state = ROB_MISS_WAIT_END; break;}
     638                    case ROB_OTHER_WAIT_END              : {state = ROB_EVENT_WAIT_END; break;}
    624639                    case ROB_END_OK                      :
    625                     case ROB_END_OK_SPECULATIVE          : {state = ROB_END_MISS     ; break;}
     640                    case ROB_END_OK_SPECULATIVE          : {state = ROB_END_MISS      ; break;}
    626641                    case ROB_END_KO                      :
    627                     case ROB_END_KO_SPECULATIVE          : {state = ROB_END_MISS     ; break;}
     642                    case ROB_END_KO_SPECULATIVE          : {state = ROB_END_MISS      ; break;}
    628643                    case ROB_END_EXCEPTION_UPDATE        :
    629644                    case ROB_END_EXCEPTION               :
    630                     case ROB_END_EXCEPTION_WAIT_HEAD     : {state = ROB_END_MISS     ; break;}
     645                    case ROB_END_EXCEPTION_WAIT_HEAD     : {state = ROB_END_MISS      ; break;}
    631646                                                         
    632647                      // don't change                   
    633648                    case ROB_STORE_HEAD_KO               : {break;}
    634                     case ROB_MISS_WAIT_END               : {break;}
     649                    case ROB_EVENT_WAIT_END              : {break;}
    635650                    case ROB_END_MISS                    : {break;}
    636651                                                         
     
    671686                    case ROB_STORE_WAIT_HEAD_OK      : {state = ROB_STORE_HEAD_OK;        break;}
    672687                    case ROB_END_EXCEPTION_WAIT_HEAD : {state = ROB_END_EXCEPTION_UPDATE; break;}
    673                     default : {break;} // else, no change
     688                    default : {break;} // else, no change
    674689                    }
    675690                }
     
    701716            log_printf(TRACE,Commit_unit,FUNCTION,"      * EVENT_STATE  : %s",toString(reg_EVENT_STATE [i][j]).c_str());
    702717            log_printf(TRACE,Commit_unit,FUNCTION,"      * EVENT_FLUSH  : %d",reg_EVENT_FLUSH [i][j]);
     718            log_printf(TRACE,Commit_unit,FUNCTION,"      * EVENT_STOP   : %d",reg_EVENT_STOP  [i][j]);
    703719            log_printf(TRACE,Commit_unit,FUNCTION,"      * NB_INST_ALL  : %d",reg_NB_INST_COMMIT_ALL[i][j]);
    704720            log_printf(TRACE,Commit_unit,FUNCTION,"      * NB_INST_MEM  : %d",reg_NB_INST_COMMIT_MEM[i][j]);
     
    784800//            or (entry->state == ROB_STORE_HEAD_KO              )
    785801//            or (entry->state == ROB_OTHER_WAIT_END             )
    786 //            or (entry->state == ROB_MISS_WAIT_END              )
     802//            or (entry->state == ROB_EVENT_WAIT_END             )
    787803//            or (entry->state == ROB_END_OK_SPECULATIVE         )
    788804              or (entry->state == ROB_END_OK                     )
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_allocation.cpp

    r111 r112  
    5959    // ~~~~~[ Interface : "issue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6060    {
    61       ALLOC2_INTERFACE("issue_in", IN, WEST, _("Rename_out / Insert Rob interface"),_param->_nb_rename_unit, _param->_nb_inst_rename[it1]);
     61      ALLOC2_INTERFACE_BEGIN("issue_in", IN, WEST, _("Rename_out / Insert Rob interface"),_param->_nb_rename_unit, _param->_nb_inst_rename[it1]);
    6262   
    6363      _ALLOC2_VALACK_IN ( in_ISSUE_IN_VAL                  ,VAL,_param->_nb_rename_unit, _param->_nb_inst_rename[it1]);
     
    8282      _ALLOC2_SIGNAL_IN ( in_ISSUE_IN_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                             ,_param->_nb_rename_unit, _param->_nb_inst_rename[it1]);
    8383      _ALLOC2_SIGNAL_IN ( in_ISSUE_IN_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register,_param->_nb_rename_unit, _param->_nb_inst_rename[it1]);
     84
     85      ALLOC2_INTERFACE_END(_param->_nb_rename_unit, _param->_nb_inst_rename[it1]);
    8486    }
    8587
    8688    // ~~~~~[ Interface : "reexecute" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8789    {
    88       ALLOC1_INTERFACE("reexecute", IN, NORTH, _("Instruction reexecute (store head/ spr access)"),_param->_nb_inst_reexecute);
     90      ALLOC1_INTERFACE_BEGIN("reexecute", IN, NORTH, _("Instruction reexecute (store head/ spr access)"),_param->_nb_inst_reexecute);
    8991     
    9092      ALLOC1_VALACK_IN ( in_REEXECUTE_VAL                  ,VAL);
     
    109111      ALLOC1_SIGNAL_IN ( in_REEXECUTE_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                             );
    110112      ALLOC1_SIGNAL_IN ( in_REEXECUTE_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register);
     113
     114      ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute);
    111115    }
    112116
    113117    // ~~~~~[ Interface : "issue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    114118    {
    115       ALLOC1_INTERFACE("issue_out",OUT, EAST, _("Go to issue network"),_param->_nb_inst_issue);
     119      ALLOC1_INTERFACE_BEGIN("issue_out",OUT, EAST, _("Go to issue network"),_param->_nb_inst_issue);
    116120     
    117121      ALLOC1_VALACK_OUT(out_ISSUE_OUT_VAL                  ,VAL);
     
    136140      ALLOC1_SIGNAL_OUT(out_ISSUE_OUT_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                             );
    137141      ALLOC1_SIGNAL_OUT(out_ISSUE_OUT_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register);
     142
     143      ALLOC1_INTERFACE_END(_param->_nb_inst_issue);
    138144    }
    139145
     
    141147      {
    142148    // ~~~~~[ Registers ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    143     _issue_queue     = new std::list<entry_t*> [_param->_nb_bank];
     149    ALLOC1(_issue_queue                     ,std::list<entry_t*>,_param->_nb_bank);
    144150
    145151    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_deallocation.cpp

    r111 r112  
    9595
    9696        // ~~~~~[ Registers ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    97         delete [] _issue_queue;
     97        DELETE1(_issue_queue                     ,_param->_nb_bank);
    9898       
    9999        // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue_allocation.cpp

    r97 r112  
    5858    // ~~~~~[ Interface : "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC2_INTERFACE("rename",IN, SOUTH,_("rename's interface"),_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     60      ALLOC2_INTERFACE_BEGIN("rename",IN, SOUTH,_("rename's interface"),_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    6161     
    6262      _ALLOC2_SIGNAL_IN ( in_RENAME_FRONT_END_ID                          ,"FRONT_END_ID"                          ,Tcontext_t         ,_param->_size_front_end_id    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    6363      _ALLOC2_SIGNAL_OUT(out_RENAME_RENAME_UNIT_FRONT_END_ID              ,"RENAME_UNIT_FRONT_END_ID"              ,Tcontext_t         ,_param->_size_front_end_id    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     64
     65      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    6466    }
    6567   
    6668    // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6769    {
    68       ALLOC1_INTERFACE("insert",OUT, WEST,_("insert's interface"),_param->_sum_inst_insert);
     70      ALLOC1_INTERFACE_BEGIN("insert",OUT, WEST,_("insert's interface"),_param->_sum_inst_insert);
    6971
    7072      ALLOC1_SIGNAL_OUT (out_INSERT_VAL                                   ,"VAL"                                   ,Tcontrol_t         ,1                             );
     
    7476      ALLOC1_SIGNAL_OUT (out_INSERT_RE_USE                                ,"RE_USE"                                ,Tcontrol_t         ,1                             );
    7577      ALLOC1_SIGNAL_OUT (out_INSERT_RE_NUM_REG                            ,"RE_NUM_REG"                            ,Tspecial_address_t ,_param->_size_special_register);
    76     }
    77 
    78     {
    79       ALLOC2_INTERFACE("insert",IN, EAST,_("insert's interface"),_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     78
     79      ALLOC1_INTERFACE_END(_param->_sum_inst_insert);
     80    }
     81
     82    {
     83      ALLOC2_INTERFACE_BEGIN("insert",IN, EAST,_("insert's interface"),_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    8084
    8185      _ALLOC2_SIGNAL_IN ( in_INSERT_RENAME_UNIT_VAL                       ,"RENAME_UNIT_VAL"                       ,Tcontrol_t         ,1                             ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     
    146150      _ALLOC2_SIGNAL_OUT(out_INSERT_ISSUE_QUEUE_WRITE_RE                  ,"ISSUE_QUEUE_WRITE_RE"                  ,Tcontrol_t         ,1                             ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    147151      _ALLOC2_SIGNAL_OUT(out_INSERT_ISSUE_QUEUE_NUM_REG_RE                ,"ISSUE_QUEUE_NUM_REG_RE"                ,Tspecial_address_t ,_param->_size_special_register,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     152
     153      ALLOC2_INTERFACE_END(_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    148154    }
    149155
    150156//     // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    151157//     {
    152 //       ALLOC1_INTERFACE("retire",OUT, WEST,_("retire's interface"),_param->_sum_inst_retire);
     158//       ALLOC1_INTERFACE_BEGIN("retire",OUT, WEST,_("retire's interface"),_param->_sum_inst_retire);
    153159     
    154160//       ALLOC1_SIGNAL_OUT (out_RETIRE_VAL                                   ,"VAL"                                   ,Tcontrol_t         ,1                             );
     
    162168//       ALLOC1_SIGNAL_OUT (out_RETIRE_RE_NEW_USE                            ,"RE_NEW_USE"                            ,Tcontrol_t         ,1                             );
    163169//       ALLOC1_SIGNAL_OUT (out_RETIRE_RE_NEW_NUM_REG                        ,"RE_NEW_NUM_REG"                        ,Tspecial_address_t ,_param->_size_special_register);
     170
     171//       ALLOC1_INTERFACE_END(_param->_sum_inst_retire);
    164172//     }
    165173
    166174//     {
    167 //       ALLOC2_INTERFACE("retire",IN, EAST,_("retire's interface"),_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     175//       ALLOC2_INTERFACE_BEGIN("retire",IN, EAST,_("retire's interface"),_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    168176
    169177//       _ALLOC2_SIGNAL_OUT(out_RETIRE_RENAME_UNIT_VAL                       ,"RENAME_UNIT_VAL"                       ,Tcontrol_t         ,1                             ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     
    188196//       _ALLOC2_SIGNAL_IN ( in_RETIRE_COMMIT_UNIT_NUM_REG_RE_PHY_NEW        ,"COMMIT_UNIT_NUM_REG_RE_PHY_NEW"        ,Tspecial_address_t ,_param->_size_special_register,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    189197//       _ALLOC2_SIGNAL_IN ( in_RETIRE_COMMIT_UNIT_EVENT_STATE               ,"COMMIT_UNIT_EVENT_STATE"               ,Tevent_state_t     ,_param->_size_event_state     ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     198
     199//       ALLOC2_INTERFACE_END(_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    190200//     }
    191201
    192202    // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    193203    {
    194       ALLOC2_INTERFACE("spr",IN, NORTH,_("spr's interface"),_param->_nb_front_end,_param->_nb_context[it1]);
     204      ALLOC2_INTERFACE_BEGIN("spr",IN, NORTH,_("spr's interface"),_param->_nb_front_end,_param->_nb_context[it1]);
    195205
    196206      _ALLOC2_SIGNAL_OUT(out_SPR_SR_IEE                                   ,"SR_IEE"                                ,Tcontrol_t         ,1                             ,_param->_nb_front_end,_param->_nb_context[it1]);
     
    199209      _ALLOC2_SIGNAL_OUT(out_SPR_COMMIT_UNIT_SR_OVE                       ,"COMMIT_UNIT_SR_OVE"                    ,Tcontrol_t         ,1                             ,_param->_nb_front_end,_param->_nb_context[it1]);
    200210      _ALLOC2_SIGNAL_IN ( in_SPR_SPECIAL_REGISTER_UNIT_SR                 ,"SPECIAL_REGISTER_UNIT_SR"              ,Tspr_t             ,_param->_size_spr             ,_param->_nb_front_end,_param->_nb_context[it1]);
     211
     212      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
    201213    }
    202214
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit_allocation.cpp

    r97 r112  
    5858    // ~~~~~[ Interface "execute_loop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC2_INTERFACE("execute_loop", IN, EAST, _("Instruction executed from execute_loop"),_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
     60      ALLOC2_INTERFACE_BEGIN("execute_loop", IN, EAST, _("Instruction executed from execute_loop"),_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    6161
    6262      _ALLOC2_VALACK_IN ( in_EXECUTE_LOOP_VAL                     ,VAL,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
     
    7272      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_ADDRESS                 ,"address"     ,Taddress_t         ,_param->_size_instruction_address,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    7373      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_DATA                    ,"data"        ,Tgeneral_data_t    ,_param->_size_general_data,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
     74
     75      ALLOC2_INTERFACE_END(_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    7476    }
    7577
    7678    // ~~~~~[ Interface "commit" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7779    {
    78       ALLOC1_INTERFACE("commit",OUT,WEST, _("Instruction executed to Re Order Buffer"),_param->_nb_inst_commit);
     80      ALLOC1_INTERFACE_BEGIN("commit",OUT,WEST, _("Instruction executed to Re Order Buffer"),_param->_nb_inst_commit);
    7981
    8082      ALLOC1_VALACK_OUT(out_COMMIT_VAL                           ,VAL);
     
    9193      ALLOC1_SIGNAL_OUT(out_COMMIT_ADDRESS                       ,"address"     ,Taddress_t         ,_param->_size_instruction_address);
    9294      ALLOC1_SIGNAL_IN ( in_COMMIT_NUM_REG_RD                    ,"num_reg_rd"  ,Tgeneral_address_t ,_param->_size_general_register);
     95
     96      ALLOC1_INTERFACE_END(_param->_nb_inst_commit);
    9397    }
    9498
    9599    // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    96100    {
    97       ALLOC1_INTERFACE("spr",OUT,EAST, _("Access to Special Register"), _param->_nb_inst_reexecute);
     101      ALLOC1_INTERFACE_BEGIN("spr",OUT,EAST, _("Access to Special Register"), _param->_nb_inst_reexecute);
    98102
    99103      ALLOC1_VALACK_OUT(out_SPR_VAL                              ,VAL);
     
    107111      ALLOC1_SIGNAL_IN ( in_SPR_RDATA                            ,"rdata"       ,Tspr_t             ,_param->_size_spr);
    108112      ALLOC1_SIGNAL_IN ( in_SPR_INVALID                          ,"invalid"     ,Tcontrol_t         ,1);
     113
     114      ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute);
    109115    }
    110116
    111117    // ~~~~~[ Interface : "reexecute_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    112118    {
    113       ALLOC1_INTERFACE("reexecute_rob", IN,EAST, _("Instruction reexecuted by the Re Order Buffer (Store head)"), _param->_nb_inst_reexecute);
     119      ALLOC1_INTERFACE_BEGIN("reexecute_rob", IN,EAST, _("Instruction reexecuted by the Re Order Buffer (Store head)"), _param->_nb_inst_reexecute);
    114120
    115121      ALLOC1_VALACK_IN ( in_REEXECUTE_ROB_VAL                    ,VAL);
     
    121127      ALLOC1_SIGNAL_IN ( in_REEXECUTE_ROB_TYPE                   ,"type"                 ,Ttype_t            ,_param->_size_type);
    122128      ALLOC1_SIGNAL_IN ( in_REEXECUTE_ROB_STORE_QUEUE_PTR_WRITE  ,"store_queue_ptr_write",Tlsq_ptr_t         ,_param->_size_store_queue_ptr);
     129
     130      ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute);
    123131    }
    124132
    125133    // ~~~~~[ Interface : "reexecute" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    126134    {
    127       ALLOC1_INTERFACE("reexecute",OUT,SOUTH, _("Instruction reexecute, send at the issue_queue"), _param->_nb_inst_reexecute);
     135      ALLOC1_INTERFACE_BEGIN("reexecute",OUT,SOUTH, _("Instruction reexecute, send at the issue_queue"), _param->_nb_inst_reexecute);
    128136
    129137      ALLOC1_VALACK_OUT(out_REEXECUTE_VAL                  ,VAL);
    130138      ALLOC1_VALACK_IN ( in_REEXECUTE_ACK                  ,ACK);
    131       ALLOC1_SIGNAL_OUT(out_REEXECUTE_CONTEXT_ID           ,"context_id"           ,Tcontext_t        ,_param->_size_context_id         );
    132       ALLOC1_SIGNAL_OUT(out_REEXECUTE_FRONT_END_ID         ,"front_end_id"         ,Tcontext_t        ,_param->_size_front_end_id       );
    133       ALLOC1_SIGNAL_OUT(out_REEXECUTE_PACKET_ID            ,"packet_id"            ,Tpacket_t         ,_param->_size_rob_ptr            );
    134       ALLOC1_SIGNAL_OUT(out_REEXECUTE_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation          );
    135       ALLOC1_SIGNAL_OUT(out_REEXECUTE_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type               );
    136       ALLOC1_SIGNAL_OUT(out_REEXECUTE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr    );
    137       ALLOC1_SIGNAL_OUT(out_REEXECUTE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr     );
    138       ALLOC1_SIGNAL_OUT(out_REEXECUTE_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1                                );
    139       ALLOC1_SIGNAL_OUT(out_REEXECUTE_IMMEDIAT             ,"immediat"             ,Tgeneral_data_t   ,_param->_size_general_data       );
    140       ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RA              ,"read_ra"              ,Tcontrol_t        ,1                                );
    141       ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RA           ,"num_reg_ra"           ,Tgeneral_address_t,_param->_size_general_register   );
    142       ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RB              ,"read_rb"              ,Tcontrol_t        ,1                                );
    143       ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RB           ,"num_reg_rb"           ,Tgeneral_address_t,_param->_size_general_register   );
    144       ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RC              ,"read_rc"              ,Tcontrol_t        ,1                                );
    145       ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RC           ,"num_reg_rc"           ,Tspecial_address_t,_param->_size_special_register   );
    146       ALLOC1_SIGNAL_OUT(out_REEXECUTE_WRITE_RD             ,"write_rd"             ,Tcontrol_t        ,1                                );
    147       ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RD           ,"num_reg_rd"           ,Tgeneral_address_t,_param->_size_general_register   );
    148       ALLOC1_SIGNAL_OUT(out_REEXECUTE_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                                );
    149       ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register   );
     139      ALLOC1_SIGNAL_OUT(out_REEXECUTE_CONTEXT_ID           ,"context_id"           ,Tcontext_t        ,_param->_size_context_id      );
     140      ALLOC1_SIGNAL_OUT(out_REEXECUTE_FRONT_END_ID         ,"front_end_id"         ,Tcontext_t        ,_param->_size_front_end_id    );
     141      ALLOC1_SIGNAL_OUT(out_REEXECUTE_PACKET_ID            ,"packet_id"            ,Tpacket_t         ,_param->_size_rob_ptr         );
     142      ALLOC1_SIGNAL_OUT(out_REEXECUTE_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation       );
     143      ALLOC1_SIGNAL_OUT(out_REEXECUTE_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type            );
     144      ALLOC1_SIGNAL_OUT(out_REEXECUTE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr );
     145      ALLOC1_SIGNAL_OUT(out_REEXECUTE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr  );
     146      ALLOC1_SIGNAL_OUT(out_REEXECUTE_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1                             );
     147      ALLOC1_SIGNAL_OUT(out_REEXECUTE_IMMEDIAT             ,"immediat"             ,Tgeneral_data_t   ,_param->_size_general_data    );
     148      ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RA              ,"read_ra"              ,Tcontrol_t        ,1                             );
     149      ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RA           ,"num_reg_ra"           ,Tgeneral_address_t,_param->_size_general_register);
     150      ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RB              ,"read_rb"              ,Tcontrol_t        ,1                             );
     151      ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RB           ,"num_reg_rb"           ,Tgeneral_address_t,_param->_size_general_register);
     152      ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RC              ,"read_rc"              ,Tcontrol_t        ,1                             );
     153      ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RC           ,"num_reg_rc"           ,Tspecial_address_t,_param->_size_special_register);
     154      ALLOC1_SIGNAL_OUT(out_REEXECUTE_WRITE_RD             ,"write_rd"             ,Tcontrol_t        ,1                             );
     155      ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RD           ,"num_reg_rd"           ,Tgeneral_address_t,_param->_size_general_register);
     156      ALLOC1_SIGNAL_OUT(out_REEXECUTE_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                             );
     157      ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register);
     158
     159      ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute);
    150160    }
    151161
     
    153163      {
    154164    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    155     _reexecute_queue = new std::list<entry_t *> [_param->_nb_bank];
     165    ALLOC1(_reexecute_queue         ,std::list<entry_t *>,_param->_nb_bank);
    156166
    157167    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    158     internal_QUEUE_PUSH             = new Tcontrol_t [_param->_nb_bank];
    159     internal_QUEUE_NUM_EXECUTE_LOOP = new uint32_t   [_param->_nb_bank];
    160     internal_QUEUE_NUM_INST_EXECUTE = new uint32_t   [_param->_nb_bank];
    161     internal_QUEUE_NUM_INST_COMMIT  = new uint32_t   [_param->_nb_bank];
    162     internal_QUEUE_INFO             = new info_t     [_param->_nb_bank];
    163     internal_SPR_VAL                = new Tcontrol_t [_param->_nb_inst_reexecute];
    164     internal_REEXECUTE_ROB_ACK      = new Tcontrol_t [_param->_nb_inst_reexecute];
    165     internal_REEXECUTE_VAL          = new Tcontrol_t [_param->_nb_inst_reexecute];
     168    ALLOC1(internal_QUEUE_PUSH             ,Tcontrol_t,_param->_nb_bank);
     169    ALLOC1(internal_QUEUE_NUM_EXECUTE_LOOP ,uint32_t  ,_param->_nb_bank);
     170    ALLOC1(internal_QUEUE_NUM_INST_EXECUTE ,uint32_t  ,_param->_nb_bank);
     171    ALLOC1(internal_QUEUE_NUM_INST_COMMIT  ,uint32_t  ,_param->_nb_bank);
     172    ALLOC1(internal_QUEUE_INFO             ,info_t    ,_param->_nb_bank);
     173    ALLOC1(internal_SPR_VAL                ,Tcontrol_t,_param->_nb_inst_reexecute);
     174    ALLOC1(internal_REEXECUTE_ROB_ACK      ,Tcontrol_t,_param->_nb_inst_reexecute);
     175    ALLOC1(internal_REEXECUTE_VAL          ,Tcontrol_t,_param->_nb_inst_reexecute);
    166176#ifdef STATISTICS
    167     internal_COMMIT_VAL             = new Tcontrol_t [_param->_nb_inst_commit];
     177    ALLOC1(internal_COMMIT_VAL             ,Tcontrol_t,_param->_nb_inst_commit);
    168178#endif
    169179      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit_deallocation.cpp

    r88 r112  
    105105              delete entry;
    106106            }
    107         delete [] _reexecute_queue;
     107        DELETE1(_reexecute_queue                ,_param->_nb_bank);
    108108       
    109109        // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    110         delete [] internal_QUEUE_PUSH            ;
    111         delete [] internal_QUEUE_NUM_EXECUTE_LOOP;
    112         delete [] internal_QUEUE_NUM_INST_EXECUTE;
    113         delete [] internal_QUEUE_NUM_INST_COMMIT ;
    114         delete [] internal_QUEUE_INFO            ;
    115         delete [] internal_SPR_VAL               ;
    116         delete [] internal_REEXECUTE_ROB_ACK     ;
    117         delete [] internal_REEXECUTE_VAL         ;
     110        DELETE1(internal_QUEUE_PUSH             ,_param->_nb_bank);
     111        DELETE1(internal_QUEUE_NUM_EXECUTE_LOOP ,_param->_nb_bank);
     112        DELETE1(internal_QUEUE_NUM_INST_EXECUTE ,_param->_nb_bank);
     113        DELETE1(internal_QUEUE_NUM_INST_COMMIT  ,_param->_nb_bank);
     114        DELETE1(internal_QUEUE_INFO             ,_param->_nb_bank);
     115        DELETE1(internal_SPR_VAL                ,_param->_nb_inst_reexecute);
     116        DELETE1(internal_REEXECUTE_ROB_ACK      ,_param->_nb_inst_reexecute);
     117        DELETE1(internal_REEXECUTE_VAL          ,_param->_nb_inst_reexecute);
    118118#ifdef STATISTICS
    119         delete [] internal_COMMIT_VAL            ;
     119        DELETE1(internal_COMMIT_VAL             ,_param->_nb_inst_commit);
    120120#endif
    121121      }
    122 
     122       
    123123    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    124124   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_allocation.cpp

    r97 r112  
    5858    // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC1_INTERFACE("insert", IN, EAST, "insert to the re order buffer an instruction", _param->_nb_inst_insert);
     60      ALLOC1_INTERFACE_BEGIN("insert", IN, EAST, _("insert to the re order buffer an instruction"), _param->_nb_inst_insert);
    6161
    6262      ALLOC1_VALACK_IN ( in_INSERT_VAL                  ,VAL);
     
    6868      ALLOC1_SIGNAL_OUT(out_INSERT_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t  ,_param->_size_store_queue_ptr);
    6969      ALLOC1_SIGNAL_OUT(out_INSERT_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t  ,_param->_size_load_queue_ptr );
     70
     71      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    7072    }
    7173   
    7274    // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7375    {
    74       ALLOC1_INTERFACE("retire", IN, EAST, "retire from the re order buffer an instruction", _param->_nb_inst_retire);
     76      ALLOC1_INTERFACE_BEGIN("retire", IN, EAST, _("retire from the re order buffer an instruction"), _param->_nb_inst_retire);
    7577
    7678      ALLOC1_VALACK_IN ( in_RETIRE_VAL                  ,VAL);
     
    8486      ALLOC1_SIGNAL_IN ( in_RETIRE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t  ,_param->_size_store_queue_ptr);
    8587      ALLOC1_SIGNAL_IN ( in_RETIRE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t  ,_param->_size_load_queue_ptr );
     88
     89      ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
    8690    }
    8791
    8892    if (usage_is_set(_usage,USE_SYSTEMC))
    8993      {
    90     reg_STORE_QUEUE_PTR_WRITE     = new Tlsq_ptr_t      [_param->_nb_load_store_queue];
    91     reg_STORE_QUEUE_USE           = new bool *          [_param->_nb_load_store_queue];
    92     reg_STORE_QUEUE_NB_USE        = new Tlsq_ptr_t      [_param->_nb_load_store_queue];
    93     reg_LOAD_QUEUE_PTR_WRITE      = new Tlsq_ptr_t      [_param->_nb_load_store_queue];
    94     reg_LOAD_QUEUE_USE            = new bool *          [_param->_nb_load_store_queue];
    95    
    96     for (uint32_t i=0; i<_param->_nb_load_store_queue; i++)
    97       {
    98         reg_STORE_QUEUE_USE [i] = new bool [_param->_size_store_queue [i]];
    99         reg_LOAD_QUEUE_USE  [i] = new bool [_param->_size_load_queue  [i]];
    100       }
     94    ALLOC1(reg_STORE_QUEUE_PTR_WRITE     ,Tlsq_ptr_t     ,_param->_nb_load_store_queue);
     95    ALLOC2(reg_STORE_QUEUE_USE           ,bool           ,_param->_nb_load_store_queue,_param->_size_store_queue [it1]);
     96    ALLOC1(reg_STORE_QUEUE_NB_USE        ,Tlsq_ptr_t     ,_param->_nb_load_store_queue);
     97    ALLOC1(reg_LOAD_QUEUE_PTR_WRITE      ,Tlsq_ptr_t     ,_param->_nb_load_store_queue);
     98    ALLOC2(reg_LOAD_QUEUE_USE            ,bool           ,_param->_nb_load_store_queue,_param->_size_load_queue  [it1]);
    10199
    102     internal_INSERT_ACK           = new Tcontrol_t      [_param->_nb_inst_insert];
    103     internal_INSERT_OPERATION_USE = new operation_use_t [_param->_nb_inst_insert];
    104     internal_INSERT_LSQ           = new uint32_t        [_param->_nb_inst_insert];
    105     internal_INSERT_PTR           = new Tlsq_ptr_t      [_param->_nb_inst_insert];
     100    ALLOC1(internal_INSERT_ACK           ,Tcontrol_t     ,_param->_nb_inst_insert);
     101    ALLOC1(internal_INSERT_OPERATION_USE ,operation_use_t,_param->_nb_inst_insert);
     102    ALLOC1(internal_INSERT_LSQ           ,uint32_t       ,_param->_nb_inst_insert);
     103    ALLOC1(internal_INSERT_PTR           ,Tlsq_ptr_t     ,_param->_nb_inst_insert);
    106104
    107     internal_RETIRE_ACK           = new Tcontrol_t      [_param->_nb_inst_retire];
    108     internal_RETIRE_OPERATION_USE = new operation_use_t [_param->_nb_inst_retire];
    109     internal_RETIRE_LSQ           = new uint32_t        [_param->_nb_inst_retire];
    110     internal_RETIRE_PTR           = new Tlsq_ptr_t      [_param->_nb_inst_retire];
     105    ALLOC1(internal_RETIRE_ACK           ,Tcontrol_t     ,_param->_nb_inst_retire);
     106    ALLOC1(internal_RETIRE_OPERATION_USE ,operation_use_t,_param->_nb_inst_retire);
     107    ALLOC1(internal_RETIRE_LSQ           ,uint32_t       ,_param->_nb_inst_retire);
     108    ALLOC1(internal_RETIRE_PTR           ,Tlsq_ptr_t     ,_param->_nb_inst_retire);
    111109      }
    112110    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/include/Load_Store_pointer_unit.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2829        delete    in_NRESET;
    2930
    30         // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    31         delete []  in_INSERT_VAL                  ;
    32         delete [] out_INSERT_ACK                  ;
    33         if (_param->_have_port_front_end_id)
    34         delete []  in_INSERT_FRONT_END_ID         ;
    35         if (_param->_have_port_context_id)
    36         delete []  in_INSERT_CONTEXT_ID           ;
    37         delete []  in_INSERT_TYPE                 ;
    38         delete []  in_INSERT_OPERATION            ;
    39         delete [] out_INSERT_STORE_QUEUE_PTR_WRITE;
    40         if (_param->_have_port_load_queue_ptr)
    41         delete [] out_INSERT_LOAD_QUEUE_PTR_WRITE ;
    42        
    43         // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    44         delete []  in_RETIRE_VAL                  ;
    45         delete [] out_RETIRE_ACK                  ;
    46         if (_param->_have_port_front_end_id)
    47         delete []  in_RETIRE_FRONT_END_ID         ;
    48         if (_param->_have_port_context_id)
    49         delete []  in_RETIRE_CONTEXT_ID           ;
    50 //      delete []  in_RETIRE_TYPE                 ;
    51 //      delete []  in_RETIRE_OPERATION            ;
    52         delete []  in_RETIRE_USE_STORE_QUEUE      ;
    53         delete []  in_RETIRE_USE_LOAD_QUEUE       ;
    54         delete []  in_RETIRE_STORE_QUEUE_PTR_WRITE;
    55         if (_param->_have_port_load_queue_ptr)
    56         delete []  in_RETIRE_LOAD_QUEUE_PTR_WRITE ;
     31        DELETE1_SIGNAL( in_INSERT_VAL                  ,_param->_nb_inst_insert,1);
     32        DELETE1_SIGNAL(out_INSERT_ACK                  ,_param->_nb_inst_insert,1);
     33        DELETE1_SIGNAL( in_INSERT_FRONT_END_ID         ,_param->_nb_inst_insert,_param->_size_front_end_id   );
     34        DELETE1_SIGNAL( in_INSERT_CONTEXT_ID           ,_param->_nb_inst_insert,_param->_size_context_id     );
     35        DELETE1_SIGNAL( in_INSERT_TYPE                 ,_param->_nb_inst_insert,_param->_size_type           );
     36        DELETE1_SIGNAL( in_INSERT_OPERATION            ,_param->_nb_inst_insert,_param->_size_operation      );
     37        DELETE1_SIGNAL(out_INSERT_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_insert,_param->_size_store_queue_ptr);
     38        DELETE1_SIGNAL(out_INSERT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_insert,_param->_size_load_queue_ptr );
    5739
    58         delete [] reg_STORE_QUEUE_PTR_WRITE    ;
    59         delete [] reg_STORE_QUEUE_USE          ;
    60         delete [] reg_STORE_QUEUE_NB_USE       ;
    61         delete [] reg_LOAD_QUEUE_PTR_WRITE     ;
    62         delete [] reg_LOAD_QUEUE_USE           ;
    63         delete [] internal_INSERT_ACK          ;
    64         delete [] internal_INSERT_OPERATION_USE;
    65         delete [] internal_INSERT_LSQ          ;
    66         delete [] internal_INSERT_PTR          ;
    67         delete [] internal_RETIRE_ACK          ;
    68         delete [] internal_RETIRE_OPERATION_USE;
    69         delete [] internal_RETIRE_LSQ          ;
    70         delete [] internal_RETIRE_PTR          ;
     40        DELETE1_SIGNAL( in_RETIRE_VAL                  ,_param->_nb_inst_retire,1);
     41        DELETE1_SIGNAL(out_RETIRE_ACK                  ,_param->_nb_inst_retire,1);
     42        DELETE1_SIGNAL( in_RETIRE_FRONT_END_ID         ,_param->_nb_inst_retire,_param->_size_front_end_id   );
     43        DELETE1_SIGNAL( in_RETIRE_CONTEXT_ID           ,_param->_nb_inst_retire,_param->_size_context_id     );
     44//      DELETE1_SIGNAL( in_RETIRE_TYPE                 ,_param->_nb_inst_retire,_param->_size_type           );
     45//      DELETE1_SIGNAL( in_RETIRE_OPERATION            ,_param->_nb_inst_retire,_param->_size_operation      );
     46        DELETE1_SIGNAL( in_RETIRE_USE_STORE_QUEUE      ,_param->_nb_inst_retire,1);
     47        DELETE1_SIGNAL( in_RETIRE_USE_LOAD_QUEUE       ,_param->_nb_inst_retire,1);
     48        DELETE1_SIGNAL( in_RETIRE_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire,_param->_size_store_queue_ptr);
     49        DELETE1_SIGNAL( in_RETIRE_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire,_param->_size_load_queue_ptr );
     50
     51        DELETE1(reg_STORE_QUEUE_PTR_WRITE     ,_param->_nb_load_store_queue);
     52        DELETE2(reg_STORE_QUEUE_USE           ,_param->_nb_load_store_queue,_param->_size_store_queue [it1]);
     53        DELETE1(reg_STORE_QUEUE_NB_USE        ,_param->_nb_load_store_queue);
     54        DELETE1(reg_LOAD_QUEUE_PTR_WRITE      ,_param->_nb_load_store_queue);
     55        DELETE2(reg_LOAD_QUEUE_USE            ,_param->_nb_load_store_queue,_param->_size_load_queue  [it1]);
     56       
     57        DELETE1(internal_INSERT_ACK           ,_param->_nb_inst_insert);
     58        DELETE1(internal_INSERT_OPERATION_USE ,_param->_nb_inst_insert);
     59        DELETE1(internal_INSERT_LSQ           ,_param->_nb_inst_insert);
     60        DELETE1(internal_INSERT_PTR           ,_param->_nb_inst_insert);
     61       
     62        DELETE1(internal_RETIRE_ACK           ,_param->_nb_inst_retire);
     63        DELETE1(internal_RETIRE_OPERATION_USE ,_param->_nb_inst_retire);
     64        DELETE1(internal_RETIRE_LSQ           ,_param->_nb_inst_retire);
     65        DELETE1(internal_RETIRE_PTR           ,_param->_nb_inst_retire);
    7166      }
    7267
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_allocation.cpp

    r88 r112  
    4949                                                         ,IN
    5050                                                         ,SOUTH,
    51                                                          "Generalist interface"
     51                                                         _("Generalist interface")
    5252#endif
    5353                                                         );
     
    5858    // ~~~~~[ Interface "rename_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959     {
    60        ALLOC1_INTERFACE("rename_in", IN, EAST, "Registers before near dependency checking", _param->_nb_inst_insert);
     60       ALLOC1_INTERFACE_BEGIN("rename_in", IN, EAST, _("Registers before near dependency checking"), _param->_nb_inst_insert);
    6161       
    62 //        ALLOC1_VALACK_IN ( in_RENAME_IN_VAL               ,VAL);
    63 //        ALLOC1_VALACK_OUT(out_RENAME_IN_ACK               ,ACK);
     62//     ALLOC1_VALACK_IN ( in_RENAME_IN_VAL               ,VAL);
     63//     ALLOC1_VALACK_OUT(out_RENAME_IN_ACK               ,ACK);
    6464       ALLOC1_SIGNAL_IN ( in_RENAME_IN_FRONT_END_ID      ,"front_end_id"      ,Tcontext_t        ,_param->_size_front_end_id          );
    6565       ALLOC1_SIGNAL_IN ( in_RENAME_IN_CONTEXT_ID        ,"context_id"        ,Tcontext_t        ,_param->_size_context_id            );
     
    8181       ALLOC1_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register      );
    8282       ALLOC1_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register      );
     83
     84       ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    8385     }
    8486
    8587    // ~~~~~[ Interface "rename_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8688     {
    87        ALLOC1_INTERFACE("rename_out", OUT, WEST, "Registers after near dependency checking", _param->_nb_inst_insert);
     89       ALLOC1_INTERFACE_BEGIN("rename_out", OUT, WEST, _("Registers after near dependency checking"), _param->_nb_inst_insert);
    8890       
    89 //        ALLOC1_VALACK_OUT(out_RENAME_OUT_VAL               ,VAL);
    90 //        ALLOC1_VALACK_IN ( in_RENAME_OUT_ACK               ,ACK);
     91//     ALLOC1_VALACK_OUT(out_RENAME_OUT_VAL               ,VAL);
     92//     ALLOC1_VALACK_IN ( in_RENAME_OUT_ACK               ,ACK);
    9193       ALLOC1_SIGNAL_OUT(out_RENAME_OUT_FRONT_END_ID      ,"front_end_id"      ,Tcontext_t        ,_param->_size_front_end_id          );
    9294       ALLOC1_SIGNAL_OUT(out_RENAME_OUT_CONTEXT_ID        ,"context_id"        ,Tcontext_t        ,_param->_size_context_id            );
     
    108110       ALLOC1_SIGNAL_OUT(out_RENAME_OUT_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register      );
    109111       ALLOC1_SIGNAL_OUT(out_RENAME_OUT_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register      );
     112
     113       ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    110114     }
    111115
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/include/Dependency_checking_unit.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2930        delete     in_NRESET;
    3031
    31 //      delete []  in_RENAME_IN_VAL                ;
    32 //      delete [] out_RENAME_IN_ACK                ;
    33         if (_param->_have_port_front_end_id)
    34         delete []  in_RENAME_IN_FRONT_END_ID       ;
    35         if (_param->_have_port_context_id)
    36         delete []  in_RENAME_IN_CONTEXT_ID         ;
    37         delete []  in_RENAME_IN_READ_RA            ;
    38         delete []  in_RENAME_IN_NUM_REG_RA_LOG     ;
    39         delete []  in_RENAME_IN_NUM_REG_RA_PHY     ;
    40         delete []  in_RENAME_IN_READ_RB            ;
    41         delete []  in_RENAME_IN_NUM_REG_RB_LOG     ;
    42         delete []  in_RENAME_IN_NUM_REG_RB_PHY     ;
    43         delete []  in_RENAME_IN_READ_RC            ;
    44         delete []  in_RENAME_IN_NUM_REG_RC_LOG     ;
    45         delete []  in_RENAME_IN_NUM_REG_RC_PHY     ;
    46         delete []  in_RENAME_IN_WRITE_RD           ;
    47         delete []  in_RENAME_IN_NUM_REG_RD_LOG     ;
    48         delete []  in_RENAME_IN_NUM_REG_RD_PHY_OLD ;
    49         delete []  in_RENAME_IN_NUM_REG_RD_PHY_NEW ;
    50         delete []  in_RENAME_IN_WRITE_RE           ;
    51         delete []  in_RENAME_IN_NUM_REG_RE_LOG     ;
    52         delete []  in_RENAME_IN_NUM_REG_RE_PHY_OLD ;
    53         delete []  in_RENAME_IN_NUM_REG_RE_PHY_NEW ;
     32//      DELETE1_SIGNAL( in_RENAME_IN_VAL                ,_param->_nb_inst_insert,1);
     33//      DELETE1_SIGNAL(out_RENAME_IN_ACK                ,_param->_nb_inst_insert,1);
     34        DELETE1_SIGNAL( in_RENAME_IN_FRONT_END_ID       ,_param->_nb_inst_insert,_param->_size_front_end_id          );
     35        DELETE1_SIGNAL( in_RENAME_IN_CONTEXT_ID         ,_param->_nb_inst_insert,_param->_size_context_id            );
     36        DELETE1_SIGNAL( in_RENAME_IN_READ_RA            ,_param->_nb_inst_insert,1                                   );
     37        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RA_LOG     ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     38        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RA_PHY     ,_param->_nb_inst_insert,_param->_size_general_register      );
     39        DELETE1_SIGNAL( in_RENAME_IN_READ_RB            ,_param->_nb_inst_insert,1                                   );
     40        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RB_LOG     ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     41        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RB_PHY     ,_param->_nb_inst_insert,_param->_size_general_register      );
     42        DELETE1_SIGNAL( in_RENAME_IN_READ_RC            ,_param->_nb_inst_insert,1                                   );
     43        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RC_LOG     ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     44        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RC_PHY     ,_param->_nb_inst_insert,_param->_size_special_register      );
     45        DELETE1_SIGNAL( in_RENAME_IN_WRITE_RD           ,_param->_nb_inst_insert,1                                   );
     46        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RD_LOG     ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     47        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RD_PHY_OLD ,_param->_nb_inst_insert,_param->_size_general_register      );
     48        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RD_PHY_NEW ,_param->_nb_inst_insert,_param->_size_general_register      );
     49        DELETE1_SIGNAL( in_RENAME_IN_WRITE_RE           ,_param->_nb_inst_insert,1                                   );
     50        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RE_LOG     ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     51        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RE_PHY_OLD ,_param->_nb_inst_insert,_param->_size_special_register      );
     52        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RE_PHY_NEW ,_param->_nb_inst_insert,_param->_size_special_register      );
    5453
    55 //      delete [] out_RENAME_OUT_VAL               ;
    56 //      delete []  in_RENAME_OUT_ACK               ;
    57         if (_param->_have_port_front_end_id)
    58         delete [] out_RENAME_OUT_FRONT_END_ID      ;
    59         if (_param->_have_port_context_id)
    60         delete [] out_RENAME_OUT_CONTEXT_ID        ;
    61         delete [] out_RENAME_OUT_READ_RA           ;
    62         delete [] out_RENAME_OUT_NUM_REG_RA_LOG    ;
    63         delete [] out_RENAME_OUT_NUM_REG_RA_PHY    ;
    64         delete [] out_RENAME_OUT_READ_RB           ;
    65         delete [] out_RENAME_OUT_NUM_REG_RB_LOG    ;
    66         delete [] out_RENAME_OUT_NUM_REG_RB_PHY    ;
    67         delete [] out_RENAME_OUT_READ_RC           ;
    68         delete [] out_RENAME_OUT_NUM_REG_RC_LOG    ;
    69         delete [] out_RENAME_OUT_NUM_REG_RC_PHY    ;
    70         delete [] out_RENAME_OUT_WRITE_RD          ;
    71         delete [] out_RENAME_OUT_NUM_REG_RD_LOG    ;
    72         delete [] out_RENAME_OUT_NUM_REG_RD_PHY_OLD;
    73         delete [] out_RENAME_OUT_NUM_REG_RD_PHY_NEW;
    74         delete [] out_RENAME_OUT_WRITE_RE          ;
    75         delete [] out_RENAME_OUT_NUM_REG_RE_LOG    ;
    76         delete [] out_RENAME_OUT_NUM_REG_RE_PHY_OLD;
    77         delete [] out_RENAME_OUT_NUM_REG_RE_PHY_NEW;
     54//      DELETE1_SIGNAL(out_RENAME_OUT_VAL               ,_param->_nb_inst_insert,1);
     55//      DELETE1_SIGNAL( in_RENAME_OUT_ACK               ,_param->_nb_inst_insert,1);
     56        DELETE1_SIGNAL(out_RENAME_OUT_FRONT_END_ID      ,_param->_nb_inst_insert,_param->_size_front_end_id          );
     57        DELETE1_SIGNAL(out_RENAME_OUT_CONTEXT_ID        ,_param->_nb_inst_insert,_param->_size_context_id            );
     58        DELETE1_SIGNAL(out_RENAME_OUT_READ_RA           ,_param->_nb_inst_insert,1                                   );
     59        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RA_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     60        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RA_PHY    ,_param->_nb_inst_insert,_param->_size_general_register      );
     61        DELETE1_SIGNAL(out_RENAME_OUT_READ_RB           ,_param->_nb_inst_insert,1                                   );
     62        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RB_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     63        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RB_PHY    ,_param->_nb_inst_insert,_param->_size_general_register      );
     64        DELETE1_SIGNAL(out_RENAME_OUT_READ_RC           ,_param->_nb_inst_insert,1                                   );
     65        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RC_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     66        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RC_PHY    ,_param->_nb_inst_insert,_param->_size_special_register      );
     67        DELETE1_SIGNAL(out_RENAME_OUT_WRITE_RD          ,_param->_nb_inst_insert,1                                   );
     68        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RD_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     69        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register      );
     70        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert,_param->_size_general_register      );
     71        DELETE1_SIGNAL(out_RENAME_OUT_WRITE_RE          ,_param->_nb_inst_insert,1                                   );
     72        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RE_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     73        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register      );
     74        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register      );
    7875      }
    7976    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_allocation.cpp

    r109 r112  
    4949                                                         ,IN
    5050                                                         ,SOUTH,
    51                                                          "Generalist interface"
     51                                                         _("Generalist interface")
    5252#endif
    5353                                                         );
     
    5858    // ~~~~~[ interface : "pop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959     {
    60        ALLOC1_INTERFACE("pop", IN, NORTH, "New destination register", _param->_nb_pop);
     60       ALLOC1_INTERFACE_BEGIN("pop", IN, NORTH, _("New destination register"), _param->_nb_pop);
    6161
    6262       ALLOC1_VALACK_IN ( in_POP_VAL        ,VAL);
     
    6666       ALLOC1_SIGNAL_IN ( in_POP_SPR_VAL    ,"spr_val"    ,Tcontrol_t        ,1                             );
    6767       ALLOC1_SIGNAL_OUT(out_POP_SPR_NUM_REG,"spr_num_reg",Tspecial_address_t,_param->_size_special_register);
     68
     69       ALLOC1_INTERFACE_END(_param->_nb_pop);
    6870     }
    6971
    7072    // ~~~~~[ interface : "push_gpr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7173     {
    72        ALLOC1_INTERFACE("push_gpr", IN, NORTH, "General register free", _param->_nb_push);
     74       ALLOC1_INTERFACE_BEGIN("push_gpr", IN, NORTH, _("General register free"), _param->_nb_push);
    7375
    7476       ALLOC1_VALACK_IN ( in_PUSH_GPR_VAL    ,VAL);
    7577       ALLOC1_VALACK_OUT(out_PUSH_GPR_ACK    ,ACK);
    7678       ALLOC1_SIGNAL_IN ( in_PUSH_GPR_NUM_REG,"num_reg",Tgeneral_address_t,_param->_size_general_register);
     79
     80       ALLOC1_INTERFACE_END(_param->_nb_push);
    7781     }
    7882
    7983    // ~~~~~[ interface : "push_spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8084     {
    81        ALLOC1_INTERFACE("push_spr", IN, NORTH, "General register free", _param->_nb_push);
     85       ALLOC1_INTERFACE_BEGIN("push_spr", IN, NORTH, _("General register free"), _param->_nb_push);
    8286
    8387       ALLOC1_VALACK_IN ( in_PUSH_SPR_VAL    ,VAL);
    8488       ALLOC1_VALACK_OUT(out_PUSH_SPR_ACK    ,ACK);
    8589       ALLOC1_SIGNAL_IN ( in_PUSH_SPR_NUM_REG,"num_reg",Tspecial_address_t,_param->_size_special_register);
     90
     91       ALLOC1_INTERFACE_END(_param->_nb_push);
    8692     }
    8793
    8894     if (usage_is_set(_usage,USE_SYSTEMC))
    8995       {
    90      _gpr_list = new std::list<uint32_t> [_param->_nb_bank];
    91      _spr_list = new std::list<uint32_t> [_param->_nb_bank];
     96     ALLOC1(_gpr_list,std::list<uint32_t>,_param->_nb_bank);
     97     ALLOC1(_spr_list,std::list<uint32_t>,_param->_nb_bank);
    9298
    93      internal_POP_ACK       = new Tcontrol_t [_param->_nb_pop];
    94      internal_POP_GPR_BANK  = new uint32_t   [_param->_nb_pop];
    95      internal_POP_SPR_BANK  = new uint32_t   [_param->_nb_pop];
     99     ALLOC1(internal_POP_ACK      ,Tcontrol_t,_param->_nb_pop);
     100     ALLOC1(internal_POP_GPR_BANK ,uint32_t  ,_param->_nb_pop);
     101     ALLOC1(internal_POP_SPR_BANK ,uint32_t  ,_param->_nb_pop);
    96102
    97      internal_PUSH_GPR_ACK  = new Tcontrol_t [_param->_nb_push];
    98      internal_PUSH_SPR_ACK  = new Tcontrol_t [_param->_nb_push];
    99      internal_PUSH_GPR_BANK = new uint32_t   [_param->_nb_push];
    100      internal_PUSH_SPR_BANK = new uint32_t   [_param->_nb_push];
     103     ALLOC1(internal_PUSH_GPR_ACK ,Tcontrol_t,_param->_nb_push);
     104     ALLOC1(internal_PUSH_SPR_ACK ,Tcontrol_t,_param->_nb_push);
     105     ALLOC1(internal_PUSH_GPR_BANK,uint32_t  ,_param->_nb_push);
     106     ALLOC1(internal_PUSH_SPR_BANK,uint32_t  ,_param->_nb_push);
    101107       }
     108
    102109    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    103110    _priority_gpr = new generic::priority::Priority (_name+"_priority_gpr",
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_deallocation.cpp

    r109 r112  
    77
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Free_List_unit.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2930        delete    in_NRESET;
    3031
    31         delete []  in_POP_VAL        ;
    32         delete [] out_POP_ACK        ;
    33         delete []  in_POP_GPR_VAL    ;
    34         delete [] out_POP_GPR_NUM_REG;
    35         delete []  in_POP_SPR_VAL    ;
    36         delete [] out_POP_SPR_NUM_REG;
     32        DELETE1_SIGNAL( in_POP_VAL         ,_param->_nb_pop,1);
     33        DELETE1_SIGNAL(out_POP_ACK         ,_param->_nb_pop,1);
     34        DELETE1_SIGNAL( in_POP_GPR_VAL     ,_param->_nb_pop,1                             );
     35        DELETE1_SIGNAL(out_POP_GPR_NUM_REG ,_param->_nb_pop,_param->_size_general_register);
     36        DELETE1_SIGNAL( in_POP_SPR_VAL     ,_param->_nb_pop,1                             );
     37        DELETE1_SIGNAL(out_POP_SPR_NUM_REG ,_param->_nb_pop,_param->_size_special_register);
    3738
    38         delete []  in_PUSH_GPR_VAL    ;
    39         delete [] out_PUSH_GPR_ACK    ;
    40         delete []  in_PUSH_GPR_NUM_REG;
     39        DELETE1_SIGNAL( in_PUSH_GPR_VAL    ,_param->_nb_push,1);
     40        DELETE1_SIGNAL(out_PUSH_GPR_ACK    ,_param->_nb_push,1);
     41        DELETE1_SIGNAL( in_PUSH_GPR_NUM_REG,_param->_nb_push,_param->_size_general_register);
    4142
    42         delete []  in_PUSH_SPR_VAL    ;
    43         delete [] out_PUSH_SPR_ACK    ;
    44         delete []  in_PUSH_SPR_NUM_REG;
     43        DELETE1_SIGNAL( in_PUSH_SPR_VAL    ,_param->_nb_push,1);
     44        DELETE1_SIGNAL(out_PUSH_SPR_ACK    ,_param->_nb_push,1);
     45        DELETE1_SIGNAL( in_PUSH_SPR_NUM_REG,_param->_nb_push,_param->_size_special_register);
    4546
    46         delete [] _gpr_list;
    47         delete [] _spr_list;
    48        
    49         delete [] internal_POP_ACK     ;
    50         delete [] internal_POP_GPR_BANK;
    51         delete [] internal_POP_SPR_BANK;
    52        
    53         delete [] internal_PUSH_GPR_ACK ;
    54         delete [] internal_PUSH_SPR_ACK ;
    55         delete [] internal_PUSH_GPR_BANK;
    56         delete [] internal_PUSH_SPR_BANK;
     47        DELETE1(_gpr_list             ,_param->_nb_bank);
     48        DELETE1(_spr_list             ,_param->_nb_bank);
     49
     50        DELETE1(internal_POP_ACK      ,_param->_nb_pop);
     51        DELETE1(internal_POP_GPR_BANK ,_param->_nb_pop);
     52        DELETE1(internal_POP_SPR_BANK ,_param->_nb_pop);
     53
     54        DELETE1(internal_PUSH_GPR_ACK ,_param->_nb_push);
     55        DELETE1(internal_PUSH_SPR_ACK ,_param->_nb_push);
     56        DELETE1(internal_PUSH_GPR_BANK,_param->_nb_push);
     57        DELETE1(internal_PUSH_SPR_BANK,_param->_nb_push);
    5758      }
    5859
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_transition.cpp

    r110 r112  
    5151
    5252#ifdef STATISTICS
    53               (*_stat_nb_inst_pop) ++;
     53              if (usage_is_set(_usage,USE_STATISTICS))
     54                (*_stat_nb_inst_pop) ++;
    5455#endif
    5556
     
    5758                {
    5859#ifdef STATISTICS
    59                   (*_stat_nb_inst_pop_gpr) ++;
     60                  if (usage_is_set(_usage,USE_STATISTICS))
     61                    (*_stat_nb_inst_pop_gpr) ++;
    6062#endif
    6163                  _gpr_list [internal_POP_GPR_BANK[i]].pop_front();
     
    6567                {
    6668#ifdef STATISTICS
    67                   (*_stat_nb_inst_pop_spr) ++;
     69                  if (usage_is_set(_usage,USE_STATISTICS))
     70                    (*_stat_nb_inst_pop_spr) ++;
    6871#endif
    6972                  _spr_list [internal_POP_SPR_BANK[i]].pop_front();
     
    8285
    8386#ifdef STATISTICS
    84               (*_stat_nb_inst_push_gpr) ++;
     87              if (usage_is_set(_usage,USE_STATISTICS))
     88                (*_stat_nb_inst_push_gpr) ++;
    8589#endif
    8690
     
    98102
    99103#ifdef STATISTICS
    100               (*_stat_nb_inst_push_spr) ++;
     104              if (usage_is_set(_usage,USE_STATISTICS))
     105                (*_stat_nb_inst_push_spr) ++;
    101106#endif
    102107
     
    105110
    106111#ifdef STATISTICS
    107           for (uint32_t i=0; i<_param->_nb_bank; ++i)
    108             {
     112        if (usage_is_set(_usage,USE_STATISTICS))
     113          for (uint32_t i=0; i<_param->_nb_bank; ++i)
     114            {
     115             
    109116              (*(_stat_bank_gpr_nb_elt [i])) += _gpr_list[i].size();
    110117              (*(_stat_bank_spr_nb_elt [i])) += _spr_list[i].size();
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/SelfTest/src/test.cpp

    r106 r112  
    8989  ALLOC1_SC_SIGNAL(out_RETIRE_RESTORE_RD_PHY_OLD,"out_RETIRE_RESTORE_RD_PHY_OLD",Tcontrol_t        ,_param->_nb_inst_retire);
    9090  ALLOC1_SC_SIGNAL(out_RETIRE_RESTORE_RE_PHY_OLD,"out_RETIRE_RESTORE_RE_PHY_OLD",Tcontrol_t        ,_param->_nb_inst_retire);
     91  ALLOC1_SC_SIGNAL(out_RETIRE_RESTORE           ,"out_RETIRE_RESTORE           ",Tcontrol_t        ,_param->_nb_inst_retire);
    9192
    9293  ALLOC2_SC_SIGNAL( in_RETIRE_EVENT_VAL         ," in_RETIRE_EVENT_VAL         ",Tcontrol_t        ,_param->_nb_front_end,_param->_nb_context[it1]);
     
    147148  INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire);
    148149  INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire);
     150  INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_RESTORE           ,_param->_nb_inst_retire);
    149151
    150152  INSTANCE2_SC_SIGNAL(_Register_Address_Translation_unit, in_RETIRE_EVENT_VAL         ,_param->_nb_front_end, _param->_nb_context[it1]);
     
    540542  delete [] out_RETIRE_RESTORE_RD_PHY_OLD;
    541543  delete [] out_RETIRE_RESTORE_RE_PHY_OLD;
     544  delete [] out_RETIRE_RESTORE           ;
    542545
    543546  DELETE2_SC_SIGNAL( in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/include/Register_Address_Translation_unit.h

    r104 r112  
    104104  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire]
    105105  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_RESTORE_RE_PHY_OLD;//[nb_inst_retire]
     106  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_RESTORE           ;//[nb_inst_retire]
    106107
    107108    // ~~~~~[ Interface "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    126127  private   : bool                        *** internal_rat_gpr_update_table;         //[nb_front_end][nb_context][nb_general_register_logic]
    127128  private   : bool                        *** internal_rat_spr_update_table;         //[nb_front_end][nb_context][nb_special_register_logic]
     129  public    : Tcontrol_t                    * internal_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire]
     130  public    : Tcontrol_t                    * internal_RETIRE_RESTORE_RE_PHY_OLD;//[nb_inst_retire]
     131
    128132#endif
    129133
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_allocation.cpp

    r104 r112  
    5959    // ~~~~~[ Interface "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6060    {
    61       ALLOC1_INTERFACE("rename",IN,EAST,"Input to rename source logical register", _param->_nb_inst_insert);
     61      ALLOC1_INTERFACE_BEGIN("rename",IN,EAST,_("Input to rename source logical register"), _param->_nb_inst_insert);
    6262
    6363      ALLOC1_VALACK_IN ( in_RENAME_VAL               , VAL);
     
    7575      ALLOC1_SIGNAL_OUT(out_RENAME_NUM_REG_RD_PHY_OLD,"num_reg_rd_phy_old",Tgeneral_address_t,_param->_size_general_register);
    7676      ALLOC1_SIGNAL_OUT(out_RENAME_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register);
     77
     78      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    7779    }
    7880   
    7981    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8082    {
    81       ALLOC1_INTERFACE("insert",IN,NORTH,"Input to rename destination logical register", _param->_nb_inst_insert);
     83      ALLOC1_INTERFACE_BEGIN("insert",IN,NORTH,_("Input to rename destination logical register"), _param->_nb_inst_insert);
    8284     
    8385      ALLOC1_VALACK_IN ( in_INSERT_VAL           ,VAL);
     
    9193      ALLOC1_SIGNAL_IN ( in_INSERT_NUM_REG_RD_PHY,"num_reg_rd_phy",Tgeneral_address_t,_param->_size_general_register);
    9294      ALLOC1_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY,"num_reg_re_phy",Tspecial_address_t,_param->_size_special_register);
     95
     96      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    9397    }
    9498   
    9599    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    96100    {
    97       ALLOC1_INTERFACE("retire",IN,NORTH,"Input to update on event", _param->_nb_inst_retire);
     101      ALLOC1_INTERFACE_BEGIN("retire",IN,NORTH,_("Input to update on event"), _param->_nb_inst_retire);
    98102
    99103      ALLOC1_VALACK_IN ( in_RETIRE_VAL               ,VAL);
     
    109113      ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE_RD_PHY_OLD,"restore_rd_phy_old",Tcontrol_t        ,1);
    110114      ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE_RE_PHY_OLD,"restore_re_phy_old",Tcontrol_t        ,1);
     115      ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE           ,"restore"           ,Tcontrol_t        ,1);
     116
     117      ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
    111118    }
    112119
    113120    // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    114121    {
    115       ALLOC2_INTERFACE("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
     122      ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
    116123
    117124      _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL        ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
    118125      _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK        ,ACK,_param->_nb_front_end, _param->_nb_context[it1]);
    119126      _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE      ,"state"             ,Tevent_state_t    ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]);
     127
     128      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    120129    }
    121130
     
    127136    ALLOC2(internal_RETIRE_EVENT_ACK ,Tcontrol_t,_param->_nb_front_end,_param->_nb_context[it1]);
    128137
    129     rat_gpr                       = new Tgeneral_address_t ** [_param->_nb_front_end];
    130     rat_spr                       = new Tspecial_address_t ** [_param->_nb_front_end];
    131     rat_gpr_update_table          = new bool               ** [_param->_nb_front_end];
    132     rat_spr_update_table          = new bool               ** [_param->_nb_front_end];
    133     internal_rat_gpr_update_table = new bool               ** [_param->_nb_front_end];
    134     internal_rat_spr_update_table = new bool               ** [_param->_nb_front_end];
     138    ALLOC3(rat_gpr                      ,Tgeneral_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     139    ALLOC3(rat_spr                      ,Tspecial_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
     140    ALLOC3(rat_gpr_update_table         ,bool              ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     141    ALLOC3(rat_spr_update_table         ,bool              ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
     142    ALLOC3(internal_rat_gpr_update_table,bool              ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     143    ALLOC3(internal_rat_spr_update_table,bool              ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
    135144
    136     for (uint32_t i=0; i<_param->_nb_front_end; i++)
    137       {
    138         rat_gpr                       [i] = new Tgeneral_address_t * [_param->_nb_context[i]];
    139         rat_spr                       [i] = new Tspecial_address_t * [_param->_nb_context[i]];
    140         rat_gpr_update_table          [i] = new bool               * [_param->_nb_context[i]];
    141         rat_spr_update_table          [i] = new bool               * [_param->_nb_context[i]];
    142         internal_rat_gpr_update_table [i] = new bool               * [_param->_nb_context[i]];
    143         internal_rat_spr_update_table [i] = new bool               * [_param->_nb_context[i]];
    144 
    145         for (uint32_t j=0; j<_param->_nb_context[i]; j++)
    146           {
    147             rat_gpr                       [i][j] = new Tgeneral_address_t [_param->_nb_general_register_logic];
    148             rat_spr                       [i][j] = new Tspecial_address_t [_param->_nb_special_register_logic];
    149             rat_gpr_update_table          [i][j] = new bool               [_param->_nb_general_register_logic];
    150             rat_spr_update_table          [i][j] = new bool               [_param->_nb_special_register_logic];
    151             internal_rat_gpr_update_table [i][j] = new bool               [_param->_nb_general_register_logic];
    152             internal_rat_spr_update_table [i][j] = new bool               [_param->_nb_special_register_logic];
    153           }
    154       }
     145    ALLOC1(internal_RETIRE_RESTORE_RD_PHY_OLD,Tcontrol_t,_param->_nb_inst_retire);
     146    ALLOC1(internal_RETIRE_RESTORE_RE_PHY_OLD,Tcontrol_t,_param->_nb_inst_retire);
    155147      }
    156148
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_deallocation.cpp

    r104 r112  
    3030        delete     in_NRESET;
    3131
    32         delete []  in_RENAME_VAL             ;
    33         delete [] out_RENAME_ACK             ;
    34         if (_param->_have_port_front_end_id)
    35         delete []  in_RENAME_FRONT_END_ID    ;
    36         if (_param->_have_port_context_id)
    37         delete []  in_RENAME_CONTEXT_ID      ;
    38         delete []  in_RENAME_NUM_REG_RA_LOG  ;
    39         delete []  in_RENAME_NUM_REG_RB_LOG  ;
    40         delete []  in_RENAME_NUM_REG_RC_LOG  ;
    41         delete []  in_RENAME_NUM_REG_RD_LOG  ;
    42         delete []  in_RENAME_NUM_REG_RE_LOG  ;
    43         delete [] out_RENAME_NUM_REG_RA_PHY  ;
    44         delete [] out_RENAME_NUM_REG_RB_PHY  ;
    45         delete [] out_RENAME_NUM_REG_RC_PHY  ;
    46         delete [] out_RENAME_NUM_REG_RD_PHY_OLD;
    47         delete [] out_RENAME_NUM_REG_RE_PHY_OLD;
     32        DELETE1_SIGNAL( in_RENAME_VAL               ,_param->_nb_inst_insert,1);
     33        DELETE1_SIGNAL(out_RENAME_ACK               ,_param->_nb_inst_insert,1);
     34        DELETE1_SIGNAL( in_RENAME_FRONT_END_ID      ,_param->_nb_inst_insert,_param->_size_front_end_id);
     35        DELETE1_SIGNAL( in_RENAME_CONTEXT_ID        ,_param->_nb_inst_insert,_param->_size_context_id  );
     36        DELETE1_SIGNAL( in_RENAME_NUM_REG_RA_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     37        DELETE1_SIGNAL( in_RENAME_NUM_REG_RB_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     38        DELETE1_SIGNAL( in_RENAME_NUM_REG_RC_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     39        DELETE1_SIGNAL( in_RENAME_NUM_REG_RD_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     40        DELETE1_SIGNAL( in_RENAME_NUM_REG_RE_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     41        DELETE1_SIGNAL(out_RENAME_NUM_REG_RA_PHY    ,_param->_nb_inst_insert,_param->_size_general_register);
     42        DELETE1_SIGNAL(out_RENAME_NUM_REG_RB_PHY    ,_param->_nb_inst_insert,_param->_size_general_register);
     43        DELETE1_SIGNAL(out_RENAME_NUM_REG_RC_PHY    ,_param->_nb_inst_insert,_param->_size_special_register);
     44        DELETE1_SIGNAL(out_RENAME_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register);
     45        DELETE1_SIGNAL(out_RENAME_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register);
    4846
    49         delete []  in_INSERT_VAL             ;
    50         delete [] out_INSERT_ACK             ;
    51 //      if (_param->_have_port_front_end_id)
    52 //      delete []  in_INSERT_FRONT_END_ID    ;
    53 //      if (_param->_have_port_context_id)
    54 //      delete []  in_INSERT_CONTEXT_ID      ;
    55         delete []  in_INSERT_WRITE_RD        ;
    56         delete []  in_INSERT_WRITE_RE        ;
    57         delete []  in_INSERT_NUM_REG_RD_LOG  ;
    58         delete []  in_INSERT_NUM_REG_RE_LOG  ;
    59         delete []  in_INSERT_NUM_REG_RD_PHY  ;
    60         delete []  in_INSERT_NUM_REG_RE_PHY  ;
     47        DELETE1_SIGNAL( in_INSERT_VAL           ,_param->_nb_inst_insert,1);
     48        DELETE1_SIGNAL(out_INSERT_ACK           ,_param->_nb_inst_insert,1);
     49//      DELETE1_SIGNAL( in_INSERT_FRONT_END_ID  ,_param->_nb_inst_insert,_param->_size_front_end_id);
     50//      DELETE1_SIGNAL( in_INSERT_CONTEXT_ID    ,_param->_nb_inst_insert,_param->_size_context_id  );
     51        DELETE1_SIGNAL( in_INSERT_WRITE_RD      ,_param->_nb_inst_insert,1);
     52        DELETE1_SIGNAL( in_INSERT_WRITE_RE      ,_param->_nb_inst_insert,1);
     53        DELETE1_SIGNAL( in_INSERT_NUM_REG_RD_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic);
     54        DELETE1_SIGNAL( in_INSERT_NUM_REG_RE_LOG,_param->_nb_inst_insert,_param->_size_special_register_logic);
     55        DELETE1_SIGNAL( in_INSERT_NUM_REG_RD_PHY,_param->_nb_inst_insert,_param->_size_general_register);
     56        DELETE1_SIGNAL( in_INSERT_NUM_REG_RE_PHY,_param->_nb_inst_insert,_param->_size_special_register);
    6157
    62         delete []  in_RETIRE_VAL               ;
    63         delete [] out_RETIRE_ACK               ;
    64         if (_param->_have_port_front_end_id)
    65         delete []  in_RETIRE_FRONT_END_ID      ;
    66         if (_param->_have_port_context_id)
    67         delete []  in_RETIRE_CONTEXT_ID        ;
    68         delete []  in_RETIRE_WRITE_RD          ;
    69         delete []  in_RETIRE_WRITE_RE          ;
    70         delete []  in_RETIRE_NUM_REG_RD_LOG    ;
    71         delete []  in_RETIRE_NUM_REG_RE_LOG    ;
    72         delete []  in_RETIRE_NUM_REG_RD_PHY_OLD;
    73         delete []  in_RETIRE_NUM_REG_RE_PHY_OLD;
    74         delete [] out_RETIRE_RESTORE_RD_PHY_OLD;
    75         delete [] out_RETIRE_RESTORE_RE_PHY_OLD;
     58        DELETE1_SIGNAL( in_RETIRE_VAL               ,_param->_nb_inst_retire,1);
     59        DELETE1_SIGNAL(out_RETIRE_ACK               ,_param->_nb_inst_retire,1);
     60        DELETE1_SIGNAL( in_RETIRE_FRONT_END_ID      ,_param->_nb_inst_retire,_param->_size_front_end_id);
     61        DELETE1_SIGNAL( in_RETIRE_CONTEXT_ID        ,_param->_nb_inst_retire,_param->_size_context_id  );
     62        DELETE1_SIGNAL( in_RETIRE_WRITE_RD          ,_param->_nb_inst_retire,1);
     63        DELETE1_SIGNAL( in_RETIRE_WRITE_RE          ,_param->_nb_inst_retire,1);
     64        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_LOG    ,_param->_nb_inst_retire,_param->_size_general_register_logic);
     65        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_LOG    ,_param->_nb_inst_retire,_param->_size_special_register_logic);
     66        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire,_param->_size_general_register);
     67        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire,_param->_size_special_register);
     68        DELETE1_SIGNAL(out_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire,1);
     69        DELETE1_SIGNAL(out_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire,1);
     70        DELETE1_SIGNAL(out_RETIRE_RESTORE           ,_param->_nb_inst_retire,1);
     71
     72        DELETE2_SIGNAL( in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1],1);
     73        DELETE2_SIGNAL(out_RETIRE_EVENT_ACK            ,_param->_nb_front_end, _param->_nb_context[it1],1);
     74        DELETE2_SIGNAL( in_RETIRE_EVENT_STATE          ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state);
    7675
    7776        DELETE1(internal_RENAME_ACK                    ,_param->_nb_inst_insert);
     
    8079        DELETE2(internal_RETIRE_EVENT_ACK              ,_param->_nb_front_end,_param->_nb_context[it1]);
    8180
    82         DELETE2_SIGNAL( in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1],1);
    83         DELETE2_SIGNAL(out_RETIRE_EVENT_ACK            ,_param->_nb_front_end, _param->_nb_context[it1],1);
    84         DELETE2_SIGNAL( in_RETIRE_EVENT_STATE          ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state);
     81        DELETE3(rat_gpr                      ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     82        DELETE3(rat_spr                      ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
     83        DELETE3(rat_gpr_update_table         ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     84        DELETE3(rat_spr_update_table         ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
     85        DELETE3(internal_rat_gpr_update_table,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     86        DELETE3(internal_rat_spr_update_table,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
    8587       
    86         delete [] rat_gpr             ;
    87         delete [] rat_spr             ;
    88         delete [] rat_gpr_update_table;
    89         delete [] rat_spr_update_table;
    90         delete [] internal_rat_gpr_update_table;
    91         delete [] internal_rat_spr_update_table;
     88        DELETE1(internal_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire);
     89        DELETE1(internal_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire);
    9290      }
    9391
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_genMealy_retire.cpp

    r106 r112  
    3131        {
    3232          // An event occure
    33           bool no_event = not (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) and (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) == EVENT_STATE_EVENT));
     33          // bool event = (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) != EVENT_STATE_NO_EVENT);
     34          bool reset_update_table = (PORT_READ(in_RETIRE_EVENT_VAL [i][j]) and // always ack
     35                                     (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) == EVENT_STATE_EVENT));
     36
     37          // not event -> update_table == 1 -> always update
     38          // event     -> update_table and not reset
    3439          for (uint32_t k=0; k<_param->_nb_general_register_logic; ++k)
    35             internal_rat_gpr_update_table [i][j][k] = rat_gpr_update_table [i][j][k] and no_event;
     40            internal_rat_gpr_update_table [i][j][k] = // not event or
     41                                                      (rat_gpr_update_table [i][j][k] and not reset_update_table);
    3642          for (uint32_t k=0; k<_param->_nb_special_register_logic; ++k)
    37             internal_rat_spr_update_table [i][j][k] = rat_spr_update_table [i][j][k] and no_event;
     43            internal_rat_spr_update_table [i][j][k] = // not event or
     44                                                      (rat_spr_update_table [i][j][k] and not reset_update_table);
    3845        }
    3946
     
    5057        Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RETIRE_FRONT_END_ID [i]):0;
    5158        Tcontext_t context_id   = (_param->_have_port_context_id  )?PORT_READ(in_RETIRE_CONTEXT_ID   [i]):0;
     59        Tcontrol_t restore      = (PORT_READ(in_RETIRE_EVENT_STATE [front_end_id][context_id]) != EVENT_STATE_NO_EVENT);
    5260
    5361        // Test if event -> need restore ?
    54         if (PORT_READ(in_RETIRE_EVENT_STATE [front_end_id][context_id]) != EVENT_STATE_NO_EVENT)
     62        if (restore)
    5563          {
    5664            log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * Have event");
     
    8290            log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * restore_re_phy_old   : %d",retire_restore_re_phy_old);
    8391          }
     92
     93        internal_RETIRE_RESTORE_RD_PHY_OLD[i] = retire_restore_rd_phy_old;
     94        internal_RETIRE_RESTORE_RE_PHY_OLD[i] = retire_restore_re_phy_old;
    8495             
    85         PORT_WRITE(out_RETIRE_RESTORE_RD_PHY_OLD[i], retire_restore_rd_phy_old);
    86         PORT_WRITE(out_RETIRE_RESTORE_RE_PHY_OLD[i], retire_restore_re_phy_old);
     96        PORT_WRITE(out_RETIRE_RESTORE_RD_PHY_OLD[i], internal_RETIRE_RESTORE_RD_PHY_OLD[i]);
     97        PORT_WRITE(out_RETIRE_RESTORE_RE_PHY_OLD[i], internal_RETIRE_RESTORE_RE_PHY_OLD[i]);
     98        PORT_WRITE(out_RETIRE_RESTORE           [i], restore);
    8799      }
    88100
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_transition.cpp

    r106 r112  
    125125              log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * event_state  : %d",event_state);
    126126
    127               if (event_state != EVENT_STATE_NO_EVENT)
    128                 {
     127//            if (event_state != EVENT_STATE_NO_EVENT)
     128//              {
    129129                  // Test if write and have not a previous update
    130130                  if (PORT_READ(in_RETIRE_WRITE_RD [i]) == 1)
    131131                    {
    132132                      Tgeneral_address_t rd_log = PORT_READ(in_RETIRE_NUM_REG_RD_LOG [i]);
    133                      
     133                     
    134134                      log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * retire RD");
    135135                      log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"      * rd_log       : %d",rd_log);
    136136                     
    137 //                    if (RETIRE_RESTORE_RD_PHY_OLD [i])
    138                       if (rat_gpr_update_table [front_end_id][context_id][rd_log] == 0)
     137// #ifdef DEBUG_TEST
     138//                       if (not (internal_RETIRE_RESTORE_RD_PHY_OLD [i] and ( (rat_gpr_update_table [front_end_id][context_id][rd_log] == 0)) and (event_state != EVENT_STATE_NO_EVENT)))
     139//                         throw ERRORMORPHEO(FUNCTION,toString(_("restore_rd_phy_old [%d] = %d, but rat_gpr_update_table[%d][%d][%d] = %d\n"),
     140//                                                              i,internal_RETIRE_RESTORE_RD_PHY_OLD [i],
     141//                                                              front_end_id,context_id,rd_log,rat_gpr_update_table [front_end_id][context_id][rd_log]));
     142// #endif
     143
     144                      if (internal_RETIRE_RESTORE_RD_PHY_OLD [i])
     145//                    if (rat_gpr_update_table [front_end_id][context_id][rd_log] == 0)
    139146                        {                     
    140147                          rat_gpr              [front_end_id][context_id][rd_log] = PORT_READ(in_RETIRE_NUM_REG_RD_PHY_OLD [i]);
     
    150157                      log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"      * re_log       : %d",re_log);
    151158
    152 //                    if (RETIRE_RESTORE_RE_PHY_OLD [i])
    153                       if (rat_spr_update_table [front_end_id][context_id][re_log] == 0)
     159// #ifdef DEBUG_TEST
     160//                       if (not (internal_RETIRE_RESTORE_RE_PHY_OLD [i] and ((rat_spr_update_table [front_end_id][context_id][re_log] == 0) and (event_state != EVENT_STATE_NO_EVENT))))
     161//                         throw ERRORMORPHEO(FUNCTION,toString(_("restore_re_phy_old [%d] = %d, but rat_spr_update_table[%d][%d][%d] = %d\n"),
     162//                                                              i,internal_RETIRE_RESTORE_RE_PHY_OLD [i],
     163//                                                              front_end_id,context_id,re_log,rat_spr_update_table [front_end_id][context_id][re_log]));
     164// #endif
     165
     166                      if (internal_RETIRE_RESTORE_RE_PHY_OLD [i])
     167//                    if (rat_spr_update_table [front_end_id][context_id][re_log] == 0)
    154168                        {                     
    155169                          rat_spr              [front_end_id][context_id][re_log] = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_OLD [i]);
     
    157171                        }
    158172                    }
    159                 }
     173//              }
    160174            }
    161175      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_allocation.cpp

    r110 r112  
    4949                                                         ,IN
    5050                                                         ,SOUTH,
    51                                                          "Generalist interface"
     51                                                         _("Generalist interface")
    5252#endif
    5353                                                         );
     
    5959    // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6060    {
    61       ALLOC1_INTERFACE("insert",OUT, EAST, "insert's interface", _param->_nb_inst_insert);
     61      ALLOC1_INTERFACE_BEGIN("insert",OUT, EAST, _("insert's interface"), _param->_nb_inst_insert);
    6262     
    6363      ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_VAL        ,"rename_val"        ,Tcontrol_t,1);
     
    122122      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_OLD                    ,"NUM_REG_RE_PHY_OLD"                    ,Tspecial_address_t,_param->_size_special_register      );
    123123      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW                    ,"NUM_REG_RE_PHY_NEW"                    ,Tspecial_address_t,_param->_size_special_register      );
     124
     125      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    124126    }
    125127
    126128    // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    127129    {
    128       ALLOC1_INTERFACE("retire", IN, WEST, "retire's interface", _param->_nb_inst_retire);
     130      ALLOC1_INTERFACE_BEGIN("retire", IN, WEST, _("retire's interface"), _param->_nb_inst_retire);
    129131     
    130132      ALLOC1_SIGNAL_IN ( in_RETIRE_VAL          ,"val"          ,Tcontrol_t,1);
     
    134136      ALLOC1_SIGNAL_OUT(out_RETIRE_STAT_LIST_VAL,"stat_list_val",Tcontrol_t,1);
    135137      ALLOC1_SIGNAL_IN ( in_RETIRE_STAT_LIST_ACK,"stat_list_ack",Tcontrol_t,1);
     138
     139      ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
    136140    }
    137141
    138142#ifdef STATISTICS
    139     ALLOC1(internal_INSERT_RENAME_ACK, Tcontrol_t,_param->_nb_inst_insert);
     143    if (usage_is_set(_usage,USE_SYSTEMC))
     144      ALLOC1(internal_INSERT_RENAME_ACK, Tcontrol_t,_param->_nb_inst_insert);
    140145#endif
    141146
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-min.cfg

    r88 r112  
    881       1       *4      #nb_reg_free       
    991       1       *2      #nb_bank           
    10 1       1       *2      #size_read_counter 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_1.cfg

    r88 r112  
    881       4       *4      #nb_reg_free       
    998       8       *2      #nb_bank           
    10 1       2       *2      #size_read_counter 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_1a.cfg

    r88 r112  
    881       4       *4      #nb_reg_free       
    998       8       *2      #nb_bank           
    10 1       2       *2      #size_read_counter 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4a.cfg

    r88 r112  
    11114       4       *4      #nb_reg_free       
    12128       8       *2      #nb_bank           
    13 2       2       *2      #size_read_counter 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4b.cfg

    r88 r112  
    884       4       *4      #nb_reg_free       
    998       8       *2      #nb_bank           
    10 2       2       *2      #size_read_counter 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4c.cfg

    r88 r112  
    994       4       *4      #nb_reg_free       
    10108       8       *2      #nb_bank           
    11 2       2       *2      #size_read_counter 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4d.cfg

    r88 r112  
    994       4       *4      #nb_reg_free       
    10108       8       *2      #nb_bank           
    11 2       2       *2      #size_read_counter 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/src/main.cpp

    r88 r112  
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/include/test.h"
    99
    10 #define NB_PARAMS 8
     10#define NB_PARAMS 7
    1111
    1212void usage (int argc, char * argv[])
     
    2222  err (_(" * nb_reg_free                        (uint32_t)\n"));
    2323  err (_(" * nb_bank                            (uint32_t)\n"));
    24   err (_(" * size_read_counter                  (uint32_t)\n"));
     24//   err (_(" * size_read_counter                  (uint32_t)\n"));
    2525
    2626  exit (1);
     
    5151  uint32_t   _nb_reg_free         = atoi(argv[x++]);
    5252  uint32_t   _nb_bank             = atoi(argv[x++]);
    53   uint32_t   _size_read_counter   = atoi(argv[x++]);
     53//   uint32_t   _size_read_counter   = atoi(argv[x++]);
    5454
    5555  int _return = EXIT_SUCCESS;
     
    6565         _nb_reg_free           ,
    6666         _nb_bank               ,
    67          _size_read_counter     ,
     67//       _size_read_counter     ,
    6868         true //is_toplevel
    6969         );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/config_mono_thread.cfg

    r81 r112  
    881       4       *2      #_nb_reg_free           
    994       4       *2      #_nb_bank               
    10 2       2       +1      #_size_counter
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/config_multi_thread.cfg

    r81 r112  
    994       4       *2      #_nb_reg_free           
    10104       8       *2      #_nb_bank               
    11 2       4       *2      #_size_counter
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/main.cpp

    r88 r112  
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/include/test.h"
    99
    10 #define NB_PARAMS 8
     10#define NB_PARAMS 7
    1111
    1212void usage (int argc, char * argv[])
     
    2222  err (_(" * nb_reg_free                        (uint32_t)\n"));
    2323  err (_(" * nb_bank                            (uint32_t)\n"));
    24   err (_(" * size_counter                       (uint32_t)\n"));
    2524
    2625  exit (1);
     
    5554  uint32_t   _nb_reg_free           = atoi(argv[x++]);
    5655  uint32_t   _nb_bank               = atoi(argv[x++]);
    57   uint32_t   _size_counter          = atoi(argv[x++]);
    5856
    5957  try
     
    6866         _nb_reg_free           ,
    6967         _nb_bank               ,
    70          _size_counter          ,
    7168         true //is_toplevel
    7269         );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/test.cpp

    r88 r112  
    7575  ALLOC1_SC_SIGNAL( in_RETIRE_VAL               ," in_RETIRE_VAL               ",Tcontrol_t        ,_param->_nb_inst_retire);
    7676  ALLOC1_SC_SIGNAL(out_RETIRE_ACK               ,"out_RETIRE_ACK               ",Tcontrol_t        ,_param->_nb_inst_retire);
     77  ALLOC1_SC_SIGNAL( in_RETIRE_RESTORE           ," in_RETIRE_RESTORE           ",Tcontrol_t        ,_param->_nb_inst_retire);
    7778  ALLOC1_SC_SIGNAL( in_RETIRE_READ_RA           ," in_RETIRE_READ_RA           ",Tcontrol_t        ,_param->_nb_inst_retire);
    7879  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RA_PHY    ," in_RETIRE_NUM_REG_RA_PHY    ",Tgeneral_address_t,_param->_nb_inst_retire);
     
    121122  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_VAL               ,_param->_nb_inst_retire);
    122123  INSTANCE1_SC_SIGNAL(_Stat_List_unit,out_RETIRE_ACK               ,_param->_nb_inst_retire);
     124  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_RESTORE           ,_param->_nb_inst_retire);
    123125  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_READ_RA           ,_param->_nb_inst_retire);
    124126  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RA_PHY    ,_param->_nb_inst_retire);
     
    234236                  TEST(bool, true,((gpr_status[reg]._is_free  == 0) and
    235237                                   (gpr_status[reg]._is_link  == 0) and
    236                                    (gpr_status[reg]._is_valid == 1) and
    237                                    (gpr_status[reg]._counter  == 0)));
     238                                   (gpr_status[reg]._is_valid == 1)//  and
     239//                                 (gpr_status[reg]._counter  == 0)
     240                                   ));
    238241
    239242                  gpr_status[reg]._is_free = 1;
     
    254257                  TEST(bool, true,((spr_status[reg]._is_free  == 0) and
    255258                                   (spr_status[reg]._is_link  == 0) and
    256                                    (spr_status[reg]._is_valid == 1) and
    257                                    (spr_status[reg]._counter  == 0)));
     259                                   (spr_status[reg]._is_valid == 1)//  and
     260//                                 (spr_status[reg]._counter  == 0)
     261                                   ));
    258262
    259263                  spr_status[reg]._is_free = 1;
     
    301305              Tspecial_address_t re       = (it_spr != free_list_spr.end())?*it_spr:0;
    302306
    303               Tcontrol_t         read_ra  = (gpr_status_insert[ra]._is_link) and (gpr_status_insert[ra]._counter < _param->_max_reader);
    304               Tcontrol_t         read_rb  = (gpr_status_insert[rb]._is_link) and (gpr_status_insert[rb]._counter < _param->_max_reader);
    305               Tcontrol_t         read_rc  = (spr_status_insert[rc]._is_link) and (spr_status_insert[rc]._counter < _param->_max_reader);
     307              Tcontrol_t         read_ra  = (gpr_status_insert[ra]._is_link); // and (gpr_status_insert[ra]._counter < _param->_max_reader);
     308              Tcontrol_t         read_rb  = (gpr_status_insert[rb]._is_link); // and (gpr_status_insert[rb]._counter < _param->_max_reader);
     309              Tcontrol_t         read_rc  = (spr_status_insert[rc]._is_link); // and (spr_status_insert[rc]._counter < _param->_max_reader);
    306310              Tcontrol_t         write_rd = (it_gpr != free_list_gpr.end());
    307311              Tcontrol_t         write_re = (it_spr != free_list_spr.end());
     
    341345              Tspecial_address_t re_new   = (rand()%(_param->_nb_special_register  ))  ;
    342346
    343               Tcontrol_t         read_ra  = (gpr_status_retire[ra]._is_link) and (gpr_status_retire[ra]._counter > 0);
    344               Tcontrol_t         read_rb  = (gpr_status_retire[rb]._is_link) and (gpr_status_retire[rb]._counter > 0);
    345               Tcontrol_t         read_rc  = (spr_status_retire[rc]._is_link) and (spr_status_retire[rc]._counter > 0);
     347              Tcontrol_t         read_ra  = (gpr_status_retire[ra]._is_link); // and (gpr_status_retire[ra]._counter > 0);
     348              Tcontrol_t         read_rb  = (gpr_status_retire[rb]._is_link); // and (gpr_status_retire[rb]._counter > 0);
     349              Tcontrol_t         read_rc  = (spr_status_retire[rc]._is_link); // and (spr_status_retire[rc]._counter > 0);
    346350              Tcontrol_t         write_rd = (    (gpr_status_retire[rd_old]._is_link ) and
    347351                                                 (gpr_status_retire[rd_old]._is_valid) and
     
    355359              in_RETIRE_VAL                [i]->write((rand()%100) < percent_transaction_retire);
    356360              in_RETIRE_READ_RA            [i]->write(read_ra );
    357               in_RETIRE_NUM_REG_RA_PHY     [i]->write(ra);
     361              in_RETIRE_RESTORE            [i]->write(0);
     362              in_RETIRE_NUM_REG_RA_PHY     [i]->write(ra);
    358363              in_RETIRE_READ_RB            [i]->write(read_rb );
    359364              in_RETIRE_NUM_REG_RB_PHY     [i]->write(rb);
     
    502507            if (in_RETIRE_VAL [i]->read() and out_RETIRE_ACK [i]->read())
    503508              {
     509                Tcontrol_t         restore        = in_RETIRE_RESTORE            [i]->read();
    504510                Tcontrol_t         read_ra        = in_RETIRE_READ_RA            [i]->read();
    505511                Tgeneral_address_t ra             = in_RETIRE_NUM_REG_RA_PHY     [i]->read();
     
    518524
    519525                LABEL("RETIRE [%d] - Accepted",i);
     526                LABEL(" * restore          : %d",restore);
    520527                LABEL(" * read_ra          : %d",read_ra );
    521528                LABEL(" * reg_ra           : %d",ra      );
     
    575582                if (write_rd)
    576583                  {
    577                     if (restore_rd_old)
     584                    if (restore)
    578585                      {
    579                         gpr_status[rd_old]._is_link  = 1;
    580                         gpr_status[rd_new]._is_link  = 0;
    581                         gpr_status[rd_new]._is_valid = 1;
     586                        if (restore_rd_old)
     587                          {
     588                            gpr_status[rd_old]._is_link  = 1;
     589                            gpr_status[rd_new]._is_link  = 0;
     590                            gpr_status[rd_new]._is_valid = 1;
     591                          }
     592                        else
     593                          {
     594                            gpr_status[rd_old]._is_link  = 0;
     595                            gpr_status[rd_new]._is_link  = 0;
     596                            gpr_status[rd_new]._is_valid = 1;
     597                          }
    582598                      }
    583599                    else
     
    586602                        gpr_status[rd_new]._is_valid = 1;
    587603                      }
     604
    588605                  }
    589606                if (write_re)
     
    619636                  TEST(bool, true,((gpr_status[reg]._is_free  == 0) and
    620637                                   (gpr_status[reg]._is_link  == 0) and
    621                                    (gpr_status[reg]._is_valid == 1) and
    622                                    (gpr_status[reg]._counter  == 0)));
     638                                   (gpr_status[reg]._is_valid == 1)//  and
     639//                                 (gpr_status[reg]._counter  == 0)
     640                                   ));
    623641
    624642                  gpr_status[reg]._is_free = 1;
     
    639657                  TEST(bool, true,((spr_status[reg]._is_free  == 0) and
    640658                                   (spr_status[reg]._is_link  == 0) and
    641                                    (spr_status[reg]._is_valid == 1) and
    642                                    (spr_status[reg]._counter  == 0)));
     659                                   (spr_status[reg]._is_valid == 1)//  and
     660//                                 (spr_status[reg]._counter  == 0)
     661                                   ));
    643662
    644663                  spr_status[reg]._is_free = 1;
     
    678697  delete []  in_RETIRE_VAL               ;
    679698  delete [] out_RETIRE_ACK               ;
     699  delete []  in_RETIRE_RESTORE           ;
    680700  delete []  in_RETIRE_READ_RA           ;
    681701  delete []  in_RETIRE_NUM_REG_RA_PHY    ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Parameters.h

    r88 r112  
    3434  public : uint32_t   _nb_reg_free           ;
    3535  public : uint32_t   _nb_bank               ;
    36   public : uint32_t   _size_counter          ;
     36//public : uint32_t   _size_counter          ;
    3737
    3838//public : uint32_t   _size_general_register ;
    3939//public : uint32_t   _size_special_register ;
    4040                     
    41   public : uint32_t   _max_reader            ;
     41//public : uint32_t   _max_reader            ;
    4242  public : uint32_t   _nb_gpr_use_init       ;
    4343  public : uint32_t   _nb_spr_use_init       ;
     
    6363                        uint32_t   nb_reg_free           ,
    6464                        uint32_t   nb_bank               ,
    65                         uint32_t   size_counter          ,
     65//                      uint32_t   size_counter          ,
    6666                        bool       is_toplevel=false
    6767                        );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h

    r88 r112  
    7979  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_VAL               ;//[nb_inst_retire]
    8080  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_ACK               ;//[nb_inst_retire]
     81  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_RESTORE           ;//[nb_inst_retire]
    8182  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RA           ;//[nb_inst_retire]
    8283  public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RA_PHY    ;//[nb_inst_retire]
     
    110111  private   : stat_list_entry_t            ** spr_stat_list; //[nb_bank][nb_general_register_by_bank]
    111112
     113  private   : uint32_t                        reg_GPR_PTR_FREE;
     114  private   : uint32_t                        reg_SPR_PTR_FREE;
     115
    112116    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    113   private   : uint32_t                        internal_GPR_PTR_FREE;
    114   private   : uint32_t                        internal_SPR_PTR_FREE;
    115 
    116117  private   : Tcontrol_t                    * internal_INSERT_ACK       ;//[nb_inst_insert]
    117118  private   : Tcontrol_t                    * internal_RETIRE_ACK       ;//[nb_inst_retire]
     
    154155  public  : void        transition                (void);
    155156  public  : void        genMoore                  (void);
    156   public  : void        genMealy                  (void);
     157//public  : void        genMealy                  (void);
    157158#endif                                         
    158159
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Types.h

    r88 r112  
    2525  public : bool     _is_free ; // set = is present in free list
    2626  public : bool     _is_link ; // set = is present in rat
    27   public : bool     _is_valid; // set = an instruction have write in this register
    28   public : uint32_t _counter ; // number of register that must read this register
     27//public : bool     _is_valid; // set = an instruction have write in this register
     28//public : uint32_t _counter ; // number of register that must read this register
    2929
    3030  public :  stat_list_entry_t (void) {};
     
    3535      _is_free  = 0;
    3636      _is_link  = is_link;
    37       _is_valid = 1;
    38       _counter  = 0;
     37//    _is_valid = 1;
     38//    _counter  = 0;
    3939    }
    4040
    41   public : void insert_read (void)
    42     {
    43       _counter ++;
    44     }
     41//   public : void insert_read (void)
     42//     {
     43//    _counter ++;
     44//     }
     45
    4546  public : void insert_write (void)
    4647    {
    4748      _is_free  = 0;
    4849      _is_link  = 1;
    49       _is_valid = 0;
     50//    _is_valid = 0;
    5051    }
    5152
    52   public : void retire_read (void)
     53//   public : void retire_read (void)
     54//     {
     55//    _counter --;
     56//     }
     57
     58  public : void retire_write_old (bool restore, bool restore_old)
    5359    {
    54       _counter --;
     60      // restore restore_old is_link
     61      // 0       x           0       - normal case : unallocate
     62      // 1       0           0       - event and previous update
     63      // 1       1           1       - event and first update
     64     
     65      _is_link = restore and restore_old;
    5566    }
    5667
    57   public : void retire_write_old (bool restore_old)
     68  public : void retire_write_new (bool restore, bool restore_old)
    5869    {
    59       if (not restore_old)
    60         {
    61           _is_link  = 0;
    62         }
    63       // else nothing
    64     }
     70      // restore restore_old is_link
     71      // 0       x           1       - normal case : allocate
     72      // 1       x           0       - event, need restore oldest register
    6573
    66   public : void retire_write_new (bool restore_old)
    67     {
    68       if (restore_old)
    69         {
    70           _is_link  = 0;
    71         }
     74      if (restore)
     75        _is_link = 0;
    7276
    7377      // in all case
    74       _is_valid = 1;
     78//    _is_valid = 1;
    7579    }
    7680
     
    8084    }
    8185
    82   public : bool can_insert_read (uint32_t max_reader)
    83     {
    84       return ((_counter+1) < max_reader);
    85     }
     86//   public : bool can_insert_read (uint32_t max_reader)
     87//     {
     88//    return ((_counter+1) < max_reader);
     89//     }
    8690
    8791  public : bool can_free (void)
    8892    {
    8993      return ((_is_free  == 0) and
    90               (_is_link  == 0) and
    91 //            (_is_valid == 1) and // if is_link <- 0, then retire_write_old or reset
    92               (_counter  == 0));
     94              (_is_link  == 0) // and
     95//            (_is_valid == 1) and // if is_link <- 0, then retire_write_old or reset
     96//            (_counter  == 0)
     97              );
    9398    }
    9499
     
    97102    {
    98103      output << x._is_free  << " "
    99              << x._is_link  << " "
    100              << x._is_valid << " "
    101              << x._counter;
     104             << x._is_link  // << " "
     105//           << x._is_valid  << " "
     106//              << x._counter
     107        ;
    102108     
    103109      return output;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Parameters.cpp

    r88 r112  
    2929                          uint32_t   nb_reg_free           ,
    3030                          uint32_t   nb_bank               ,
    31                           uint32_t   size_counter          ,
     31//                        uint32_t   size_counter          ,
    3232                          bool       is_toplevel)
    3333  {
     
    4242    _nb_reg_free            = nb_reg_free        ;
    4343    _nb_bank                = nb_bank            ;
    44     _size_counter           = size_counter       ;
     44//  _size_counter           = size_counter       ;
    4545
    46     _max_reader             = 1<<size_counter;
     46//  _max_reader             = 1<<size_counter;
    4747
    4848    uint32_t nb_thread = 0;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Parameters_print.cpp

    r81 r112  
    3535    xml.singleton_begin("nb_reg_free        "); xml.attribut("value",toString(_nb_reg_free        )); xml.singleton_end();
    3636    xml.singleton_begin("nb_bank            "); xml.attribut("value",toString(_nb_bank            )); xml.singleton_end();
    37     xml.singleton_begin("size_counter       "); xml.attribut("value",toString(_size_counter       )); xml.singleton_end();
     37//     xml.singleton_begin("size_counter       "); xml.attribut("value",toString(_size_counter       )); xml.singleton_end();
    3838
    3939    for (uint32_t i=0;i<_nb_front_end; i++)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit.cpp

    r88 r112  
    7575      {
    7676        // Constant
     77        for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
     78          {
     79            internal_INSERT_ACK[i] = 1;
     80            PORT_WRITE(out_INSERT_ACK[i], internal_INSERT_ACK[i]);
     81          }
    7782        for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
    7883          {
     
    101106# endif   
    102107
    103         log_printf(INFO,Stat_List_unit,FUNCTION,"Method - genMealy");
     108//      log_printf(INFO,Stat_List_unit,FUNCTION,"Method - genMealy");
    104109
    105         SC_METHOD (genMealy);
    106         dont_initialize ();
    107         sensitive << (*(in_CLOCK)).neg(); // need internal register
    108         for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
    109           sensitive << (*(in_INSERT_READ_RA        [i]))
    110                     << (*(in_INSERT_NUM_REG_RA_PHY [i]))
    111                     << (*(in_INSERT_READ_RB        [i]))
    112                     << (*(in_INSERT_NUM_REG_RB_PHY [i]))
    113                     << (*(in_INSERT_READ_RC        [i]))
    114                     << (*(in_INSERT_NUM_REG_RC_PHY [i]));
     110//      SC_METHOD (genMealy);
     111//      dont_initialize ();
     112//      sensitive << (*(in_CLOCK)).neg(); // need internal register
     113//      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
     114//        sensitive << (*(in_INSERT_READ_RA        [i]))
     115//                  << (*(in_INSERT_NUM_REG_RA_PHY [i]))
     116//                  << (*(in_INSERT_READ_RB        [i]))
     117//                  << (*(in_INSERT_NUM_REG_RB_PHY [i]))
     118//                  << (*(in_INSERT_READ_RC        [i]))
     119//                  << (*(in_INSERT_NUM_REG_RC_PHY [i]));
    115120
    116 # ifdef SYSTEMCASS_SPECIFIC
    117         // List dependency information
     121// # ifdef SYSTEMCASS_SPECIFIC
     122//      // List dependency information
    118123
    119         for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
    120           {
    121             (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RA        [i]));
    122             (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RA_PHY [i]));
    123             (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RB        [i]));
    124             (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RB_PHY [i]));
    125             (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RC        [i]));
    126             (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RC_PHY [i]));
    127           }
    128 # endif   
     124//      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
     125//        {
     126//          (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RA        [i]));
     127//          (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RA_PHY [i]));
     128//          (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RB        [i]));
     129//          (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RB_PHY [i]));
     130//          (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RC        [i]));
     131//          (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RC_PHY [i]));
     132//        }
     133// # endif   
    129134       
    130135#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_allocation.cpp

    r88 r112  
    4949                                                         ,IN
    5050                                                         ,SOUTH,
    51                                                          "Generalist interface"
     51                                                         _("Generalist interface")
    5252#endif
    5353                                                         );
     
    5858     // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959     {
    60        ALLOC1_INTERFACE("insert",IN,SOUTH,"Insert a renaming result",_param->_nb_inst_insert);
     60       ALLOC1_INTERFACE_BEGIN("insert",IN,SOUTH,_("Insert a renaming result"),_param->_nb_inst_insert);
    6161
    6262       ALLOC1_VALACK_IN ( in_INSERT_VAL               ,VAL);
     
    7272       ALLOC1_SIGNAL_IN ( in_INSERT_WRITE_RE          ,"write_re"          ,Tcontrol_t        ,1                             );
    7373       ALLOC1_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register);
     74
     75       ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    7476     }
    7577
    7678     // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7779     {
    78        ALLOC1_INTERFACE("retire",IN,NORTH,"Retire a renaming result",_param->_nb_inst_retire);
     80       ALLOC1_INTERFACE_BEGIN("retire",IN,NORTH,_("Retire a renaming result"),_param->_nb_inst_retire);
    7981
    8082       ALLOC1_VALACK_IN ( in_RETIRE_VAL               ,VAL);
    8183       ALLOC1_VALACK_OUT(out_RETIRE_ACK               ,ACK);
     84       ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE           ,"restore"           ,Tcontrol_t        ,1                             );
    8285       ALLOC1_SIGNAL_IN ( in_RETIRE_READ_RA           ,"read_ra"           ,Tcontrol_t        ,1                             );
    8386       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RA_PHY    ,"num_reg_ra_phy"    ,Tgeneral_address_t,_param->_size_general_register);
     
    9497       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register);
    9598       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register);
     99
     100       ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
    96101     }
    97102
    98103     // ~~~~~[ interface : "push_gpr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    99104     {
    100        ALLOC1_INTERFACE("push_gpr",OUT,SOUTH,"Free a general register",_param->_nb_reg_free);
     105       ALLOC1_INTERFACE_BEGIN("push_gpr",OUT,SOUTH,_("Free a general register"),_param->_nb_reg_free);
    101106
    102107       ALLOC1_VALACK_OUT(out_PUSH_GPR_VAL    ,VAL);
    103108       ALLOC1_VALACK_IN ( in_PUSH_GPR_ACK    ,ACK);
    104109       ALLOC1_SIGNAL_OUT(out_PUSH_GPR_NUM_REG,"num_reg",Tgeneral_address_t,_param->_size_general_register);
     110
     111       ALLOC1_INTERFACE_END(_param->_nb_reg_free);
    105112     }
    106113
    107114     // ~~~~~[ interface : "push_spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    108115     {
    109        ALLOC1_INTERFACE("push_spr",OUT,SOUTH,"Free a special register",_param->_nb_reg_free);
     116       ALLOC1_INTERFACE_BEGIN("push_spr",OUT,SOUTH,_("Free a special register"),_param->_nb_reg_free);
    110117
    111118       ALLOC1_VALACK_OUT(out_PUSH_SPR_VAL    ,VAL);
    112119       ALLOC1_VALACK_IN ( in_PUSH_SPR_ACK    ,ACK);
    113120       ALLOC1_SIGNAL_OUT(out_PUSH_SPR_NUM_REG,"num_reg",Tspecial_address_t,_param->_size_special_register);
     121
     122       ALLOC1_INTERFACE_END(_param->_nb_reg_free);
    114123     }
    115124
     
    117126    if (usage_is_set(_usage,USE_SYSTEMC))
    118127      {
    119      gpr_stat_list = new stat_list_entry_t * [_param->_nb_bank];
    120      spr_stat_list = new stat_list_entry_t * [_param->_nb_bank];
    121 
    122      for (uint32_t i=0; i<_param->_nb_bank; i++)
    123        {
    124          gpr_stat_list [i] = new stat_list_entry_t [_param->_nb_general_register_by_bank];
    125          spr_stat_list [i] = new stat_list_entry_t [_param->_nb_special_register_by_bank];
    126        }       
    127 
    128      internal_INSERT_ACK        = new Tcontrol_t [_param->_nb_inst_insert];
    129      internal_RETIRE_ACK        = new Tcontrol_t [_param->_nb_inst_retire];
    130      internal_PUSH_GPR_VAL      = new Tcontrol_t [_param->_nb_reg_free];
    131      internal_PUSH_GPR_NUM_BANK = new uint32_t   [_param->_nb_reg_free];
    132      internal_PUSH_SPR_VAL      = new Tcontrol_t [_param->_nb_reg_free];
    133      internal_PUSH_SPR_NUM_BANK = new uint32_t   [_param->_nb_reg_free];
     128     ALLOC2(gpr_stat_list,stat_list_entry_t,_param->_nb_bank,_param->_nb_general_register_by_bank);
     129     ALLOC2(spr_stat_list,stat_list_entry_t,_param->_nb_bank,_param->_nb_special_register_by_bank);
     130     ALLOC1(internal_INSERT_ACK       ,Tcontrol_t,_param->_nb_inst_insert);
     131     ALLOC1(internal_RETIRE_ACK       ,Tcontrol_t,_param->_nb_inst_retire);
     132     ALLOC1(internal_PUSH_GPR_VAL     ,Tcontrol_t,_param->_nb_reg_free);
     133     ALLOC1(internal_PUSH_GPR_NUM_BANK,uint32_t  ,_param->_nb_reg_free);
     134     ALLOC1(internal_PUSH_SPR_VAL     ,Tcontrol_t,_param->_nb_reg_free);
     135     ALLOC1(internal_PUSH_SPR_NUM_BANK,uint32_t  ,_param->_nb_reg_free);
    134136      }
    135137
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2930        delete     in_NRESET;
    3031
    31         delete []  in_INSERT_VAL               ;
    32         delete [] out_INSERT_ACK               ;
    33         delete []  in_INSERT_READ_RA           ;
    34         delete []  in_INSERT_NUM_REG_RA_PHY    ;
    35         delete []  in_INSERT_READ_RB           ;
    36         delete []  in_INSERT_NUM_REG_RB_PHY    ;
    37         delete []  in_INSERT_READ_RC           ;
    38         delete []  in_INSERT_NUM_REG_RC_PHY    ;
    39         delete []  in_INSERT_WRITE_RD          ;
    40         delete []  in_INSERT_NUM_REG_RD_PHY_NEW;
    41         delete []  in_INSERT_WRITE_RE          ;
    42         delete []  in_INSERT_NUM_REG_RE_PHY_NEW;
     32        DELETE1_SIGNAL( in_INSERT_VAL               ,_param->_nb_inst_insert,1);
     33        DELETE1_SIGNAL(out_INSERT_ACK               ,_param->_nb_inst_insert,1);
     34        DELETE1_SIGNAL( in_INSERT_READ_RA           ,_param->_nb_inst_insert,1                             );
     35        DELETE1_SIGNAL( in_INSERT_NUM_REG_RA_PHY    ,_param->_nb_inst_insert,_param->_size_general_register);
     36        DELETE1_SIGNAL( in_INSERT_READ_RB           ,_param->_nb_inst_insert,1                             );
     37        DELETE1_SIGNAL( in_INSERT_NUM_REG_RB_PHY    ,_param->_nb_inst_insert,_param->_size_general_register);
     38        DELETE1_SIGNAL( in_INSERT_READ_RC           ,_param->_nb_inst_insert,1                             );
     39        DELETE1_SIGNAL( in_INSERT_NUM_REG_RC_PHY    ,_param->_nb_inst_insert,_param->_size_special_register);
     40        DELETE1_SIGNAL( in_INSERT_WRITE_RD          ,_param->_nb_inst_insert,1                             );
     41        DELETE1_SIGNAL( in_INSERT_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert,_param->_size_general_register);
     42        DELETE1_SIGNAL( in_INSERT_WRITE_RE          ,_param->_nb_inst_insert,1                             );
     43        DELETE1_SIGNAL( in_INSERT_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register);
    4344
    44         delete []  in_RETIRE_VAL               ;
    45         delete [] out_RETIRE_ACK               ;
    46         delete []  in_RETIRE_READ_RA           ;
    47         delete []  in_RETIRE_NUM_REG_RA_PHY    ;
    48         delete []  in_RETIRE_READ_RB           ;
    49         delete []  in_RETIRE_NUM_REG_RB_PHY    ;
    50         delete []  in_RETIRE_READ_RC           ;
    51         delete []  in_RETIRE_NUM_REG_RC_PHY    ;
    52         delete []  in_RETIRE_WRITE_RD          ;
    53         delete []  in_RETIRE_RESTORE_RD_PHY_OLD;
    54         delete []  in_RETIRE_NUM_REG_RD_PHY_OLD;
    55         delete []  in_RETIRE_NUM_REG_RD_PHY_NEW;
    56         delete []  in_RETIRE_WRITE_RE          ;
    57         delete []  in_RETIRE_RESTORE_RE_PHY_OLD;
    58         delete []  in_RETIRE_NUM_REG_RE_PHY_OLD;
    59         delete []  in_RETIRE_NUM_REG_RE_PHY_NEW;
     45        DELETE1_SIGNAL( in_RETIRE_VAL               ,_param->_nb_inst_retire,1);
     46        DELETE1_SIGNAL(out_RETIRE_ACK               ,_param->_nb_inst_retire,1);
     47        DELETE1_SIGNAL( in_RETIRE_RESTORE           ,_param->_nb_inst_retire,1                             );
     48        DELETE1_SIGNAL( in_RETIRE_READ_RA           ,_param->_nb_inst_retire,1                             );
     49        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RA_PHY    ,_param->_nb_inst_retire,_param->_size_general_register);
     50        DELETE1_SIGNAL( in_RETIRE_READ_RB           ,_param->_nb_inst_retire,1                             );
     51        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RB_PHY    ,_param->_nb_inst_retire,_param->_size_general_register);
     52        DELETE1_SIGNAL( in_RETIRE_READ_RC           ,_param->_nb_inst_retire,1                             );
     53        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RC_PHY    ,_param->_nb_inst_retire,_param->_size_special_register);
     54        DELETE1_SIGNAL( in_RETIRE_WRITE_RD          ,_param->_nb_inst_retire,1                             );
     55        DELETE1_SIGNAL( in_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire,1                             );
     56        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire,_param->_size_general_register);
     57        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_NEW,_param->_nb_inst_retire,_param->_size_general_register);
     58        DELETE1_SIGNAL( in_RETIRE_WRITE_RE          ,_param->_nb_inst_retire,1                             );
     59        DELETE1_SIGNAL( in_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire,1                             );
     60        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire,_param->_size_special_register);
     61        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW,_param->_nb_inst_retire,_param->_size_special_register);
    6062
    61         delete [] out_PUSH_GPR_VAL             ;
    62         delete []  in_PUSH_GPR_ACK             ;
     63        DELETE1_SIGNAL(out_PUSH_GPR_VAL    ,_param->_nb_reg_free,1);
     64        DELETE1_SIGNAL( in_PUSH_GPR_ACK    ,_param->_nb_reg_free,1);
     65        DELETE1_SIGNAL(out_PUSH_GPR_NUM_REG,_param->_nb_reg_free,_param->_size_general_register);
    6366
    64         delete [] out_PUSH_GPR_NUM_REG         ;
    65         delete [] out_PUSH_SPR_VAL             ;
    66         delete []  in_PUSH_SPR_ACK             ;
    67         delete [] out_PUSH_SPR_NUM_REG         ;
    68    
    69         // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    70    
    71         delete [] gpr_stat_list;
    72         delete [] spr_stat_list;
    73        
    74         delete [] internal_INSERT_ACK       ;
    75         delete [] internal_RETIRE_ACK       ;
    76         delete [] internal_PUSH_GPR_VAL     ;
    77         delete [] internal_PUSH_GPR_NUM_BANK;
    78         delete [] internal_PUSH_SPR_VAL     ;
    79         delete [] internal_PUSH_SPR_NUM_BANK;
     67        DELETE1_SIGNAL(out_PUSH_SPR_VAL    ,_param->_nb_reg_free,1);
     68        DELETE1_SIGNAL( in_PUSH_SPR_ACK    ,_param->_nb_reg_free,1);
     69        DELETE1_SIGNAL(out_PUSH_SPR_NUM_REG,_param->_nb_reg_free,_param->_size_special_register);
     70
     71        DELETE2(gpr_stat_list             ,_param->_nb_bank,_param->_nb_general_register_by_bank);
     72        DELETE2(spr_stat_list             ,_param->_nb_bank,_param->_nb_special_register_by_bank);
     73        DELETE1(internal_INSERT_ACK       ,_param->_nb_inst_insert);
     74        DELETE1(internal_RETIRE_ACK       ,_param->_nb_inst_retire);
     75        DELETE1(internal_PUSH_GPR_VAL     ,_param->_nb_reg_free);
     76        DELETE1(internal_PUSH_GPR_NUM_BANK,_param->_nb_reg_free);
     77        DELETE1(internal_PUSH_SPR_VAL     ,_param->_nb_reg_free);
     78        DELETE1(internal_PUSH_SPR_NUM_BANK,_param->_nb_reg_free);
    8079      }
    81 
    8280
    8381    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMealy.cpp

    r88 r112  
    1919
    2020
    21 #undef  FUNCTION
    22 #define FUNCTION "Stat_List_unit::genMealy"
    23   void Stat_List_unit::genMealy (void)
    24   {
    25     log_begin(Stat_List_unit,FUNCTION);
    26     log_function(Stat_List_unit,FUNCTION,_name.c_str());
     21// #undef  FUNCTION
     22// #define FUNCTION "Stat_List_unit::genMealy"
     23//   void Stat_List_unit::genMealy (void)
     24//   {
     25//     log_begin(Stat_List_unit,FUNCTION);
     26//     log_function(Stat_List_unit,FUNCTION,_name.c_str());
    2727
    28     for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
    29       {
    30         bool ack = true;
     28//     for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
     29//       {
     30//      bool ack = true;
    3131
    32         if (PORT_READ(in_INSERT_READ_RA [i]))
    33           {
    34             Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RA_PHY [i]);
    35             uint32_t bank = num_reg >> _param->_shift_gpr;
    36             uint32_t reg  = num_reg  & _param->_mask_gpr ;
    37             ack &= gpr_stat_list [bank][reg].can_insert_read(_param->_max_reader);
    38           }
     32//      if (PORT_READ(in_INSERT_READ_RA [i]))
     33//        {
     34//          Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RA_PHY [i]);
     35//          uint32_t bank = num_reg >> _param->_shift_gpr;
     36//          uint32_t reg  = num_reg  & _param->_mask_gpr ;
     37//          ack &= gpr_stat_list [bank][reg].can_insert_read(_param->_max_reader);
     38//        }
    3939
    40         if (PORT_READ(in_INSERT_READ_RB [i]))
    41           {
    42             Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RB_PHY [i]);
    43             uint32_t bank = num_reg >> _param->_shift_gpr;
    44             uint32_t reg  = num_reg  & _param->_mask_gpr ;
    45             ack &= gpr_stat_list [bank][reg].can_insert_read(_param->_max_reader);
    46           }
     40//      if (PORT_READ(in_INSERT_READ_RB [i]))
     41//        {
     42//          Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RB_PHY [i]);
     43//          uint32_t bank = num_reg >> _param->_shift_gpr;
     44//          uint32_t reg  = num_reg  & _param->_mask_gpr ;
     45//          ack &= gpr_stat_list [bank][reg].can_insert_read(_param->_max_reader);
     46//        }
    4747
    48         if (PORT_READ(in_INSERT_READ_RC [i]))
    49           {
    50             Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RC_PHY [i]);
    51             uint32_t bank = num_reg >> _param->_shift_spr;
    52             uint32_t reg  = num_reg  & _param->_mask_spr ;
    53             ack &= spr_stat_list [bank][reg].can_insert_read(_param->_max_reader);
    54           }
     48//      if (PORT_READ(in_INSERT_READ_RC [i]))
     49//        {
     50//          Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RC_PHY [i]);
     51//          uint32_t bank = num_reg >> _param->_shift_spr;
     52//          uint32_t reg  = num_reg  & _param->_mask_spr ;
     53//          ack &= spr_stat_list [bank][reg].can_insert_read(_param->_max_reader);
     54//        }
    5555
    56         internal_INSERT_ACK [i] = ack;
    57         PORT_WRITE(out_INSERT_ACK [i], ack);
    58       }
     56//      internal_INSERT_ACK [i] = ack;
     57//      PORT_WRITE(out_INSERT_ACK [i], ack);
     58//       }
    5959   
    60     log_end(Stat_List_unit,FUNCTION);
    61   };
     60//     log_end(Stat_List_unit,FUNCTION);
     61//   };
    6262
    6363}; // end namespace stat_list_unit
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMoore.cpp

    r88 r112  
    2626    log_function(Stat_List_unit,FUNCTION,_name.c_str());
    2727
    28     uint32_t gpr_ptr = internal_GPR_PTR_FREE;
    29     uint32_t spr_ptr = internal_SPR_PTR_FREE;
     28    uint32_t gpr_ptr = reg_GPR_PTR_FREE;
     29    uint32_t spr_ptr = reg_SPR_PTR_FREE;
    3030
    3131    for (uint32_t i=0; i<_param->_nb_reg_free; i++)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_transition.cpp

    r106 r112  
    3838              spr_stat_list [i][j].reset((spr++)<_param->_nb_spr_use_init);
    3939          }
    40         internal_GPR_PTR_FREE = 0;
    41         internal_SPR_PTR_FREE = 0;
     40        reg_GPR_PTR_FREE = 0;
     41        reg_SPR_PTR_FREE = 0;
    4242      }
    4343    else
     
    5151              log_printf(TRACE,Stat_List_unit,FUNCTION,"  * INSERT [%d]",i);
    5252             
    53               if (PORT_READ(in_INSERT_READ_RA [i]))
    54                 {
    55                   Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RA_PHY [i]);
    56 
    57                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RA  - num_reg     : %d",num_reg);
    58 
    59                   uint32_t bank = num_reg >> _param->_shift_gpr;
    60                   uint32_t reg  = num_reg  & _param->_mask_gpr ;
    61                   gpr_stat_list [bank][reg].insert_read();
    62                 }
    63 
    64               if (PORT_READ(in_INSERT_READ_RB [i]))
    65                 {
    66                   Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RB_PHY [i]);
    67 
    68                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RB  - num_reg     : %d",num_reg);
    69 
    70                   uint32_t bank = num_reg >> _param->_shift_gpr;
    71                   uint32_t reg  = num_reg  & _param->_mask_gpr ;
    72                   gpr_stat_list [bank][reg].insert_read();
    73                 }
    74 
    75               if (PORT_READ(in_INSERT_READ_RC [i]))
    76                 {
    77                   Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RC_PHY [i]);
    78 
    79                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RC  - num_reg     : %d",num_reg);
    80 
    81                   uint32_t bank = num_reg >> _param->_shift_spr;
    82                   uint32_t reg  = num_reg  & _param->_mask_spr ;
    83                   spr_stat_list [bank][reg].insert_read();
    84                 }
     53//            if (PORT_READ(in_INSERT_READ_RA [i]))
     54//              {
     55//                Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RA_PHY [i]);
     56
     57//                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RA  - num_reg     : %d",num_reg);
     58
     59//                uint32_t bank = num_reg >> _param->_shift_gpr;
     60//                uint32_t reg  = num_reg  & _param->_mask_gpr ;
     61//                gpr_stat_list [bank][reg].insert_read();
     62//              }
     63
     64//            if (PORT_READ(in_INSERT_READ_RB [i]))
     65//              {
     66//                Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RB_PHY [i]);
     67
     68//                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RB  - num_reg     : %d",num_reg);
     69
     70//                uint32_t bank = num_reg >> _param->_shift_gpr;
     71//                uint32_t reg  = num_reg  & _param->_mask_gpr ;
     72//                gpr_stat_list [bank][reg].insert_read();
     73//              }
     74
     75//            if (PORT_READ(in_INSERT_READ_RC [i]))
     76//              {
     77//                Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RC_PHY [i]);
     78
     79//                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RC  - num_reg     : %d",num_reg);
     80
     81//                uint32_t bank = num_reg >> _param->_shift_spr;
     82//                uint32_t reg  = num_reg  & _param->_mask_spr ;
     83//                spr_stat_list [bank][reg].insert_read();
     84//              }
    8585
    8686              if (PORT_READ(in_INSERT_WRITE_RD [i]))
     
    8888                  Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RD_PHY_NEW [i]);
    8989
    90                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RD - num_reg     : %d",num_reg);
     90                  log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RD - num_reg new : %d",num_reg);
    9191
    9292                  uint32_t bank = num_reg >> _param->_shift_gpr;
     
    9797              if (PORT_READ(in_INSERT_WRITE_RE [i]))
    9898                {
    99                   Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RE_PHY_NEW [i]);
    100 
    101                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RE - num_reg     : %d",num_reg);
     99                  Tspecial_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RE_PHY_NEW [i]);
     100
     101                  log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RE - num_reg new : %d",num_reg);
    102102
    103103                  uint32_t bank = num_reg >> _param->_shift_spr;
     
    115115              log_printf(TRACE,Stat_List_unit,FUNCTION,"  * RETIRE [%d]",i);
    116116
    117               if (PORT_READ(in_RETIRE_READ_RA [i]))
    118                 {
    119                   Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RA_PHY [i]);
    120 
    121                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RA  - num_reg     : %d",num_reg);
    122 
    123                   uint32_t bank = num_reg >> _param->_shift_gpr;
    124                   uint32_t reg  = num_reg  & _param->_mask_gpr ;
    125                   gpr_stat_list [bank][reg].retire_read();
    126                 }
    127 
    128               if (PORT_READ(in_RETIRE_READ_RB [i]))
    129                 {
    130                   Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RB_PHY [i]);
    131 
    132                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RD  - num_reg     : %d",num_reg);
    133 
    134                   uint32_t bank = num_reg >> _param->_shift_gpr;
    135                   uint32_t reg  = num_reg  & _param->_mask_gpr ;
    136                   gpr_stat_list [bank][reg].retire_read();
    137                 }
    138 
    139               if (PORT_READ(in_RETIRE_READ_RC [i]))
    140                 {
    141                   Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RC_PHY [i]);
    142 
    143                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RC  - num_reg     : %d",num_reg);
    144 
    145                   uint32_t bank = num_reg >> _param->_shift_spr;
    146                   uint32_t reg  = num_reg  & _param->_mask_spr ;
    147                   spr_stat_list [bank][reg].retire_read();
    148                 }
     117              Tcontrol_t restore = PORT_READ(in_RETIRE_RESTORE [i]);
     118
     119              log_printf(TRACE,Stat_List_unit,FUNCTION,"    * restore : %d",restore);
     120
     121//            if (PORT_READ(in_RETIRE_READ_RA [i]))
     122//              {
     123//                Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RA_PHY [i]);
     124
     125//                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RA  - num_reg     : %d",num_reg);
     126
     127//                uint32_t bank = num_reg >> _param->_shift_gpr;
     128//                uint32_t reg  = num_reg  & _param->_mask_gpr ;
     129//                gpr_stat_list [bank][reg].retire_read();
     130//              }
     131
     132//            if (PORT_READ(in_RETIRE_READ_RB [i]))
     133//              {
     134//                Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RB_PHY [i]);
     135
     136//                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RB  - num_reg     : %d",num_reg);
     137
     138//                uint32_t bank = num_reg >> _param->_shift_gpr;
     139//                uint32_t reg  = num_reg  & _param->_mask_gpr ;
     140//                gpr_stat_list [bank][reg].retire_read();
     141//              }
     142
     143//            if (PORT_READ(in_RETIRE_READ_RC [i]))
     144//              {
     145//                Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RC_PHY [i]);
     146
     147//                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RC  - num_reg     : %d",num_reg);
     148
     149//                uint32_t bank = num_reg >> _param->_shift_spr;
     150//                uint32_t reg  = num_reg  & _param->_mask_spr ;
     151//                spr_stat_list [bank][reg].retire_read();
     152//              }
    149153
    150154              if (PORT_READ(in_RETIRE_WRITE_RD [i]))
     
    157161                    Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RD_PHY_OLD [i]);
    158162
    159                     log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RD - num_reg_old : %d",num_reg);
     163                    log_printf(TRACE,Stat_List_unit,FUNCTION,"                num_reg_old : %d",num_reg);
    160164                 
    161165                    uint32_t bank = num_reg >> _param->_shift_gpr;
    162166                    uint32_t reg  = num_reg  & _param->_mask_gpr ;
    163                     gpr_stat_list [bank][reg].retire_write_old(restore_old);
     167                    gpr_stat_list [bank][reg].retire_write_old(restore, restore_old);
    164168                  }
    165169                  {
    166170                    Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RD_PHY_NEW [i]);
    167171
    168                     log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RD - num_reg_new : %d",num_reg);
     172                    log_printf(TRACE,Stat_List_unit,FUNCTION,"                num_reg_new : %d",num_reg);
    169173
    170174                    uint32_t bank = num_reg >> _param->_shift_gpr;
    171175                    uint32_t reg  = num_reg  & _param->_mask_gpr ;
    172                     gpr_stat_list [bank][reg].retire_write_new(restore_old);
     176                    gpr_stat_list [bank][reg].retire_write_new(restore, restore_old);
    173177                  }
    174178                }
     
    181185
    182186                  {
    183                     Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_OLD [i]);
    184 
    185                     log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RE - num_reg_new : %d",num_reg);
     187                    Tspecial_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_OLD [i]);
     188
     189                    log_printf(TRACE,Stat_List_unit,FUNCTION,"                 num_reg_old : %d",num_reg);
    186190
    187191                    uint32_t bank = num_reg >> _param->_shift_spr;
    188192                    uint32_t reg  = num_reg  & _param->_mask_spr ;
    189                     spr_stat_list [bank][reg].retire_write_old(restore_old);
     193                    spr_stat_list [bank][reg].retire_write_old(restore, restore_old);
    190194                  }
    191195                  {
    192                     Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_NEW [i]);
    193 
    194                     log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RE - num_reg_new : %d",num_reg);
     196                    Tspecial_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_NEW [i]);
     197
     198                    log_printf(TRACE,Stat_List_unit,FUNCTION,"                num_reg_new : %d",num_reg);
    195199
    196200                    uint32_t bank = num_reg >> _param->_shift_spr;
    197201                    uint32_t reg  = num_reg  & _param->_mask_spr ;
    198                     spr_stat_list [bank][reg].retire_write_new(restore_old);
     202                    spr_stat_list [bank][reg].retire_write_new(restore, restore_old);
    199203                  }
    200204                }
     
    207211            // =====================================================
    208212            if (internal_PUSH_GPR_VAL [i] and PORT_READ(in_PUSH_GPR_ACK [i]))
    209               gpr_stat_list[internal_PUSH_GPR_NUM_BANK [i]][internal_GPR_PTR_FREE].free();
     213              gpr_stat_list[internal_PUSH_GPR_NUM_BANK [i]][reg_GPR_PTR_FREE].free();
    210214           
    211215            // =====================================================
     
    213217            // =====================================================
    214218            if (internal_PUSH_SPR_VAL [i] and PORT_READ(in_PUSH_SPR_ACK [i]))
    215               spr_stat_list[internal_PUSH_SPR_NUM_BANK [i]][internal_SPR_PTR_FREE].free();
     219              spr_stat_list[internal_PUSH_SPR_NUM_BANK [i]][reg_SPR_PTR_FREE].free();
    216220          }
    217221
    218222        // Update pointer
    219         internal_GPR_PTR_FREE = ((internal_GPR_PTR_FREE==0)?_param->_nb_general_register_by_bank:internal_GPR_PTR_FREE)-1;
    220         internal_SPR_PTR_FREE = ((internal_SPR_PTR_FREE==0)?_param->_nb_special_register_by_bank:internal_SPR_PTR_FREE)-1;
     223        reg_GPR_PTR_FREE = ((reg_GPR_PTR_FREE==0)?_param->_nb_general_register_by_bank:reg_GPR_PTR_FREE)-1;
     224        reg_SPR_PTR_FREE = ((reg_SPR_PTR_FREE==0)?_param->_nb_special_register_by_bank:reg_SPR_PTR_FREE)-1;
    221225      }
    222226
    223227
    224228#if (DEBUG >= DEBUG_TRACE)
    225     log_printf(TRACE,Stat_List_unit,FUNCTION,"  * Dump Stat List");
    226     for (uint32_t i=0; i<_param->_nb_bank; i++)
    227       for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++)
    228         log_printf(TRACE,Stat_List_unit,FUNCTION,"    * GPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d, valid %.1d, counter %.4d",
    229                    i,
    230                    j,
    231                    (i<<_param->_shift_gpr)|j,
    232                    gpr_stat_list[i][j]._is_free,
    233                    gpr_stat_list[i][j]._is_link,
    234                    gpr_stat_list[i][j]._is_valid,
    235                    gpr_stat_list[i][j]._counter);
    236     for (uint32_t i=0; i<_param->_nb_bank; i++)
    237       for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++)
    238         log_printf(TRACE,Stat_List_unit,FUNCTION,"    * SPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d, valid %.1d, counter %.4d",
    239                    i,
    240                    j,
    241                    (i<<_param->_shift_spr)|j,
    242                    spr_stat_list[i][j]._is_free,
    243                    spr_stat_list[i][j]._is_link,
    244                    spr_stat_list[i][j]._is_valid,
    245                    spr_stat_list[i][j]._counter);
     229    {
     230      log_printf(TRACE,Stat_List_unit,FUNCTION,"  * Dump Stat List");
     231      log_printf(TRACE,Stat_List_unit,FUNCTION,"    * reg_GPR_PTR_FREE : %d",reg_GPR_PTR_FREE);
     232      log_printf(TRACE,Stat_List_unit,FUNCTION,"    * reg_SPR_PTR_FREE : %d",reg_SPR_PTR_FREE);
     233     
     234      for (uint32_t i=0; i<_param->_nb_bank; i++)
     235        for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++)
     236          log_printf(TRACE,Stat_List_unit,FUNCTION,"    * GPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d",
     237                     i,
     238                     j,
     239                     (i<<_param->_shift_gpr)|j,
     240                     gpr_stat_list[i][j]._is_free,
     241                     gpr_stat_list[i][j]._is_link// ,
     242//                      gpr_stat_list[i][j]._is_valid,
     243//                      gpr_stat_list[i][j]._counter
     244                     );
     245      for (uint32_t i=0; i<_param->_nb_bank; i++)
     246        for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++)
     247          log_printf(TRACE,Stat_List_unit,FUNCTION,"    * SPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d",
     248                     i,
     249                     j,
     250                     (i<<_param->_shift_spr)|j,
     251                     spr_stat_list[i][j]._is_free,
     252                     spr_stat_list[i][j]._is_link// ,
     253//                      spr_stat_list[i][j]._is_valid,
     254//                      spr_stat_list[i][j]._counter
     255                     );
     256    }
    246257#endif
     258
     259#ifdef DEBUG_TEST
     260# if 0
     261    {
     262      uint32_t size_rob   = 64;
     263      uint32_t nb_context = 1;
     264     
     265      {
     266        uint32_t nb_is_link = 0;
     267        uint32_t nb_reg = 32;
     268        for (uint32_t i=0; i<_param->_nb_bank; i++)
     269          for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++)
     270            if (gpr_stat_list[i][j]._is_link)
     271              nb_is_link ++;
     272       
     273        log_printf(TRACE,Stat_List_unit,FUNCTION,"    * nb_GPR_IS_LINK   : %d",nb_is_link);
     274       
     275        if (nb_is_link > size_rob+nb_context*nb_reg)
     276          throw ERRORMORPHEO(FUNCTION,toString(_("They are %d linked gpr register, but max is size_rob+nb_context*%d = %d+%d*%d = %d"),nb_is_link,nb_reg,size_rob,nb_context,nb_reg,size_rob+nb_context*nb_reg));
     277      }
     278     
     279      {
     280        uint32_t nb_is_link = 0;
     281        uint32_t nb_reg = 2;
     282        for (uint32_t i=0; i<_param->_nb_bank; i++)
     283          for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++)
     284            if (spr_stat_list[i][j]._is_link)
     285              nb_is_link ++;
     286       
     287        log_printf(TRACE,Stat_List_unit,FUNCTION,"    * nb_SPR_IS_LINK   : %d",nb_is_link);
     288       
     289        if (nb_is_link > size_rob+nb_context*nb_reg)
     290          throw ERRORMORPHEO(FUNCTION,toString(_("They are %d linked spr register, but max is size_rob+nb_context*%d = %d+%d*%d = %d"),nb_is_link,nb_reg,size_rob,nb_context,nb_reg,size_rob+nb_context*nb_reg));
     291      }
     292    }
     293# endif
     294#endif
     295               
    247296
    248297#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Parameters.h

    r88 r112  
    3838  public : uint32_t   _nb_reg_free           ;
    3939  public : uint32_t   _nb_bank               ;
    40   public : uint32_t   _size_read_counter     ;
     40//public : uint32_t   _size_read_counter     ;
    4141
    4242//public : uint32_t   _size_front_end_id     ;
     
    6262                        uint32_t   nb_reg_free           ,
    6363                        uint32_t   nb_bank               ,
    64                         uint32_t   size_read_counter     ,
     64//                      uint32_t   size_read_counter     ,
    6565                        bool       is_toplevel=false);
    6666//   public : Parameters  (Parameters & param) ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Parameters.cpp

    r88 r112  
    2828                          uint32_t   nb_reg_free           ,
    2929                          uint32_t   nb_bank               ,
    30                           uint32_t   size_read_counter     ,
     30//                        uint32_t   size_read_counter     ,
    3131                          bool       is_toplevel)
    3232  {
     
    4141    _nb_reg_free         = nb_reg_free        ;
    4242    _nb_bank             = nb_bank            ;
    43     _size_read_counter   = size_read_counter  ;
     43//     _size_read_counter   = size_read_counter  ;
    4444
    4545    uint32_t size_general_register = log2(nb_general_register);
     
    8383       _nb_inst_retire     ,
    8484       _nb_reg_free        ,
    85        _nb_bank            ,
    86        _size_read_counter  );
     85       _nb_bank            // ,
     86//     _size_read_counter 
     87       );
    8788
    8889    _param_register_translation_unit_glue    = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_translation_unit_glue::Parameters
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Parameters_print.cpp

    r81 r112  
    3434    xml.singleton_begin("nb_reg_free        "); xml.attribut("value",toString(_nb_reg_free        )); xml.singleton_end();
    3535    xml.singleton_begin("nb_bank            "); xml.attribut("value",toString(_nb_bank            )); xml.singleton_end();
    36     xml.singleton_begin("size_read_counter  "); xml.attribut("value",toString(_size_read_counter  )); xml.singleton_end();
     36//  xml.singleton_begin("size_read_counter  "); xml.attribut("value",toString(_size_read_counter  )); xml.singleton_end();
    3737    for (uint32_t i=0;i<_nb_front_end; i++)
    3838      {
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_allocation.cpp

    r104 r112  
    5858    // ~~~~~[ Interface "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC1_INTERFACE("rename", IN, EAST, "Instruction with logical register", _param->_nb_inst_insert);
     60      ALLOC1_INTERFACE_BEGIN("rename", IN, EAST, _("Instruction with logical register"), _param->_nb_inst_insert);
    6161
    6262      ALLOC1_VALACK_IN ( in_RENAME_VAL           ,VAL);
     
    7474      ALLOC1_SIGNAL_IN ( in_RENAME_WRITE_RE      ,"write_re"      ,Tcontrol_t        ,1                                   );
    7575      ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RE_LOG,"num_reg_re_log",Tspecial_address_t,_param->_size_special_register_logic);
     76
     77      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    7678    }
    7779
    7880    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7981    {
    80       ALLOC1_INTERFACE("insert",OUT,WEST , "Instruction with physical register", _param->_nb_inst_insert);
     82      ALLOC1_INTERFACE_BEGIN("insert",OUT,WEST , _("Instruction with physical register"), _param->_nb_inst_insert);
    8183     
    8284      ALLOC1_VALACK_OUT(out_INSERT_VAL               ,VAL);
     
    101103      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register      );
    102104      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register      );
     105
     106      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    103107    }
    104108
    105109    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    106110    {
    107       ALLOC1_INTERFACE("retire",IN ,NORTH, "Retire instruction, update renaming structure.", _param->_nb_inst_retire);
     111      ALLOC1_INTERFACE_BEGIN("retire",IN ,NORTH, _("Retire instruction, update renaming structure."), _param->_nb_inst_retire);
     112
    108113      ALLOC1_VALACK_IN ( in_RETIRE_VAL               ,VAL);
    109114      ALLOC1_VALACK_OUT(out_RETIRE_ACK               ,ACK);
     
    124129      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register      );
    125130      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register      );
     131
     132      ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
    126133    }
    127134
    128135    // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    129136    {
    130       ALLOC2_INTERFACE("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
     137      ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
    131138
    132139      _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL           ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
    133140      _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK           ,ACK,_param->_nb_front_end, _param->_nb_context[it1]);
    134141      _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE      ,"state"             ,Tevent_state_t    ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]);
     142
     143      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    135144    }
    136145
     
    362371          COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD",
    363372                                   dest, "in_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD");
     373          COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE"           ,
     374                                   dest, "in_RETIRE_"+toString(i)+"_RESTORE"           );
    364375        }
    365376
     
    671682          // in_RETIRE_RESTORE_RD_PHY_OLD - register_address_translation_unit.out_RETIRE_RESTORE_RD_PHY_OLD
    672683          // in_RETIRE_RESTORE_RE_PHY_OLD - register_address_translation_unit.out_RETIRE_RESTORE_RE_PHY_OLD
     684          // in_RETIRE_RESTORE            - register_address_translation_unit.out_RETIRE_RESTORE           
    673685
    674686          dest = _name+"_register_translation_unit_glue";
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_deallocation.cpp

    r104 r112  
    2929        delete    in_NRESET;
    3030
    31         delete []  in_RENAME_VAL               ;
    32         delete [] out_RENAME_ACK               ;
    33         if (_param->_have_port_front_end_id)
    34         delete []  in_RENAME_FRONT_END_ID      ;
    35         if (_param->_have_port_context_id)
    36         delete []  in_RENAME_CONTEXT_ID        ;
    37         delete []  in_RENAME_READ_RA           ;
    38         delete []  in_RENAME_NUM_REG_RA_LOG    ;
    39         delete []  in_RENAME_READ_RB           ;
    40         delete []  in_RENAME_NUM_REG_RB_LOG    ;
    41         delete []  in_RENAME_READ_RC           ;
    42         delete []  in_RENAME_NUM_REG_RC_LOG    ;
    43         delete []  in_RENAME_WRITE_RD          ;
    44         delete []  in_RENAME_NUM_REG_RD_LOG    ;
    45         delete []  in_RENAME_WRITE_RE          ;
    46         delete []  in_RENAME_NUM_REG_RE_LOG    ;
     31        DELETE1_SIGNAL( in_RENAME_VAL           ,_param->_nb_inst_insert,1);
     32        DELETE1_SIGNAL(out_RENAME_ACK           ,_param->_nb_inst_insert,1);
     33        DELETE1_SIGNAL( in_RENAME_FRONT_END_ID  ,_param->_nb_inst_insert,_param->_size_front_end_id          );
     34        DELETE1_SIGNAL( in_RENAME_CONTEXT_ID    ,_param->_nb_inst_insert,_param->_size_context_id            );
     35        DELETE1_SIGNAL( in_RENAME_READ_RA       ,_param->_nb_inst_insert,1                                   );
     36        DELETE1_SIGNAL( in_RENAME_NUM_REG_RA_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic);
     37        DELETE1_SIGNAL( in_RENAME_READ_RB       ,_param->_nb_inst_insert,1                                   );
     38        DELETE1_SIGNAL( in_RENAME_NUM_REG_RB_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic);
     39        DELETE1_SIGNAL( in_RENAME_READ_RC       ,_param->_nb_inst_insert,1                                   );
     40        DELETE1_SIGNAL( in_RENAME_NUM_REG_RC_LOG,_param->_nb_inst_insert,_param->_size_special_register_logic);
     41        DELETE1_SIGNAL( in_RENAME_WRITE_RD      ,_param->_nb_inst_insert,1                                   );
     42        DELETE1_SIGNAL( in_RENAME_NUM_REG_RD_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic);
     43        DELETE1_SIGNAL( in_RENAME_WRITE_RE      ,_param->_nb_inst_insert,1                                   );
     44        DELETE1_SIGNAL( in_RENAME_NUM_REG_RE_LOG,_param->_nb_inst_insert,_param->_size_special_register_logic);
    4745
    48         delete [] out_INSERT_VAL               ;
    49         delete []  in_INSERT_ACK               ;
    50         if (_param->_have_port_front_end_id)
    51         delete [] out_INSERT_FRONT_END_ID      ;
    52         if (_param->_have_port_context_id)
    53         delete [] out_INSERT_CONTEXT_ID        ;
    54         delete [] out_INSERT_READ_RA           ;
    55         delete [] out_INSERT_NUM_REG_RA_LOG    ;
    56         delete [] out_INSERT_NUM_REG_RA_PHY    ;
    57         delete [] out_INSERT_READ_RB           ;
    58         delete [] out_INSERT_NUM_REG_RB_LOG    ;
    59         delete [] out_INSERT_NUM_REG_RB_PHY    ;
    60         delete [] out_INSERT_READ_RC           ;
    61         delete [] out_INSERT_NUM_REG_RC_LOG    ;
    62         delete [] out_INSERT_NUM_REG_RC_PHY    ;
    63         delete [] out_INSERT_WRITE_RD          ;
    64         delete [] out_INSERT_NUM_REG_RD_LOG    ;
    65         delete [] out_INSERT_NUM_REG_RD_PHY_OLD;
    66         delete [] out_INSERT_NUM_REG_RD_PHY_NEW;
    67         delete [] out_INSERT_WRITE_RE          ;
    68         delete [] out_INSERT_NUM_REG_RE_LOG    ;
    69         delete [] out_INSERT_NUM_REG_RE_PHY_OLD;
    70         delete [] out_INSERT_NUM_REG_RE_PHY_NEW;
     46        DELETE1_SIGNAL(out_INSERT_VAL               ,_param->_nb_inst_insert,1);
     47        DELETE1_SIGNAL( in_INSERT_ACK               ,_param->_nb_inst_insert,1);
     48        DELETE1_SIGNAL(out_INSERT_FRONT_END_ID      ,_param->_nb_inst_insert,_param->_size_front_end_id          );
     49        DELETE1_SIGNAL(out_INSERT_CONTEXT_ID        ,_param->_nb_inst_insert,_param->_size_context_id            );
     50        DELETE1_SIGNAL(out_INSERT_READ_RA           ,_param->_nb_inst_insert,1                                   );
     51        DELETE1_SIGNAL(out_INSERT_NUM_REG_RA_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     52        DELETE1_SIGNAL(out_INSERT_NUM_REG_RA_PHY    ,_param->_nb_inst_insert,_param->_size_general_register      );
     53        DELETE1_SIGNAL(out_INSERT_READ_RB           ,_param->_nb_inst_insert,1                                   );
     54        DELETE1_SIGNAL(out_INSERT_NUM_REG_RB_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     55        DELETE1_SIGNAL(out_INSERT_NUM_REG_RB_PHY    ,_param->_nb_inst_insert,_param->_size_general_register      );
     56        DELETE1_SIGNAL(out_INSERT_READ_RC           ,_param->_nb_inst_insert,1                                   );
     57        DELETE1_SIGNAL(out_INSERT_NUM_REG_RC_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     58        DELETE1_SIGNAL(out_INSERT_NUM_REG_RC_PHY    ,_param->_nb_inst_insert,_param->_size_special_register      );
     59        DELETE1_SIGNAL(out_INSERT_WRITE_RD          ,_param->_nb_inst_insert,1                                   );
     60        DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     61        DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register      );
     62        DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert,_param->_size_general_register      );
     63        DELETE1_SIGNAL(out_INSERT_WRITE_RE          ,_param->_nb_inst_insert,1                                   );
     64        DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     65        DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register      );
     66        DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register      );
    7167
    72         delete []  in_RETIRE_VAL               ;
    73         delete [] out_RETIRE_ACK               ;
    74         if (_param->_have_port_front_end_id)
    75         delete []  in_RETIRE_FRONT_END_ID      ;
    76         if (_param->_have_port_context_id)
    77         delete []  in_RETIRE_CONTEXT_ID        ;
    78         delete []  in_RETIRE_READ_RA           ;
    79         delete []  in_RETIRE_NUM_REG_RA_PHY    ;
    80         delete []  in_RETIRE_READ_RB           ;
    81         delete []  in_RETIRE_NUM_REG_RB_PHY    ;
    82         delete []  in_RETIRE_READ_RC           ;
    83         delete []  in_RETIRE_NUM_REG_RC_PHY    ;
    84         delete []  in_RETIRE_WRITE_RD          ;
    85         delete []  in_RETIRE_NUM_REG_RD_LOG    ;
    86         delete []  in_RETIRE_NUM_REG_RD_PHY_OLD;
    87         delete []  in_RETIRE_NUM_REG_RD_PHY_NEW;
    88         delete []  in_RETIRE_WRITE_RE          ;
    89         delete []  in_RETIRE_NUM_REG_RE_LOG    ;
    90         delete []  in_RETIRE_NUM_REG_RE_PHY_OLD;
    91         delete []  in_RETIRE_NUM_REG_RE_PHY_NEW;
     68        DELETE1_SIGNAL( in_RETIRE_VAL               ,_param->_nb_inst_retire,1);
     69        DELETE1_SIGNAL(out_RETIRE_ACK               ,_param->_nb_inst_retire,1);
     70        DELETE1_SIGNAL( in_RETIRE_FRONT_END_ID      ,_param->_nb_inst_retire,_param->_size_front_end_id          );
     71        DELETE1_SIGNAL( in_RETIRE_CONTEXT_ID        ,_param->_nb_inst_retire,_param->_size_context_id            );
     72        DELETE1_SIGNAL( in_RETIRE_READ_RA           ,_param->_nb_inst_retire,1                                   );
     73        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RA_PHY    ,_param->_nb_inst_retire,_param->_size_general_register      );
     74        DELETE1_SIGNAL( in_RETIRE_READ_RB           ,_param->_nb_inst_retire,1                                   );
     75        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RB_PHY    ,_param->_nb_inst_retire,_param->_size_general_register      );
     76        DELETE1_SIGNAL( in_RETIRE_READ_RC           ,_param->_nb_inst_retire,1                                   );
     77        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RC_PHY    ,_param->_nb_inst_retire,_param->_size_special_register      );
     78        DELETE1_SIGNAL( in_RETIRE_WRITE_RD          ,_param->_nb_inst_retire,1                                   );
     79        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_LOG    ,_param->_nb_inst_retire,_param->_size_general_register_logic);
     80        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire,_param->_size_general_register      );
     81        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_NEW,_param->_nb_inst_retire,_param->_size_general_register      );
     82        DELETE1_SIGNAL( in_RETIRE_WRITE_RE          ,_param->_nb_inst_retire,1                                   );
     83        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_LOG    ,_param->_nb_inst_retire,_param->_size_special_register_logic);
     84        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire,_param->_size_special_register      );
     85        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW,_param->_nb_inst_retire,_param->_size_special_register      );
    9286
    9387        DELETE2_SIGNAL( in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1],1);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_allocation.cpp

    r108 r112  
    5858    // ~~~~~[ Interface : "rename_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC2_INTERFACE("rename_in", IN, EAST, "output of decod's stage", _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     60      ALLOC2_INTERFACE_BEGIN("rename_in", IN, EAST, _("output of decod's stage"), _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    6161     
    6262      _ALLOC2_VALACK_IN ( in_RENAME_IN_VAL           ,VAL, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     
    8787      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION_USE ,"exception_use",Texception_t      ,_param->_size_exception_use         , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    8888      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION     ,"exception"    ,Texception_t      ,_param->_size_exception             , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     89
     90      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_inst_decod[it1]);
    8991    }
    9092
    9193    // ~~~~~[ Interface : "rename_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    9294    {
    93       ALLOC1_INTERFACE("rename_out", IN, EAST, "output of decod's stage", _param->_nb_inst_rename);
     95      ALLOC1_INTERFACE_BEGIN("rename_out", IN, EAST, _("output of decod's stage"), _param->_nb_inst_rename);
    9496     
    9597      ALLOC1_VALACK_OUT(out_RENAME_OUT_VAL           ,VAL);
     
    120122      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_EXCEPTION_USE ,"exception_use",Texception_t      ,_param->_size_exception_use         );
    121123      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_EXCEPTION     ,"exception"    ,Texception_t      ,_param->_size_exception             );
     124
     125      ALLOC1_INTERFACE_END(_param->_nb_inst_rename);
    122126    }
    123127
    124128    // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    125129    {
    126       ALLOC2_INTERFACE("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
     130      ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
    127131
    128132      _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE         ,"state"                ,Tevent_state_t    ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]);
     133
     134      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    129135    }
    130136
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_deallocation.cpp

    r108 r112  
    2929        delete    in_NRESET;
    3030
    31         delete []  in_RENAME_IN_VAL           ;
    32         delete [] out_RENAME_IN_ACK           ;
    33         if (_param->_have_port_front_end_id)
    34         delete []  in_RENAME_IN_FRONT_END_ID  ;
    35         if (_param->_have_port_context_id)
    36         delete []  in_RENAME_IN_CONTEXT_ID    ;
    37         if (_param->_have_port_depth)
    38         delete []  in_RENAME_IN_DEPTH         ;
    39         delete []  in_RENAME_IN_TYPE          ;
    40         delete []  in_RENAME_IN_OPERATION     ;
    41         delete []  in_RENAME_IN_NO_EXECUTE    ;
    42         delete []  in_RENAME_IN_IS_DELAY_SLOT ;
     31        DELETE2_SIGNAL( in_RENAME_IN_VAL           ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1);
     32        DELETE2_SIGNAL(out_RENAME_IN_ACK           ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1);
     33        DELETE2_SIGNAL( in_RENAME_IN_FRONT_END_ID  ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_front_end_id          );
     34        DELETE2_SIGNAL( in_RENAME_IN_CONTEXT_ID    ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_context_id            );
     35        DELETE2_SIGNAL( in_RENAME_IN_DEPTH         ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_depth                 );
     36        DELETE2_SIGNAL( in_RENAME_IN_TYPE          ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_type                  );
     37        DELETE2_SIGNAL( in_RENAME_IN_OPERATION     ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_operation             );
     38        DELETE2_SIGNAL( in_RENAME_IN_NO_EXECUTE    ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     39        DELETE2_SIGNAL( in_RENAME_IN_IS_DELAY_SLOT ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
    4340#ifdef DEBUG
    44         delete []  in_RENAME_IN_ADDRESS       ;
     41        DELETE2_SIGNAL( in_RENAME_IN_ADDRESS       ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_instruction_address   );
    4542#endif
    46         delete []  in_RENAME_IN_ADDRESS_NEXT  ;
    47         delete []  in_RENAME_IN_HAS_IMMEDIAT  ;
    48         delete []  in_RENAME_IN_IMMEDIAT      ;
    49         delete []  in_RENAME_IN_READ_RA       ;
    50         delete []  in_RENAME_IN_NUM_REG_RA    ;
    51         delete []  in_RENAME_IN_READ_RB       ;
    52         delete []  in_RENAME_IN_NUM_REG_RB    ;
    53         delete []  in_RENAME_IN_READ_RC       ;
    54         delete []  in_RENAME_IN_NUM_REG_RC    ;
    55         delete []  in_RENAME_IN_WRITE_RD      ;
    56         delete []  in_RENAME_IN_NUM_REG_RD    ;
    57         delete []  in_RENAME_IN_WRITE_RE      ;
    58         delete []  in_RENAME_IN_NUM_REG_RE    ;
    59         delete []  in_RENAME_IN_EXCEPTION_USE ;
    60         delete []  in_RENAME_IN_EXCEPTION     ;
     43        DELETE2_SIGNAL( in_RENAME_IN_ADDRESS_NEXT  ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_instruction_address   );
     44        DELETE2_SIGNAL( in_RENAME_IN_HAS_IMMEDIAT  ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     45        DELETE2_SIGNAL( in_RENAME_IN_IMMEDIAT      ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_data          );
     46        DELETE2_SIGNAL( in_RENAME_IN_READ_RA       ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     47        DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RA    ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_register_logic);
     48        DELETE2_SIGNAL( in_RENAME_IN_READ_RB       ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     49        DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RB    ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_register_logic);
     50        DELETE2_SIGNAL( in_RENAME_IN_READ_RC       ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     51        DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RC    ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_special_register_logic);
     52        DELETE2_SIGNAL( in_RENAME_IN_WRITE_RD      ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     53        DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RD    ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_register_logic);
     54        DELETE2_SIGNAL( in_RENAME_IN_WRITE_RE      ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     55        DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RE    ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_special_register_logic);
     56        DELETE2_SIGNAL( in_RENAME_IN_EXCEPTION_USE ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_exception_use         );
     57        DELETE2_SIGNAL( in_RENAME_IN_EXCEPTION     ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_exception             );
     58     
     59        DELETE1_SIGNAL(out_RENAME_OUT_VAL           ,_param->_nb_inst_rename,1);
     60        DELETE1_SIGNAL( in_RENAME_OUT_ACK           ,_param->_nb_inst_rename,1);
     61        DELETE1_SIGNAL(out_RENAME_OUT_FRONT_END_ID  ,_param->_nb_inst_rename,_param->_size_front_end_id          );
     62        DELETE1_SIGNAL(out_RENAME_OUT_CONTEXT_ID    ,_param->_nb_inst_rename,_param->_size_context_id            );
     63        DELETE1_SIGNAL(out_RENAME_OUT_DEPTH         ,_param->_nb_inst_rename,_param->_size_depth                 );
     64        DELETE1_SIGNAL(out_RENAME_OUT_TYPE          ,_param->_nb_inst_rename,_param->_size_type                  );
     65        DELETE1_SIGNAL(out_RENAME_OUT_OPERATION     ,_param->_nb_inst_rename,_param->_size_operation             );
     66        DELETE1_SIGNAL(out_RENAME_OUT_NO_EXECUTE    ,_param->_nb_inst_rename,1                                   );
     67        DELETE1_SIGNAL(out_RENAME_OUT_IS_DELAY_SLOT ,_param->_nb_inst_rename,1                                   );
     68#ifdef DEBUG
     69        DELETE1_SIGNAL(out_RENAME_OUT_ADDRESS       ,_param->_nb_inst_rename,_param->_size_instruction_address   );
     70#endif
     71        DELETE1_SIGNAL(out_RENAME_OUT_ADDRESS_NEXT  ,_param->_nb_inst_rename,_param->_size_instruction_address   );
     72        DELETE1_SIGNAL(out_RENAME_OUT_HAS_IMMEDIAT  ,_param->_nb_inst_rename,1                                   );
     73        DELETE1_SIGNAL(out_RENAME_OUT_IMMEDIAT      ,_param->_nb_inst_rename,_param->_size_general_data          );
     74        DELETE1_SIGNAL(out_RENAME_OUT_READ_RA       ,_param->_nb_inst_rename,1                                   );
     75        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RA    ,_param->_nb_inst_rename,_param->_size_general_register_logic);
     76        DELETE1_SIGNAL(out_RENAME_OUT_READ_RB       ,_param->_nb_inst_rename,1                                   );
     77        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RB    ,_param->_nb_inst_rename,_param->_size_general_register_logic);
     78        DELETE1_SIGNAL(out_RENAME_OUT_READ_RC       ,_param->_nb_inst_rename,1                                   );
     79        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RC    ,_param->_nb_inst_rename,_param->_size_special_register_logic);
     80        DELETE1_SIGNAL(out_RENAME_OUT_WRITE_RD      ,_param->_nb_inst_rename,1                                   );
     81        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RD    ,_param->_nb_inst_rename,_param->_size_general_register_logic);
     82        DELETE1_SIGNAL(out_RENAME_OUT_WRITE_RE      ,_param->_nb_inst_rename,1                                   );
     83        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RE    ,_param->_nb_inst_rename,_param->_size_special_register_logic);
     84        DELETE1_SIGNAL(out_RENAME_OUT_EXCEPTION_USE ,_param->_nb_inst_rename,_param->_size_exception_use         );
     85        DELETE1_SIGNAL(out_RENAME_OUT_EXCEPTION     ,_param->_nb_inst_rename,_param->_size_exception             );
    6186
    62         delete [] out_RENAME_OUT_VAL          ;
    63         delete []  in_RENAME_OUT_ACK          ;
    64         if (_param->_have_port_front_end_id)
    65         delete [] out_RENAME_OUT_FRONT_END_ID ;
    66         if (_param->_have_port_context_id)
    67         delete [] out_RENAME_OUT_CONTEXT_ID   ;
    68         if (_param->_have_port_depth)
    69         delete [] out_RENAME_OUT_DEPTH        ;
    70         delete [] out_RENAME_OUT_TYPE         ;
    71         delete [] out_RENAME_OUT_OPERATION    ;
    72 #ifdef DEBUG
    73         delete [] out_RENAME_OUT_ADDRESS      ;
    74 #endif
    75         delete [] out_RENAME_OUT_ADDRESS_NEXT ;
    76         delete [] out_RENAME_OUT_HAS_IMMEDIAT ;
    77         delete [] out_RENAME_OUT_IMMEDIAT     ;
    78         delete [] out_RENAME_OUT_READ_RA      ;
    79         delete [] out_RENAME_OUT_NUM_REG_RA   ;
    80         delete [] out_RENAME_OUT_READ_RB      ;
    81         delete [] out_RENAME_OUT_NUM_REG_RB   ;
    82         delete [] out_RENAME_OUT_READ_RC      ;
    83         delete [] out_RENAME_OUT_NUM_REG_RC   ;
    84         delete [] out_RENAME_OUT_WRITE_RD     ;
    85         delete [] out_RENAME_OUT_NUM_REG_RD   ;
    86         delete [] out_RENAME_OUT_WRITE_RE     ;
    87         delete [] out_RENAME_OUT_NUM_REG_RE   ;
    88         delete [] out_RENAME_OUT_EXCEPTION_USE;
     87        DELETE2_SIGNAL( in_RETIRE_EVENT_STATE       ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state);
     88      }
    8989
    90         DELETE2_SIGNAL( in_RETIRE_EVENT_STATE          ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state);
    91       }
    9290    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    9391    delete _priority;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_genMealy.cpp

    r111 r112  
    5252
    5353            log_printf(TRACE,Rename_select,FUNCTION,"    * front_end[%d].inst_decod[%d]",x,y);
    54             log_printf(TRACE,Rename_select,FUNCTION,"      * rename_in_val        : %d",PORT_READ(in_RENAME_IN_VAL[x][y]));
     54            log_printf(TRACE,Rename_select,FUNCTION,"      * in_RENAME_OUT_VAL    : %d",PORT_READ(in_RENAME_IN_VAL[x][y]));
    5555            log_printf(TRACE,Rename_select,FUNCTION,"      * previous_transaction : %d",previous_transaction[x]);
    5656
     
    6363                ack [x][y] = PORT_READ(in_RENAME_OUT_ACK [i]);
    6464
    65                 log_printf(TRACE,Rename_select,FUNCTION,"      * rename_out_ack       : %d",PORT_READ(in_RENAME_OUT_ACK[i]));
     65                log_printf(TRACE,Rename_select,FUNCTION,"      * in_RENAME_OUT_ACK    : %d",PORT_READ(in_RENAME_OUT_ACK[i]));
    6666
    6767                Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RENAME_IN_FRONT_END_ID [x][y]):0;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_allocation.cpp

    r88 r112  
    5959    // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6060    {
    61       ALLOC1_INTERFACE("insert",OUT,NORTH,_("Insert interface"),_param->_nb_inst_insert);
     61      ALLOC1_INTERFACE_BEGIN("insert",OUT,NORTH,_("Insert interface"),_param->_nb_inst_insert);
    6262
    6363//    ALLOC1_SIGNAL_OUT(out_INSERT_VAL                                    ,"VAL"                                    ,Tcontrol_t        ,1);
     
    6868      ALLOC1_SIGNAL_OUT(out_INSERT_OPERATION                              ,"OPERATION"                              ,Toperation_t      ,_param->_size_operation);
    6969      ALLOC1_SIGNAL_OUT(out_INSERT_IMMEDIAT                               ,"IMMEDIAT"                               ,Tgeneral_data_t   ,_param->_size_general_data);
    70 //       ALLOC1_SIGNAL_OUT(out_INSERT_EXCEPTION_USE                          ,"EXCEPTION_USE"                          ,Texception_t      ,_param->_size_exception_use);
     70//    ALLOC1_SIGNAL_OUT(out_INSERT_EXCEPTION_USE                          ,"EXCEPTION_USE"                          ,Texception_t      ,_param->_size_exception_use);
    7171      ALLOC1_SIGNAL_OUT(out_INSERT_EXCEPTION                              ,"EXCEPTION"                              ,Texception_t      ,_param->_size_exception);
    7272      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW                     ,"NUM_REG_RE_PHY_NEW"                     ,Tspecial_address_t,_param->_size_special_register);
     
    7878      ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_OPERATION                ,"RENAME_SELECT_OPERATION"                ,Toperation_t      ,_param->_size_operation);
    7979      ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_IMMEDIAT                 ,"RENAME_SELECT_IMMEDIAT"                 ,Tgeneral_data_t   ,_param->_size_general_data);
    80 //       ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_EXCEPTION_USE            ,"RENAME_SELECT_EXCEPTION_USE"            ,Texception_t      ,_param->_size_exception_use);
     80//    ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_EXCEPTION_USE            ,"RENAME_SELECT_EXCEPTION_USE"            ,Texception_t      ,_param->_size_exception_use);
    8181      ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_EXCEPTION                ,"RENAME_SELECT_EXCEPTION"                ,Texception_t      ,_param->_size_exception);
    8282      ALLOC1_SIGNAL_OUT(out_INSERT_REGISTER_TRANSLATION_VAL               ,"REGISTER_TRANSLATION_VAL"               ,Tcontrol_t        ,1);
     
    9191      ALLOC1_SIGNAL_OUT(out_INSERT_LOAD_STORE_QUEUE_POINTER_TYPE          ,"LOAD_STORE_QUEUE_POINTER_TYPE"          ,Ttype_t           ,_param->_size_type);
    9292      ALLOC1_SIGNAL_OUT(out_INSERT_LOAD_STORE_QUEUE_POINTER_OPERATION     ,"LOAD_STORE_QUEUE_POINTER_OPERATION"     ,Toperation_t      ,_param->_size_operation);
     93
     94      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    9395    }
    9496
    9597    // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    9698    {
    97       ALLOC1_INTERFACE("retire",OUT,NORTH,_("Retire interface"),_param->_nb_inst_retire);
     99      ALLOC1_INTERFACE_BEGIN("retire",OUT,NORTH,_("Retire interface"),_param->_nb_inst_retire);
    98100
    99101      ALLOC1_SIGNAL_IN ( in_RETIRE_VAL                                   ,"VAL"                                  ,Tcontrol_t        ,1);
     
    105107      ALLOC1_SIGNAL_OUT(out_RETIRE_REGISTER_TRANSLATION_VAL              ,"REGISTER_TRANSLATION_VAL"             ,Tcontrol_t        ,1);
    106108      ALLOC1_SIGNAL_IN ( in_RETIRE_REGISTER_TRANSLATION_ACK              ,"REGISTER_TRANSLATION_ACK"             ,Tcontrol_t        ,1);
     109
     110      ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
    107111    }
     112
    108113    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    109114    {
    110       ALLOC2_INTERFACE("spr_read",IN ,NORTH,_("SPR read"),_param->_nb_front_end,_param->_nb_context[it1]);
     115      ALLOC2_INTERFACE_BEGIN("spr_read",IN ,NORTH,_("SPR read"),_param->_nb_front_end,_param->_nb_context[it1]);
    111116
    112117      _ALLOC2_SIGNAL_IN ( in_SPR_READ_SR                                  ,"SR"                                   ,Tspr_t            ,_param->_size_spr,_param->_nb_front_end,_param->_nb_context[it1]);
     118
     119      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
    113120    }
    114121
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-min.cfg

    r110 r112  
    19191       1       +1      # nb_reg_free                     
    20201       1       +1      # nb_bank                         
    21 1       1       +1      # size_read_counter               
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_1a.cfg

    r110 r112  
    19192       2       +1      # nb_reg_free                     
    20204       8       *2      # nb_bank                         
    21 4       4       +1      # size_read_counter               
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_4a.cfg

    r110 r112  
    22222       2       +1      # nb_reg_free                     
    23238       8       *2      # nb_bank                         
    24 4       4       +1      # size_read_counter               
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_4b.cfg

    r110 r112  
    25252       2       +1      # nb_reg_free                     
    26268       8       *2      # nb_bank                         
    27 4       4       +1      # size_read_counter               
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/src/main.cpp

    r110 r112  
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/include/test.h"
    99
    10 #define NB_PARAMS 14
     10#define NB_PARAMS 13
    1111
    1212void usage (int argc, char * argv[])
     
    3333  err (_(" * nb_reg_free                                                  (uint32_t         )\n"));
    3434  err (_(" * nb_bank                                                      (uint32_t         )\n"));
    35   err (_(" * size_read_counter                                            (uint32_t         )\n"));
     35//   err (_(" * size_read_counter                                            (uint32_t         )\n"));
    3636
    3737  exit (1);
     
    103103  uint32_t             _nb_reg_free                       = fromString<uint32_t         >(argv[x++]);
    104104  uint32_t             _nb_bank                           = fromString<uint32_t         >(argv[x++]);
    105   uint32_t             _size_read_counter                 = fromString<uint32_t         >(argv[x++]);
     105//   uint32_t             _size_read_counter                 = fromString<uint32_t         >(argv[x++]);
    106106
    107107  int _return = EXIT_SUCCESS;
     
    128128         _nb_reg_free                      ,
    129129         _nb_bank                          ,
    130          _size_read_counter                ,
     130//       _size_read_counter                ,
    131131         true //is_toplevel
    132132         );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/include/Parameters.h

    r110 r112  
    4747  public : uint32_t             _nb_reg_free                      ;
    4848  public : uint32_t             _nb_bank                          ;
    49   public : uint32_t             _size_read_counter                ;
     49//   public : uint32_t             _size_read_counter                ;
    5050                                                                 
    5151//public : uint32_t             _size_front_end_id                ;
     
    8787                        uint32_t             nb_reg_free                      ,
    8888                        uint32_t             nb_bank                          ,
    89                         uint32_t             size_read_counter                ,
     89//                      uint32_t             size_read_counter                ,
    9090                        bool                 is_toplevel=false
    9191                        );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Parameters.cpp

    r110 r112  
    3838                          uint32_t             nb_reg_free                      ,
    3939                          uint32_t             nb_bank                          ,
    40                           uint32_t             size_read_counter                ,
     40//                        uint32_t             size_read_counter                ,
    4141                          bool                 is_toplevel)
    4242  {
     
    6161    _nb_reg_free                       = nb_reg_free                      ;
    6262    _nb_bank                           = nb_bank                          ;
    63     _size_read_counter                 = size_read_counter                ;
     63//     _size_read_counter                 = size_read_counter                ;
    6464   
    6565    uint32_t size_special_register     = log2(_nb_special_register);
     
    9191       _nb_inst_retire        ,
    9292       _nb_reg_free           ,
    93        _nb_bank               ,
    94        _size_read_counter     
     93       _nb_bank               // ,
     94//        _size_read_counter     
    9595       );
    9696
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Parameters_print.cpp

    r88 r112  
    3939    xml.singleton_begin("nb_reg_free                      "); xml.attribut("value",toString(_nb_reg_free                      )); xml.singleton_end();
    4040    xml.singleton_begin("nb_bank                          "); xml.attribut("value",toString(_nb_bank                          )); xml.singleton_end();
    41     xml.singleton_begin("size_read_counter                "); xml.attribut("value",toString(_size_read_counter                )); xml.singleton_end();
     41//     xml.singleton_begin("size_read_counter                "); xml.attribut("value",toString(_size_read_counter                )); xml.singleton_end();
    4242
    4343    for (uint32_t i=0;i<_nb_front_end; i++)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Rename_unit_allocation.cpp

    r108 r112  
    5858    // ~~~~~[ Interface : "rename_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC2_INTERFACE("rename_in", IN, EAST, "output of decod's stage", _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     60      ALLOC2_INTERFACE_BEGIN("rename_in", IN, EAST, _("output of decod's stage"), _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    6161     
    6262      _ALLOC2_VALACK_IN ( in_RENAME_IN_VAL           ,VAL, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     
    8787      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION_USE ,"exception_use",Texception_t      ,_param->_size_exception_use         , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    8888      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION     ,"exception"    ,Texception_t      ,_param->_size_exception             , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     89
     90      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_inst_decod[it1]);
    8991    }
    9092
    9193    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    9294    {
    93       ALLOC1_INTERFACE("insert",OUT,WEST , "Instruction with physical register", _param->_nb_inst_insert);
     95      ALLOC1_INTERFACE_BEGIN("insert",OUT,WEST , _("Instruction with physical register"), _param->_nb_inst_insert);
    9496     
    9597      ALLOC1_VALACK_OUT(out_INSERT_VAL                  ,VAL);
     
    129131      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_OLD   ,"num_reg_re_phy_old"   ,Tspecial_address_t,_param->_size_special_register      );
    130132      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW   ,"num_reg_re_phy_new"   ,Tspecial_address_t,_param->_size_special_register      );
     133
     134      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    131135    }
    132136
    133137    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    134138    {
    135       ALLOC1_INTERFACE("retire",IN ,NORTH, "Retire instruction, update renaming structure.", _param->_nb_inst_retire);
     139      ALLOC1_INTERFACE_BEGIN("retire",IN ,NORTH, _("Retire instruction, update renaming structure."), _param->_nb_inst_retire);
    136140
    137141      ALLOC1_VALACK_IN ( in_RETIRE_VAL                  ,VAL);
     
    159163      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD   ,"num_reg_re_phy_old"   ,Tspecial_address_t,_param->_size_special_register      );
    160164      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW   ,"num_reg_re_phy_new"   ,Tspecial_address_t,_param->_size_special_register      );
     165
     166      ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
    161167    }
    162168
    163169    // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    164170    {
    165       ALLOC2_INTERFACE("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
     171      ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
    166172
    167173      _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL           ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
    168174      _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK           ,ACK,_param->_nb_front_end, _param->_nb_context[it1]);
    169175      _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE         ,"state"                ,Tevent_state_t    ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]);
     176
     177      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    170178    }
    171179
    172180    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    173181    {
    174       ALLOC2_INTERFACE("spr_read", IN,NORTH, _("Special register"), _param->_nb_front_end, _param->_nb_context[it1]);
     182      ALLOC2_INTERFACE_BEGIN("spr_read", IN,NORTH, _("Special register"), _param->_nb_front_end, _param->_nb_context[it1]);
    175183
    176184      _ALLOC2_SIGNAL_IN (in_SPR_READ_SR                 ,"sr",Tspr_t            ,_param->_size_spr, _param->_nb_front_end, _param->_nb_context[it1]);
     185
     186      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    177187    }
    178188
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/SelfTest/configuration.cfg

    r111 r112  
    51511       1       +1      # nb_reg_free                       [0]               [nb_rename_unit]
    52521       1       +1      # nb_rename_unit_bank               [0]               [nb_rename_unit]
    53 1       1       +1      # size_read_counter                 [0]               [nb_rename_unit]
    54531       1       +1      # nb_load_store_queue               [0]               [nb_rename_unit]
    55542       2       +1      # size_store_queue                  [0][0]            [nb_rename_unit][nb_load_store_queue]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/SelfTest/src/main.cpp

    r111 r112  
    6767  err (_(" * nb_reg_free                       [nb_rename_unit]                      (uint32_t         )\n"));
    6868  err (_(" * nb_rename_unit_bank               [nb_rename_unit]                      (uint32_t         )\n"));
    69   err (_(" * size_read_counter                 [nb_rename_unit]                      (uint32_t         )\n"));
     69//   err (_(" * size_read_counter                 [nb_rename_unit]                      (uint32_t         )\n"));
    7070  err (_(" * nb_load_store_queue               [nb_rename_unit]                      (uint32_t         )\n"));
    7171  err (_(" * size_store_queue                  [nb_rename_unit][nb_load_store_queue] (uint32_t         )\n"));
     
    110110    _nb_inst_decod [i] = fromString<uint32_t>(argv[x++]);
    111111
    112   if (argc <= static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+12*_nb_rename_unit+_nb_execute_loop))
     112  if (argc <= static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+10*_nb_rename_unit+_nb_execute_loop))
    113113    usage (argc, argv);
    114114
     
    160160    }
    161161
    162   if (argc <= static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+11*_nb_rename_unit+_nb_execute_loop+_nb_rename_unit*_nb_inst_issue+12*_nb_inst_issue))
     162  if (argc <= static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+10*_nb_rename_unit+_nb_execute_loop+_nb_rename_unit*_nb_inst_issue+12*_nb_inst_issue))
    163163    usage (argc, argv);
    164164 
     
    195195  uint32_t            * _nb_reg_free                       = new uint32_t          [_nb_rename_unit];
    196196  uint32_t            * _nb_rename_unit_bank               = new uint32_t          [_nb_rename_unit];
    197   uint32_t            * _size_read_counter                 = new uint32_t          [_nb_rename_unit];
     197//   uint32_t            * _size_read_counter                 = new uint32_t          [_nb_rename_unit];
    198198  uint32_t            * _nb_load_store_queue               = new uint32_t          [_nb_rename_unit];
    199199
     
    212212  for (uint32_t i=0; i<_nb_rename_unit; i++)
    213213    _nb_rename_unit_bank               [i] = fromString<uint32_t         >(argv[x++]);
    214   for (uint32_t i=0; i<_nb_rename_unit; i++)
    215     _size_read_counter                 [i] = fromString<uint32_t         >(argv[x++]);
     214//   for (uint32_t i=0; i<_nb_rename_unit; i++)
     215//     _size_read_counter                 [i] = fromString<uint32_t         >(argv[x++]);
    216216  for (uint32_t i=0; i<_nb_rename_unit; i++)
    217217    {
     
    220220    }
    221221
    222   if (argc != static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+11*_nb_rename_unit+_nb_execute_loop+_nb_rename_unit*_nb_inst_issue+12*_nb_inst_issue+3*_sum_nb_load_store_queue))
     222  if (argc != static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+10*_nb_rename_unit+_nb_execute_loop+_nb_rename_unit*_nb_inst_issue+12*_nb_inst_issue+3*_sum_nb_load_store_queue))
    223223    usage (argc, argv);
    224224
     
    327327         _nb_reg_free                      ,
    328328         _nb_rename_unit_bank              ,
    329          _size_read_counter                ,
     329//          _size_read_counter                ,
    330330         _nb_load_store_queue              ,
    331331         _size_store_queue                 ,
     
    391391
    392392  delete [] _nb_load_store_queue               ;
    393   delete [] _size_read_counter                 ;
     393//   delete [] _size_read_counter                 ;
    394394  delete [] _nb_rename_unit_bank               ;
    395395  delete [] _nb_reg_free                       ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/SelfTest/src/test.cpp

    r110 r112  
    143143  ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION  ," in_BRANCH_COMPLETE_MISS_PREDICTION  ",Tcontrol_t        ,_param->_nb_inst_branch_complete);
    144144
    145   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_VAL                 ,"out_COMMIT_EVENT_VAL                 ",Tcontrol_t        );
    146   ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_ACK                 ," in_COMMIT_EVENT_ACK                 ",Tcontrol_t        );
    147   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_FRONT_END_ID        ,"out_COMMIT_EVENT_FRONT_END_ID        ",Tcontext_t        );
    148   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_CONTEXT_ID          ,"out_COMMIT_EVENT_CONTEXT_ID          ",Tcontext_t        );
    149   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_DEPTH               ,"out_COMMIT_EVENT_DEPTH               ",Tdepth_t          );
    150   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_TYPE                ,"out_COMMIT_EVENT_TYPE                ",Tevent_type_t     );
    151   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_IS_DELAY_SLOT       ,"out_COMMIT_EVENT_IS_DELAY_SLOT       ",Tcontrol_t        );
    152   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_ADDRESS             ,"out_COMMIT_EVENT_ADDRESS             ",Taddress_t        );
    153   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,"out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ",Tcontrol_t        );
    154   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_ADDRESS_EPCR        ,"out_COMMIT_EVENT_ADDRESS_EPCR        ",Taddress_t        );
    155   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,"out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ",Tcontrol_t        );
    156   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_ADDRESS_EEAR        ,"out_COMMIT_EVENT_ADDRESS_EEAR        ",Tgeneral_data_t   );
     145  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_VAL                 ,"out_COMMIT_EVENT_VAL                 ",Tcontrol_t        );
     146  ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_ACK                 ," in_COMMIT_EVENT_ACK                 ",Tcontrol_t        );
     147  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ID        ,"out_COMMIT_EVENT_FRONT_END_ID        ",Tcontext_t        );
     148  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_CONTEXT_ID          ,"out_COMMIT_EVENT_CONTEXT_ID          ",Tcontext_t        );
     149  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_DEPTH               ,"out_COMMIT_EVENT_DEPTH               ",Tdepth_t          );
     150  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_TYPE                ,"out_COMMIT_EVENT_TYPE                ",Tevent_type_t     );
     151  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_IS_DELAY_SLOT       ,"out_COMMIT_EVENT_IS_DELAY_SLOT       ",Tcontrol_t        );
     152  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS             ,"out_COMMIT_EVENT_ADDRESS             ",Taddress_t        );
     153  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,"out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ",Tcontrol_t        );
     154  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR        ,"out_COMMIT_EVENT_ADDRESS_EPCR        ",Taddress_t        );
     155  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,"out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ",Tcontrol_t        );
     156  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR        ,"out_COMMIT_EVENT_ADDRESS_EEAR        ",Tgeneral_data_t   );
    157157
    158158  ALLOC2_SC_SIGNAL( in_EVENT_VAL                        ," in_EVENT_VAL                        ",Tcontrol_t        ,_param->_nb_front_end,_param->_nb_context[it1]);
     
    294294  INSTANCE1_SC_SIGNAL(_OOO_Engine, in_BRANCH_COMPLETE_MISS_PREDICTION  ,_param->_nb_inst_branch_complete);
    295295
    296   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_VAL                 );
    297   INSTANCE_SC_SIGNAL (_OOO_Engine, in_COMMIT_EVENT_ACK                 );
     296  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_VAL                 );
     297  INSTANCE0_SC_SIGNAL(_OOO_Engine, in_COMMIT_EVENT_ACK                 );
    298298  if (_param->_have_port_front_end_id)
    299   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_FRONT_END_ID        );
     299  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_FRONT_END_ID        );
    300300  if (_param->_have_port_context_id)
    301   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_CONTEXT_ID          );
     301  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_CONTEXT_ID          );
    302302  if (_param->_have_port_depth)
    303   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_DEPTH               );
    304   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_TYPE                );
    305   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_IS_DELAY_SLOT       );
    306   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_ADDRESS             );
    307   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EPCR_VAL    );
    308   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EPCR        );
    309   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EEAR_VAL    );
    310   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EEAR        );
     303  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_DEPTH               );
     304  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_TYPE                );
     305  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_IS_DELAY_SLOT       );
     306  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS             );
     307  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EPCR_VAL    );
     308  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EPCR        );
     309  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EEAR_VAL    );
     310  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EEAR        );
    311311
    312312  INSTANCE2_SC_SIGNAL(_OOO_Engine, in_EVENT_VAL                        ,_param->_nb_front_end,_param->_nb_context[it1]);
     
    472472  DELETE1_SC_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION  ,_param->_nb_inst_branch_complete);
    473473 
    474   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_VAL                 );
    475   DELETE_SC_SIGNAL  ( in_COMMIT_EVENT_ACK                 );
    476   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_FRONT_END_ID        );
    477   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_CONTEXT_ID          );
    478   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_DEPTH               );
    479   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_TYPE                );
    480   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_IS_DELAY_SLOT       );
    481   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_ADDRESS             );
    482   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_ADDRESS_EPCR_VAL    );
    483   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_ADDRESS_EPCR        );
    484   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_ADDRESS_EEAR_VAL    );
    485   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_ADDRESS_EEAR        );
     474  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_VAL                 );
     475  DELETE0_SC_SIGNAL( in_COMMIT_EVENT_ACK                 );
     476  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ID        );
     477  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_CONTEXT_ID          );
     478  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_DEPTH               );
     479  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_TYPE                );
     480  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_IS_DELAY_SLOT       );
     481  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS             );
     482  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR_VAL    );
     483  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR        );
     484  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR_VAL    );
     485  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR        );
    486486 
    487487  DELETE2_SC_SIGNAL( in_EVENT_VAL                        ,_param->_nb_front_end,_param->_nb_context[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/src/Special_Register_unit_allocation.cpp

    r101 r112  
    5858    // ~~~~~[ Interface : "spr_access" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC1_INTERFACE("spr_access",IN,WEST, _("Access from reexecute_unit"), _param->_nb_inst_reexecute);
     60      ALLOC1_INTERFACE_BEGIN("spr_access",IN,WEST, _("Access from reexecute_unit"), _param->_nb_inst_reexecute);
    6161
    6262      ALLOC1_VALACK_IN ( in_SPR_ACCESS_VAL           ,VAL);
     
    7070      ALLOC1_SIGNAL_OUT(out_SPR_ACCESS_RDATA         ,"rdata"       ,Tspr_t             ,_param->_size_spr);
    7171      ALLOC1_SIGNAL_OUT(out_SPR_ACCESS_INVALID       ,"invalid"     ,Tcontrol_t         ,1);
     72
     73      ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute);
    7274    }
    7375
    7476    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7577    {
    76       ALLOC2_INTERFACE("spr_read",OUT,WEST, _("Output for a spr bit field."), _param->_nb_front_end, _param->_nb_context[it1]);
     78      ALLOC2_INTERFACE_BEGIN("spr_read",OUT,WEST, _("Output for a spr bit field."), _param->_nb_front_end, _param->_nb_context[it1]);
    7779
    7880      _ALLOC2_SIGNAL_OUT(out_SPR_READ_SR             ,"sr",Tspr_t,_param->_size_spr, _param->_nb_front_end, _param->_nb_context[it1]);
     81
     82      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    7983    }
    8084
    8185    // ~~~~~[ Interface : "spr_commit" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8286    {
    83       ALLOC2_INTERFACE("spr_commit",IN,WEST, _("Commit instruction to change SR's flags."), _param->_nb_front_end, _param->_nb_context[it1]);
     87      ALLOC2_INTERFACE_BEGIN("spr_commit",IN,WEST, _("Commit instruction to change SR's flags."), _param->_nb_front_end, _param->_nb_context[it1]);
    8488
    8589      _ALLOC2_VALACK_IN ( in_SPR_COMMIT_VAL           ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
     
    9195      _ALLOC2_SIGNAL_IN ( in_SPR_COMMIT_SR_OV_VAL     ,"sr_ov_val"    ,Tcontrol_t         ,1,_param->_nb_front_end, _param->_nb_context[it1]);
    9296      _ALLOC2_SIGNAL_IN ( in_SPR_COMMIT_SR_OV         ,"sr_ov"        ,Tcontrol_t         ,1,_param->_nb_front_end, _param->_nb_context[it1]);
     97
     98      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    9399    }
    94100
    95101    // ~~~~~[ Interface "spr_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    96102    {
    97       ALLOC2_INTERFACE("spr_event",IN,WEST, _("Event change a lot of exception."), _param->_nb_front_end, _param->_nb_context[it1]);
     103      ALLOC2_INTERFACE_BEGIN("spr_event",IN,WEST, _("Event change a lot of exception."), _param->_nb_front_end, _param->_nb_context[it1]);
    98104
    99105      _ALLOC2_VALACK_IN ( in_SPR_EVENT_VAL            ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
     
    104110      _ALLOC2_SIGNAL_IN ( in_SPR_EVENT_SR_DSX        ,"SR_DSX"        ,Tcontrol_t        ,1                ,_param->_nb_front_end, _param->_nb_context[it1]);
    105111      _ALLOC2_SIGNAL_IN ( in_SPR_EVENT_SR_TO_ESR     ,"SR_TO_ESR"     ,Tcontrol_t        ,1                ,_param->_nb_front_end, _param->_nb_context[it1]);
     112
     113      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    106114    }
    107115
     
    109117      {
    110118    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    111     internal_SPR_ACCESS_ACK = new Tcontrol_t   [_param->_nb_inst_reexecute];
    112     internal_SPR_COMMIT_ACK = new Tcontrol_t * [_param->_nb_front_end];
    113     internal_SPR_EVENT_ACK  = new Tcontrol_t * [_param->_nb_front_end];
    114     for (uint32_t i=0; i<_param->_nb_front_end; i++)
    115       {
    116         internal_SPR_COMMIT_ACK [i]  = new Tcontrol_t [_param->_nb_context [i]];
    117         internal_SPR_EVENT_ACK  [i]  = new Tcontrol_t [_param->_nb_context [i]];
    118       }
     119    ALLOC1(internal_SPR_ACCESS_ACK ,Tcontrol_t,_param->_nb_inst_reexecute);
     120    ALLOC2(internal_SPR_COMMIT_ACK ,Tcontrol_t,_param->_nb_front_end,_param->_nb_context [it1]);
     121    ALLOC2(internal_SPR_EVENT_ACK  ,Tcontrol_t,_param->_nb_front_end,_param->_nb_context [it1]);
    119122      }
    120123
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/src/Special_Register_unit_deallocation.cpp

    r98 r112  
    5959
    6060        // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    61         delete [] internal_SPR_ACCESS_ACK;
    62         for (uint32_t i=0; i<_param->_nb_front_end; i++)
    63           {
    64             delete [] internal_SPR_COMMIT_ACK [i];
    65             delete [] internal_SPR_EVENT_ACK  [i];
    66           }
    67         delete [] internal_SPR_COMMIT_ACK;
    68         delete [] internal_SPR_EVENT_ACK;
     61        DELETE1(internal_SPR_ACCESS_ACK ,_param->_nb_inst_reexecute);
     62        DELETE2(internal_SPR_COMMIT_ACK ,_param->_nb_front_end,_param->_nb_context [it1]);
     63        DELETE2(internal_SPR_EVENT_ACK  ,_param->_nb_front_end,_param->_nb_context [it1]);
    6964      }
    7065
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/include/Parameters.h

    r111 r112  
    7676  public : uint32_t            * _nb_reg_free                      ;//[nb_rename_unit]
    7777  public : uint32_t            * _nb_rename_unit_bank              ;//[nb_rename_unit]
    78   public : uint32_t            * _size_read_counter                ;//[nb_rename_unit]
     78//   public : uint32_t            * _size_read_counter                ;//[nb_rename_unit]
    7979  public : uint32_t            * _nb_load_store_queue              ;//[nb_rename_unit]
    8080  public : uint32_t           ** _size_store_queue                 ;//[nb_rename_unit][nb_load_store_queue]
     
    173173                        uint32_t            * nb_reg_free                      ,//[nb_rename_unit]
    174174                        uint32_t            * nb_rename_unit_bank              ,//[nb_rename_unit]
    175                         uint32_t            * size_read_counter                ,//[nb_rename_unit]
     175//                         uint32_t            * size_read_counter                ,//[nb_rename_unit]
    176176                        uint32_t            * nb_load_store_queue              ,//[nb_rename_unit]
    177177                        uint32_t           ** size_store_queue                 ,//[nb_rename_unit][nb_load_store_queue]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_allocation.cpp

    r109 r112  
    5555    // ~~~~~[ Interface : "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5656    {
    57       ALLOC2_INTERFACE("rename",IN,WEST,_("Instruction from front_end."),_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     57      ALLOC2_INTERFACE_BEGIN("rename",IN,WEST,_("Instruction from front_end."),_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    5858
    5959      _ALLOC2_VALACK_IN ( in_RENAME_VAL                       , VAL                                                                                 ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     
    8484      _ALLOC2_SIGNAL_IN ( in_RENAME_EXCEPTION_USE             ,"EXCEPTION_USE"             ,Texception_t      ,_param->_size_exception_use          ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    8585      _ALLOC2_SIGNAL_IN ( in_RENAME_EXCEPTION                 ,"EXCEPTION"                 ,Texception_t      ,_param->_size_exception              ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     86
     87      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    8688    }
    8789
    8890    // ~~~~~[ Interface : "issue" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8991    {
    90       ALLOC1_INTERFACE("issue",OUT,EAST,_("Instruction to execute_loop"),_param->_nb_inst_issue);
     92      ALLOC1_INTERFACE_BEGIN("issue",OUT,EAST,_("Instruction to execute_loop"),_param->_nb_inst_issue);
    9193
    9294      ALLOC1_VALACK_OUT (out_ISSUE_VAL                        , VAL                                                                                 );
     
    111113      ALLOC1_SIGNAL_OUT (out_ISSUE_WRITE_RE                   ,"WRITE_RE"                  ,Tcontrol_t        ,1                                    );
    112114      ALLOC1_SIGNAL_OUT (out_ISSUE_NUM_REG_RE                 ,"NUM_REG_RE"                ,Tspecial_address_t,_param->_size_special_register       );
     115
     116      ALLOC1_INTERFACE_END(_param->_nb_inst_issue);
    113117    }
    114118
    115119    // ~~~~~[ Interface "execute_loop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    116120    {
    117       ALLOC2_INTERFACE("execute_loop",IN,EAST,_("Instruction executed, from execute_loop."),_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
     121      ALLOC2_INTERFACE_BEGIN("execute_loop",IN,EAST,_("Instruction executed, from execute_loop."),_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    118122
    119123      _ALLOC2_VALACK_IN ( in_EXECUTE_LOOP_VAL                 , VAL                                                                                 ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
     
    129133      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_ADDRESS             ,"ADDRESS"                   ,Taddress_t        ,_param->_size_instruction_address    ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    130134      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_DATA                ,"DATA"                      ,Tgeneral_data_t   ,_param->_size_general_data           ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
     135
     136      ALLOC2_INTERFACE_END(_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    131137    }
    132138
    133139    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    134140    {
    135       ALLOC1_INTERFACE("insert",OUT,EAST,_("Interface with RegisterFile's stat-list (insert Re-Order-Buffer)."),_param->_sum_inst_insert);
     141      ALLOC1_INTERFACE_BEGIN("insert",OUT,EAST,_("Interface with RegisterFile's stat-list (insert Re-Order-Buffer)."),_param->_sum_inst_insert);
    136142
    137143      ALLOC1_VALACK_OUT (out_INSERT_VAL                       , VAL);
     
    141147      ALLOC1_SIGNAL_OUT (out_INSERT_RE_USE                    ,"RE_USE"                    ,Tcontrol_t        ,1                                    );
    142148      ALLOC1_SIGNAL_OUT (out_INSERT_RE_NUM_REG                ,"RE_NUM_REG"                ,Tspecial_address_t,_param->_size_special_register       );
     149
     150      ALLOC1_INTERFACE_END(_param->_sum_inst_insert);
    143151    }
    144152
    145153//     // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    146154//     {
    147 //       ALLOC1_INTERFACE("retire",OUT,EAST,_("Interface with RegisterFile's stat-list (retire Re-Order-Buffer)."),_param->_sum_inst_retire);
     155//       ALLOC1_INTERFACE_BEGIN("retire",OUT,EAST,_("Interface with RegisterFile's stat-list (retire Re-Order-Buffer)."),_param->_sum_inst_retire);
    148156
    149157//       ALLOC1_VALACK_OUT (out_RETIRE_VAL                       , VAL);
     
    157165//       ALLOC1_SIGNAL_OUT (out_RETIRE_RE_NEW_USE                ,"RE_NEW_USE"                ,Tcontrol_t        ,1                                    );
    158166//       ALLOC1_SIGNAL_OUT (out_RETIRE_RE_NEW_NUM_REG            ,"RE_NEW_NUM_REG"            ,Tspecial_address_t,_param->_size_special_register       );
     167
     168//       ALLOC1_INTERFACE_END(_param->_sum_inst_retire);
    159169//     }
    160170
    161171    // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
    162172    {
    163       ALLOC1_INTERFACE("branch_complete",OUT,WEST,_("Instruction to execute_loop"),_param->_nb_inst_branch_complete);
     173      ALLOC1_INTERFACE_BEGIN("branch_complete",OUT,WEST,_("Instruction to execute_loop"),_param->_nb_inst_branch_complete);
    164174
    165175      ALLOC1_VALACK_OUT (out_BRANCH_COMPLETE_VAL              , VAL);
     
    171181      ALLOC1_SIGNAL_OUT (out_BRANCH_COMPLETE_NO_SEQUENCE      ,"NO_SEQUENCE"               ,Tcontrol_t        ,1                                    );
    172182      ALLOC1_SIGNAL_IN  ( in_BRANCH_COMPLETE_MISS_PREDICTION  ,"MISS_PREDICTION"           ,Tcontrol_t        ,1                                    );
     183
     184      ALLOC1_INTERFACE_END(_param->_nb_inst_branch_complete);
    173185    }
    174186                                                                             
    175187    // ~~~~~[ Interface : "commit_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    176188    {
    177       ALLOC_INTERFACE("commit_event",OUT,WEST,_("Commit an event (exception)."));
    178 
    179       ALLOC_VALACK_OUT  (out_COMMIT_EVENT_VAL                 , VAL);
    180       ALLOC_VALACK_IN   ( in_COMMIT_EVENT_ACK                 , ACK);
    181       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_FRONT_END_ID        ,"FRONT_END_ID"              ,Tcontext_t        ,_param->_size_front_end_id           );
    182       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_CONTEXT_ID          ,"CONTEXT_ID"                ,Tcontext_t        ,_param->_size_context_id             );
    183       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_DEPTH               ,"DEPTH"                     ,Tdepth_t          ,_param->_size_depth                  );
    184       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_TYPE                ,"TYPE"                      ,Tevent_type_t     ,_param->_size_event_type             );
    185       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_IS_DELAY_SLOT       ,"IS_DELAY_SLOT"             ,Tcontrol_t        ,1                                    );
    186       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_ADDRESS             ,"ADDRESS"                   ,Taddress_t        ,_param->_size_instruction_address    );
    187       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,"ADDRESS_EPCR_VAL"          ,Tcontrol_t        ,1                                    );
    188       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_ADDRESS_EPCR        ,"ADDRESS_EPCR"              ,Taddress_t        ,_param->_size_instruction_address    );
    189       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,"ADDRESS_EEAR_VAL"          ,Tcontrol_t        ,1                                    );
    190       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_ADDRESS_EEAR        ,"ADDRESS_EEAR"              ,Tgeneral_data_t   ,_param->_size_general_data           );
     189      ALLOC0_INTERFACE_BEGIN("commit_event",OUT,WEST,_("Commit an event (exception)."));
     190
     191      ALLOC0_VALACK_OUT(out_COMMIT_EVENT_VAL                 , VAL);
     192      ALLOC0_VALACK_IN ( in_COMMIT_EVENT_ACK                 , ACK);
     193      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_FRONT_END_ID        ,"FRONT_END_ID"              ,Tcontext_t        ,_param->_size_front_end_id           );
     194      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_CONTEXT_ID          ,"CONTEXT_ID"                ,Tcontext_t        ,_param->_size_context_id             );
     195      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_DEPTH               ,"DEPTH"                     ,Tdepth_t          ,_param->_size_depth                  );
     196      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_TYPE                ,"TYPE"                      ,Tevent_type_t     ,_param->_size_event_type             );
     197      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_IS_DELAY_SLOT       ,"IS_DELAY_SLOT"             ,Tcontrol_t        ,1                                    );
     198      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS             ,"ADDRESS"                   ,Taddress_t        ,_param->_size_instruction_address    );
     199      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,"ADDRESS_EPCR_VAL"          ,Tcontrol_t        ,1                                    );
     200      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS_EPCR        ,"ADDRESS_EPCR"              ,Taddress_t        ,_param->_size_instruction_address    );
     201      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,"ADDRESS_EEAR_VAL"          ,Tcontrol_t        ,1                                    );
     202      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS_EEAR        ,"ADDRESS_EEAR"              ,Tgeneral_data_t   ,_param->_size_general_data           );
     203
     204      ALLOC0_INTERFACE_END();
    191205    }
    192206
    193207    // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    194208    {
    195       ALLOC2_INTERFACE("event",IN,WEST,_("Event from context_state."),_param->_nb_front_end,_param->_nb_context[it1]);
     209      ALLOC2_INTERFACE_BEGIN("event",IN,WEST,_("Event from context_state."),_param->_nb_front_end,_param->_nb_context[it1]);
    196210
    197211      _ALLOC2_VALACK_IN ( in_EVENT_VAL                        , VAL                                                                                 ,_param->_nb_front_end,_param->_nb_context[it1]);
     
    201215      _ALLOC2_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT_VAL           ,"ADDRESS_NEXT_VAL"          ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
    202216      _ALLOC2_SIGNAL_IN ( in_EVENT_IS_DS_TAKE                 ,"IS_DS_TAKE"                ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
     217
     218      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
    203219    }
    204220
    205221    // ~~~~~[ Interface "spr_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    206222    {
    207       ALLOC2_INTERFACE("spr_event",IN,WEST,_("Exception : save spr and set a lot of special register."),_param->_nb_front_end,_param->_nb_context[it1]);
     223      ALLOC2_INTERFACE_BEGIN("spr_event",IN,WEST,_("Exception : save spr and set a lot of special register."),_param->_nb_front_end,_param->_nb_context[it1]);
    208224
    209225      _ALLOC2_VALACK_IN ( in_SPR_EVENT_VAL                    , VAL                                                                                 ,_param->_nb_front_end,_param->_nb_context[it1]);
     
    214230      _ALLOC2_SIGNAL_IN ( in_SPR_EVENT_SR_DSX                 ,"SR_DSX"                    ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
    215231      _ALLOC2_SIGNAL_IN ( in_SPR_EVENT_SR_TO_ESR              ,"SR_TO_ESR"                 ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
     232
     233      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
    216234    }
    217235                                                                                 
    218236    // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    219237    {
    220       ALLOC2_INTERFACE("nb_inst",OUT,WEST,_("Internal number instruction."),_param->_nb_front_end,_param->_nb_context[it1]);
     238      ALLOC2_INTERFACE_BEGIN("nb_inst",OUT,WEST,_("Internal number instruction."),_param->_nb_front_end,_param->_nb_context[it1]);
    221239
    222240      _ALLOC2_SIGNAL_OUT(out_NB_INST_COMMIT_ALL               ,"COMMIT_ALL"                 ,Tcounter_t       ,_param->_size_nb_inst_commit         ,_param->_nb_front_end,_param->_nb_context[it1]);
    223241      _ALLOC2_SIGNAL_OUT(out_NB_INST_COMMIT_MEM               ,"COMMIT_MEM"                 ,Tcounter_t       ,_param->_size_nb_inst_commit         ,_param->_nb_front_end,_param->_nb_context[it1]);
    224242      _ALLOC2_SIGNAL_IN ( in_NB_INST_DECOD_ALL                ,"DECOD_ALL"                  ,Tcounter_t       ,_param->_size_nb_inst_decod          ,_param->_nb_front_end,_param->_nb_context[it1]);
     243
     244      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
    225245    }
    226246
    227247    // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    228248    {
    229       ALLOC2_INTERFACE("depth",IN,WEST,_("Interface with Prediction unit."),_param->_nb_front_end, _param->_nb_context[it1]);
     249      ALLOC2_INTERFACE_BEGIN("depth",IN,WEST,_("Interface with Prediction unit."),_param->_nb_front_end, _param->_nb_context[it1]);
    230250
    231251      _ALLOC2_SIGNAL_IN ( in_DEPTH_MIN                        ,"MIN"                        ,Tdepth_t         ,_param->_size_depth                  ,_param->_nb_front_end, _param->_nb_context[it1]);
    232252      _ALLOC2_SIGNAL_IN ( in_DEPTH_MAX                        ,"MAX"                        ,Tdepth_t         ,_param->_size_depth                  ,_param->_nb_front_end, _param->_nb_context[it1]);
    233253      _ALLOC2_SIGNAL_IN ( in_DEPTH_FULL                       ,"FULL"                       ,Tcontrol_t       ,1                                    ,_param->_nb_front_end, _param->_nb_context[it1]);
     254
     255      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
    234256    }
    235257
    236258    // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    237259    {
    238       ALLOC2_INTERFACE("spr",OUT,WEST,_("SPR"),_param->_nb_front_end,_param->_nb_context[it1]);
     260      ALLOC2_INTERFACE_BEGIN("spr",OUT,WEST,_("SPR"),_param->_nb_front_end,_param->_nb_context[it1]);
    239261
    240262      _ALLOC2_SIGNAL_OUT(out_SPR_SR_IEE                       ,"SR_IEE"                     ,Tcontrol_t       ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
    241263      _ALLOC2_SIGNAL_OUT(out_SPR_SR_EPH                       ,"SR_EPH"                     ,Tcontrol_t       ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
     264
     265      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
    242266    }
    243267
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_deallocation.cpp

    r108 r112  
    117117        DELETE1_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION  ,_param->_nb_inst_branch_complete,1                         );
    118118       
    119         DELETE_SIGNAL (out_COMMIT_EVENT_VAL                 , 1);
    120         DELETE_SIGNAL ( in_COMMIT_EVENT_ACK                 , 1);
    121         DELETE_SIGNAL (out_COMMIT_EVENT_FRONT_END_ID        ,_param->_size_front_end_id           );
    122         DELETE_SIGNAL (out_COMMIT_EVENT_CONTEXT_ID          ,_param->_size_context_id             );
    123         DELETE_SIGNAL (out_COMMIT_EVENT_DEPTH               ,_param->_size_depth                  );
    124         DELETE_SIGNAL (out_COMMIT_EVENT_TYPE                ,_param->_size_event_type             );
    125         DELETE_SIGNAL (out_COMMIT_EVENT_IS_DELAY_SLOT       ,1                                    );
    126         DELETE_SIGNAL (out_COMMIT_EVENT_ADDRESS             ,_param->_size_general_data           );
    127         DELETE_SIGNAL (out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,1                                    );
    128         DELETE_SIGNAL (out_COMMIT_EVENT_ADDRESS_EPCR        ,_param->_size_general_data           );
    129         DELETE_SIGNAL (out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,1                                    );
    130         DELETE_SIGNAL (out_COMMIT_EVENT_ADDRESS_EEAR        ,_param->_size_general_data           );
     119        DELETE0_SIGNAL(out_COMMIT_EVENT_VAL                 , 1);
     120        DELETE0_SIGNAL( in_COMMIT_EVENT_ACK                 , 1);
     121        DELETE0_SIGNAL(out_COMMIT_EVENT_FRONT_END_ID        ,_param->_size_front_end_id           );
     122        DELETE0_SIGNAL(out_COMMIT_EVENT_CONTEXT_ID          ,_param->_size_context_id             );
     123        DELETE0_SIGNAL(out_COMMIT_EVENT_DEPTH               ,_param->_size_depth                  );
     124        DELETE0_SIGNAL(out_COMMIT_EVENT_TYPE                ,_param->_size_event_type             );
     125        DELETE0_SIGNAL(out_COMMIT_EVENT_IS_DELAY_SLOT       ,1                                    );
     126        DELETE0_SIGNAL(out_COMMIT_EVENT_ADDRESS             ,_param->_size_general_data           );
     127        DELETE0_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,1                                    );
     128        DELETE0_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR        ,_param->_size_general_data           );
     129        DELETE0_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,1                                    );
     130        DELETE0_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR        ,_param->_size_general_data           );
    131131       
    132132        DELETE2_SIGNAL( in_EVENT_VAL                        ,_param->_nb_front_end,_param->_nb_context[it1],1                                    );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters.cpp

    r111 r112  
    6363                          uint32_t            * nb_reg_free                      ,//[nb_rename_unit]
    6464                          uint32_t            * nb_rename_unit_bank              ,//[nb_rename_unit]
    65                           uint32_t            * size_read_counter                ,//[nb_rename_unit]
     65//                           uint32_t            * size_read_counter                ,//[nb_rename_unit]
    6666                          uint32_t            * nb_load_store_queue              ,//[nb_rename_unit]
    6767                          uint32_t           ** size_store_queue                 ,//[nb_rename_unit][nb_load_store_queue]
     
    119119    _nb_reg_free                       = nb_reg_free                      ;
    120120    _nb_rename_unit_bank               = nb_rename_unit_bank              ;
    121     _size_read_counter                 = size_read_counter                ;
     121//     _size_read_counter                 = size_read_counter                ;
    122122    _nb_load_store_queue               = nb_load_store_queue              ;
    123123    _size_store_queue                  = size_store_queue                 ;
     
    238238       _nb_special_register                           [i],
    239239       _nb_reg_free                                   [i],
    240        _nb_rename_unit_bank                           [i],
    241        _size_read_counter                             [i]
     240       _nb_rename_unit_bank                           [i]// ,
     241//        _size_read_counter                             [i]
     242       
    242243       );
    243244
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters_print.cpp

    r97 r112  
    8181    for (uint32_t i=0; i<_nb_rename_unit; ++i)
    8282    str+= toString(MSG_INFORMATION)+"   * nb_rename_unit_bank                ["+toString(i)+"] : "+toString<uint32_t         >(_nb_rename_unit_bank              [i])+"\n";//[nb_rename_unit]
    83     for (uint32_t i=0; i<_nb_rename_unit; ++i)
    84     str+= toString(MSG_INFORMATION)+"   * size_read_counter                  ["+toString(i)+"] : "+toString<uint32_t         >(_size_read_counter                [i])+"\n";//[nb_rename_unit]
     83//     for (uint32_t i=0; i<_nb_rename_unit; ++i)
     84//     str+= toString(MSG_INFORMATION)+"   * size_read_counter                  ["+toString(i)+"] : "+toString<uint32_t         >(_size_read_counter                [i])+"\n";//[nb_rename_unit]
    8585    for (uint32_t i=0; i<_nb_rename_unit; ++i)
    8686    str+= toString(MSG_INFORMATION)+"   * nb_load_store_queue                ["+toString(i)+"] : "+toString<uint32_t         >(_nb_load_store_queue              [i])+"\n";//[nb_rename_unit]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/SelfTest/config-min.cfg

    r111 r112  
    25251       1       +1      # nb_reg_free                             [0]       [nb_rename_bloc]                             
    26261       1       +1      # nb_rename_unit_bank                     [0]       [nb_rename_bloc]                             
    27 1       1       +1      # size_read_counter                       [0]       [nb_rename_bloc]                             
    28271       1       +1      # nb_read_bloc                                                                           
    29281       1       +1      # size_read_queue                         [0]       [nb_read_bloc]                               
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/SelfTest/config-w1a.cfg

    r111 r112  
    25251       1       +1      # nb_reg_free                             [0]       [nb_rename_bloc]                             
    26261       1       +1      # nb_rename_unit_bank                     [0]       [nb_rename_bloc]                             
    27 4       4       +1      # size_read_counter                       [0]       [nb_rename_bloc]                             
    28271       1       +1      # nb_read_bloc                                                                           
    29284       4       +1      # size_read_queue                         [0]       [nb_read_bloc]                               
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/SelfTest/src/main.cpp

    r111 r112  
    4545  err (_(" * nb_reg_free                             [nb_rename_bloc]                             (uint32_t             )\n"));
    4646  err (_(" * nb_rename_unit_bank                     [nb_rename_bloc]                             (uint32_t             )\n"));
    47   err (_(" * size_read_counter                       [nb_rename_bloc]                             (uint32_t             )\n"));
     47//   err (_(" * size_read_counter                       [nb_rename_bloc]                             (uint32_t             )\n"));
    4848                                                                                                                       
    4949  err (_(" * nb_read_bloc                                                                         (uint32_t             )\n"));
     
    209209  uint32_t              * _nb_reg_free                                   ;//[nb_rename_bloc]
    210210  uint32_t              * _nb_rename_unit_bank                           ;//[nb_rename_bloc]
    211   uint32_t              * _size_read_counter                             ;//[nb_rename_bloc]
     211//   uint32_t              * _size_read_counter                             ;//[nb_rename_bloc]
    212212
    213213  // Read bloc
     
    374374  SELFTEST0(_nb_rename_bloc                                ,uint32_t                ,argv,x);
    375375
    376   if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+10*_nb_rename_bloc))
     376  if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+9*_nb_rename_bloc))
    377377    usage (argc, argv);
    378378 
     
    386386  SELFTEST1(_nb_reg_free                                   ,uint32_t                ,argv,x,_nb_rename_bloc);
    387387  SELFTEST1(_nb_rename_unit_bank                           ,uint32_t                ,argv,x,_nb_rename_bloc);
    388   SELFTEST1(_size_read_counter                             ,uint32_t                ,argv,x,_nb_rename_bloc);
     388//   SELFTEST1(_size_read_counter                             ,uint32_t                ,argv,x,_nb_rename_bloc);
    389389
    390390  // Read bloc
     
    392392  SELFTEST0(_nb_read_bloc                                  ,uint32_t                ,argv,x);
    393393
    394   if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc))
     394  if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+9*_nb_rename_bloc+3*_nb_read_bloc))
    395395    usage (argc, argv);
    396396 
     
    403403  SELFTEST0(_nb_write_bloc                                 ,uint32_t                ,argv,x);
    404404
    405   if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc))
     405  if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+9*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc))
    406406    usage (argc, argv);
    407407 
     
    414414  SELFTEST0(_nb_load_store_unit                            ,uint32_t                ,argv,x);
    415415
    416   if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit))
     416  if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+9*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit))
    417417    usage (argc, argv);
    418418 
     
    431431  SELFTEST0(_nb_functionnal_unit                           ,uint32_t                ,argv,x);
    432432
    433   if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit))
     433  if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+9*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit))
    434434    usage (argc, argv);
    435435 
     
    474474  SELFTEST0(_nb_front_end                                  ,uint32_t                ,argv,x);
    475475
    476   if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit+31*_nb_front_end))
     476  if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+9*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit+31*_nb_front_end))
    477477    usage (argc, argv);
    478478 
     
    501501  SELFTEST0(_nb_ooo_engine                                 ,uint32_t                ,argv,x);
    502502 
    503   if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit+31*_nb_front_end+19*_nb_ooo_engine))
     503  if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+9*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit+31*_nb_front_end+19*_nb_ooo_engine))
    504504    usage (argc, argv);
    505505 
     
    529529  SELFTEST0(_nb_execute_loop                               ,uint32_t                ,argv,x);
    530530
    531   if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit+31*_nb_front_end+19*_nb_ooo_engine+11*_nb_execute_loop))
     531  if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+9*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit+31*_nb_front_end+19*_nb_ooo_engine+11*_nb_execute_loop))
    532532    usage (argc, argv);
    533533 
     
    547547  printf(" * Link\n");
    548548
    549   if (argc < static_cast<int>(2+NB_PARAMS+6*_nb_thread+6*_nb_decod_bloc+11*_nb_rename_bloc+4*_nb_read_bloc+4*_nb_write_bloc+9*_nb_load_store_unit+2*_nb_functionnal_unit+31*_nb_front_end+19*_nb_ooo_engine+11*_nb_execute_loop))
     549  if (argc < static_cast<int>(2+NB_PARAMS+6*_nb_thread+6*_nb_decod_bloc+10*_nb_rename_bloc+4*_nb_read_bloc+4*_nb_write_bloc+9*_nb_load_store_unit+2*_nb_functionnal_unit+31*_nb_front_end+19*_nb_ooo_engine+11*_nb_execute_loop))
    550550    usage (argc, argv);
    551551 
     
    601601    _sum_cache_port += _nb_cache_port[i];
    602602 
    603   if (argc != static_cast<int>(2+NB_PARAMS+6*_nb_thread+6*_nb_decod_bloc+11*_nb_rename_bloc+4*_nb_read_bloc+4*_nb_write_bloc+9*_nb_load_store_unit+2*_nb_functionnal_unit+31*_nb_front_end+19*_nb_ooo_engine+11*_nb_execute_loop+
     603  if (argc != static_cast<int>(2+NB_PARAMS+6*_nb_thread+6*_nb_decod_bloc+10*_nb_rename_bloc+4*_nb_read_bloc+4*_nb_write_bloc+9*_nb_load_store_unit+2*_nb_functionnal_unit+31*_nb_front_end+19*_nb_ooo_engine+11*_nb_execute_loop+
    604604                               3*_nb_thread+_nb_front_end+_sum_inst_issue*_nb_read_bloc+_nb_load_store_unit*(_nb_read_bloc+_nb_write_bloc+_nb_thread)+_nb_functionnal_unit*(_nb_read_bloc+_nb_write_bloc)+_sum_cache_port))
    605605    usage (argc, argv);
     
    657657         _nb_reg_free                                   ,
    658658         _nb_rename_unit_bank                           ,
    659          _size_read_counter                             ,
     659//          _size_read_counter                             ,
    660660
    661661         _nb_read_bloc                                  ,
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/include/Parameters.h

    r111 r112  
    6969  public : uint32_t              * _nb_reg_free                                   ;//[nb_rename_bloc]
    7070  public : uint32_t              * _nb_rename_unit_bank                           ;//[nb_rename_bloc]
    71   public : uint32_t              * _size_read_counter                             ;//[nb_rename_bloc]
     71//public : uint32_t              * _size_read_counter                             ;//[nb_rename_bloc]
    7272
    7373  // Read bloc
     
    250250  public : uint32_t             ** _ooo_engine_nb_reg_free                        ;//[nb_ooo_engine][nb_rename_unit]
    251251  public : uint32_t             ** _ooo_engine_nb_rename_unit_bank                ;//[nb_ooo_engine][nb_rename_unit]
    252   public : uint32_t             ** _ooo_engine_size_read_counter                  ;//[nb_ooo_engine][nb_rename_unit]
     252//   public : uint32_t             ** _ooo_engine_size_read_counter                  ;//[nb_ooo_engine][nb_rename_unit]
    253253  public : bool                *** _ooo_engine_table_routing                      ;//[nb_ooo_engine][nb_rename_unit][nb_inst_issue]
    254254  public : bool                *** _ooo_engine_table_issue_type                   ;//[nb_ooo_engine][nb_inst_issue][nb_type]
     
    381381  uint32_t              * nb_reg_free                                   ,//[nb_rename_bloc]
    382382  uint32_t              * nb_rename_unit_bank                           ,//[nb_rename_bloc]
    383   uint32_t              * size_read_counter                             ,//[nb_rename_bloc]
     383//   uint32_t              * size_read_counter                             ,//[nb_rename_bloc]
    384384
    385385  // Read bloc
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Core_allocation.cpp

    r108 r112  
    5555    // ~~~~~[ Interface "icache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5656    {
    57       ALLOC1_INTERFACE("icache_req",WEST,OUT,_("Request to instruction cache"),_param->_nb_icache_port);
     57      ALLOC1_INTERFACE_BEGIN("icache_req",WEST,OUT,_("Request to instruction cache"),_param->_nb_icache_port);
    5858
    5959      ALLOC1_VALACK_OUT(out_ICACHE_REQ_VAL         ,VAL);
     
    6363      ALLOC1_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS     ,"address"  ,Ticache_address_t    ,_param->_size_icache_address  );
    6464      ALLOC1_SIGNAL_OUT(out_ICACHE_REQ_TYPE        ,"type"     ,Ticache_type_t       ,_param->_size_icache_type     );
     65
     66      ALLOC1_INTERFACE_END(_param->_nb_icache_port);
    6567    }
    6668                                                                           
    6769    // ~~~~~[ Interface "icache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6870    {
    69       ALLOC1_INTERFACE("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_param->_nb_icache_port);
     71      ALLOC1_INTERFACE_BEGIN("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_param->_nb_icache_port);
    7072     
    7173      ALLOC1_VALACK_IN ( in_ICACHE_RSP_VAL         ,VAL);
     
    7476      ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_PACKET_ID   ,"packet_id"  ,Tpacket_t            ,_param->_size_icache_packet_id);
    7577      ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_ERROR       ,"error"      ,Ticache_error_t      ,_param->_size_icache_error);
     78
     79      ALLOC1_INTERFACE_END(_param->_nb_icache_port);
    7680    }
    7781    {
    78       ALLOC2_INTERFACE("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_param->_nb_icache_port,_param->_icache_nb_instruction[it1]);
     82      ALLOC2_INTERFACE_BEGIN("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_param->_nb_icache_port,_param->_icache_nb_instruction[it1]);
    7983     
    8084      _ALLOC2_SIGNAL_IN ( in_ICACHE_RSP_INSTRUCTION ,"instruction",Ticache_instruction_t,_param->_size_instruction,_param->_nb_icache_port,_param->_icache_nb_instruction[it1]);
     85
     86      ALLOC2_INTERFACE_END(_param->_nb_icache_port,_param->_icache_nb_instruction[it1]);
    8187    }
    8288
    8389    // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8490    {
    85       ALLOC1_INTERFACE("dcache_req", OUT, NORTH, _("Request to data cache"),_param->_nb_dcache_port);
     91      ALLOC1_INTERFACE_BEGIN("dcache_req", OUT, NORTH, _("Request to data cache"),_param->_nb_dcache_port);
    8692     
    8793      ALLOC1_VALACK_OUT(out_DCACHE_REQ_VAL         ,VAL);
     
    9298      ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_WDATA       ,"wdata"    ,Tdcache_data_t       ,_param->_size_dcache_data);
    9399      ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_TYPE        ,"type"     ,Tdcache_type_t       ,_param->_size_dcache_type);
     100
     101      ALLOC1_INTERFACE_END(_param->_nb_dcache_port);
    94102    }
    95103                                                                           
    96104    // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    97105    {
    98       ALLOC1_INTERFACE("dcache_rsp", IN , NORTH, _("Respons from data cache"),_param->_nb_dcache_port);
     106      ALLOC1_INTERFACE_BEGIN("dcache_rsp", IN , NORTH, _("Respons from data cache"),_param->_nb_dcache_port);
    99107
    100108      ALLOC1_VALACK_IN ( in_DCACHE_RSP_VAL         ,VAL);
     
    104112      ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_RDATA       ,"rdata"    ,Tdcache_data_t       ,_param->_size_dcache_data);
    105113      ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_ERROR       ,"error"    ,Tdcache_error_t      ,_param->_size_dcache_error);
     114
     115      ALLOC1_INTERFACE_END(_param->_nb_dcache_port);
    106116    }
    107117
    108118    // ~~~~~[ Interface : "interrupt" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    109119    {
    110       ALLOC1_INTERFACE("interrupt", IN , NORTH, _("Interruption line"),_param->_nb_thread);
     120      ALLOC1_INTERFACE_BEGIN("interrupt", IN , NORTH, _("Interruption line"),_param->_nb_thread);
    111121
    112122      ALLOC1_SIGNAL_IN ( in_INTERRUPT_ENABLE      ,"enable",Tcontrol_t           ,1);
     123
     124      ALLOC1_INTERFACE_END(_param->_nb_thread);
    113125    }
    114126   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Core_deallocation.cpp

    r88 r112  
    5959    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    6060
     61    DELETE0(_component_glue);
     62    DELETE0(_component_dcache_access);
     63    DELETE0(_component_icache_access);
     64    DELETE1(_component_execute_loop, _param->_nb_execute_loop);
     65    DELETE1(_component_ooo_engine  , _param->_nb_ooo_engine);
     66    DELETE1(_component_front_end   , _param->_nb_front_end);
     67
    6168    delete _component;
    6269
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters.cpp

    r111 r112  
    107107  uint32_t              * nb_reg_free                                   ,//[nb_rename_bloc]
    108108  uint32_t              * nb_rename_unit_bank                           ,//[nb_rename_bloc]
    109   uint32_t              * size_read_counter                             ,//[nb_rename_bloc]
     109//   uint32_t              * size_read_counter                             ,//[nb_rename_bloc]
    110110
    111111  // Read bloc
     
    262262    _nb_reg_free                             = nb_reg_free                             ;
    263263    _nb_rename_unit_bank                     = nb_rename_unit_bank                     ;
    264     _size_read_counter                       = size_read_counter                       ;
     264//     _size_read_counter                       = size_read_counter                       ;
    265265
    266266    _nb_read_bloc                            = nb_read_bloc                            ;
     
    974974    ALLOC2(_ooo_engine_nb_reg_free                        ,uint32_t         ,_nb_ooo_engine,_nb_rename_unit[it1]);
    975975    ALLOC2(_ooo_engine_nb_rename_unit_bank                ,uint32_t         ,_nb_ooo_engine,_nb_rename_unit[it1]);
    976     ALLOC2(_ooo_engine_size_read_counter                  ,uint32_t         ,_nb_ooo_engine,_nb_rename_unit[it1]);
     976//     ALLOC2(_ooo_engine_size_read_counter                  ,uint32_t         ,_nb_ooo_engine,_nb_rename_unit[it1]);
    977977
    978978    for (uint32_t i=0; i<_nb_ooo_engine; ++i)
     
    997997            _ooo_engine_nb_reg_free                       [i][j] = _nb_reg_free                       [num_rename_bloc];
    998998            _ooo_engine_nb_rename_unit_bank               [i][j] = _nb_rename_unit_bank               [num_rename_bloc];
    999             _ooo_engine_size_read_counter                 [i][j] = _size_read_counter                 [num_rename_bloc];
     999//             _ooo_engine_size_read_counter                 [i][j] = _size_read_counter                 [num_rename_bloc];
    10001000          }
    10011001      }
     
    19181918       _ooo_engine_nb_reg_free                       [i],
    19191919       _ooo_engine_nb_rename_unit_bank               [i],
    1920        _ooo_engine_size_read_counter                 [i],
     1920//        _ooo_engine_size_read_counter                 [i],
    19211921       _ooo_engine_nb_load_store_unit                [i],
    19221922       _ooo_engine_size_store_queue                  [i],
     
    21342134    DELETE4(_ooo_engine_implement_group                             ,_nb_ooo_engine,_ooo_engine_nb_front_end[it1],_ooo_engine_nb_context[it1][it2],NB_GROUP);
    21352135    DELETE3(_ooo_engine_link_load_store_unit_with_context           ,_nb_ooo_engine,_ooo_engine_nb_front_end[it1],_ooo_engine_nb_context[it1][it2]);
     2136    DELETE3(_ooo_engine_nb_inst_memory                              ,_nb_ooo_engine,_nb_rename_unit[it1],_ooo_engine_nb_load_store_unit[it1][it2]);
    21362137    DELETE3(_ooo_engine_size_load_queue                             ,_nb_ooo_engine,_nb_rename_unit[it1],_ooo_engine_nb_load_store_unit[it1][it2]);
    21372138    DELETE3(_ooo_engine_size_store_queue                            ,_nb_ooo_engine,_nb_rename_unit[it1],_ooo_engine_nb_load_store_unit[it1][it2]);
     
    21422143    DELETE3(_ooo_engine_table_routing                               ,_nb_ooo_engine,_nb_rename_unit[it1],_nb_inst_issue[it1]);
    21432144    DELETE4(_network_table_dispatch                                 ,_nb_ooo_engine,_nb_inst_issue[it1],_nb_execute_loop,_nb_read_unit[it3]);
    2144     DELETE2(_ooo_engine_size_read_counter                           ,_nb_ooo_engine,_nb_rename_unit[it1]);
     2145//     DELETE2(_ooo_engine_size_read_counter                           ,_nb_ooo_engine,_nb_rename_unit[it1]);
    21452146    DELETE2(_ooo_engine_nb_rename_unit_bank                         ,_nb_ooo_engine,_nb_rename_unit[it1]);
    21462147    DELETE2(_ooo_engine_nb_reg_free                                 ,_nb_ooo_engine,_nb_rename_unit[it1]);
     
    21512152    DELETE2(_ooo_engine_rename_select_priority                      ,_nb_ooo_engine,_nb_rename_unit[it1]);
    21522153    DELETE2(_ooo_engine_nb_inst_retire                              ,_nb_ooo_engine,_nb_rename_unit[it1]);
     2154    DELETE1(_ooo_engine_nb_inst_insert_rob                          ,_nb_ooo_engine);
    21532155    DELETE2(_ooo_engine_nb_inst_insert                              ,_nb_ooo_engine,_nb_rename_unit[it1]);
    21542156    DELETE2(_ooo_engine_link_rename_unit_with_front_end             ,_nb_ooo_engine,_ooo_engine_nb_front_end[it1]);
    21552157    DELETE3(_ooo_engine_nb_branch_speculated                        ,_nb_ooo_engine,_ooo_engine_nb_front_end[it1],_ooo_engine_nb_context[it1][it2]);
    21562158    DELETE2(_ooo_engine_nb_inst_execute                             ,_nb_ooo_engine,_ooo_engine_nb_execute_loop[it1]);
     2159    DELETE3(_ooo_engine_translate_num_context_to_num_thread         ,_nb_ooo_engine,_ooo_engine_nb_front_end[it1],_ooo_engine_nb_context[it1][it2]);
    21572160    DELETE2(_ooo_engine_nb_inst_decod                               ,_nb_ooo_engine,_ooo_engine_nb_front_end[it1]);
    21582161    DELETE2(_ooo_engine_nb_context                                  ,_nb_ooo_engine,_ooo_engine_nb_front_end[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters_print.cpp

    r111 r112  
    8181    str+= toString(MSG_INFORMATION)+"     * nb_reg_free                                 : "+toString<uint32_t         >(_nb_reg_free                      [i])+"\n";
    8282    str+= toString(MSG_INFORMATION)+"     * nb_rename_unit_bank                         : "+toString<uint32_t         >(_nb_rename_unit_bank              [i])+"\n";
    83     str+= toString(MSG_INFORMATION)+"     * size_read_counter                           : "+toString<uint32_t         >(_size_read_counter                [i])+"\n";
     83//     str+= toString(MSG_INFORMATION)+"     * size_read_counter                           : "+toString<uint32_t         >(_size_read_counter                [i])+"\n";
    8484      }
    8585
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/include/test.h

    r81 r112  
    1414#include <iostream>
    1515
     16#include "Common/include/Time.h"
    1617#include "Behavioural/Generic/Counter/include/Counter.h"
    1718
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/test.cpp

    r88 r112  
    8080    }
    8181
     82  Time * _time = new Time();
     83
    8284  /********************************************************
    8385   * Simulation - Begin
     
    147149   ********************************************************/
    148150
     151  delete _time;
     152
    149153  cout << "<" << name << "> ............ Stop Simulation" << endl;
    150154
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_allocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Generic/Counter/include/Counter.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    3435                                                         , IN 
    3536                                                         , SOUTH
    36                                                          , "Generalist interface"
     37                                                         , _("Generalist interface")
    3738#endif
    3839                                                         );
     
    4344
    4445    // ~~~~~[ Interface : "counter" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    45      {
    46         in_COUNTER_DATA  = new SC_IN (Tdata_t)    * [_param._nb_port];
    47         in_COUNTER_ADDSUB= new SC_IN (Tcontrol_t) * [_param._nb_port];
    48        out_COUNTER_DATA  = new SC_OUT(Tdata_t)    * [_param._nb_port];
    49        
    50        for (uint32_t i=0; i<_param._nb_port; i++)
    51          {
    52            Interface_fifo * interface = _interfaces->set_interface("counter_"+toString(i)
    53 #ifdef POSITION
    54                                                                    , IN 
    55                                                                    , SOUTH
    56                                                                    , "Counter interface"
    57 #endif
    58                                                                    );
     46    {
     47      ALLOC1_INTERFACE_BEGIN("counter", IN, SOUTH, _("Counter interface"), _param._nb_port);
    5948           
    60             in_COUNTER_DATA   [i] = interface->set_signal_in  <Tdata_t   > ("data"  , _param._size_data);
    61             in_COUNTER_ADDSUB [i] = interface->set_signal_in  <Tcontrol_t> ("addsub", 1                );
    62            out_COUNTER_DATA   [i] = interface->set_signal_out <Tdata_t   > ("data"  , _param._size_data);
    63          }
    64      }
     49      ALLOC1_SIGNAL_IN ( in_COUNTER_DATA  ,"data"  ,Tdata_t   ,_param._size_data);
     50      ALLOC1_SIGNAL_IN ( in_COUNTER_ADDSUB,"addsub",Tcontrol_t,1                );
     51      ALLOC1_SIGNAL_OUT(out_COUNTER_DATA  ,"data"  ,Tdata_t   ,_param._size_data);
    6552
     53      ALLOC1_INTERFACE_END(_param._nb_port);
     54    }
     55   
    6656#ifdef POSITION
    6757     if (usage_is_set(_usage,USE_POSITION))
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Generic/Counter/include/Counter.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2324        delete     in_NRESET;
    2425       
    25         delete []  in_COUNTER_DATA  ;
    26         delete []  in_COUNTER_ADDSUB;
    27         delete [] out_COUNTER_DATA  ;
     26        DELETE1_SIGNAL( in_COUNTER_DATA  , _param._nb_port,_param._size_data);
     27        DELETE1_SIGNAL( in_COUNTER_ADDSUB, _param._nb_port,1                );
     28        DELETE1_SIGNAL(out_COUNTER_DATA  , _param._nb_port,_param._size_data);
    2829      }
    2930
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_allocation.cpp

    r109 r112  
    4949    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5050    {
    51       ALLOC0_INTERFACE("insert", IN, WEST, _("Interface of data write."));
     51      ALLOC0_INTERFACE_BEGIN("insert", IN, WEST, _("Interface of data write."));
    5252     
    5353      ALLOC0_VALACK_IN ( in_INSERT_VAL  ,VAL);
    5454      ALLOC0_VALACK_OUT(out_INSERT_ACK  ,ACK);
    5555      ALLOC0_SIGNAL_IN ( in_INSERT_DATA ,"data",Tdata_t,_param->_size_data);
     56
     57      ALLOC0_INTERFACE_END();
    5658    }
    5759
    5860    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5961    {
    60       ALLOC0_INTERFACE("retire", OUT, EAST, _("Interface of data read."));
     62      ALLOC0_INTERFACE_BEGIN("retire", OUT, EAST, _("Interface of data read."));
    6163     
    6264      ALLOC0_VALACK_OUT(out_RETIRE_VAL  ,VAL);
    6365      ALLOC0_VALACK_IN ( in_RETIRE_ACK  ,ACK);
    6466      ALLOC0_SIGNAL_OUT(out_RETIRE_DATA ,"data",Tdata_t,_param->_size_data);
     67
     68      ALLOC0_INTERFACE_END();
    6569    }
    6670
    6771    // ~~~~~[ Interface "slot" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6872    {
    69       ALLOC1_INTERFACE("slot", OUT, NORTH, _("Internal slot."),_param->_nb_port_slot);
     73      ALLOC1_INTERFACE_BEGIN("slot", OUT, NORTH, _("Internal slot."),_param->_nb_port_slot);
    7074     
    7175      ALLOC1_VALACK_OUT(out_SLOT_VAL  ,VAL);
    7276      ALLOC1_SIGNAL_OUT(out_SLOT_DATA ,"data",Tdata_t,_param->_size_data);
     77
     78      ALLOC1_INTERFACE_END(_param->_nb_port_slot);
    7379    }
    7480
     
    7682    if (_param->_have_port_ptr)
    7783    {
    78       ALLOC0_INTERFACE("ptr", OUT, SOUTH, _("Internal pointer."));
     84      ALLOC0_INTERFACE_BEGIN("ptr", OUT, SOUTH, _("Internal pointer."));
    7985     
    8086      if (_param->_have_port_ptr_write)
     
    8288      if (_param->_have_port_ptr_read )
    8389      ALLOC0_SIGNAL_OUT(out_PTR_READ  ,"read" ,Tptr_t,_param->_size_ptr);
     90
     91      ALLOC0_INTERFACE_END();
    8492    }
    8593     
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp

    r109 r112  
    77
    88#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    3334                                                         , IN
    3435                                                         ,SOUTH
    35                                                          , "Generalist interface"
     36                                                         ,_("Generalist interface")
    3637#endif
    3738                                                         );
     
    4041      in_NRESET             = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
    4142    }
     43
    4244    // ~~~~~[ Interface : "read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     45    {
     46      ALLOC1_INTERFACE_BEGIN("read",IN,WEST,_("Interface Read"),_param->_nb_port_read);
    4347
    44      in_READ_VAL         = new SC_IN (Tcontrol_t) * [_param->_nb_port_read];
    45     out_READ_ACK         = new SC_OUT(Tcontrol_t) * [_param->_nb_port_read];
    46     if (_param->_have_port_address)
    47      in_READ_ADDRESS     = new SC_IN (Taddress_t) * [_param->_nb_port_read];
    48     out_READ_DATA        = new SC_OUT(Tdata_t   ) * [_param->_nb_port_read];
     48      ALLOC1_VALACK_IN ( in_READ_VAL    ,VAL);
     49      ALLOC1_VALACK_OUT(out_READ_ACK    ,ACK);
     50      ALLOC1_SIGNAL_IN ( in_READ_ADDRESS,"address",Taddress_t,_param->_size_address);
     51      ALLOC1_SIGNAL_OUT(out_READ_DATA   ,"data"   ,Tdata_t   ,_param->_size_word);
    4952
    50     for (uint32_t i=0; i<_param->_nb_port_read; i++)
    51       {
    52         Interface_fifo * interface = _interfaces->set_interface("read_"+toString(i)
    53 #ifdef POSITION
    54                                                                 , IN 
    55                                                                 ,WEST
    56                                                                 , "Interface Read"
    57 #endif
    58                                                                 );
    59 
    60          in_READ_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
    61         out_READ_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
    62         if (_param->_have_port_address)
    63          in_READ_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", _param->_size_address);
    64         out_READ_DATA    [i]  = interface->set_signal_out <Tdata_t   > ("data"   , _param->_size_word);
    65       }
     53      ALLOC1_INTERFACE_END(_param->_nb_port_read);
     54    }
    6655
    6756    // ~~~~~[ Interface : "write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     57    {
     58      ALLOC1_INTERFACE_BEGIN("write",IN,EAST,_("Interface Write"),_param->_nb_port_write);
    6859
    69      in_WRITE_VAL        = new SC_IN (Tcontrol_t) * [_param->_nb_port_write];
    70     out_WRITE_ACK        = new SC_OUT(Tcontrol_t) * [_param->_nb_port_write];
    71     if (_param->_have_port_address)
    72      in_WRITE_ADDRESS    = new SC_IN (Taddress_t) * [_param->_nb_port_write];
    73      in_WRITE_DATA       = new SC_IN (Tdata_t   ) * [_param->_nb_port_write];
    74    
    75     for (uint32_t i=0; i<_param->_nb_port_write; i++)
    76       {
    77         Interface_fifo * interface = _interfaces->set_interface("write_"+toString(i)
    78 #ifdef POSITION
    79                                                                 , IN 
    80                                                                 ,EAST
    81                                                                 , "Interface Write"
    82 #endif
    83                                                                 );
     60      ALLOC1_VALACK_IN ( in_WRITE_VAL    ,VAL);
     61      ALLOC1_VALACK_OUT(out_WRITE_ACK    ,ACK);
     62      ALLOC1_SIGNAL_IN ( in_WRITE_ADDRESS,"address",Taddress_t,_param->_size_address);
     63      ALLOC1_SIGNAL_IN ( in_WRITE_DATA   ,"data"   ,Tdata_t   ,_param->_size_word);
    8464
    85          in_WRITE_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
    86         out_WRITE_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
    87         if (_param->_have_port_address)
    88          in_WRITE_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", _param->_size_address);
    89          in_WRITE_DATA    [i]  = interface->set_signal_in  <Tdata_t   > ("data"   , _param->_size_word);
    90       }
     65      ALLOC1_INTERFACE_END(_param->_nb_port_write);
     66    }
    9167
    9268    // ~~~~~[ Interface : "read_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     69    {
     70      ALLOC1_INTERFACE_BEGIN("read_write",IN,WEST,_("Interface Read_Write"),_param->_nb_port_read_write);
    9371
    94      in_READ_WRITE_VAL         = new SC_IN (Tcontrol_t) * [_param->_nb_port_read_write];
    95     out_READ_WRITE_ACK         = new SC_OUT(Tcontrol_t) * [_param->_nb_port_read_write];
    96      in_READ_WRITE_RW          = new SC_IN (Tcontrol_t) * [_param->_nb_port_read_write];
    97     if (_param->_have_port_address)
    98      in_READ_WRITE_ADDRESS     = new SC_IN (Taddress_t) * [_param->_nb_port_read_write];
    99      in_READ_WRITE_WDATA       = new SC_IN (Tdata_t   ) * [_param->_nb_port_read_write];
    100     out_READ_WRITE_RDATA       = new SC_OUT(Tdata_t   ) * [_param->_nb_port_read_write];
     72      ALLOC1_VALACK_IN ( in_READ_WRITE_VAL    ,VAL);
     73      ALLOC1_VALACK_OUT(out_READ_WRITE_ACK    ,ACK);
     74      ALLOC1_SIGNAL_IN ( in_READ_WRITE_RW     ,"rw"     ,Tcontrol_t,1);
     75      ALLOC1_SIGNAL_IN ( in_READ_WRITE_ADDRESS,"address",Taddress_t,_param->_size_address);
     76      ALLOC1_SIGNAL_IN ( in_READ_WRITE_WDATA  ,"wdata"  ,Tdata_t   ,_param->_size_word);
     77      ALLOC1_SIGNAL_OUT(out_READ_WRITE_RDATA  ,"rdata"  ,Tdata_t   ,_param->_size_word);
    10178
    102     for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
    103       {
    104         Interface_fifo * interface = _interfaces->set_interface("read_write_"+toString(i)
    105 #ifdef POSITION
    106                                                                 , IN 
    107                                                                 ,WEST
    108                                                                 , "Interface Read_Write"
    109 #endif
    110                                                                 );
     79      ALLOC1_INTERFACE_END(_param->_nb_port_read_write);
     80    }
    11181
    112          in_READ_WRITE_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
    113         out_READ_WRITE_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
    114          in_READ_WRITE_RW      [i]  = interface->set_signal_valack_in        ("rw"     , VAL);
    115         if (_param->_have_port_address)
    116          in_READ_WRITE_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", _param->_size_address);
    117          in_READ_WRITE_WDATA   [i]  = interface->set_signal_in  <Tdata_t   > ("wdata"  , _param->_size_word);
    118         out_READ_WRITE_RDATA   [i]  = interface->set_signal_out <Tdata_t   > ("rdata"  , _param->_size_word);
    119       }
    120 
    121     // ----- Register
    12282    if (usage_is_set(_usage,USE_SYSTEMC))
    123       reg_DATA = new Tdata_t [_param->_nb_word];
     83      ALLOC1(reg_DATA,Tdata_t,_param->_nb_word);
    12484   
    12585#ifdef POSITION
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_deallocation.cpp

    r88 r112  
    22 * $Id$
    33 *
    4  * [ Description ]
     4 * [ Description ]
    55 *
    66 */
    77
    88#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2223        delete    in_CLOCK;
    2324        delete    in_NRESET;
    24         // ----- Interface Read
    25         delete []  in_READ_VAL    ;
    26         delete [] out_READ_ACK    ;
    27         if (_param->_have_port_address)
    28         delete []  in_READ_ADDRESS;
    29         delete [] out_READ_DATA   ;
    30        
    31         // ----- Interface Write
    32         delete []  in_WRITE_VAL    ;
    33         delete [] out_WRITE_ACK    ;
    34         if (_param->_have_port_address)
    35         delete []  in_WRITE_ADDRESS;
    36         delete []  in_WRITE_DATA   ;
    37        
    38         // ----- Interface Read_Write
    39         delete []  in_READ_WRITE_VAL    ;
    40         delete [] out_READ_WRITE_ACK    ;
    41         delete []  in_READ_WRITE_RW     ;
    42         if (_param->_have_port_address)
    43         delete []  in_READ_WRITE_ADDRESS;
    44         delete []  in_READ_WRITE_WDATA  ;
    45         delete [] out_READ_WRITE_RDATA  ;
    46        
    47         // ----- Register
    48         delete [] reg_DATA;
     25
     26        DELETE1_SIGNAL( in_READ_VAL     ,_param->_nb_port_read,1);
     27        DELETE1_SIGNAL(out_READ_ACK     ,_param->_nb_port_read,1);
     28        DELETE1_SIGNAL( in_READ_ADDRESS ,_param->_nb_port_read,_param->_size_address);
     29        DELETE1_SIGNAL(out_READ_DATA    ,_param->_nb_port_read,_param->_size_word);
     30       
     31        DELETE1_SIGNAL( in_WRITE_VAL    ,_param->_nb_port_write,1);
     32        DELETE1_SIGNAL(out_WRITE_ACK    ,_param->_nb_port_write,1);
     33        DELETE1_SIGNAL( in_WRITE_ADDRESS,_param->_nb_port_write,_param->_size_address);
     34        DELETE1_SIGNAL( in_WRITE_DATA   ,_param->_nb_port_write,_param->_size_word);
     35       
     36        DELETE1_SIGNAL( in_READ_WRITE_VAL    ,_param->_nb_port_read_write,1);
     37        DELETE1_SIGNAL(out_READ_WRITE_ACK    ,_param->_nb_port_read_write,1);
     38        DELETE1_SIGNAL( in_READ_WRITE_RW     ,_param->_nb_port_read_write,1);
     39        DELETE1_SIGNAL( in_READ_WRITE_ADDRESS,_param->_nb_port_read_write,_param->_size_address);
     40        DELETE1_SIGNAL( in_READ_WRITE_WDATA  ,_param->_nb_port_read_write,_param->_size_word);
     41        DELETE1_SIGNAL(out_READ_WRITE_RDATA  ,_param->_nb_port_read_write,_param->_size_word);
     42       
     43        DELETE1(reg_DATA,_param->_nb_word);
    4944      }
    5045  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_allocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    3637                                                         ,IN
    3738                                                         ,SOUTH,
    38                                                          "Generalist interface"
     39                                                         _("Generalist interface")
    3940#endif
    4041                                                         );
     
    4344     in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
    4445
    45     // ~~~~~[ Interface : "read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     46     // ~~~~~[ Interface : "read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     47     {
     48       ALLOC1_INTERFACE_BEGIN("read",IN,WEST,_("Interface Read"),_param->_nb_port_read);
    4649
    47      in_READ_VAL         = new SC_IN (Tcontrol_t) * [_param->_nb_port_read];
    48     out_READ_ACK         = new SC_OUT(Tcontrol_t) * [_param->_nb_port_read];
    49     if (_param->_have_port_address == true)
    50      in_READ_ADDRESS     = new SC_IN (Taddress_t) * [_param->_nb_port_read];
    51     out_READ_DATA        = new SC_OUT(Tdata_t   ) * [_param->_nb_port_read];
     50       ALLOC1_VALACK_IN ( in_READ_VAL    ,VAL);
     51       ALLOC1_VALACK_OUT(out_READ_ACK    ,ACK);
     52       ALLOC1_SIGNAL_IN ( in_READ_ADDRESS,"address",Taddress_t, _param->_size_address);
     53       ALLOC1_SIGNAL_OUT(out_READ_DATA   ,"data"   ,Tdata_t   , _param->_size_word);
    5254
    53     for (uint32_t i=0; i<_param->_nb_port_read; i++)
    54       {
    55         Interface_fifo * interface = _interfaces->set_interface("read_"+toString(i)
    56 #ifdef POSITION
    57                                                                 , IN 
    58                                                                 ,WEST
    59                                                                 , "Interface Read"
    60 #endif
    61                                                                 );
     55       ALLOC1_INTERFACE_END(_param->_nb_port_read);
     56     }
     57     
     58     // ~~~~~[ Interface : "write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     59     {
     60       ALLOC1_INTERFACE_BEGIN("write",IN,EAST,_("Interface Write"),_param->_nb_port_write);
    6261
    63          in_READ_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
    64         out_READ_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
    65         if (_param->_have_port_address == true)
    66          in_READ_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", static_cast<uint32_t>(log2(_param->_nb_word)));
    67         out_READ_DATA    [i]  = interface->set_signal_out <Tdata_t   > ("data"   , _param->_size_word);
    68       }
     62       ALLOC1_VALACK_IN ( in_WRITE_VAL    ,VAL);
     63       ALLOC1_VALACK_OUT(out_WRITE_ACK    ,ACK);
     64       ALLOC1_SIGNAL_IN ( in_WRITE_ADDRESS,"address",Taddress_t,_param->_size_address);
     65       ALLOC1_SIGNAL_IN ( in_WRITE_DATA   ,"data"   ,Tdata_t   ,_param->_size_word);
    6966
    70     // ~~~~~[ Interface : "write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    71 
    72      in_WRITE_VAL        = new SC_IN (Tcontrol_t) * [_param->_nb_port_write];
    73     out_WRITE_ACK        = new SC_OUT(Tcontrol_t) * [_param->_nb_port_write];
    74     if (_param->_have_port_address == true)
    75      in_WRITE_ADDRESS    = new SC_IN (Taddress_t) * [_param->_nb_port_write];
    76      in_WRITE_DATA       = new SC_IN (Tdata_t   ) * [_param->_nb_port_write];
    77    
    78     for (uint32_t i=0; i<_param->_nb_port_write; i++)
    79       {
    80         Interface_fifo * interface = _interfaces->set_interface("write_"+toString(i)
    81 #ifdef POSITION
    82                                                                 , IN 
    83                                                                 ,EAST
    84                                                                 , "Interface Write"
    85 #endif
    86                                                                 );
    87 
    88          in_WRITE_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
    89         out_WRITE_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
    90         if (_param->_have_port_address == true)
    91          in_WRITE_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", static_cast<uint32_t>(log2(_param->_nb_word)));
    92          in_WRITE_DATA    [i]  = interface->set_signal_in  <Tdata_t   > ("data"   , _param->_size_word);
     67       ALLOC1_INTERFACE_END(_param->_nb_port_write);
    9368      }
    9469
    9570    if (usage_is_set(_usage,USE_SYSTEMC))
    9671      {
    97     // ~~~~~[ Registers ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     72        // ~~~~~[ Registers ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     73        ALLOC2(reg_DATA,Tdata_t,_param->_nb_bank,_param->_nb_word);
    9874
    99     reg_DATA = new Tdata_t * [_param->_nb_bank];
    100 
    101     for (uint32_t i=0; i<_param->_nb_bank; i++)
    102       {
    103         reg_DATA [i] = new Tdata_t [_param->_nb_word];
    104       }
    105 
    106     // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    107     internal_WRITE_VAL     = new bool       [_param->_nb_port_write];
    108     internal_WRITE_BANK    = new Taddress_t [_param->_nb_port_write];
    109     internal_WRITE_NUM_REG = new Taddress_t [_param->_nb_port_write];
     75        // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     76        ALLOC1(internal_WRITE_VAL    ,bool      ,_param->_nb_port_write);
     77        ALLOC1(internal_WRITE_BANK   ,Taddress_t,_param->_nb_port_write);
     78        ALLOC1(internal_WRITE_NUM_REG,Taddress_t,_param->_nb_port_write);
    11079      }
    11180
    11281    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    113 
    11482#ifdef POSITION
    11583    if (usage_is_set(_usage,USE_POSITION))
    11684      _component->generate_file();
    11785#endif
    118 
     86   
    11987    log_printf(FUNC,RegisterFile_Multi_Banked,"allocation","End");
    12088  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_deallocation.cpp

    r88 r112  
    22 * $Id$
    33 *
    4  * [ Description ]
     4 * [ Description ]
    55 *
    66 */
    77
    88#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2324        delete in_CLOCK;
    2425        delete in_NRESET;
     26     
     27        DELETE1_SIGNAL( in_READ_VAL     ,_param->_nb_port_read,1);
     28        DELETE1_SIGNAL(out_READ_ACK     ,_param->_nb_port_read,1);
     29        DELETE1_SIGNAL( in_READ_ADDRESS ,_param->_nb_port_read,_param->_size_address);
     30        DELETE1_SIGNAL(out_READ_DATA    ,_param->_nb_port_read,_param->_size_word);
    2531       
    26         // ----- Interface Read
    27         delete []  in_READ_VAL    ;
    28         delete [] out_READ_ACK    ;
    29         if (_param->_have_port_address == true)
    30         delete []  in_READ_ADDRESS;
    31         delete [] out_READ_DATA   ;
     32        DELETE1_SIGNAL( in_WRITE_VAL    ,_param->_nb_port_write,1);
     33        DELETE1_SIGNAL(out_WRITE_ACK    ,_param->_nb_port_write,1);
     34        DELETE1_SIGNAL( in_WRITE_ADDRESS,_param->_nb_port_write,_param->_size_address);
     35        DELETE1_SIGNAL( in_WRITE_DATA   ,_param->_nb_port_write,_param->_size_word);
    3236       
    33         // ----- Interface Write
    34         delete []  in_WRITE_VAL    ;
    35         delete [] out_WRITE_ACK    ;
    36         if (_param->_have_port_address == true)
    37         delete []  in_WRITE_ADDRESS;
    38         delete []  in_WRITE_DATA   ;
     37        DELETE2(reg_DATA                ,_param->_nb_bank,_param->_nb_word);
    3938       
    40         // ----- Register
    41         delete [] reg_DATA;
    42        
    43         // ----- Internal
    44         delete [] internal_WRITE_VAL;
    45         delete [] internal_WRITE_BANK;
    46         delete [] internal_WRITE_NUM_REG;
     39        DELETE1(internal_WRITE_VAL      ,_param->_nb_port_write);
     40        DELETE1(internal_WRITE_BANK     ,_param->_nb_port_write);
     41        DELETE1(internal_WRITE_NUM_REG  ,_param->_nb_port_write);
    4742      }       
    4843
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/include/test.h

    r81 r112  
    1515#include <sys/time.h>
    1616
     17#include "Common/include/Time.h"
    1718#include "Behavioural/Generic/RegisterFile/include/RegisterFile.h"
    1819
     
    2627              morpheo::behavioural::generic::registerfile::Parameters * param);
    2728
    28 class Time
    29 {
    30 private : timeval time_begin;
    31 // private : timeval time_end;
    32  
    33 public  : Time ()
    34   {
    35     gettimeofday(&time_begin     ,NULL);
    36   };
    37 
    38 public  : ~Time ()
    39   {
    40     cout << *this;
    41   };
    42 
    43 public  : friend ostream& operator<< (ostream& output_stream,
    44                                       const Time & x)
    45   {
    46     timeval time_end;
    47    
    48     gettimeofday(&time_end       ,NULL);
    49    
    50     uint32_t nb_cycles = static_cast<uint32_t>(sc_simulation_time());
    51 
    52     double average = static_cast<double>(nb_cycles) / static_cast<double>(time_end.tv_sec-x.time_begin.tv_sec);
    53    
    54     output_stream << nb_cycles << "\t(" << average << " cycles / seconds )" << endl;
    55 
    56     return output_stream;
    57   }
    58 };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/RegisterFile.h

    r82 r112  
    5353
    5454  public    : Component                      * _component;
     55  private   : Interfaces                     * _interfaces;
    5556
    5657#ifdef SYSTEMC
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_allocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo{
     
    3536                                                            ,IN 
    3637                                                            ,WEST
    37                                                             ,"Generalist interface"
     38                                                            ,_("Generalist interface")
    3839#endif
    3940                                                            );
     
    4142     in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_NO);
    4243     in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_NO);
     44     
     45     {
     46       ALLOC1_INTERFACE_BEGIN("",IN,SOUTH,_("select interface"),_param->_nb_entity);
    4347
    44      in_VAL          = new SC_IN (Tcontrol_t)           * [_param->_nb_entity];
    45     if (_param->_encoding_one_hot)
    46     out_ACK          = new SC_OUT(Tcontrol_t)           * [_param->_nb_entity];
     48       ALLOC1_SIGNAL_IN ( in_VAL       ,"val"       ,Tcontrol_t,1);
     49       if (_param->_encoding_one_hot)
     50       ALLOC1_SIGNAL_OUT(out_ACK       ,"ack"       ,Tcontrol_t,1);
    4751
    48     for (uint32_t i=0; i<_param->_nb_entity; i++)
    49       {
    50          in_VAL [i]    = interface->set_signal_in  <Tcontrol_t> ("val_"+toString(i),1);
    51         if (_param->_encoding_one_hot)
    52         out_ACK [i]    = interface->set_signal_out <Tcontrol_t> ("ack_"+toString(i),1);
    53       }
     52       ALLOC1_INTERFACE_END(_param->_nb_entity);
     53     }
    5454
    55     if (_param->_encoding_compact)
    56       {
    57         out_ENTITY     = interface->set_signal_out <Tentity_t > ("entity"    , _param->_size_entity);
    58         out_ENTITY_ACK = interface->set_signal_out <Tcontrol_t> ("entity_ack", 1);
    59       }
     55     if (_param->_encoding_compact)
     56     {
     57       ALLOC0_INTERFACE_BEGIN("",OUT,SOUTH,_("select interface"));
    6058
    61     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     59       ALLOC0_SIGNAL_OUT(out_ENTITY    ,"entity"    ,Tentity_t ,_param->_size_entity);
     60       ALLOC0_SIGNAL_OUT(out_ENTITY_ACK,"entity_ack",Tcontrol_t,1);
     61
     62       ALLOC0_INTERFACE_END();
     63     }
     64
     65    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    6266
    6367#ifdef POSITION
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2425        delete     in_NRESET;
    2526       
    26         delete []  in_VAL;
    27         if (_param->_encoding_one_hot)
    28           delete [] out_ACK;
    29        
    30         if (_param->_encoding_compact)
    31           {
    32             delete    out_ENTITY;
    33             delete    out_ENTITY_ACK;
    34           }
     27        DELETE1_SIGNAL( in_VAL       ,_param->_nb_entity,1);
     28        if (_param->_encoding_one_hot)
     29        DELETE1_SIGNAL(out_ACK       ,_param->_nb_entity,1);
     30        if (_param->_encoding_compact)
     31          {
     32        DELETE0_SIGNAL(out_ENTITY    ,_param->_size_entity);
     33        DELETE0_SIGNAL(out_ENTITY_ACK,1);
     34          }
    3535      }
     36
    3637    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    3738   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/include/test.h

    r81 r112  
    1414#include <iostream>
    1515
     16#include "Common/include/Time.h"
    1617#include "Behavioural/Generic/Shifter/include/Shifter.h"
    1718
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/src/test.cpp

    r88 r112  
    9999      (*(_Shifter->out_SHIFTER_DATA      [i])) (SHIFTER_DATA_OUT  [i]);
    100100    }
     101
     102  Time * _time = new Time();
    101103
    102104  /********************************************************
     
    309311   * Simulation - End
    310312   ********************************************************/
     313  delete _time;
    311314
    312315  cout << "<" << name << "> ............ Stop Simulation" << endl;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Parameters.h

    r88 r112  
    2929  public : const uint32_t    _size_data_completion;
    3030  public : const bool        _type_completion_bool;
     31
     32  public : const uint32_t    _size_shift        ;
    3133
    3234  public : const bool        _internal_direction;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Parameters.cpp

    r88 r112  
    2929    _size_data_completion          ((carry != external_completion)?0:((_shift_value==0)?size_data:_shift_value)),
    3030    _type_completion_bool          (type_completion_bool),
     31
     32    _size_shift                    (static_cast<uint32_t>(ceil(log2(_size_data)))),
    3133
    3234    _internal_direction            ((direction == internal_right_shift)?_right :_left      ),
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_allocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Generic/Shifter/include/Shifter.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    3334                                                              , IN 
    3435                                                              , SOUTH
    35                                                               , "Generalist interface"
     36                                                              , _("Generalist interface")
    3637#endif
    3738                                                              );
     
    4344   
    4445    {
    45       // Interface "shifter"
    46        in_SHIFTER_DATA      = new SC_IN (Tdata_t)      * [_param->_nb_port];
     46      ALLOC1_INTERFACE_BEGIN("shifter", IN, SOUTH,_("Generalist interface"),_param->_nb_port);
     47     
     48      ALLOC1_SIGNAL_IN ( in_SHIFTER_DATA       ,"data"      ,Tdata_t     ,_param->_size_data);
    4749      if (_param->_shift_value == 0)
    48        in_SHIFTER_SHIFT     = new SC_IN (Tshift_t)     * [_param->_nb_port];
    49       if (_param->_direction   == external_direction)
    50        in_SHIFTER_DIRECTION = new SC_IN (Tdirection_t) * [_param->_nb_port];
    51       if (_param->_rotate      == external_rotate)
    52        in_SHIFTER_TYPE      = new SC_IN (Ttype_t)      * [_param->_nb_port];
    53       if (_param->_carry       == external_carry)
    54        in_SHIFTER_CARRY     = new SC_IN (Tcarry_t)     * [_param->_nb_port];
    55       if (_param->_carry       == external_completion)
     50      ALLOC1_SIGNAL_IN ( in_SHIFTER_SHIFT      ,"shift"     ,Tshift_t    ,_param->_size_shift);
     51      if (_param->_direction == external_direction)
     52      ALLOC1_SIGNAL_IN ( in_SHIFTER_DIRECTION  ,"direction" ,Tdirection_t,1);
     53      if (_param->_rotate == external_rotate)
     54      ALLOC1_SIGNAL_IN ( in_SHIFTER_TYPE       ,"type"      ,Ttype_t     ,1);
     55      if (_param->_carry == external_carry)
     56      ALLOC1_SIGNAL_IN ( in_SHIFTER_CARRY      ,"carry"     ,Tcarry_t    ,1);
     57      if (_param->_carry == external_completion)
     58      {
    5659      if (_param->_type_completion_bool == true)
    57        in_SHIFTER_CARRY_IN  = new SC_IN (Tcontrol_t)   * [_param->_nb_port];
     60        {
     61      ALLOC1_SIGNAL_IN ( in_SHIFTER_CARRY_IN   ,"carry_in"  ,Tcontrol_t  ,1);
     62        }
    5863      else
    59        in_SHIFTER_COMPLETION= new SC_IN (Tdata_t)      * [_param->_nb_port];
    60       out_SHIFTER_DATA      = new SC_OUT(Tdata_t)      * [_param->_nb_port];
     64        {
     65      ALLOC1_SIGNAL_IN ( in_SHIFTER_COMPLETION ,"completion",Tdata_t     ,_param->_size_data_completion);
     66        }
     67      }
     68      ALLOC1_SIGNAL_OUT(out_SHIFTER_DATA       ,"data"      ,Tdata_t     ,_param->_size_data);
    6169     
    62       for (uint32_t i=0; i<_param->_nb_port; i++)
    63         {
    64           Interface_fifo * interface = _interfaces->set_interface("shifter_"+toString(i)
    65 #ifdef POSITION
    66                                                                   , IN 
    67                                                                   , SOUTH
    68                                                                   , "Generalist interface"
    69 #endif
    70                                                                   );
    71          
    72            in_SHIFTER_DATA       [i] = interface->set_signal_in  <Tdata_t     > ("data"      ,_param->_size_data);
    73           if (_param->_shift_value == 0)
    74            in_SHIFTER_SHIFT      [i] = interface->set_signal_in  <Tshift_t    > ("shift"     ,static_cast<uint32_t>(ceil(log2(_param->_size_data))));
    75           if (_param->_direction == external_direction)
    76            in_SHIFTER_DIRECTION  [i] = interface->set_signal_in  <Tdirection_t> ("direction" ,1);
    77           if (_param->_rotate  == external_rotate)
    78            in_SHIFTER_TYPE       [i] = interface->set_signal_in  <Ttype_t     > ("type"      ,1);
    79           if (_param->_carry == external_carry)
    80            in_SHIFTER_CARRY      [i] = interface->set_signal_in  <Tcarry_t    > ("carry"     ,1);
    81           if (_param->_carry       == external_completion)
    82           if (_param->_type_completion_bool == true)
    83            in_SHIFTER_CARRY_IN   [i] = interface->set_signal_in  <Tcontrol_t  > ("carry_in"  ,1);
    84           else
    85            in_SHIFTER_COMPLETION [i] = interface->set_signal_in  <Tdata_t     > ("completion",_param->_size_data_completion);
    86           out_SHIFTER_DATA       [i] = interface->set_signal_out <Tdata_t     > ("data"      ,_param->_size_data);
    87         }
     70      ALLOC1_INTERFACE_END(_param->_nb_port);
    8871    }
    89 
     72   
    9073#ifdef POSITION
    9174    if (usage_is_set(_usage,USE_POSITION))
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Generic/Shifter/include/Shifter.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    1920      {
    2021#if (defined(STATISTICS) || defined (VHDL_TESTBENCH))
    21     delete     in_CLOCK;
     22        delete     in_CLOCK;
    2223#endif
    2324
    24     delete []  in_SHIFTER_DATA      ;
    25     if (_param->_shift_value == 0)
    26     delete []  in_SHIFTER_SHIFT     ;
    27     if (_param->_direction   == external_direction )
    28     delete []  in_SHIFTER_DIRECTION ;
    29     if (_param->_rotate      == external_rotate    )
    30     delete []  in_SHIFTER_TYPE      ;
    31     if (_param->_carry       == external_carry     )
    32     delete []  in_SHIFTER_CARRY     ;
    33     if (_param->_carry       == external_completion)
    34     if (_param->_type_completion_bool == true)
    35     delete []  in_SHIFTER_CARRY_IN  ;
    36     else
    37     delete []  in_SHIFTER_COMPLETION;
    38     delete [] out_SHIFTER_DATA      ;
     25        DELETE1_SIGNAL( in_SHIFTER_DATA       ,_param->_nb_port,_param->_size_data);
     26        if (_param->_shift_value == 0)
     27        DELETE1_SIGNAL( in_SHIFTER_SHIFT      ,_param->_nb_port,_param->_size_shift);
     28        if (_param->_direction == external_direction)
     29        DELETE1_SIGNAL( in_SHIFTER_DIRECTION  ,_param->_nb_port,1);
     30        if (_param->_rotate == external_rotate)
     31        DELETE1_SIGNAL( in_SHIFTER_TYPE       ,_param->_nb_port,1);
     32        if (_param->_carry == external_carry)
     33        DELETE1_SIGNAL( in_SHIFTER_CARRY      ,_param->_nb_port,1);
     34        if (_param->_carry == external_completion)
     35        {
     36        if (_param->_type_completion_bool == true)
     37          {
     38        DELETE1_SIGNAL( in_SHIFTER_CARRY_IN   ,_param->_nb_port,1);
     39          }
     40        else
     41          {
     42        DELETE1_SIGNAL( in_SHIFTER_COMPLETION ,_param->_nb_port,_param->_size_data_completion);
     43          }
     44        }
     45        DELETE1_SIGNAL(out_SHIFTER_DATA       ,_param->_nb_port,_param->_size_data);
    3946      }
    4047
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_declaration.cpp

    r81 r112  
    1717  void Shifter::vhdl_declaration (Vhdl * & vhdl)
    1818  {
    19     uint32_t log2_size_data = static_cast<uint32_t>(ceil(log2(_param._size_data)));
     19    uint32_t log2_size_data = static_cast<uint32_t>(ceil(log2(_param->_size_data)));
    2020
    2121    vhdl->set_constant("cst_is_direction_left  ",1,_left      );
     
    2525    vhdl->set_constant("cst_is_carry_arithmetic",1,_arithmetic);
    2626    vhdl->set_constant("cst_is_carry_logic     ",1,_logic     );
    27     vhdl->set_constant("cst_completion         ",_param._size_data,"(others => '1')");
     27    vhdl->set_constant("cst_completion         ",_param->_size_data,"(others => '1')");
    2828   
    29     for (uint32_t i=0; i<_param._nb_port; i++)
     29    for (uint32_t i=0; i<_param->_nb_port; i++)
    3030      {
    31         if (_param._shift_value != 0)
    32           vhdl->set_constant("shift_"+toString(i),log2_size_data, _param._shift_value);
     31        if (_param->_shift_value != 0)
     32          vhdl->set_constant("shift_"+toString(i),log2_size_data, _param->_shift_value);
    3333        else
    3434          vhdl->set_alias   ("shift_"+toString(i),std_logic(log2_size_data), "in_SHIFTER_"+toString(i)+"_SHIFT",std_logic_range(log2_size_data));
    3535       
    36         if (_param._size_data_completion > 0)
     36        if (_param->_size_data_completion > 0)
    3737          {
    38             vhdl->set_signal ("shifter_completion_left_"+toString(i)+" ",_param._size_data);
    39             vhdl->set_signal ("shifter_completion_right_"+toString(i)+"",_param._size_data);
    40             vhdl->set_signal ("mask_completion_left_"+toString(i)+"    ",_param._size_data);
    41             vhdl->set_signal ("mask_completion_right_"+toString(i)+"   ",_param._size_data);
     38            vhdl->set_signal ("shifter_completion_left_"+toString(i)+" ",_param->_size_data);
     39            vhdl->set_signal ("shifter_completion_right_"+toString(i)+"",_param->_size_data);
     40            vhdl->set_signal ("mask_completion_left_"+toString(i)+"    ",_param->_size_data);
     41            vhdl->set_signal ("mask_completion_right_"+toString(i)+"   ",_param->_size_data);
    4242          }
    4343       
    4444        //-----[ Shift logic Left ]--------------------------------------------
    45         if (_param._have_shift_logic_left)
    46           vhdl->set_signal ("shift_logic_left_"+toString(i)+"      ",_param._size_data);
     45        if (_param->_have_shift_logic_left)
     46          vhdl->set_signal ("shift_logic_left_"+toString(i)+"      ",_param->_size_data);
    4747       
    4848        //-----[ Shift logic Right ]-------------------------------------------
    49         if (_param._have_shift_logic_right)
    50           vhdl->set_signal ("shift_logic_right_"+toString(i)+"     ",_param._size_data);
     49        if (_param->_have_shift_logic_right)
     50          vhdl->set_signal ("shift_logic_right_"+toString(i)+"     ",_param->_size_data);
    5151       
    5252        //-----[ Shift arithmetic Left ]---------------------------------------
    53         if (_param._have_shift_arithmetic_left)
    54           vhdl->set_signal ("shift_arithmetic_left_"+toString(i)+" ",_param._size_data);
     53        if (_param->_have_shift_arithmetic_left)
     54          vhdl->set_signal ("shift_arithmetic_left_"+toString(i)+" ",_param->_size_data);
    5555       
    5656        //-----[ Shift arithmetic Right ]--------------------------------------
    57         if (_param._have_shift_arithmetic_right)
    58           vhdl->set_signal ("shift_arithmetic_right_"+toString(i)+"",_param._size_data);
     57        if (_param->_have_shift_arithmetic_right)
     58          vhdl->set_signal ("shift_arithmetic_right_"+toString(i)+"",_param->_size_data);
    5959       
    6060        //-----[ Rotate Left ]-------------------------------------------------
    61         if (_param._have_rotate_left)
    62           vhdl->set_signal ("rotate_left_"+toString(i)+"           ",_param._size_data);
     61        if (_param->_have_rotate_left)
     62          vhdl->set_signal ("rotate_left_"+toString(i)+"           ",_param->_size_data);
    6363       
    6464        //-----[ Rotate Right ]------------------------------------------------
    65         if (_param._have_rotate_right)
    66           vhdl->set_signal ("rotate_right_"+toString(i)+"          ",_param._size_data);
     65        if (_param->_have_rotate_right)
     66          vhdl->set_signal ("rotate_right_"+toString(i)+"          ",_param->_size_data);
    6767      }
    6868  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Sort/src/Sort_allocation.cpp

    r88 r112  
    5353    // ~~~~~[ Interface : "input" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5454    {
    55       ALLOC1_INTERFACE("input", IN, WEST, "List of data unsort",_param->_nb_input);
     55      ALLOC1_INTERFACE_BEGIN("input", IN, WEST, "List of data unsort",_param->_nb_input);
    5656
    5757      ALLOC1_SIGNAL_IN(in_INPUT_VAL ,"val" , Tcontrol_t, 1);
    5858      ALLOC1_SIGNAL_IN(in_INPUT_DATA,"data", Tdata_t   , _param->_size_data);
     59
     60      ALLOC1_INTERFACE_END(_param->_nb_input);
    5961    }
    6062
    6163    // ~~~~~[ Interface : "output" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6264    {
    63       ALLOC1_INTERFACE("output",OUT, EAST, "List of data sort",_param->_nb_output);
     65      ALLOC1_INTERFACE_BEGIN("output",OUT, EAST, "List of data sort",_param->_nb_output);
    6466
    6567      ALLOC1_SIGNAL_OUT(out_OUTPUT_VAL  ,"val"  ,Tcontrol_t,1);
     
    6870      if (_param->_have_port_data_out)
    6971      ALLOC1_SIGNAL_OUT(out_OUTPUT_DATA ,"data" ,Tdata_t   ,_param->_size_data   );
     72
     73      ALLOC1_INTERFACE_END(_param->_nb_output);
    7074    }
    7175
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Sort/src/Sort_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Generic/Sort/include/Sort.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2526        delete     in_NRESET;
    2627
    27         delete []  in_INPUT_VAL   ;
    28         delete []  in_INPUT_DATA  ;
    29         delete [] out_OUTPUT_VAL  ;
    30         if (_param->_have_port_index_out)
    31         delete [] out_OUTPUT_INDEX;
    32         if (_param->_have_port_data_out)
    33         delete [] out_OUTPUT_DATA ;
     28        DELETE1_SIGNAL(in_INPUT_VAL ,_param->_nb_input, 1);
     29        DELETE1_SIGNAL(in_INPUT_DATA,_param->_nb_input, _param->_size_data);
     30       
     31        DELETE1_SIGNAL(out_OUTPUT_VAL  ,_param->_nb_output,1);
     32        if (_param->_have_port_index_out)
     33        DELETE1_SIGNAL(out_OUTPUT_INDEX,_param->_nb_output,_param->_size_address);
     34        if (_param->_have_port_data_out)
     35        DELETE1_SIGNAL(out_OUTPUT_DATA ,_param->_nb_output,_param->_size_data   );
    3436      }
     37
    3538    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    3639
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_allocation.cpp

    r95 r112  
    22 * $Id$
    33 *
    4  * [ Description ]
     4 * [ Description ]
    55 *
    66 */
     
    2828    _interfaces = entity->set_interfaces();
    2929
    30     // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     30    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    3131    {
    3232      Interface_fifo * interface = _interfaces->set_interface(""
     
    4040    }
    4141
    42     // ~~~~~[ Interface : "access" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     42    // ~~~~~[ Interface : "access" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    4343    {
    44       ALLOC1_INTERFACE("access",IN,WEST, "Access", _param->_nb_access);
     44      ALLOC1_INTERFACE_BEGIN("access",IN,WEST, "Access", _param->_nb_access);
    4545
    4646      ALLOC1_VALACK_IN ( in_ACCESS_VAL    ,VAL);
     
    5050      ALLOC1_SIGNAL_IN ( in_ACCESS_ENTITY ,"entity" ,Tentity_t ,log2(_param->_nb_entity   ));
    5151      ALLOC1_SIGNAL_OUT(out_ACCESS_VICTIM ,"victim" ,Tentity_t ,log2(_param->_nb_entity   ));
     52
     53      ALLOC1_INTERFACE_END(_param->_nb_access);
    5254    }
    5355
    5456    if (usage_is_set(_usage,USE_SYSTEMC))
    5557      {
    56     // -----[ Register ]---------------------------------------------------
    57     reg_TABLE = new entry_t *  [_param->_size_table];
    58 
    59     for (uint32_t i=0; i<_param->_size_table; i++)
    60       reg_TABLE [i] = new entry_t (_param->_nb_entity);
    61    
    62     // -----[ Internal ]---------------------------------------------------
    63     internal_ACCESS_ACK    = new Tcontrol_t [_param->_nb_access];
    64     internal_ACCESS_VICTIM = new Tentity_t  [_param->_nb_access];
     58        // -----[ Register ]---------------------------------------------------
     59        reg_TABLE = new entry_t *  [_param->_size_table];
     60       
     61        for (uint32_t i=0; i<_param->_size_table; i++)
     62          reg_TABLE [i] = new entry_t (_param->_nb_entity);
     63       
     64        // -----[ Internal ]---------------------------------------------------
     65        ALLOC1(internal_ACCESS_ACK   ,Tcontrol_t,_param->_nb_access);
     66        ALLOC1(internal_ACCESS_VICTIM,Tentity_t ,_param->_nb_access);
    6567      }
    6668
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2021    delete     in_CLOCK;
    2122    delete     in_NRESET;
    22     // -----[ Interface access ]-------------------------------------------
    23     delete []  in_ACCESS_VAL    ;
    24     delete [] out_ACCESS_ACK    ;
    25     if (_param->_size_address>1)
    26     delete []  in_ACCESS_ADDRESS;
    27     delete []  in_ACCESS_HIT    ;
    28     delete []  in_ACCESS_ENTITY ;
    29     delete [] out_ACCESS_VICTIM ;
    30    
    31     // -----[ Register ]---------------------------------------------------
    32     delete [] reg_TABLE;
    3323
    34     // -----[ Internal ]---------------------------------------------------
    35     delete [] internal_ACCESS_ACK   ;
    36     delete [] internal_ACCESS_VICTIM;
     24    DELETE1_SIGNAL( in_ACCESS_VAL    ,_param->_nb_access,1);
     25    DELETE1_SIGNAL(out_ACCESS_ACK    ,_param->_nb_access,1);
     26    DELETE1_SIGNAL( in_ACCESS_HIT    ,_param->_nb_access,1);
     27    DELETE1_SIGNAL( in_ACCESS_ADDRESS,_param->_nb_access,log2(_param->_size_address));
     28    DELETE1_SIGNAL( in_ACCESS_ENTITY ,_param->_nb_access,log2(_param->_nb_entity   ));
     29    DELETE1_SIGNAL(out_ACCESS_VICTIM ,_param->_nb_access,log2(_param->_nb_entity   ));
     30
     31    DELETE1(reg_TABLE             ,_param->_size_table);
     32    DELETE1(internal_ACCESS_ACK   ,_param->_nb_access);
     33    DELETE1(internal_ACCESS_VICTIM,_param->_nb_access);
    3734      }
    3835
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Victim_allocation.cpp

    r82 r112  
    3131    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    3232    {
    33       __ALLOC_SIGNAL(in_CLOCK ,"in_CLOCK" ,SC_CLOCK          );
    34       __ALLOC_SIGNAL(in_NRESET,"in_NRESET",SC_IN (Tcontrol_t));
     33      __ALLOC0_SIGNAL(in_CLOCK ,"in_CLOCK" ,SC_CLOCK          );
     34      __ALLOC0_SIGNAL(in_NRESET,"in_NRESET",SC_IN (Tcontrol_t));
    3535    }
    3636
    3737    // ~~~~~[ Interface : "Access" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    3838    {
    39       __ALLOC1_INTERFACE("ACCESS",_param->_nb_access);
     39      __ALLOC1_INTERFACE_BEGIN("ACCESS",_param->_nb_access);
    4040
    4141      __ALLOC1_SIGNAL_IN ( in_ACCESS_VAL    ,"VAL"    ,Tcontrol_t);
     
    4646      __ALLOC1_SIGNAL_IN ( in_ACCESS_ENTITY ,"ENTITY" ,Tentity_t );
    4747      __ALLOC1_SIGNAL_OUT(out_ACCESS_VICTIM ,"VICTIM" ,Tentity_t );
     48
     49      __ALLOC1_INTERFACE_END(_param->_nb_access);
    4850    }
    4951
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Victim_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Generic/Victim/include/Victim.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Synthesis

    r103 r112  
    6666                                @\
    6767                                $(ECHO) "Create work-space  : $@"; \
    68                                 $(MODELTECH_VLIB) $@;
     68                                $(MODELTECH_VLIB) $@; \
     69                                $(MODELTECH_VMAP) $(XILINX_CORELIB);
    6970
    7071$(DIR_LOG)/%.sim.log            : $(DIR_VHDL)/%.vhdl $(DIR_LOG)/%.vhdl.log
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Allocation.h

    r111 r112  
    1414// =====[ ALLOCATION / DELETE of ARRAY ]=================================
    1515// ======================================================================
     16#define ALLOC0(var,type)                        \
     17  var = new type
     18
    1619#define ALLOC1(var,type,s1)                      \
    1720  var = new type [s1]
     
    103106// ----------------------------------------------------------------------
    104107
    105 #define __ALLOC_SIGNAL(sig, name, type)         \
     108
     109#define __ALLOC0_SIGNAL(sig, name, type)         \
    106110  {                                             \
    107111    sig = new type (name);                      \
     
    109113
    110114#ifdef POSITION
    111 #define ALLOC_INTERFACE( name, direction, localisation, str)            \
     115#define ALLOC0_INTERFACE_BEGIN( name, direction, localisation, str)            \
    112116  INTERFACE_PRINT(name);                                                \
    113117  morpheo::behavioural::Interface_fifo * interface = _interfaces->set_interface( name, direction, localisation, str);
    114118#else
    115 #define ALLOC_INTERFACE( name, direction, localisation, str)            \
     119#define ALLOC0_INTERFACE_BEGIN( name, direction, localisation, str)            \
    116120  INTERFACE_PRINT(name);                                                \
    117121  morpheo::behavioural::Interface_fifo * interface = _interfaces->set_interface( name);
    118122#endif
    119123
    120 #define ALLOC_VAL_ACK_IN(  sig, name, type)                             \
     124#define ALLOC0_INTERFACE_END()
     125
     126#define ALLOC0_VAL_ACK_IN(  sig, name, type)                             \
    121127  {                                                                     \
    122128    sig = interface->set_signal_valack_in (name, type);                 \
    123129  }                                                                     
    124 #define ALLOC_VAL_ACK_OUT( sig, name, type)                             \
     130#define ALLOC0_VAL_ACK_OUT( sig, name, type)                             \
    125131  {                                                                     \
    126132    sig = interface->set_signal_valack_out(name, type);                 \
    127133  }                                                                     
    128 #define ALLOC_VALACK_IN(     sig, type)                                 \
     134#define ALLOC0_VALACK_IN(     sig, type)                                 \
    129135  {                                                                     \
    130136    sig = interface->set_signal_valack_in (type);                       \
    131137  }                                                                     
    132 #define ALLOC_VALACK_OUT(    sig, type)                                 \
     138#define ALLOC0_VALACK_OUT(    sig, type)                                 \
    133139  {                                                                     \
    134140    sig = interface->set_signal_valack_out(type);                       \
    135141  }                                                                     
    136 #define ALLOC_SIGNAL_IN(  sig, name, type, size)                        \
     142#define ALLOC0_SIGNAL_IN(  sig, name, type, size)                        \
    137143  if (size > 0)                                                         \
    138144    {                                                                   \
     
    144150    }
    145151 
    146 #define ALLOC_SIGNAL_OUT( sig, name, type, size)                        \
     152#define ALLOC0_SIGNAL_OUT( sig, name, type, size)                        \
    147153  if (size > 0)                                                         \
    148154    {                                                                   \
     
    154160    }
    155161
    156 #define DELETE_SIGNAL( sig, size)                                       \
     162#define DELETE0_SIGNAL( sig, size)                                       \
    157163  if (size > 0)                                                         \
    158164    {                                                                   \
     
    160166    }
    161167
    162 #define ALLOC_SC_SIGNAL(  sig, name, type)                              \
     168#define ALLOC0_SC_SIGNAL(  sig, name, type)                              \
    163169  sc_signal<type> * sig = new sc_signal<type> (name);                   \
    164170  PRINT_SIGNAL_ADDRESS(name,sig);
    165171
    166 #define INSTANCE_SC_SIGNAL(component, sig)                     \
     172#define INSTANCE0_SC_SIGNAL(component, sig)                     \
    167173  {                                                            \
    168174    TEST_SIGNAL(component->sig->name(),component->sig);        \
     
    171177  }
    172178
    173 #define _INSTANCE_SC_SIGNAL(component, sig1,sig2)                       \
     179#define _INSTANCE0_SC_SIGNAL(component, sig1,sig2)                       \
    174180  {                                                                     \
    175181    TEST_SIGNAL(component->sig1->name(),component->sig1);               \
     
    178184  }
    179185
    180 #define DELETE_SC_SIGNAL( sig)                  \
     186#define DELETE0_SC_SIGNAL( sig)                  \
    181187  {                                             \
    182188    delete sig;                                 \
    183189  }
    184 
    185 
    186 #define __ALLOC0_SIGNAL(sig, name, type)                      __ALLOC_SIGNAL(sig, name, type)
    187 
    188 #define ALLOC0_INTERFACE( name, direction, localisation, str) ALLOC_INTERFACE( name, direction, localisation, str)
    189 
    190 #define ALLOC0_VAL_ACK_IN(  sig, name, type)                  ALLOC_VAL_ACK_IN(  sig, name, type)
    191 #define ALLOC0_VAL_ACK_OUT( sig, name, type)                  ALLOC_VAL_ACK_OUT( sig, name, type)
    192 #define ALLOC0_VALACK_IN(     sig, type)                      ALLOC_VALACK_IN(     sig, type)
    193 #define ALLOC0_VALACK_OUT(    sig, type)                      ALLOC_VALACK_OUT(    sig, type)
    194 #define ALLOC0_SIGNAL_IN(  sig, name, type, size)             ALLOC_SIGNAL_IN(  sig, name, type, size)
    195 #define ALLOC0_SIGNAL_OUT( sig, name, type, size)             ALLOC_SIGNAL_OUT( sig, name, type, size)
    196 #define DELETE0_SIGNAL( sig, size)                            DELETE_SIGNAL( sig, size)
    197 
    198 #define ALLOC0_SC_SIGNAL(  sig, name, type)                   ALLOC_SC_SIGNAL(  sig, name, type)
    199 #define INSTANCE0_SC_SIGNAL(component, sig)                   INSTANCE_SC_SIGNAL(component, sig)
    200 #define _INSTANCE0_SC_SIGNAL(component, sig)                  _INSTANCE_SC_SIGNAL(component, sig)
    201 #define DELETE0_SC_SIGNAL( sig)                               DELETE_SC_SIGNAL( sig)
    202190
    203191// ----------------------------------------------------------------------
     
    205193// ----------------------------------------------------------------------
    206194
    207 #define __ALLOC1_INTERFACE(name, x1)                                    \
     195#define __ALLOC1_INTERFACE_BEGIN(name, x1)                                    \
    208196  INTERFACE_PRINT(name);                                                \
    209197  const std::string interface_name = name;                              \
    210198  const uint32_t iterator_1 = x1;
    211199
     200#define __ALLOC1_INTERFACE_END(x1)
     201
    212202#define __ALLOC1_SIGNAL_IN( sig, name, type)                            \
    213203  {                                                                     \
     
    233223
    234224#ifdef POSITION
    235 #define ALLOC1_INTERFACE( name, direction, localisation, str, x1)       \
     225#define ALLOC1_INTERFACE_BEGIN( name, direction, localisation, str, x1)       \
    236226  INTERFACE_PRINT(name);                                                \
    237227  const uint32_t iterator_1 = x1;                                       \
     
    245235  }
    246236#else
    247 #define ALLOC1_INTERFACE( name, direction, localisation, str, x1)       \
     237#define ALLOC1_INTERFACE_BEGIN( name, direction, localisation, str, x1)       \
    248238  INTERFACE_PRINT(name);                                                \
    249239  const uint32_t iterator_1 = x1;                                       \
     
    257247  }
    258248#endif
     249
     250#define ALLOC1_INTERFACE_END(x1)
    259251
    260252#define ALLOC1_VAL_ACK_IN( sig, name, type)                             \
     
    377369
    378370#ifdef POSITION
    379 #define ALLOC2_INTERFACE( name, direction, localisation, str, x1, x2)   \
     371#define ALLOC2_INTERFACE_BEGIN( name, direction, localisation, str, x1, x2)   \
    380372  INTERFACE_PRINT(name);                                                \
    381373  uint32_t iterator_1 = 0;                                              \
     
    397389  }
    398390#else
    399 #define ALLOC2_INTERFACE( name, direction, localisation, str, x1, x2)   \
     391#define ALLOC2_INTERFACE_BEGIN( name, direction, localisation, str, x1, x2)   \
    400392  INTERFACE_PRINT(name);                                                \
    401393  uint32_t iterator_1 = 0;                                              \
     
    417409  }
    418410#endif
     411
     412#define ALLOC2_INTERFACE_END(x1, x2)                             \
     413  for (uint32_t it1=0; it1<x1; it1++)                                   \
     414    delete interface [it1];                                             \
     415  delete [] interface;
    419416
    420417#define _ALLOC2_VAL_ACK_IN( sig, name, type, x1, x2)                    \
     
    586583
    587584#ifdef POSITION
    588 #define ALLOC3_INTERFACE( name, direction, localisation, str, x1, x2, x3) \
     585#define ALLOC3_INTERFACE_BEGIN( name, direction, localisation, str, x1, x2, x3) \
    589586  INTERFACE_PRINT(name);                                                \
    590587  uint32_t iterator_1 = 0;                                              \
     
    612609  }
    613610#else
    614 #define ALLOC3_INTERFACE( name, direction, localisation, str, x1, x2, x3) \
     611#define ALLOC3_INTERFACE_BEGIN( name, direction, localisation, str, x1, x2, x3) \
    615612  INTERFACE_PRINT(name);                                                \
    616613  uint32_t iterator_1 = 0;                                              \
     
    638635  }
    639636#endif
     637
     638#define ALLOC3_INTERFACE_END(x1, x2, x3)                         \
     639  for (uint32_t it1=0; it1<x1; it1++)                                   \
     640    {                                                                   \
     641      for (uint32_t it2=0; it2<x2; it2++)                               \
     642        delete interface [it1][it2];                                    \
     643      delete [] interface [it1];                                        \
     644    }                                                                   \
     645  delete [] interface;
    640646
    641647// #define _ALLOC3_VAL_ACK_IN( sig, name, type, x1, x2, x3)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h

    r88 r112  
    1111#  define   DEBUG_Configuration                                   true
    1212#  define     DEBUG_Generic                                       true
     13#  define       DEBUG_Comparator                                  true
    1314#  define       DEBUG_Counter                                     true
     15#  define       DEBUG_Divider                                     true
     16#  define       DEBUG_Multiplier                                  true
    1417#  define       DEBUG_Priority                                    true
    1518#  define       DEBUG_Queue                                       true
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/SPR_access_mode.h

    r88 r112  
    3232  public  : ~SPR_access_mode();
    3333
    34   public  : spr_address_t translate_address (Tgeneral_data_t address);
     34  public  : spr_address_t     translate_address (Tgeneral_data_t address);
    3535
    36   public  : bool          valid (uint32_t num_group, uint32_t num_reg);
    37   public  : bool          valid (spr_address_t address);
    38   public  : bool          exist (uint32_t num_group, uint32_t num_reg);
    39   public  : bool          exist (spr_address_t address);
    40   public  : bool          read  (spr_address_t address, Tcontrol_t SM, Tcontrol_t SUMRA);
    41   public  : bool          write (spr_address_t address, Tcontrol_t SM, Tcontrol_t SUMRA);
    42 
    43   public  : void          implement_group (uint32_t num_group, uint32_t nb_reg);
    44   public  : uint32_t      implement_group (uint32_t num_group);
    45   public  : void          change_mode     (uint32_t num_group, uint32_t num_reg, spr_access_mode_t new_mode);
    46   public  : void          invalid_register(uint32_t num_group, uint32_t num_reg);
    47 
     36  public  : bool              valid           (uint32_t num_group, uint32_t num_reg);
     37  public  : bool              valid           (spr_address_t address);
     38  public  : bool              exist           (uint32_t num_group, uint32_t num_reg);
     39  public  : bool              exist           (spr_address_t address);
     40  public  : bool              read            (spr_address_t address, Tcontrol_t SM, Tcontrol_t SUMRA);
     41  public  : bool              write           (spr_address_t address, Tcontrol_t SM, Tcontrol_t SUMRA);
     42  public  : spr_access_mode_t get_mode        (uint32_t num_group, uint32_t num_reg);
     43  public  : spr_access_mode_t get_mode        (spr_address_t address);
     44   
     45  public  : void              implement_group (uint32_t num_group, uint32_t nb_reg);
     46  public  : uint32_t          implement_group (uint32_t num_group);
     47  public  : void              change_mode     (uint32_t num_group, uint32_t num_reg, spr_access_mode_t new_mode);
     48  public  : void              invalid_register(uint32_t num_group, uint32_t num_reg);
    4849  };
    4950 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Simulation.h

    r110 r112  
    1111
    1212#include "Common/include/Debug.h"
    13 
     13#include "Behavioural/include/Model.h"
    1414#include <stdint.h>
    1515#include <systemc.h>
     
    2222extern double              _simulation_nb_instruction;
    2323extern std::vector<double> _simulation_nb_instruction_commited;
     24extern Model               _model;
    2425
    2526  bool simulation_test_end (void);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Version.h

    r111 r112  
    1010#define MORPHEO_MAJOR_VERSION "0"
    1111#define MORPHEO_MINOR_VERSION "2"
    12 #define MORPHEO_REVISION      "111"
     12#define MORPHEO_REVISION      "112"
    1313#define MORPHEO_CODENAME      "Castor"
    1414
    15 #define MORPHEO_DATE_DAY      "27
    16 #define MORPHEO_DATE_MONTH    "02"
     15#define MORPHEO_DATE_DAY      "18
     16#define MORPHEO_DATE_MONTH    "03"
    1717#define MORPHEO_DATE_YEAR     "2009"
    1818
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface.cpp

    r81 r112  
    7070    log_printf(FUNC,Behavioural,"~Interface","Begin");
    7171
    72     if (_list_signal->empty()== false)
    73       {
    74         std::list<Signal*>::iterator i = _list_signal->begin();
    75 
    76         while (i != _list_signal->end())
    77           {
    78             delete (*i);
    79             ++i;
    80           }
    81       }
    82 
     72    for (std::list<Signal*>::iterator it = _list_signal->begin();
     73         it != _list_signal->end();
     74         ++it)
     75      delete (*it);
     76   
    8377    delete _list_signal;
    8478
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_signal.cpp

    r88 r112  
    2020    std::string signame = signal_name(_name, name, direction);
    2121   
    22     Signal * sig = new Signal       (signame, direction, size, presence_port);
     22    Signal * sig = new Signal (signame, direction, size, presence_port);
    2323
    2424    _list_signal->push_back (sig);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces.cpp

    r81 r112  
    3939#endif
    4040
    41     if (_list_interface->empty()== false)
    42       {
    43         std::list<Interface_fifo*>::iterator i     = _list_interface->begin();
    44 
    45         while (i != _list_interface->end())
    46           {
    47             delete (*i);
    48             ++i;
    49           }
    50       }
     41    for (std::list<Interface_fifo*>::iterator it = _list_interface->begin();
     42         it!=_list_interface->end();
     43         ++it)
     44      delete (*it);
    5145
    5246    delete _list_interface;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Simulation.cpp

    r110 r112  
    1717  double              _simulation_nb_instruction;
    1818  std::vector<double> _simulation_nb_instruction_commited;
     19  Model               _model;
    1920
    2021  void simulation_init (double nb_cycle,
  • trunk/IPs/systemC/processor/Morpheo/Common/include/Debug.h

    r110 r112  
    3434#include <sstream>
    3535#include <string>
     36#include "Common/include/MemCheck.h"
    3637
    3738namespace morpheo {
  • trunk/IPs/systemC/processor/Morpheo/Files/Instance_debug.cfg

    r111 r112  
    1717  <decod_bloc id="0">                                       
    1818    <parameter name="size_decod_queue"                      value="16"/>
    19     <parameter name="decod_queue_scheme"                    value="0" />
     19    <parameter name="decod_queue_scheme"                    value="1" />
    2020    <parameter name="nb_inst_decod"                         value="4" />
    2121    <parameter name="nb_context_select"                     value="1" />
     
    3434    <parameter name="nb_reg_free"                           value="8" />
    3535    <parameter name="nb_rename_unit_bank"                   value="8" />
    36     <parameter name="size_read_counter"                     value="4" />
    3736  </rename_bloc>                                           
    3837                                                           
     
    5049
    5150  <load_store_unit id="0">                                 
    52     <parameter name="size_store_queue"                      value="8" />
     51    <parameter name="size_store_queue"                      value="16" />
    5352    <parameter name="size_load_queue"                       value="8" />
    5453    <parameter name="size_speculative_access_queue"         value="4" />
     
    9190                                                           
    9291    <predictor id="0">                                     
    93       <parameter name="dir_have_bht"                        value="1" />
    94       <parameter name="dir_bht_size_shifter"                value="4" />
     92      <parameter name="dir_have_bht"                        value="0" />
     93      <parameter name="dir_bht_size_shifter"                value="1" />
    9594      <parameter name="dir_bht_nb_shifter"                  value="64" />
    96       <parameter name="dir_have_pht"                        value="1" />
    97       <parameter name="dir_pht_size_counter"                value="2" />
    98       <parameter name="dir_pht_nb_counter"                  value="64" />
    99       <parameter name="dir_pht_size_address_share"          value="0" />
     95      <parameter name="dir_have_pht"                        value="1"  />
     96      <parameter name="dir_pht_size_counter"                value="2"  />
     97      <parameter name="dir_pht_nb_counter"                  value="16" />
     98      <parameter name="dir_pht_size_address_share"          value="0"  />
    10099    </predictor>                                           
    101100    <predictor id="1">                                     
     
    125124    <parameter name="nb_rename_unit_select"                 value="1" />
    126125    <parameter name="nb_execute_loop_select"                value="1" />
    127     <parameter name="size_re_order_buffer"                  value="32" />
    128     <parameter name="nb_re_order_buffer_bank"               value="8" />
     126    <parameter name="size_re_order_buffer"                  value="64"/>
     127    <parameter name="nb_re_order_buffer_bank"               value="64" />
    129128    <parameter name="commit_priority"                       value="1" />
    130129    <parameter name="commit_load_balancing"                 value="1" />
  • trunk/IPs/systemC/processor/Morpheo/Files/Instance_min.cfg

    r95 r112  
    3333    <parameter name="nb_reg_free"                           value="1" />
    3434    <parameter name="nb_rename_unit_bank"                   value="1" />
    35     <parameter name="size_read_counter"                     value="1" />
    3635  </rename_bloc>                                           
    3736                                                           
  • trunk/IPs/systemC/processor/Morpheo/Files/Instance_w1_1.cfg

    r101 r112  
    3333    <parameter name="nb_reg_free"                           value="1" />
    3434    <parameter name="nb_rename_unit_bank"                   value="1" />
    35     <parameter name="size_read_counter"                     value="1" />
    3635  </rename_bloc>                                           
    3736                                                           
  • trunk/IPs/systemC/processor/Morpheo/Files/Instance_w1_2.cfg

    r101 r112  
    3333    <parameter name="nb_reg_free"                           value="1" />
    3434    <parameter name="nb_rename_unit_bank"                   value="1" />
    35     <parameter name="size_read_counter"                     value="1" />
    3635  </rename_bloc>                                           
    3736                                                           
  • trunk/IPs/systemC/processor/Morpheo/Files/Instance_w1_3.cfg

    r102 r112  
    3333    <parameter name="nb_reg_free"                           value="1" />
    3434    <parameter name="nb_rename_unit_bank"                   value="1" />
    35     <parameter name="size_read_counter"                     value="1" />
    3635  </rename_bloc>                                           
    3736                                                           
  • trunk/IPs/systemC/processor/Morpheo/Files/Instance_w1_4.cfg

    r102 r112  
    3333    <parameter name="nb_reg_free"                           value="1" />
    3434    <parameter name="nb_rename_unit_bank"                   value="1" />
    35     <parameter name="size_read_counter"                     value="1" />
    3635  </rename_bloc>                                           
    3736                                                           
  • trunk/IPs/systemC/processor/Morpheo/Files/Instance_w2_1.cfg

    r102 r112  
    3333    <parameter name="nb_reg_free"                           value="1" />
    3434    <parameter name="nb_rename_unit_bank"                   value="1" />
    35     <parameter name="size_read_counter"                     value="1" />
    3635  </rename_bloc>                                           
    3736                                                           
  • trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.gen

    r111 r112  
    4040  <parameter name="nb_reg_free"                           min="1"   max="8"    step="+ 1" default="1"   level="..." description="..." />
    4141  <parameter name="nb_rename_unit_bank"                   min="1"   max="8"    step="+ 1" default="1"   level="..." description="..." />
    42   <parameter name="size_read_counter"                     min="1"   max="8"    step="+ 1" default="1"   level="..." description="..." />
    4342                                                                               
    4443  <parameter name="nb_read_bloc"                          min="1"   max="8"    step="* 2" default="1"   level="..." description="..." />
     
    5352                                                                               
    5453  <parameter name="nb_load_store_unit"                    min="1"   max="8"    step="* 2" default="1"   level="..." description="..." />
    55   <parameter name="size_store_queue"                      min="2"   max="8"    step="* 2" default="2"   level="..." description="..." />
    56   <parameter name="size_load_queue"                       min="1"   max="8"    step="* 2" default="2"   level="..." description="..." />
    57   <parameter name="size_speculative_access_queue"         min="1"   max="8"    step="* 2" default="2"   level="..." description="..." />
     54  <parameter name="size_store_queue"                      min="2"   max="16"   step="* 2" default="2"   level="..." description="..." />
     55  <parameter name="size_load_queue"                       min="1"   max="16"   step="* 2" default="2"   level="..." description="..." />
     56  <parameter name="size_speculative_access_queue"         min="1"   max="16"   step="* 2" default="2"   level="..." description="..." />
    5857  <parameter name="nb_port_check"                         min="1"   max="8"    step="* 2" default="1"   level="..." description="..." />
    5958  <parameter name="speculative_load"                      min="0"   max="3"    step="+ 1" default="2"   level="..." description="..." />
     
    9392  <parameter name="nb_execute_loop_select"                min="1"   max="8"    step="* 2" default="1"   level="..." description="..." />
    9493  <parameter name="size_re_order_buffer"                  min="1"   max="256"  step="* 2" default="1"   level="..." description="..." />
    95   <parameter name="nb_re_order_buffer_bank"               min="1"   max="8"    step="* 2" default="1"   level="..." description="..." />
     94  <parameter name="nb_re_order_buffer_bank"               min="1"   max="64"   step="* 2" default="1"   level="..." description="..." />
    9695  <parameter name="commit_priority"                       min="1"   max="8"    step="+ 1" default="1"   level="..." description="..." />
    9796  <parameter name="commit_load_balancing"                 min="1"   max="8"    step="+ 1" default="1"   level="..." description="..." />
    98   <parameter name="size_issue_queue"                      min="1"   max="8"    step="* 2" default="2"   level="..." description="..." />
     97  <parameter name="size_issue_queue"                      min="1"   max="32"   step="* 2" default="2"   level="..." description="..." />
    9998  <parameter name="nb_issue_queue_bank"                   min="1"   max="8"    step="* 2" default="1"   level="..." description="..." />
    100   <parameter name="issue_queue_scheme"                    min="0"   max="2"    step="+ 1" default="0"   level="..." description="0 : in_order, 1 : in_bundle_order, 2 : out_of_order" />
     99  <parameter name="issue_queue_scheme"                    min="0"   max="1"    step="+ 1" default="0"   level="..." description="0 : in_order, 1 : in_bundle_order, 2 : out_of_order" />
    101100  <parameter name="issue_priority"                        min="1"   max="8"    step="* 2" default="1"   level="..." description="..." />
    102101  <parameter name="issue_load_balancing"                  min="1"   max="8"    step="* 2" default="1"   level="..." description="..." />
  • trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.sim

    r111 r112  
    88  <parameter  name="use_vhdl_testbench_assert"              value="0"       />
    99  <parameter  name="use_position"                           value="0"       />
    10   <parameter  name="use_statistics"                         value="1"       />
     10  <parameter  name="use_statistics"                         value="0"       />
    1111  <parameter  name="use_information"                        value="0"       />
    1212  <parameter  name="use_header"                             value="0"       />
     
    2323  <parameter  name="directory_log"                          value="."       />
    2424                                                           
    25   <parameter  name="debug_level"                            value="3"       />
    26   <parameter  name="debug_cycle_start"                      value="7200"    />
    27   <parameter  name="debug_cycle_stop"                       value="7400"    />
     25  <parameter  name="debug_level"                            value="0"       />
     26  <parameter  name="debug_cycle_start"                      value="300"     />
     27  <parameter  name="debug_cycle_stop"                       value="450"     />
    2828  <parameter  name="debug_have_log_file"                    value="0"       />
    2929  <parameter  name="debug_idle_cycle"                       value="100"     />
    3030  <parameter  name="debug_idle_time"                        value="5"       />
    3131
    32   <component  name="Counter"                                simulation="systemc" debug="0" />
    33   <component  name="Priority"                               simulation="systemc" debug="0" />
    34   <component  name="Queue_Control"                          simulation="systemc" debug="0" />         
    35   <component  name="Queue"                                  simulation="systemc" debug="0" />
    36   <component  name="RegisterFile_Monolithic"                simulation="systemc" debug="0" />
    37   <component  name="RegisterFile_Multi_Banked"              simulation="systemc" debug="0" />
    38   <component  name="RegisterFile"                           simulation="systemc" debug="0" />
    39   <component  name="Select_Priority_Fixed"                  simulation="systemc" debug="0" />
    40   <component  name="Select"                                 simulation="systemc" debug="0" />
    41   <component  name="Shifter"                                simulation="systemc" debug="0" />
    42   <component  name="Sort"                                   simulation="systemc" debug="0" />
    43   <component  name="Victim_Pseudo_LRU"                      simulation="systemc" debug="0" />
    44   <component  name="Victim"                                 simulation="systemc" debug="0" />
    45   <component  name="Execute_loop_Glue"                      simulation="systemc" debug="0" />
    46   <component  name="Functionnal_unit"                       simulation="systemc" debug="0" />
    47   <component  name="Load_store_unit"                        simulation="systemc" debug="0" />
    48   <component  name="Read_queue"                             simulation="systemc" debug="0" />
    49   <component  name="Reservation_station"                    simulation="systemc" debug="0" />
    50   <component  name="Read_unit"                              simulation="systemc" debug="0" />
    51   <component  name="Execute_queue"                          simulation="systemc" debug="0" />
    52   <component  name="Write_queue"                            simulation="systemc" debug="0" />
    53   <component  name="Write_unit"                             simulation="systemc" debug="0" />
    54   <component  name="Execution_unit_to_Write_unit"           simulation="systemc" debug="0" />
    55   <component  name="Read_unit_to_Execution_unit"            simulation="systemc" debug="0" />
    56   <component  name="Register_unit_Glue"                     simulation="systemc" debug="0" />
    57   <component  name="Register_unit"                          simulation="systemc" debug="0" />
    58   <component  name="Execute_loop"                           simulation="systemc" debug="0" />
    59   <component  name="Commit_unit"                            simulation="systemc" debug="0" />
    60   <component  name="Issue_queue"                            simulation="systemc" debug="0" />
    61   <component  name="OOO_Engine_Glue"                        simulation="systemc" debug="0" />
    62   <component  name="Reexecute_unit"                         simulation="systemc" debug="0" />
    63   <component  name="Load_Store_pointer_unit"                simulation="systemc" debug="0" />
    64   <component  name="Dependency_checking_unit"               simulation="systemc" debug="0" />
    65   <component  name="Free_List_unit"                         simulation="systemc" debug="0" />
    66   <component  name="Register_Address_Translation_unit"      simulation="systemc" debug="0" />
    67   <component  name="Register_translation_unit_Glue"         simulation="systemc" debug="0" />
    68   <component  name="Stat_List_unit"                         simulation="systemc" debug="0" />
    69   <component  name="Register_translation_unit"              simulation="systemc" debug="0" />
    70   <component  name="Rename_unit_Glue"                       simulation="systemc" debug="0" />
    71   <component  name="Rename_select"                          simulation="systemc" debug="0" />
    72   <component  name="Rename_unit"                            simulation="systemc" debug="0" />
    73   <component  name="Special_Register_unit"                  simulation="systemc" debug="0" />
    74   <component  name="OOO_Engine"                             simulation="systemc" debug="0" />
    75   <component  name="Context_State"                          simulation="systemc" debug="0" />
    76   <component  name="Decod"                                  simulation="systemc" debug="0" />
    77   <component  name="Decod_queue"                            simulation="systemc" debug="0" />
    78   <component  name="Decod_unit"                             simulation="systemc" debug="0" />
    79   <component  name="Front_end_Glue"                         simulation="systemc" debug="0" />
    80   <component  name="Address_management"                     simulation="systemc" debug="0" />
    81   <component  name="Ifetch_queue"                           simulation="systemc" debug="0" />
    82   <component  name="Ifetch_unit_Glue"                       simulation="systemc" debug="0" />
    83   <component  name="Ifetch_unit"                            simulation="systemc" debug="0" />
    84   <component  name="Branch_Target_Buffer_Glue"              simulation="systemc" debug="0" />
    85   <component  name="Branch_Target_Buffer_Register"          simulation="systemc" debug="0" />
    86   <component  name="Branch_Target_Buffer"                   simulation="systemc" debug="0" />
    87   <component  name="Direction_Glue"                         simulation="systemc" debug="0" />
    88   <component  name="Direction"                              simulation="systemc" debug="0" />
    89   <component  name="Prediction_unit_Glue"                   simulation="systemc" debug="0" />
    90   <component  name="Return_Address_Stack"                   simulation="systemc" debug="0" />
    91   <component  name="Update_Prediction_Table"                simulation="systemc" debug="0" />
    92   <component  name="Prediction_unit"                        simulation="systemc" debug="0" />
    93   <component  name="Front_end"                              simulation="systemc" debug="0" />
    94   <component  name="Icache_Access"                          simulation="systemc" debug="0" />
    95   <component  name="Dcache_Access"                          simulation="systemc" debug="0" />
    96   <component  name="Core_Glue"                              simulation="systemc" debug="0" />
    97   <component  name="Core"                                   simulation="systemc" debug="0" />
    98   <component  name="TopLevel"                               simulation="systemc" debug="0" />
     32  <component  name="Counter"                                model="systemc" debug="0" />
     33  <component  name="Priority"                               model="systemc" debug="0" />
     34  <component  name="Queue_Control"                          model="systemc" debug="0" />         
     35  <component  name="Queue"                                  model="systemc" debug="0" />
     36  <component  name="RegisterFile_Monolithic"                model="systemc" debug="0" />
     37  <component  name="RegisterFile_Multi_Banked"              model="systemc" debug="0" />
     38  <component  name="RegisterFile"                           model="systemc" debug="0" />
     39  <component  name="Select_Priority_Fixed"                  model="systemc" debug="0" />
     40  <component  name="Select"                                 model="systemc" debug="0" />
     41  <component  name="Shifter"                                model="systemc" debug="0" />
     42  <component  name="Sort"                                   model="systemc" debug="0" />
     43  <component  name="Victim_Pseudo_LRU"                      model="systemc" debug="0" />
     44  <component  name="Victim"                                 model="systemc" debug="0" />
     45  <component  name="Execute_loop_Glue"                      model="systemc" debug="0" />
     46  <component  name="Functionnal_unit"                       model="systemc" debug="0" />
     47  <component  name="Load_store_unit"                        model="systemc" debug="0" />
     48  <component  name="Read_queue"                             model="systemc" debug="0" />
     49  <component  name="Reservation_station"                    model="systemc" debug="0" />
     50  <component  name="Read_unit"                              model="systemc" debug="0" />
     51  <component  name="Execute_queue"                          model="systemc" debug="0" />
     52  <component  name="Write_queue"                            model="systemc" debug="0" />
     53  <component  name="Write_unit"                             model="systemc" debug="0" />
     54  <component  name="Execution_unit_to_Write_unit"           model="systemc" debug="0" />
     55  <component  name="Read_unit_to_Execution_unit"            model="systemc" debug="0" />
     56  <component  name="Register_unit_Glue"                     model="systemc" debug="0" />
     57  <component  name="Register_unit"                          model="systemc" debug="0" />
     58  <component  name="Execute_loop"                           model="systemc" debug="0" />
     59  <component  name="Commit_unit"                            model="systemc" debug="0" />
     60  <component  name="Issue_queue"                            model="systemc" debug="0" />
     61  <component  name="OOO_Engine_Glue"                        model="systemc" debug="0" />
     62  <component  name="Reexecute_unit"                         model="systemc" debug="0" />
     63  <component  name="Load_Store_pointer_unit"                model="systemc" debug="0" />
     64  <component  name="Dependency_checking_unit"               model="systemc" debug="0" />
     65  <component  name="Free_List_unit"                         model="systemc" debug="0" />
     66  <component  name="Register_Address_Translation_unit"      model="systemc" debug="0" />
     67  <component  name="Register_translation_unit_Glue"         model="systemc" debug="0" />
     68  <component  name="Stat_List_unit"                         model="systemc" debug="0" />
     69  <component  name="Register_translation_unit"              model="systemc" debug="0" />
     70  <component  name="Rename_unit_Glue"                       model="systemc" debug="0" />
     71  <component  name="Rename_select"                          model="systemc" debug="0" />
     72  <component  name="Rename_unit"                            model="systemc" debug="0" />
     73  <component  name="Special_Register_unit"                  model="systemc" debug="0" />
     74  <component  name="OOO_Engine"                             model="systemc" debug="0" />
     75  <component  name="Context_State"                          model="systemc" debug="0" />
     76  <component  name="Decod"                                  model="systemc" debug="0" />
     77  <component  name="Decod_queue"                            model="systemc" debug="0" />
     78  <component  name="Decod_unit"                             model="systemc" debug="0" />
     79  <component  name="Front_end_Glue"                         model="systemc" debug="0" />
     80  <component  name="Address_management"                     model="systemc" debug="0" />
     81  <component  name="Ifetch_queue"                           model="systemc" debug="0" />
     82  <component  name="Ifetch_unit_Glue"                       model="systemc" debug="0" />
     83  <component  name="Ifetch_unit"                            model="systemc" debug="0" />
     84  <component  name="Branch_Target_Buffer_Glue"              model="systemc" debug="0" />
     85  <component  name="Branch_Target_Buffer_Register"          model="systemc" debug="0" />
     86  <component  name="Branch_Target_Buffer"                   model="systemc" debug="0" />
     87  <component  name="Direction_Glue"                         model="systemc" debug="0" />
     88  <component  name="Direction"                              model="systemc" debug="0" />
     89  <component  name="Prediction_unit_Glue"                   model="systemc" debug="0" />
     90  <component  name="Return_Address_Stack"                   model="systemc" debug="0" />
     91  <component  name="Update_Prediction_Table"                model="systemc" debug="0" />
     92  <component  name="Prediction_unit"                        model="systemc" debug="0" />
     93  <component  name="Front_end"                              model="systemc" debug="0" />
     94  <component  name="Icache_Access"                          model="systemc" debug="0" />
     95  <component  name="Dcache_Access"                          model="systemc" debug="0" />
     96  <component  name="Core_Glue"                              model="systemc" debug="0" />
     97  <component  name="Core"                                   model="systemc" debug="0" />
     98  <component  name="TopLevel"                               model="systemc" debug="0" />
    9999
    100100</parameters>
  • trunk/IPs/systemC/processor/Morpheo/Script/SelfTest.sh

    r110 r112  
    2020    "Behavioural/Custom"
    2121
     22    "Behavioural/Generic/Comparator"
    2223    "Behavioural/Generic/Counter"
     24    "Behavioural/Generic/Divider"
     25    "Behavioural/Generic/Multiplier"
    2326    "Behavioural/Generic/Priority"
    2427    "Behavioural/Generic/Queue_Control"                                 
  • trunk/IPs/systemC/processor/Morpheo/Script/execute.sh

    r85 r112  
    55#-----------------------------------------------------------
    66
    7 declare -a COMMAND;
    8 declare -i CPT_OLD;
    9 declare -i CPT;
    10 declare    FILE_CMD=;
    11 declare    FILE_CPT=;
    12 declare    FILE_CPU=;
    13 declare    LOCK_CPT="${HOME}/.lock-cpt";
    14 declare    LOCK_CPU="${HOME}/.lock-cpu";
     7#-----[ global variable ]-----------------------------------
    158
    169#-----[ lock ]----------------------------------------------
    1710function lock ()
    1811{
    19     lockfile -1 $1;
     12    lockfile -1 ${1};
    2013}
    2114
     
    2316function unlock ()
    2417{
    25     rm -f $1;
     18    rm -f ${1};
    2619}
    2720
    28 #-----[ main ]----------------------------------------------
    29 function main ()
     21#-----[ my_date ]-------------------------------------------
     22function my_date ()
    3023{
    31     # no test, because the script execute_n have make all test
    32     FILE_CMD=$1;
    33     FILE_CPT=$2;
    34     FILE_CPU=$3;
     24    date +"%F %T";
     25}
    3526
    36     lock   $LOCK_CPT;
    37     if test ! -s $FILE_CPT; then
    38         echo "0" > $FILE_CPT;
     27#-----[ execute_usage ]-------------------------------------
     28function execute_usage ()
     29{
     30    echo "Usage     : ${0} work_dir file_cmd file_cpt file_cpu";
     31    echo "Arguments : ";
     32    echo " * work_dir   : directory to execute command";
     33    echo " * file_cmd   : list of command";
     34    echo " * file_cpt   : file with the index of next command to execute";
     35    echo " * file_cpu   : tmp file to stock the current index";
     36    exit;
     37}
     38
     39#-----[ execute_test_usage ]--------------------------------
     40function execute_test_usage ()
     41{
     42    if test ${#} -ne 4; then
     43        execute_usage;
    3944    fi;
    40     unlock $LOCK_CPT;
    4145
    42     # lit les fichiers ligne par ligne et le place dans un tableau
     46    if test ! -d ${1}; then
     47        echo "Directory ${1} is invalid";
     48    fi;
     49}
     50
     51#-----[ execute ]-------------------------------------------
     52function execute ()
     53{
     54    # test_usage
     55    execute_test_usage ${*};
     56
     57    local -a COMMAND;
     58    local -i CPT_OLD;
     59    local -i CPT;
     60    local    WORK_DIR=${1};
     61    local    FILE_CMD=${2};
     62    local    FILE_CPT=${3};
     63    local    FILE_CPU=${4};
     64    local    LOCK_CPT="${WORK_DIR}/.lock-cpt";
     65    local    LOCK_CPU="${WORK_DIR}/.lock-cpu";
     66    local    FILE_CMD="distexe.command";
     67    local    FILE_OUT="distexe.output";
     68
     69
     70    # Init CPT if this thread is the first
     71    lock   ${LOCK_CPT};
     72    if test ! -s ${FILE_CPT}; then
     73        echo "0" > ${FILE_CPT};
     74    fi;
     75    unlock ${LOCK_CPT};
     76
     77    # read, line by line, the command file and write in array
    4378    CPT=0;
    4479
    4580    while read line; do
    46         COMMAND[$CPT]="$line";
    47         CPT=$(($CPT+1));
    48     done < $1;
     81        COMMAND[${CPT}]="${line}";
     82        CPT=$((${CPT}+1));
     83    done < ${FILE_CMD};
    4984
    50     echo "  * <$$> {"`date +"%F %T"`"} is ready";
     85    echo "  * <${HOSTNAME}-$$> {"$(my_date)"} is ready";
    5186
    5287    # infinite loop
     
    5691    while test 1; do
    5792        # Take a number
    58         CPT_OLD=$CPT;
     93        CPT_OLD=${CPT};
    5994
    60         lock   $LOCK_CPT;
    61         CPT=`cat $FILE_CPT`;            # read  the      index
    62         echo "$(($CPT+1))" > $FILE_CPT; # write the next index
    63         unlock $LOCK_CPT;
     95        # Read the index, and increase
     96        lock   ${LOCK_CPT};
     97        CPT=$(cat ${FILE_CPT});
     98        echo "$((${CPT}+1))" > ${FILE_CPT};
     99        unlock ${LOCK_CPT};
    64100
    65101        # test if this number is valid
    66         if test $CPT -ge ${#COMMAND[*]}; then
     102        if test ${CPT} -ge ${#COMMAND[*]}; then
    67103            CPT=${#COMMAND[*]};
    68104        fi;
     
    70106        # test if between the cpt_old and cpt, there are a synchronisation command
    71107
    72 #       local -i CPT_SYNC=$CPT_OLD;
     108#       local -i CPT_SYNC=${CPT}_OLD;
    73109#
    74 #       while test $CPT_SYNC -lt $CPT; do
    75 #           if test -z "${COMMAND[$CPT_SYNC]}"; then
    76 #               echo "  * <$$> {"`date +"%F %T"`"} synchronisation [$CPT_SYNC]";
     110#       while test ${CPT}_SYNC -lt ${CPT}; do
     111#           if test -z "${COMMAND[${CPT}_SYNC]}"; then
     112#               echo "  * <${HOSTNAME}-$$> {"$(my_date)"} synchronisation [${CPT}_SYNC]";
    77113#           fi;
    78 #           CPT_SYNC=$(($CPT_SYNC+1));
     114#           CPT_SYNC=$((${CPT}_SYNC+1));
    79115#       done;
    80116
    81117        # test if this number is valid
    82         if test $CPT -eq ${#COMMAND[*]}; then
     118        if test ${CPT} -eq ${#COMMAND[*]}; then
    83119            break;
    84120        fi;
    85121
    86122        # Test if command is empty !
    87         if test ! -z "${COMMAND[$CPT]}"; then
    88             local CUR_DIR=$PWD;
    89 
    90             mkdir "Task_$CPT"       &> /dev/null;
    91             cd    "Task_$CPT"       &> /dev/null;
    92             echo "  * <$$> {"`date +"%F %T"`"} execute command [$CPT] : ${COMMAND[$CPT]}";
    93             echo "${COMMAND[$CPT]}"  >  "command";
    94             chmod +x                    "command";
    95             eval "${COMMAND[$CPT]}" &>  "output";
    96             cd    $CUR_DIR          &> /dev/null;
     123        if test ! -z "${COMMAND[${CPT}]}"; then
     124            local CURREN_DIR=${PWD};
     125            cd    ${WORK_DIR}         &> /dev/null;
     126            mkdir "Task_${CPT}"       &> /dev/null;
     127            cd    "Task_${CPT}"       &> /dev/null;
     128            echo "  * <${HOSTNAME}-$$> {"$(my_date)"} execute command [${CPT}] : ${COMMAND[${CPT}]}";
     129            echo "${COMMAND[${CPT}]}"  >  ${FILE_CMD};
     130#           chmod +x                      ${FILE_CMD};
     131            eval "${COMMAND[${CPT}]}" &>  ${FILE_OUT};
     132            cd    ${CURREN_DIR}       &> /dev/null;
    97133        fi;
    98134    done;
    99135
    100     echo "  * <$$> {"`date +"%F %T"`"} is done";
     136    echo "  * <${HOSTNAME}-$$> {"$(my_date)"} is done";
    101137
    102     lock   $LOCK_CPU;
    103     CPT=`cat $FILE_CPU`;     # read  the      index
    104     CPT=$(($CPT-1));
    105     echo "$CPT" > $FILE_CPU; # write the next index
    106     unlock $LOCK_CPU;
     138    lock   ${LOCK_CPU};
     139    CPT=$(cat ${FILE_CPU});    # read  the      index
     140    CPT=$((${CPT}-1));
     141    echo "${CPT}" > ${FILE_CPU}; # write the next index
     142    unlock ${LOCK_CPU};
    107143   
    108     if test $CPT -eq 0; then
    109         echo "  * <$$> {"`date +"%F %T"`"} All task is executed";
    110         rm $FILE_CPU;
     144    if test ${CPT} -eq 0; then
     145        echo "  * <${HOSTNAME}-$$> {"$(my_date)"} All task is executed";
     146        rm ${FILE_CPU};
    111147    fi;
    112148}
    113149
    114150#-----[ Corps ]---------------------------------------------
    115 main $*;
     151execute ${*};
  • trunk/IPs/systemC/processor/Morpheo/Script/execute_n.sh

    r85 r112  
    55#-----------------------------------------------------------
    66
    7 #-----[ variable ]------------------------------------------
    8 declare -a COMMAND;
    9 declare -i NB_PROCESS;
    10 declare -i CPT;
    11 declare    FILE_CMD;
    12 declare    FILE_CPT;
    13 declare    FILE_CPU;
    14 declare    ID="cpu-${HOSTNAME}-$$"
     7#-----[ global variable ]-----------------------------------
    158
    16 #-----[ usage ]---------------------------------------------
    17 function usage ()
     9#-----[ nb_cpu ]--------------------------------------------
     10function nb_cpu ()
    1811{
    19     echo "Usage     : $0 file [ nb_process ]";
     12    local FILE_CPUINFO=/proc/cpuinfo;
     13    if test ! -f ${FILE_CPUINFO}; then
     14        echo "\"${FILE_CPUINFO}\" don't exist."
     15        usage;
     16    fi;
     17
     18    #eval "${1}=`grep -c \"processor\" ${FILE_CPUINFO}`";
     19    grep -c "processor" ${FILE_CPUINFO};
     20}
     21
     22#-----[ execute_n_usage ]-----------------------------------
     23function execute_n_usage ()
     24{
     25    echo "Usage     : ${0} word_dir file [ nb_process ]";
    2026    echo "Arguments : ";
     27    echo " * work_dir   : directory to execute command";
    2128    echo " * file       : list of command";
    2229    echo " * nb_process : number of process (default (and maximum) is the number of processor)";
     
    2532    echo " * This script, for each command, create a directory : Task_X (X is the number of command), and execute the command in this directory.";
    2633    echo " * Two file is generate : \"output\" is the output of the execution, and \"command\" is the command lunch.";
    27     echo " * A command empty (no command on a line of file) is a synchronisation with all process"
    28     echo " * Don't forgot the final end of line (else the last command is not executed";
     34#   echo " * A command empty (no command on a line of file) is a synchronisation with all process"
     35    echo " * Don't forgot the final end of line (else the last command is not executed)";
    2936    echo "";
    3037    exit;
    3138}
    3239
    33 #-----[ nb_cpu ]--------------------------------------------
    34 function nb_cpu ()
     40#-----[ execute_n_test_usage ]------------------------------
     41function execute_n_test_usage ()
    3542{
    36     local FILE_CPUINFO=/proc/cpuinfo;
    37     if test ! -f $FILE_CPUINFO; then
    38         echo "\"${FILE_CPUINFO}\" don't exist."
    39         usage;
     43    if test ${#} -ne 2 -a ${#} -ne 3; then
     44        execute_n_usage;
    4045    fi;
    4146
    42     eval "$1=`grep -c \"processor\" ${FILE_CPUINFO}`";
    43 }
    44 
    45 #-----[ test_usage ]----------------------------------------
    46 function test_usage ()
    47 {
    48     if test $# -ne 1 -a $# -ne 2; then
    49         usage;
     47    if test ! -d ${1}; then
     48        echo "Directory ${1} is invalid";
    5049    fi;
    5150
    52     if test ! -f $1; then
    53         echo "File \"$1\" don't exist";
    54         usage;
     51    if test -z "${MORPHEO_SCRIPT}"; then
     52        echo "Environment variable MORPHEO_SCRIPT is not set";
     53        distexe_usage;
    5554    fi;
    5655
    57     if test ! -s $1; then
    58         echo "File \"$1\" is empty";
    59         usage;
     56    if test ! -f ${2}; then
     57        echo "File \"${2}\" don't exist";
     58        execute_n_usage;
     59    fi;
     60
     61    if test ! -s ${2}; then
     62        echo "File \"${2}\" is empty";
     63        execute_n_usage;
    6064    fi;
    6165}
    6266
    63 #-----[ main ]----------------------------------------------
    64 function main ()
     67#-----[ execute_n_main ]------------------------------------
     68function execute_n ()
    6569{
    66     nb_cpu NB_PROCESS;
     70    local -i NB_PROCESS=$(nb_cpu);
     71    local -i CPT;
     72    local    WORK_DIR=${1};
     73    local    FILE_CMD=${2};
     74    local    FILE_CPT;
     75    local    FILE_CPU;
     76    local    ID="cpu-${HOSTNAME}-$$"
    6777
    68     test_usage $*;
     78    execute_n_test_usage ${*};
    6979
    70     if test $# -eq 2; then
    71         if test $2 -lt $NB_PROCESS; then
    72             NB_PROCESS=$2;
     80    if test ${#} -eq 2; then
     81        if test ${3} -lt ${NB_PROCESS}; then
     82            NB_PROCESS=${3};
    7383        fi;
    7484    fi;
    7585
    76     FILE_CMD=$1;
    77     FILE_CPT="$HOME/control-"`basename $1`;
    78     FILE_CPU="$HOME/$ID";
     86    FILE_CPT="${WORK_DIR}/control-"$(basename ${FILE_CMD});
     87    FILE_CPU="${WORK_DIR}/${ID}";
    7988
    80     echo "<$0>"                                         ;
    81     echo "  * Initialisation ...."                      ;
    82     echo "    - host name                : $HOSTNAME"   ;
    83     echo "    - number of process        : $NB_PROCESS" ;
     89    echo "  * <${HOSTNAME}> ${NB_PROCESS} process";
    8490
    8591    local -i IT_NB_PROCESS=1;
    8692    local -i PID=$$;
    8793
    88     echo "$NB_PROCESS" > $FILE_CPU;
     94    echo "${NB_PROCESS}" > ${FILE_CPU};
    8995
    9096    # create the same number of thread that processor
    91     while test $IT_NB_PROCESS -le $NB_PROCESS; do
    92         execute.sh $FILE_CMD $FILE_CPT $FILE_CPU &
    93         IT_NB_PROCESS=$(($IT_NB_PROCESS+1));
     97    while test ${IT_NB_PROCESS} -le ${NB_PROCESS}; do
     98        ${MORPHEO_SCRIPT}/execute.sh ${WORK_DIR} ${FILE_CMD} ${FILE_CPT} ${FILE_CPU} &
     99        IT_NB_PROCESS=$((${IT_NB_PROCESS}+1));
    94100
    95         if test "$$" -ne $PID; then
     101        if test "$$" -ne ${PID}; then
    96102            break;
    97103        fi;
     
    100106
    101107#-----[ Corps ]---------------------------------------------
    102 main $*;
     108execute_n ${*};
  • trunk/IPs/systemC/processor/Morpheo/TopLevel/src/Morpheo_allocation.cpp

    r88 r112  
    5252    // ~~~~~[ Interface "icache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5353    {
    54       ALLOC1_INTERFACE("icache_req",WEST,OUT,_("Request to instruction cache"),_nb_icache_port);
     54      ALLOC1_INTERFACE_BEGIN("icache_req",WEST,OUT,_("Request to instruction cache"),_nb_icache_port);
    5555
    5656      ALLOC1_VALACK_OUT(out_ICACHE_REQ_VAL         ,behavioural::VAL);
     
    6060      ALLOC1_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS     ,"address"  ,Ticache_address_t    ,_size_icache_address  );
    6161      ALLOC1_SIGNAL_OUT(out_ICACHE_REQ_TYPE        ,"type"     ,Ticache_type_t       ,_size_icache_type     );
     62
     63      ALLOC1_INTERFACE_END(_nb_icache_port);
    6264    }
    6365
    6466    // ~~~~~[ Interface "icache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6567    {
    66       ALLOC1_INTERFACE("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_nb_icache_port);
     68      ALLOC1_INTERFACE_BEGIN("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_nb_icache_port);
    6769     
    6870      ALLOC1_VALACK_IN ( in_ICACHE_RSP_VAL         ,behavioural::VAL);
     
    7173      ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_PACKET_ID   ,"packet_id"  ,Ticache_packet_t     ,_size_icache_packet_id);
    7274      ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_ERROR       ,"error"      ,Ticache_error_t      ,_size_icache_error);
    73     }
    74     {
    75       ALLOC2_INTERFACE("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_nb_icache_port,_icache_nb_instruction[it1]);
     75
     76      ALLOC1_INTERFACE_END(_nb_icache_port);
     77    }
     78    {
     79      ALLOC2_INTERFACE_BEGIN("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_nb_icache_port,_icache_nb_instruction[it1]);
    7680     
    7781      _ALLOC2_SIGNAL_IN ( in_ICACHE_RSP_INSTRUCTION ,"instruction",Ticache_instruction_t,_size_icache_instruction,_nb_icache_port,_icache_nb_instruction[it1]);
     82
     83      ALLOC2_INTERFACE_END(_nb_icache_port,_icache_nb_instruction[it1]);
    7884    }
    7985
    8086    // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8187    {
    82       ALLOC1_INTERFACE("dcache_req", OUT, NORTH, _("Request to data cache"),_nb_dcache_port);
     88      ALLOC1_INTERFACE_BEGIN("dcache_req", OUT, NORTH, _("Request to data cache"),_nb_dcache_port);
    8389     
    8490      ALLOC1_VALACK_OUT(out_DCACHE_REQ_VAL         ,behavioural::VAL);
     
    8995      ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_WDATA       ,"wdata"    ,Tdcache_data_t       ,_size_dcache_data);
    9096      ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_TYPE        ,"type"     ,Tdcache_type_t       ,_size_dcache_type);
     97
     98      ALLOC1_INTERFACE_END(_nb_dcache_port);
    9199    }
    92100                                                                           
    93101    // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    94102    {
    95       ALLOC1_INTERFACE("dcache_rsp", IN , NORTH, _("Respons from data cache"),_nb_dcache_port);
     103      ALLOC1_INTERFACE_BEGIN("dcache_rsp", IN , NORTH, _("Respons from data cache"),_nb_dcache_port);
    96104
    97105      ALLOC1_VALACK_IN ( in_DCACHE_RSP_VAL         ,behavioural::VAL);
     
    101109      ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_RDATA       ,"rdata"    ,Tdcache_data_t       ,_size_dcache_data);
    102110      ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_ERROR       ,"error"    ,Tdcache_error_t      ,_size_dcache_error);
     111
     112      ALLOC1_INTERFACE_END(_nb_dcache_port);
    103113    }
    104114
    105115    // ~~~~~[ Interface : "interrupt" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    106116    {
    107       ALLOC1_INTERFACE("interrupt", IN , NORTH, _("Interruption line"),_nb_thread);
     117      ALLOC1_INTERFACE_BEGIN("interrupt", IN , NORTH, _("Interruption line"),_nb_thread);
    108118
    109119      ALLOC1_SIGNAL_IN ( in_INTERRUPT_ENABLE      ,"enable",Tcontrol_t           ,1);
     120
     121      ALLOC1_INTERFACE_END(_nb_thread);
    110122    }
    111123
  • trunk/IPs/systemC/processor/Morpheo/TopLevel/src/Morpheo_configuration.cpp

    r111 r112  
    7272       param->_nb_reg_free                                   ,
    7373       param->_nb_rename_unit_bank                           ,
    74        param->_size_read_counter                             ,
     74//        param->_size_read_counter                             ,
    7575
    7676       param->_nb_read_bloc                                  ,
Note: See TracChangeset for help on using the changeset viewer.