Ignore:
Timestamp:
Mar 18, 2009, 11:36:26 PM (15 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/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit
Files:
55 edited

Legend:

Unmodified
Added
Removed
  • 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
Note: See TracChangeset for help on using the changeset viewer.