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

Almost complete design
with Test and test platform

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine
Files:
411 added
98 edited
2 moved

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/SelfTest/Makefile

    r81 r88  
    2424library_clean                   : Load_Store_pointer_unit_library_clean
    2525
     26local_clean                     :
     27
    2628include                         $(DIR_COMPONENT)/Makefile.deps
    2729include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/SelfTest/src/main.cpp

    r81 r88  
    5151    }
    5252
    53   uint32_t    _nb_load_store_queue              = atoi(argv[x++]);
     53  uint32_t    _nb_load_store_queue              = fromString<uint32_t>(argv[x++]);
    5454 
    5555  if (argc != static_cast<int>(2+NB_PARAMS+_nb_front_end+2*_nb_load_store_queue+nb_thread))
     
    8686         _link_load_store_unit_with_thread,
    8787         _nb_inst_insert                  ,
    88          _nb_inst_retire                  );
     88         _nb_inst_retire                  ,
     89         true //is_toplevel
     90         );
    8991     
    9092      msg(_("%s"),param->print(1).c_str());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/SelfTest/src/test.cpp

    r82 r88  
    5050#endif
    5151
     52  Tusage_t _usage = USE_ALL;
     53
     54//   _usage = usage_unset(_usage,USE_SYSTEMC              );
     55//   _usage = usage_unset(_usage,USE_VHDL                 );
     56//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
     57//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
     58//   _usage = usage_unset(_usage,USE_POSITION             );
     59   _usage = usage_unset(_usage,USE_STATISTICS           );
     60//   _usage = usage_unset(_usage,USE_INFORMATION          );
     61
    5262  Load_Store_pointer_unit * _Load_Store_pointer_unit = new Load_Store_pointer_unit
    5363    (name.c_str(),
     
    5666#endif
    5767     _param,
    58      USE_ALL);
     68     _usage);
    5969 
    6070#ifdef SYSTEMC
     
    7989  ALLOC1_SC_SIGNAL( in_RETIRE_FRONT_END_ID         ," in_RETIRE_FRONT_END_ID         ",Tcontext_t  ,_param->_nb_inst_retire);
    8090  ALLOC1_SC_SIGNAL( in_RETIRE_CONTEXT_ID           ," in_RETIRE_CONTEXT_ID           ",Tcontext_t  ,_param->_nb_inst_retire);
    81   ALLOC1_SC_SIGNAL( in_RETIRE_TYPE                 ," in_RETIRE_TYPE                 ",Ttype_t     ,_param->_nb_inst_retire);
    82   ALLOC1_SC_SIGNAL( in_RETIRE_OPERATION            ," in_RETIRE_OPERATION            ",Toperation_t,_param->_nb_inst_retire);
     91//   ALLOC1_SC_SIGNAL( in_RETIRE_TYPE                 ," in_RETIRE_TYPE                 ",Ttype_t     ,_param->_nb_inst_retire);
     92//   ALLOC1_SC_SIGNAL( in_RETIRE_OPERATION            ," in_RETIRE_OPERATION            ",Toperation_t,_param->_nb_inst_retire);
     93  ALLOC1_SC_SIGNAL( in_RETIRE_USE_STORE_QUEUE      ," in_RETIRE_USE_STORE_QUEUE      ",Tcontrol_t  ,_param->_nb_inst_retire);
     94  ALLOC1_SC_SIGNAL( in_RETIRE_USE_LOAD_QUEUE       ," in_RETIRE_USE_LOAD_QUEUE       ",Tcontrol_t  ,_param->_nb_inst_retire);
    8395  ALLOC1_SC_SIGNAL( in_RETIRE_STORE_QUEUE_PTR_WRITE," in_RETIRE_STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t  ,_param->_nb_inst_retire);
    8496  ALLOC1_SC_SIGNAL( in_RETIRE_LOAD_QUEUE_PTR_WRITE ," in_RETIRE_LOAD_QUEUE_PTR_WRITE ",Tlsq_ptr_t  ,_param->_nb_inst_retire);
     
    111123  if (_param->_have_port_context_id)
    112124  INSTANCE1_SC_SIGNAL(_Load_Store_pointer_unit, in_RETIRE_CONTEXT_ID           ,_param->_nb_inst_retire);
    113   INSTANCE1_SC_SIGNAL(_Load_Store_pointer_unit, in_RETIRE_TYPE                 ,_param->_nb_inst_retire);
    114   INSTANCE1_SC_SIGNAL(_Load_Store_pointer_unit, in_RETIRE_OPERATION            ,_param->_nb_inst_retire);
     125//   INSTANCE1_SC_SIGNAL(_Load_Store_pointer_unit, in_RETIRE_TYPE                 ,_param->_nb_inst_retire);
     126//   INSTANCE1_SC_SIGNAL(_Load_Store_pointer_unit, in_RETIRE_OPERATION            ,_param->_nb_inst_retire);
     127  INSTANCE1_SC_SIGNAL(_Load_Store_pointer_unit, in_RETIRE_USE_STORE_QUEUE      ,_param->_nb_inst_retire);
     128  INSTANCE1_SC_SIGNAL(_Load_Store_pointer_unit, in_RETIRE_USE_LOAD_QUEUE       ,_param->_nb_inst_retire);
    115129  INSTANCE1_SC_SIGNAL(_Load_Store_pointer_unit, in_RETIRE_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire);
    116130  if (_param->_have_port_load_queue_ptr)
     
    197211              in_RETIRE_FRONT_END_ID          [i]->write(it->_front_end_id         );
    198212              in_RETIRE_CONTEXT_ID            [i]->write(it->_context_id           );
    199               in_RETIRE_TYPE                  [i]->write(it->_type                 );
    200               in_RETIRE_OPERATION             [i]->write(it->_operation            );
     213//            in_RETIRE_TYPE                  [i]->write(it->_type                 );
     214//            in_RETIRE_OPERATION             [i]->write(it->_operation            );
     215              in_RETIRE_USE_STORE_QUEUE       [i]->write((it->_type == TYPE_MEMORY) and     is_operation_memory_store(it->_operation));
     216              in_RETIRE_USE_LOAD_QUEUE        [i]->write((it->_type == TYPE_MEMORY) and not is_operation_memory_store(it->_operation));
    201217              in_RETIRE_STORE_QUEUE_PTR_WRITE [i]->write(it->_store_queue_ptr_write);
    202218              in_RETIRE_LOAD_QUEUE_PTR_WRITE  [i]->write(it->_load_queue_ptr_write );
     
    214230          if (in_RETIRE_VAL[i]->read())
    215231            {
    216               if (in_RETIRE_TYPE [i]->read() != TYPE_MEMORY)
     232              if (not (in_RETIRE_USE_STORE_QUEUE [i]->read() or
     233                       in_RETIRE_USE_LOAD_QUEUE  [i]->read()))
    217234                TEST(Tcontrol_t, out_RETIRE_ACK[i]->read(),true);
    218235             
     
    366383  delete []  in_RETIRE_FRONT_END_ID         ;
    367384  delete []  in_RETIRE_CONTEXT_ID           ;
    368   delete []  in_RETIRE_TYPE                 ;
    369   delete []  in_RETIRE_OPERATION            ;
     385//   delete []  in_RETIRE_TYPE                 ;
     386//   delete []  in_RETIRE_OPERATION            ;
     387  delete []  in_RETIRE_USE_STORE_QUEUE      ;
     388  delete []  in_RETIRE_USE_LOAD_QUEUE       ;
    370389  delete []  in_RETIRE_STORE_QUEUE_PTR_WRITE;
    371390  delete []  in_RETIRE_LOAD_QUEUE_PTR_WRITE ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/include/Load_Store_pointer_unit.h

    r82 r88  
    7777  public    : SC_IN (Tcontext_t     )      **  in_RETIRE_FRONT_END_ID         ; // [nb_inst_retire]
    7878  public    : SC_IN (Tcontext_t     )      **  in_RETIRE_CONTEXT_ID           ; // [nb_inst_retire]
    79   public    : SC_IN (Ttype_t        )      **  in_RETIRE_TYPE                 ; // [nb_inst_retire]
    80   public    : SC_IN (Toperation_t   )      **  in_RETIRE_OPERATION            ; // [nb_inst_retire]
     79//public    : SC_IN (Ttype_t        )      **  in_RETIRE_TYPE                 ; // [nb_inst_retire]
     80//public    : SC_IN (Toperation_t   )      **  in_RETIRE_OPERATION            ; // [nb_inst_retire]
     81  public    : SC_IN (Tcontrol_t     )      **  in_RETIRE_USE_STORE_QUEUE      ; // [nb_inst_retire]
     82  public    : SC_IN (Tcontrol_t     )      **  in_RETIRE_USE_LOAD_QUEUE       ; // [nb_inst_retire]
    8183  public    : SC_IN (Tlsq_ptr_t     )      **  in_RETIRE_STORE_QUEUE_PTR_WRITE; // [nb_inst_retire]
    8284  public    : SC_IN (Tlsq_ptr_t     )      **  in_RETIRE_LOAD_QUEUE_PTR_WRITE ; // [nb_inst_retire]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/include/Parameters.h

    r82 r88  
    3333  public : uint32_t    _nb_inst_retire                  ;
    3434
    35   public : uint32_t    _size_front_end_id               ;
    36   public : uint32_t    _size_context_id                 ;   
    37   public : uint32_t    _size_store_queue_ptr            ;
    38   public : uint32_t    _size_load_queue_ptr             ;
     35//public : uint32_t    _size_front_end_id               ;
     36//public : uint32_t    _size_context_id                 ;   
     37//public : uint32_t    _size_store_queue_ptr            ;
     38//public : uint32_t    _size_load_queue_ptr             ;
    3939
    40   public : uint32_t    _have_port_front_end_id          ;
    41   public : uint32_t    _have_port_context_id            ;
    42   public : uint32_t    _have_port_load_queue_ptr        ;
     40//public : uint32_t    _have_port_front_end_id          ;
     41//public : uint32_t    _have_port_context_id            ;
     42//public : uint32_t    _have_port_load_queue_ptr        ;
    4343
    4444    //-----[ methods ]-----------------------------------------------------------
    4545  public : Parameters  (uint32_t    nb_front_end                    ,
    4646                        uint32_t  * nb_context                      ,
     47//                      uint32_t    size_front_end_id               ,
     48//                      uint32_t    size_context_id                 ,
    4749                        uint32_t    nb_load_store_queue             ,
    4850                        uint32_t  * size_store_queue                ,
     
    5052                        uint32_t ** link_load_store_unit_with_thread,
    5153                        uint32_t    nb_inst_insert                  ,
    52                         uint32_t    nb_inst_retire                  );
     54                        uint32_t    nb_inst_retire                  ,
     55                        bool        is_toplevel=false
     56                        );
    5357
    5458//   public : Parameters  (Parameters & param) ;
    5559  public : ~Parameters () ;
     60
     61  public :        void            copy       (void);
    5662
    5763  public :        Parameters_test msg_error  (void);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit.cpp

    r81 r88  
    3838    log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"Begin");
    3939
     40#if DEBUG_Load_Store_pointer_unit == true
     41    log_printf(INFO,Load_Store_pointer_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
     42
     43    std::cout << *param << std::endl;
     44#endif   
     45
    4046    log_printf(INFO,Load_Store_pointer_unit,FUNCTION,"Allocation");
    4147
     
    4753
    4854#ifdef STATISTICS
    49     if (_usage & USE_STATISTICS)
     55    if (usage_is_set(_usage,USE_STATISTICS))
    5056      {
    5157        log_printf(INFO,Load_Store_pointer_unit,FUNCTION,"Allocation of statistics");
     
    5662
    5763#ifdef VHDL
    58     if (_usage & USE_VHDL)
     64    if (usage_is_set(_usage,USE_VHDL))
    5965      {
    6066        // generate the vhdl
     
    6672
    6773#ifdef SYSTEMC
    68     if (_usage & USE_SYSTEMC)
     74    if (usage_is_set(_usage,USE_SYSTEMC))
    6975      {
    7076        log_printf(INFO,Load_Store_pointer_unit,FUNCTION,"Method - transition");
     
    141147            sensitive << (*(in_RETIRE_LOAD_QUEUE_PTR_WRITE  [i]));
    142148            sensitive << (*(in_RETIRE_VAL                   [i]))
    143                       << (*(in_RETIRE_TYPE                  [i]))
    144                       << (*(in_RETIRE_OPERATION             [i]))
     149//                    << (*(in_RETIRE_TYPE                  [i]))
     150//                    << (*(in_RETIRE_OPERATION             [i]))
     151                      << (*(in_RETIRE_USE_STORE_QUEUE       [i]))
     152                      << (*(in_RETIRE_USE_LOAD_QUEUE        [i]))
    145153                      << (*(in_RETIRE_STORE_QUEUE_PTR_WRITE [i]));;
    146154          }
     
    155163            if (_param->_have_port_context_id)
    156164            (*(out_RETIRE_ACK                   [i])) (*( in_RETIRE_CONTEXT_ID            [i]));
    157             (*(out_RETIRE_ACK                   [i])) (*( in_RETIRE_TYPE                  [i]));
    158             (*(out_RETIRE_ACK                   [i])) (*( in_RETIRE_OPERATION             [i]));
     165//          (*(out_RETIRE_ACK                   [i])) (*( in_RETIRE_TYPE                  [i]));
     166//          (*(out_RETIRE_ACK                   [i])) (*( in_RETIRE_OPERATION             [i]));
     167            (*(out_RETIRE_ACK                   [i])) (*( in_RETIRE_USE_STORE_QUEUE       [i]));
     168            (*(out_RETIRE_ACK                   [i])) (*( in_RETIRE_USE_LOAD_QUEUE        [i]));
    159169            if (_param->_have_port_load_queue_ptr)
    160170            (*(out_RETIRE_ACK                   [i])) (*( in_RETIRE_LOAD_QUEUE_PTR_WRITE  [i]));
     
    175185
    176186#ifdef STATISTICS
    177     if (_usage & USE_STATISTICS)
     187    if (usage_is_set(_usage,USE_STATISTICS))
    178188      {
    179189        log_printf(INFO,Load_Store_pointer_unit,FUNCTION,"Generate Statistics file");
  • 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

    r81 r88  
    7878      ALLOC1_SIGNAL_IN ( in_RETIRE_FRONT_END_ID         ,"front_end_id"         ,Tcontext_t  ,_param->_size_front_end_id   );
    7979      ALLOC1_SIGNAL_IN ( in_RETIRE_CONTEXT_ID           ,"context_id"           ,Tcontext_t  ,_param->_size_context_id     );
    80       ALLOC1_SIGNAL_IN ( in_RETIRE_TYPE                 ,"type"                 ,Ttype_t     ,_param->_size_type           );
    81       ALLOC1_SIGNAL_IN ( in_RETIRE_OPERATION            ,"operation"            ,Toperation_t,_param->_size_operation      );
     80//       ALLOC1_SIGNAL_IN ( in_RETIRE_TYPE                 ,"type"                 ,Ttype_t     ,_param->_size_type           );
     81//       ALLOC1_SIGNAL_IN ( in_RETIRE_OPERATION            ,"operation"            ,Toperation_t,_param->_size_operation      );
     82      ALLOC1_SIGNAL_IN ( in_RETIRE_USE_STORE_QUEUE      ,"use_store_queue"      ,Tcontrol_t  ,_param->_size_operation      );
     83      ALLOC1_SIGNAL_IN ( in_RETIRE_USE_LOAD_QUEUE       ,"use_load_queue"       ,Tcontrol_t  ,_param->_size_operation      );
    8284      ALLOC1_SIGNAL_IN ( in_RETIRE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t  ,_param->_size_store_queue_ptr);
    8385      ALLOC1_SIGNAL_IN ( in_RETIRE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t  ,_param->_size_load_queue_ptr );
    8486    }
    8587
    86     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     88    if (usage_is_set(_usage,USE_SYSTEMC))
     89      {
    8790    reg_STORE_QUEUE_PTR_WRITE     = new Tlsq_ptr_t      [_param->_nb_load_store_queue];
    8891    reg_STORE_QUEUE_USE           = new bool *          [_param->_nb_load_store_queue];
     
    106109    internal_RETIRE_LSQ           = new uint32_t        [_param->_nb_inst_retire];
    107110    internal_RETIRE_PTR           = new Tlsq_ptr_t      [_param->_nb_inst_retire];
     111      }
     112    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    108113
    109114#ifdef POSITION
    110     _component->generate_file();
     115    if (usage_is_set(_usage,USE_POSITION))
     116      _component->generate_file();
    111117#endif
    112118
  • 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

    r81 r88  
    2323    log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"Begin");
    2424
    25     if (_usage & USE_SYSTEMC)
     25    if (usage_is_set(_usage,USE_SYSTEMC))
    2626      {
    2727        delete    in_CLOCK ;
     
    4848        if (_param->_have_port_context_id)
    4949        delete []  in_RETIRE_CONTEXT_ID           ;
    50         delete []  in_RETIRE_TYPE                 ;
    51         delete []  in_RETIRE_OPERATION            ;
     50//      delete []  in_RETIRE_TYPE                 ;
     51//      delete []  in_RETIRE_OPERATION            ;
     52        delete []  in_RETIRE_USE_STORE_QUEUE      ;
     53        delete []  in_RETIRE_USE_LOAD_QUEUE       ;
    5254        delete []  in_RETIRE_STORE_QUEUE_PTR_WRITE;
    5355        if (_param->_have_port_load_queue_ptr)
    5456        delete []  in_RETIRE_LOAD_QUEUE_PTR_WRITE ;
    5557
     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          ;
    5671      }
    57 
    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          ;
    7172
    7273    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_end_cycle.cpp

    r81 r88  
    2525
    2626#ifdef STATISTICS
    27     _stat->end_cycle();
     27    if (usage_is_set(_usage,USE_STATISTICS))
     28      _stat->end_cycle();
    2829#endif   
    2930
     
    3132    // Evaluation before read the ouput signal
    3233//  sc_start(0);
    33     _interfaces->testbench();
     34    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
     35      _interfaces->testbench();
    3436#endif
    3537
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_genMealy_retire.cpp

    r81 r88  
    3131      {
    3232        Tcontrol_t ack = false;
    33 
    34         if ( (PORT_READ(in_RETIRE_VAL  [i]) == true       ) and
    35              (PORT_READ(in_RETIRE_TYPE [i]) == TYPE_MEMORY))
     33        Tcontrol_t use_sq  = PORT_READ(in_RETIRE_USE_STORE_QUEUE [i]);
     34        Tcontrol_t use_lq  = PORT_READ(in_RETIRE_USE_LOAD_QUEUE  [i]);
     35        if ( (PORT_READ(in_RETIRE_VAL  [i]) == true) and (use_sq or use_lq))
     36//           (PORT_READ(in_RETIRE_TYPE [i]) == TYPE_MEMORY))
    3637          {
    3738            Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RETIRE_FRONT_END_ID [i]):0;
     
    4950               
    5051                // operation became of decod_stage. Also operation is != store_head_ok and store_head_ko
    51                 if (is_operation_memory_store(PORT_READ(in_RETIRE_OPERATION [i])))
     52//              if (is_operation_memory_store(PORT_READ(in_RETIRE_OPERATION [i])))
     53                if (use_sq)
    5254                  {
    5355                    internal_RETIRE_OPERATION_USE [i] = OPERATION_USE_STORE_QUEUE;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Parameters.cpp

    r81 r88  
    2222  Parameters::Parameters (uint32_t    nb_front_end                    ,
    2323                          uint32_t  * nb_context                      ,
     24//                           uint32_t    size_front_end_id               ,
     25//                           uint32_t    size_context_id                 ,
    2426                          uint32_t    nb_load_store_queue             ,
    2527                          uint32_t  * size_store_queue                ,
     
    2729                          uint32_t ** link_load_store_unit_with_thread,
    2830                          uint32_t    nb_inst_insert                  ,
    29                           uint32_t    nb_inst_retire                  )
     31                          uint32_t    nb_inst_retire                  ,
     32                          bool        is_toplevel
     33                          )
    3034  {
    3135    log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"Begin");
     
    4044    _nb_inst_retire                   = nb_inst_retire                  ;
    4145   
    42     uint32_t max_nb_context       = max<uint32_t>(nb_context,       nb_front_end);
    43     uint32_t max_size_store_queue = max<uint32_t>(size_store_queue, nb_load_store_queue);
    44     uint32_t max_size_load_queue  = max<uint32_t>(size_load_queue,  nb_load_store_queue);
     46    test();
    4547
    46     _size_front_end_id                = log2(nb_front_end        );
    47     _size_context_id                  = log2(max_nb_context      );
    48     _size_store_queue_ptr             = log2(max_size_store_queue);
    49     _size_load_queue_ptr              = log2(max_size_load_queue );
    50     _have_port_front_end_id           = (_size_front_end_id   > 0);
    51     _have_port_context_id             = (_size_context_id     > 0);
    52     _have_port_load_queue_ptr         = (_size_load_queue_ptr > 0);
     48    if (is_toplevel)
     49      {
     50        _size_front_end_id                = log2(_nb_front_end);
     51        _size_context_id                  = log2(max<uint32_t>(_nb_context,_nb_front_end));
     52        _size_store_queue_ptr             = log2(max<uint32_t>(size_store_queue, nb_load_store_queue));
     53        _size_load_queue_ptr              = log2(max<uint32_t>(size_load_queue,  nb_load_store_queue));
     54
     55        _have_port_front_end_id           = (_size_front_end_id   > 0);
     56        _have_port_context_id             = (_size_context_id     > 0);
     57        _have_port_load_queue_ptr         = (_size_load_queue_ptr > 0);
    5358   
    54     test();
     59        copy();
     60      }
     61
    5562    log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"End");
    5663  };
     
    6774#undef  FUNCTION
    6875#define FUNCTION "Load_Store_pointer_unit::~Parameters"
    69   Parameters::~Parameters ()
     76  Parameters::~Parameters (void)
     77  {
     78    log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"Begin");
     79    log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"End");
     80  };
     81
     82#undef  FUNCTION
     83#define FUNCTION "Load_Store_pointer_unit::copy"
     84  void Parameters::copy (void)
    7085  {
    7186    log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"Begin");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Parameters_msg_error.cpp

    r82 r88  
    4949        test.error(toString(_("The load store unit [%d] is not linked with a thread.\n"),i));
    5050   
     51    log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"End");
     52
    5153    return test;
    52 
    53     log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"End");
    5454  };
    5555
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/SelfTest/Makefile

    r81 r88  
    2424library_clean                   : Dependency_checking_unit_library_clean
    2525
     26local_clean                     :
     27
    2628include                         $(DIR_COMPONENT)/Makefile.deps
    2729include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/SelfTest/src/main.cpp

    r81 r88  
    4848         _nb_general_register,
    4949         _nb_special_register,
    50          _nb_inst_insert     );
     50         _nb_inst_insert     ,
     51         true //is_toplevel
     52         );
    5153     
    5254      msg(_("%s"),param->print(1).c_str());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/SelfTest/src/test.cpp

    r82 r88  
    2424#endif
    2525
     26  Tusage_t _usage = USE_ALL;
     27
     28//   _usage = usage_unset(_usage,USE_SYSTEMC              );
     29//   _usage = usage_unset(_usage,USE_VHDL                 );
     30//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
     31//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
     32//   _usage = usage_unset(_usage,USE_POSITION             );
     33//   _usage = usage_unset(_usage,USE_STATISTICS           );
     34//   _usage = usage_unset(_usage,USE_INFORMATION          );
     35
    2636  Dependency_checking_unit * _Dependency_checking_unit = new Dependency_checking_unit
    2737    (name.c_str(),
     
    3040#endif
    3141     _param,
    32      USE_ALL);
     42     _usage);
    3343 
    3444#ifdef SYSTEMC
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/include/Parameters.h

    r82 r88  
    3131  public : uint32_t   _nb_inst_insert        ;
    3232
    33   public : uint32_t   _size_front_end_id     ;
    34   public : uint32_t   _size_context_id       ;
    35   public : uint32_t   _size_general_register ;
    36   public : uint32_t   _size_special_register ;
    37                      
    38   public : uint32_t   _have_port_context_id  ;
    39   public : uint32_t   _have_port_front_end_id;
     33//public : uint32_t   _size_front_end_id     ;
     34//public : uint32_t   _size_context_id       ;
     35//public : uint32_t   _size_general_register ;
     36//public : uint32_t   _size_special_register ;
     37
     38//public : uint32_t   _have_port_context_id  ;
     39//public : uint32_t   _have_port_front_end_id;
    4040
    4141    //-----[ methods ]-----------------------------------------------------------
     
    4444                        uint32_t nb_general_register   ,
    4545                        uint32_t nb_special_register   ,
    46                         uint32_t nb_inst_insert        );
     46                        uint32_t nb_inst_insert        ,
     47                        bool     is_toplevel=false
     48                        );
    4749//   public : Parameters  (Parameters & param) ;
    4850  public : ~Parameters () ;
    4951
    5052  public :        Parameters_test msg_error  (void);
     53
     54  public :        void            copy       (void);
    5155
    5256  public :        std::string     print      (uint32_t depth);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit.cpp

    r81 r88  
    3939    log_printf(FUNC,Dependency_checking_unit,FUNCTION,"Begin");
    4040
     41#if DEBUG_Dependency_checking_unit == true
     42    log_printf(INFO,Dependency_checking_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
     43
     44    std::cout << *param << std::endl;
     45#endif   
     46
    4147    log_printf(INFO,Dependency_checking_unit,FUNCTION,"Allocation");
    4248
     
    4854
    4955#ifdef STATISTICS
    50     if (_usage & USE_STATISTICS)
     56    if (usage_is_set(_usage,USE_STATISTICS))
    5157      {
    5258        log_printf(INFO,Dependency_checking_unit,FUNCTION,"Allocation of statistics");
     
    5763
    5864#ifdef VHDL
    59     if (_usage & USE_VHDL)
     65    if (usage_is_set(_usage,USE_VHDL))
    6066      {
    6167        // generate the vhdl
     
    6773
    6874#ifdef SYSTEMC
    69     if (_usage & USE_SYSTEMC)
     75    if (usage_is_set(_usage,USE_SYSTEMC))
    7076      {
    7177# if defined(STATISTICS) or defined(VHDL_TESTBENCH)
     
    8692        SC_METHOD (genMealy);
    8793        dont_initialize ();
    88         sensitive << (*(in_CLOCK)).neg();
     94//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
    8995        for (uint32_t i=0;i<_param->_nb_inst_insert; i++)
    9096          {
     
    221227
    222228#ifdef STATISTICS
    223     if (_usage & USE_STATISTICS)
     229    if (usage_is_set(_usage,USE_STATISTICS))
    224230      {
    225231        log_printf(INFO,Dependency_checking_unit,FUNCTION,"Generate Statistics file");
  • 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

    r81 r88  
    113113
    114114#ifdef POSITION
    115     _component->generate_file();
     115     if (usage_is_set(_usage,USE_POSITION))
     116       _component->generate_file();
    116117#endif
    117118
  • 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

    r81 r88  
    2424    log_printf(FUNC,Dependency_checking_unit,FUNCTION,"Begin");
    2525
    26     if (_usage & USE_SYSTEMC)
     26    if (usage_is_set(_usage,USE_SYSTEMC))
    2727      {
    2828        delete     in_CLOCK ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_end_cycle.cpp

    r81 r88  
    2626
    2727#ifdef STATISTICS
    28     _stat->end_cycle();
     28    if (usage_is_set(_usage,USE_STATISTICS))
     29      _stat->end_cycle();
    2930#endif   
    3031
     
    3233    // Evaluation before read the ouput signal
    3334//  sc_start(0);
    34     _interfaces->testbench();
     35    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
     36      _interfaces->testbench();
    3537#endif
    3638
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_genMealy.cpp

    r81 r88  
    2323  void Dependency_checking_unit::genMealy (void)
    2424  {
    25     log_printf(FUNC,Dependency_checking_unit,FUNCTION,"Begin");
     25    log_begin(Dependency_checking_unit,FUNCTION);
     26    log_function(Dependency_checking_unit,FUNCTION,_name.c_str());
    2627
    2728//     Tcontrol_t         val                [_param->_nb_inst_insert];
     
    7778        num_reg_re_phy_new [i] = PORT_READ(in_RENAME_IN_NUM_REG_RE_PHY_NEW [i]);
    7879       
     80        log_printf(TRACE,Dependency_checking_unit,FUNCTION,"  * (before) [%d] %.2d %.2d, %.1d %.2d %.5d, %.1d %.2d %.5d, %.1d %.2d %.5d, %.1d %.2d %.5d -> %.5d, %.1d %.2d %.5d -> %.5d",
     81                   i,
     82                   front_end_id       [i],
     83                   context_id         [i],
     84                   read_ra            [i],
     85                   num_reg_ra_log     [i],
     86                   num_reg_ra_phy     [i],
     87                   read_rb            [i],
     88                   num_reg_rb_log     [i],
     89                   num_reg_rb_phy     [i],
     90                   read_rc            [i],
     91                   num_reg_rc_log     [i],
     92                   num_reg_rc_phy     [i],
     93                   write_rd           [i],
     94                   num_reg_rd_log     [i],
     95                   num_reg_rd_phy_old [i],
     96                   num_reg_rd_phy_new [i],
     97                   write_re           [i],
     98                   num_reg_re_log     [i],
     99                   num_reg_re_phy_old [i],
     100                   num_reg_re_phy_new [i]);
     101
    79102        // ================================================================
    80103        // =====[ Write after Write ]======================================
     
    88111                (context_id     [j] == context_id     [i]) )
    89112              {
     113                log_printf(TRACE,Dependency_checking_unit,FUNCTION,"    * RD :  WAW dependency with inst[%d].RD",j);
    90114                num_reg_rd_phy_old [i] = num_reg_rd_phy_new [j];
    91115                break; // find the most recently dependency
     
    100124                (context_id     [j] == context_id     [i]) )
    101125              {
     126                log_printf(TRACE,Dependency_checking_unit,FUNCTION,"    * RE : WAW dependency with inst[%d].RE",j);
    102127                num_reg_re_phy_old [i] = num_reg_re_phy_new [j];
    103128                break; // find the most recently dependency
     
    114139                (context_id     [j] == context_id     [i]) )
    115140              {
     141                log_printf(TRACE,Dependency_checking_unit,FUNCTION,"    * RA :  RAW dependency with inst[%d].RD",j);
    116142                num_reg_ra_phy [i] = num_reg_rd_phy_new [j];
    117143                break; // find the most recently dependency
     
    126152                (context_id     [j] == context_id     [i]) )
    127153              {
     154                log_printf(TRACE,Dependency_checking_unit,FUNCTION,"    * RB :  RAW dependency with inst[%d].RD",j);
    128155                num_reg_rb_phy [i] = num_reg_rd_phy_new [j];
    129156                break; // find the most recently dependency
     
    138165                (context_id     [j] == context_id     [i]) )
    139166              {
     167                log_printf(TRACE,Dependency_checking_unit,FUNCTION,"    * RC :  RAW dependency with inst[%d].RE",j);
    140168                num_reg_rc_phy [i] = num_reg_re_phy_new [j];
    141169                break; // find the most recently dependency
    142170              }
     171
     172        log_printf(TRACE,Dependency_checking_unit,FUNCTION,"  * (after ) [%d] %.2d %.2d, %.1d %.2d %.5d, %.1d %.2d %.5d, %.1d %.2d %.5d, %.1d %.2d %.5d -> %.5d, %.1d %.2d %.5d -> %.5d",
     173                   i,
     174                   front_end_id       [i],
     175                   context_id         [i],
     176                   read_ra            [i],
     177                   num_reg_ra_log     [i],
     178                   num_reg_ra_phy     [i],
     179                   read_rb            [i],
     180                   num_reg_rb_log     [i],
     181                   num_reg_rb_phy     [i],
     182                   read_rc            [i],
     183                   num_reg_rc_log     [i],
     184                   num_reg_rc_phy     [i],
     185                   write_rd           [i],
     186                   num_reg_rd_log     [i],
     187                   num_reg_rd_phy_old [i],
     188                   num_reg_rd_phy_new [i],
     189                   write_re           [i],
     190                   num_reg_re_log     [i],
     191                   num_reg_re_phy_old [i],
     192                   num_reg_re_phy_new [i]);
    143193
    144194        // =====[ Output ]=================================================
     
    168218      }
    169219
    170     log_printf(FUNC,Dependency_checking_unit,FUNCTION,"End");
     220    log_end(Dependency_checking_unit,FUNCTION);
    171221  };
    172222
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Parameters.cpp

    r81 r88  
    2424                          uint32_t nb_general_register   ,
    2525                          uint32_t nb_special_register   ,
    26                           uint32_t nb_inst_insert        )
     26                          uint32_t nb_inst_insert        ,
     27                          bool     is_toplevel           )
    2728  {
    2829    log_printf(FUNC,Dependency_checking_unit,FUNCTION,"Begin");
     
    3435    _nb_inst_insert      = nb_inst_insert     ;
    3536
    36     _size_front_end_id      = log2(nb_front_end       );
    37     _size_context_id        = log2(max_nb_context     );
    38     _size_general_register  = log2(nb_general_register);
    39     _size_special_register  = log2(nb_special_register);
    40    
    41     _have_port_front_end_id = _size_front_end_id>0;
    42     _have_port_context_id   = _size_context_id  >0;
     37    test();
    4338
    44     test();
     39    if (is_toplevel)
     40      {
     41        _size_front_end_id      = log2(nb_front_end       );
     42        _size_context_id        = log2(max_nb_context     );
     43        _size_general_register  = log2(nb_general_register);
     44        _size_special_register  = log2(nb_special_register);
     45       
     46        _have_port_front_end_id = _size_front_end_id>0;
     47        _have_port_context_id   = _size_context_id  >0;
     48
     49        copy();
     50      }
     51
    4552    log_printf(FUNC,Dependency_checking_unit,FUNCTION,"End");
    4653  };
     
    5764#undef  FUNCTION
    5865#define FUNCTION "Dependency_checking_unit::~Parameters"
    59   Parameters::~Parameters ()
     66  Parameters::~Parameters (void)
     67  {
     68    log_printf(FUNC,Dependency_checking_unit,FUNCTION,"Begin");
     69    log_printf(FUNC,Dependency_checking_unit,FUNCTION,"End");
     70  };
     71
     72#undef  FUNCTION
     73#define FUNCTION "Dependency_checking_unit::copy"
     74  void Parameters::copy (void)
    6075  {
    6176    log_printf(FUNC,Dependency_checking_unit,FUNCTION,"Begin");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/SelfTest/Makefile

    r81 r88  
    2424library_clean                   : Free_List_unit_library_clean
    2525
     26local_clean                     :
     27
    2628include                         $(DIR_COMPONENT)/Makefile.deps
    2729include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/SelfTest/src/main.cpp

    r81 r88  
    5757         _nb_pop             ,
    5858         _nb_push            ,
    59          _priority           );
     59         _priority           ,
     60         true //is_toplevel
     61         );
    6062     
    6163      msg(_("%s"),param->print(1).c_str());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/SelfTest/src/test.cpp

    r82 r88  
    2323#endif
    2424
     25  Tusage_t _usage = USE_ALL;
     26
     27//   _usage = usage_unset(_usage,USE_SYSTEMC              );
     28//   _usage = usage_unset(_usage,USE_VHDL                 );
     29//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
     30//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
     31//   _usage = usage_unset(_usage,USE_POSITION             );
     32//   _usage = usage_unset(_usage,USE_STATISTICS           );
     33//   _usage = usage_unset(_usage,USE_INFORMATION          );
     34
    2535  Free_List_unit * _Free_List_unit = new Free_List_unit
    2636    (name.c_str(),
     
    2939#endif
    3040     _param,
    31      USE_ALL);
     41     _usage);
    3242 
    3343#ifdef SYSTEMC
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Parameters.h

    r82 r88  
    3434  public : Tpriority_t _priority             ;
    3535
    36   public : uint32_t    _size_general_register;
    37   public : uint32_t    _size_special_register;
     36//public : uint32_t    _size_general_register;
     37//public : uint32_t    _size_special_register;
    3838
    3939  public : uint32_t    _nb_bank_by_pop       ;
     
    5252                        uint32_t    nb_pop             ,
    5353                        uint32_t    nb_push            ,
    54                         Tpriority_t priority           );
     54                        Tpriority_t priority           ,
     55                        bool        is_toplevel=false);
    5556//   public : Parameters  (Parameters & param) ;
    5657  public : ~Parameters () ;
    5758
    5859  public :        Parameters_test msg_error  (void);
     60
     61  public :        void            copy       (void);
    5962
    6063  public :        std::string     print      (uint32_t depth);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit.cpp

    r81 r88  
    3939    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
    4040
     41#if DEBUG_Free_List_unit == true
     42    log_printf(INFO,Free_List_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
     43
     44    std::cout << *param << std::endl;
     45#endif   
     46
    4147    log_printf(INFO,Free_List_unit,FUNCTION,"Allocation");
    4248
     
    4854
    4955#ifdef STATISTICS
    50     if (_usage & USE_STATISTICS)
     56    if (usage_is_set(_usage,USE_STATISTICS))
    5157      {
    5258        log_printf(INFO,Free_List_unit,FUNCTION,"Allocation of statistics");
     
    5763
    5864#ifdef VHDL
    59     if (_usage & USE_VHDL)
     65    if (usage_is_set(_usage,USE_VHDL))
    6066      {
    6167        // generate the vhdl
     
    6773
    6874#ifdef SYSTEMC
    69     if (_usage & USE_SYSTEMC)
     75    if (usage_is_set(_usage,USE_SYSTEMC))
    7076      {
    7177        log_printf(INFO,Free_List_unit,FUNCTION,"Method - transition");
     
    8389        SC_METHOD (genMealy_pop);
    8490        dont_initialize ();
    85         sensitive << (*(in_CLOCK)).neg();
     91        sensitive << (*(in_CLOCK)).neg(); // need internal register
    8692        for (uint32_t i=0; i<_param->_nb_pop; i++)
    8793          sensitive << (*(in_POP_GPR_VAL[i]))
     
    104110        SC_METHOD (genMealy_push_gpr);
    105111        dont_initialize ();
    106         sensitive << (*(in_CLOCK)).neg();
     112        sensitive << (*(in_CLOCK)).neg(); // need internal register
    107113        for (uint32_t i=0; i<_param->_nb_push; i++)
    108114          sensitive << (*(in_PUSH_GPR_VAL    [i]))
     
    123129        SC_METHOD (genMealy_push_spr);
    124130        dont_initialize ();
    125         sensitive << (*(in_CLOCK)).neg();
     131        sensitive << (*(in_CLOCK)).neg(); // need internal register
    126132        for (uint32_t i=0; i<_param->_nb_push; i++)
    127133          sensitive << (*(in_PUSH_SPR_VAL    [i]))
     
    150156
    151157#ifdef STATISTICS
    152     if (_usage & USE_STATISTICS)
     158    if (usage_is_set(_usage,USE_STATISTICS))
    153159      {
    154160        log_printf(INFO,Free_List_unit,FUNCTION,"Generate Statistics file");
  • 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

    r81 r88  
    8686     }
    8787
    88     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     88     if (usage_is_set(_usage,USE_SYSTEMC))
     89       {
    8990     _gpr_list = new std::list<uint32_t> [_param->_nb_bank];
    9091     _spr_list = new std::list<uint32_t> [_param->_nb_bank];
     
    9899     internal_PUSH_GPR_BANK = new uint32_t   [_param->_nb_push];
    99100     internal_PUSH_SPR_BANK = new uint32_t   [_param->_nb_push];
     101       }
     102    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    100103
    101104#ifdef POSITION
    102     _component->generate_file();
     105     if (usage_is_set(_usage,USE_POSITION))
     106       _component->generate_file();
    103107#endif
    104108
  • 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

    r81 r88  
    2424    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
    2525
    26     if (_usage & USE_SYSTEMC)
     26    if (usage_is_set(_usage,USE_SYSTEMC))
    2727      {
    2828        delete    in_CLOCK ;
     
    4343        delete [] out_PUSH_SPR_ACK    ;
    4444        delete []  in_PUSH_SPR_NUM_REG;
     45
     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;
    4557      }
     58
    4659    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    47      delete [] _gpr_list;
    48      delete [] _spr_list;
    49 
    50      delete [] internal_POP_ACK     ;
    51      delete [] internal_POP_GPR_BANK;
    52      delete [] internal_POP_SPR_BANK;
    53 
    54      delete [] internal_PUSH_GPR_ACK ;
    55      delete [] internal_PUSH_SPR_ACK ;
    56      delete [] internal_PUSH_GPR_BANK;
    57      delete [] internal_PUSH_SPR_BANK;
    5860
    5961     delete _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_end_cycle.cpp

    r81 r88  
    2626
    2727#ifdef STATISTICS
    28     _stat->end_cycle();
     28    if (usage_is_set(_usage,USE_STATISTICS))
     29      _stat->end_cycle();
    2930#endif   
    3031
     
    3233    // Evaluation before read the ouput signal
    3334//  sc_start(0);
    34     _interfaces->testbench();
     35    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
     36      _interfaces->testbench();
    3537#endif
    3638
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_pop.cpp

    r81 r88  
    2323  void Free_List_unit::genMealy_pop (void)
    2424  {
    25     log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
     25    log_begin(Free_List_unit,FUNCTION);
     26    log_function(Free_List_unit,FUNCTION,_name.c_str());
    2627
    2728    for (uint32_t i=0; i<_param->_nb_pop; i++)
     
    7778   
    7879
    79     log_printf(FUNC,Free_List_unit,FUNCTION,"End");
     80    log_end(Free_List_unit,FUNCTION);
    8081  };
    8182
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_push_gpr.cpp

    r81 r88  
    2323  void Free_List_unit::genMealy_push_gpr (void)
    2424  {
    25     log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
     25    log_begin(Free_List_unit,FUNCTION);
     26    log_function(Free_List_unit,FUNCTION,_name.c_str());
    2627
    2728    bool bank_use [_param->_nb_bank];
     
    5152      }
    5253   
    53     log_printf(FUNC,Free_List_unit,FUNCTION,"End");
     54    log_end(Free_List_unit,FUNCTION);
    5455  };
    5556
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_push_spr.cpp

    r81 r88  
    2323  void Free_List_unit::genMealy_push_spr (void)
    2424  {
    25     log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
     25    log_begin(Free_List_unit,FUNCTION);
     26    log_function(Free_List_unit,FUNCTION,_name.c_str());
    2627
    2728    bool bank_use [_param->_nb_bank];
     
    5152      }
    5253   
    53     log_printf(FUNC,Free_List_unit,FUNCTION,"End");
     54    log_end(Free_List_unit,FUNCTION);
    5455  };
    5556
  • 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

    r81 r88  
    2323  void Free_List_unit::transition (void)
    2424  {
    25     log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
     25    log_begin(Free_List_unit,FUNCTION);
     26    log_function(Free_List_unit,FUNCTION,_name.c_str());
    2627
    2728    if (PORT_READ(in_NRESET) == 0)
     
    3940        // =====[ POP ]======================================
    4041        // ==================================================
    41 //      log_printf(TRACE,Free_List_unit,FUNCTION,"Test transaction POP");
    4242        for (uint32_t i=0; i<_param->_nb_pop; i++)
    4343          if (PORT_READ(in_POP_VAL[i]) and internal_POP_ACK [i])
    4444            {
     45              log_printf(TRACE,Free_List_unit,FUNCTION,"  * POP [%d]",i);
     46
    4547              if (PORT_READ(in_POP_GPR_VAL [i]))
    4648                _gpr_list [internal_POP_GPR_BANK[i]].pop_front();
     
    5355        // =====[ PUSH_GPR ]=================================
    5456        // ==================================================
    55 //      log_printf(TRACE,Free_List_unit,FUNCTION,"Test transaction PUSH_GPR");
    5657        for (uint32_t i=0; i<_param->_nb_push; i++)
    5758          if (PORT_READ(in_PUSH_GPR_VAL[i]) and internal_PUSH_GPR_ACK [i])
    58             _gpr_list [internal_PUSH_GPR_BANK[i]].push_back(//_param->_mask_gpr &
    59                                                             PORT_READ(in_PUSH_GPR_NUM_REG [i]));
     59            {
     60              log_printf(TRACE,Free_List_unit,FUNCTION,"  * PUSH_GPR[%d]",i);
    6061
     62              _gpr_list [internal_PUSH_GPR_BANK[i]].push_back(//_param->_mask_gpr &
     63                                                              PORT_READ(in_PUSH_GPR_NUM_REG [i]));
     64            }
    6165        // ==================================================
    6266        // =====[ PUSH_SPR ]=================================
    6367        // ==================================================
    64 //      log_printf(TRACE,Free_List_unit,FUNCTION,"Test transaction PUSH_SPR");
    6568        for (uint32_t i=0; i<_param->_nb_push; i++)
    6669          if (PORT_READ(in_PUSH_SPR_VAL[i]) and internal_PUSH_SPR_ACK [i])
    67             _spr_list [internal_PUSH_SPR_BANK[i]].push_back(//_param->_mask_spr &
    68                                                             PORT_READ(in_PUSH_SPR_NUM_REG [i]));
     70            {
     71              log_printf(TRACE,Free_List_unit,FUNCTION,"  * PUSH_SPR[%d]",i);
     72
     73              _spr_list [internal_PUSH_SPR_BANK[i]].push_back(//_param->_mask_spr &
     74                                                              PORT_READ(in_PUSH_SPR_NUM_REG [i]));
     75            }
    6976
    7077        if (_param->_priority == PRIORITY_ROUND_ROBIN)
    7178          internal_BANK_PRIORITY = (internal_BANK_PRIORITY+1)%_param->_nb_bank_by_pop;
     79
     80#if (DEBUG >= DEBUG_TRACE) and (DEBUG_Free_List_unit == true)
     81        log_printf(TRACE,Free_List_unit,FUNCTION,"  * Dump Free List");
     82
     83        for (uint32_t i=0; i<_param->_nb_bank; ++i)
     84          {
     85            uint32_t j=0;
     86            for (std::list<Tgeneral_address_t>::iterator it=_gpr_list->begin();
     87                 it!=_gpr_list->end();
     88                 ++it)
     89              {
     90                log_printf(TRACE,Free_List_unit,FUNCTION,"    * GPR_LIST[%.5d][%.5d] : %.5d",i,j,*it);
     91                ++j;
     92              }
     93          }
     94        for (uint32_t i=0; i<_param->_nb_bank; ++i)
     95          {
     96            uint32_t j=0;
     97            for (std::list<Tspecial_address_t>::iterator it=_spr_list->begin();
     98                 it!=_spr_list->end();
     99                 ++it)
     100              {
     101                log_printf(TRACE,Free_List_unit,FUNCTION,"    * SPR_LIST[%.5d][%.5d] : %.5d",i,j,*it);
     102                ++j;
     103              }
     104          }
     105
     106#endif
    72107      }
    73108
     
    76111#endif
    77112
    78     log_printf(FUNC,Free_List_unit,FUNCTION,"End");
     113    log_end(Free_List_unit,FUNCTION);
    79114  };
    80115
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Parameters.cpp

    r81 r88  
    2727                          uint32_t    nb_pop             ,
    2828                          uint32_t    nb_push            ,
    29                           Tpriority_t priority           )
     29                          Tpriority_t priority           ,
     30                          bool        is_toplevel        )
    3031  {
    3132    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
     
    4142    test();
    4243
    43     _size_general_register = log2(nb_general_register);
    44     _size_special_register = log2(nb_special_register);
     44    uint32_t size_general_register = log2(nb_general_register);
     45    uint32_t size_special_register = log2(nb_special_register);
    4546
    4647    _nb_bank_by_pop        = _nb_bank / _nb_pop;
     
    4950
    5051    _bank_gpr_nb_slot      = gpr_nb_slot/nb_bank;
    51     _bank_gpr_size_slot    = _size_general_register-log2(nb_bank);
     52    _bank_gpr_size_slot    = size_general_register-log2(nb_bank);
    5253
    5354    _mask_gpr              = gen_mask<Tgeneral_address_t> (_bank_gpr_size_slot);
     
    5657
    5758    _bank_spr_nb_slot      = spr_nb_slot/nb_bank;
    58     _bank_spr_size_slot    = _size_special_register-log2(nb_bank);
     59    _bank_spr_size_slot    = size_special_register-log2(nb_bank);
    5960
    6061    _mask_spr              = gen_mask<Tspecial_address_t> (_bank_spr_size_slot);
     62
     63    if (is_toplevel)
     64      {
     65        _size_general_register = size_general_register;
     66        _size_special_register = size_special_register;
     67
     68        copy();
     69      }
    6170
    6271    log_printf(FUNC,Free_List_unit,FUNCTION,"End");
     
    7483#undef  FUNCTION
    7584#define FUNCTION "Free_List_unit::~Parameters"
    76   Parameters::~Parameters ()
     85  Parameters::~Parameters (void)
     86  {
     87    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
     88    log_printf(FUNC,Free_List_unit,FUNCTION,"End");
     89  };
     90
     91#undef  FUNCTION
     92#define FUNCTION "Free_List_unit::copy"
     93  void Parameters::copy (void)
    7794  {
    7895    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Parameters_msg_error.cpp

    r82 r88  
    2929
    3030    if (_nb_general_register <= _nb_thread*_nb_general_register_logic)
    31       test.error(_("The number of physical general register is insufficient.\n"));
     31      test.error(toString(_("The number of physical general register is insufficient. (Minimum : %d)\n"),_nb_thread*_nb_general_register_logic+1));
    3232    if (_nb_special_register <= _nb_thread*_nb_special_register_logic)
    33       test.error(_("The number of physical special register is insufficient.\n"));
     33      test.error(toString(_("The number of physical special register is insufficient. (Minimum : %d)\n"),_nb_thread*_nb_special_register_logic+1));
    3434    if (not is_multiple (_nb_bank, _nb_pop))
    3535      test.error(_("Number of pop must be a multiple of number of bank.\n"));
    3636    if (not is_power2 (_nb_bank))
    3737      test.error(_("Number of bank must be a power of 2.\n"));
     38    if (_nb_general_register < _nb_bank)
     39      test.error(_("The number of physical general register must be >= nb_bank.\n"));
     40    if (_nb_special_register < _nb_bank)
     41      test.error(_("The number of physical special register must be >= nb_bank.\n"));
    3842
    3943    if ((_priority != PRIORITY_STATIC) and
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/SelfTest/Makefile

    r81 r88  
    2424library_clean                   : Register_Address_Translation_unit_library_clean
    2525
     26local_clean                     :
     27
    2628include                         $(DIR_COMPONENT)/Makefile.deps
    2729include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/SelfTest/src/main.cpp

    r81 r88  
    6060         _nb_special_register ,
    6161         _nb_inst_insert      ,
    62          _nb_inst_retire      );
     62         _nb_inst_retire      ,
     63         true //is_toplevel
     64         );
    6365     
    6466      msg(_("%s"),param->print(1).c_str());
  • 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

    r82 r88  
    2424#endif
    2525
     26  Tusage_t _usage = USE_ALL;
     27
     28//   _usage = usage_unset(_usage,USE_SYSTEMC              );
     29//   _usage = usage_unset(_usage,USE_VHDL                 );
     30//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
     31//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
     32//   _usage = usage_unset(_usage,USE_POSITION             );
     33//   _usage = usage_unset(_usage,USE_STATISTICS           );
     34//   _usage = usage_unset(_usage,USE_INFORMATION          );
     35
    2636  Register_Address_Translation_unit * _Register_Address_Translation_unit = new Register_Address_Translation_unit
    2737    (name.c_str(),
     
    3040#endif
    3141     _param,
    32      USE_ALL);
     42     _usage);
    3343 
    3444#ifdef SYSTEMC
     
    7888  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD," in_RETIRE_NUM_REG_RD_PHY_OLD",Tgeneral_address_t,_param->_nb_inst_retire);
    7989  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD," in_RETIRE_NUM_REG_RE_PHY_OLD",Tspecial_address_t,_param->_nb_inst_retire);
     90  ALLOC1_SC_SIGNAL(out_RETIRE_RESTORE_RD_PHY_OLD,"out_RETIRE_RESTORE_RD_PHY_OLD",Tcontrol_t        ,_param->_nb_inst_retire);
     91  ALLOC1_SC_SIGNAL(out_RETIRE_RESTORE_RE_PHY_OLD,"out_RETIRE_RESTORE_RE_PHY_OLD",Tcontrol_t        ,_param->_nb_inst_retire);
    8092 
    8193  /********************************************************
     
    131143  INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit, in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire);
    132144  INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit, in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire);
     145  INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire);
     146  INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire);
    133147
    134148  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
     
    226240            }
    227241
     242          uint32_t retire_max = _param->_nb_inst_retire;
    228243          for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
    229244            {
    230               Tcontrol_t val = (rand()%100)<percent_transaction_retire;
     245              // in order ...........
     246
     247              Tcontrol_t val = (i<retire_max) and ((rand()%100)<percent_transaction_retire);
    231248             
     249              if (not val)
     250                retire_max = i;
     251
    232252              Tcontext_t front_end_id = rand() % _param->_nb_front_end;
    233253
     
    259279                }
    260280            }
     281
     282          for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
     283            {
     284              TEST(Tcontrol_t,out_RETIRE_RESTORE_RD_PHY_OLD[i]->read(), 0);
     285              TEST(Tcontrol_t,out_RETIRE_RESTORE_RE_PHY_OLD[i]->read(), 0);
     286            }
     287
    261288          for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
    262289            {
     
    320347      SC_START(1);
    321348
     349      // EVENT !!!!!!!!
     350
    322351      nb_request = 32;
    323352      while (nb_request > 1)
     
    347376            }
    348377
     378          uint32_t retire_max = _param->_nb_inst_retire;
    349379          for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
    350380            {
    351               Tcontrol_t val = (rand()%100)<percent_transaction_retire;
     381              // in order ...........
     382
     383              Tcontrol_t val = (i<retire_max) and ((rand()%100)<percent_transaction_retire);
     384             
     385              if (not val)
     386                retire_max = i;
     387
    352388              in_RETIRE_VAL                [i]->write(val);
    353389              in_RETIRE_FRONT_END_ID       [i]->write(retire_front_end_id [i]);
     
    362398            }
    363399
    364           SC_START(1);
     400          SC_START(0);
    365401         
    366402
     
    380416          for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
    381417            {
     418              LABEL("RETIRE[%d]",i);
     419
    382420              Tcontext_t front_end_id = in_RETIRE_FRONT_END_ID [i]->read();
    383421              Tcontext_t context_id   = in_RETIRE_CONTEXT_ID   [i]->read();
     422
     423              LABEL("  * front_end_id : %d",front_end_id);
     424              LABEL("  * context_id   : %d",context_id  );
     425
    384426              if (in_RETIRE_VAL [i]->read() and out_RETIRE_ACK [i]->read())
    385427                {
    386428                  if (in_RETIRE_WRITE_RD [i]->read() == 1)
    387429                    {
     430//                       LABEL("  * transaction and write rd");
     431//                       LABEL("    * rd_log       : %d",in_RETIRE_NUM_REG_RD_LOG[i]->read());
     432//                       LABEL("    * rat_gpr_updt : %d",rat_gpr_updt [front_end_id][context_id][in_RETIRE_NUM_REG_RD_LOG[i]->read()]);
     433                      TEST(Tcontrol_t,out_RETIRE_RESTORE_RD_PHY_OLD[i]->read(), (rat_gpr_updt [front_end_id][context_id][in_RETIRE_NUM_REG_RD_LOG[i]->read()] == false));
     434
    388435                      if (rat_gpr_updt [front_end_id][context_id][in_RETIRE_NUM_REG_RD_LOG[i]->read()] == false)
    389436                        rat_gpr[front_end_id][context_id][in_RETIRE_NUM_REG_RD_LOG[i]->read()] = in_RETIRE_NUM_REG_RD_PHY_OLD[i]->read();
     
    392439                  if (in_RETIRE_WRITE_RE [i]->read() == 1)
    393440                    {
     441                      TEST(Tcontrol_t,out_RETIRE_RESTORE_RE_PHY_OLD[i]->read(), (rat_spr_updt [front_end_id][context_id][in_RETIRE_NUM_REG_RE_LOG[i]->read()] == false));
     442
    394443                      if (rat_spr_updt [front_end_id][context_id][in_RETIRE_NUM_REG_RE_LOG[i]->read()] == false)
    395444                        rat_spr[front_end_id][context_id][in_RETIRE_NUM_REG_RE_LOG[i]->read()] = in_RETIRE_NUM_REG_RE_PHY_OLD[i]->read();
     
    398447                }
    399448            }
     449
     450          SC_START(1);
     451
    400452          for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
    401453            {
     
    412464                  TEST(Tspecial_address_t,out_RENAME_NUM_REG_RE_PHY_OLD[i]->read(), rat_spr[front_end_id][context_id][in_RENAME_NUM_REG_RE_LOG[i]->read()]);
    413465                }
    414 
    415             }
     466            }
     467
    416468        }
    417469    }
     
    472524  delete []  in_RETIRE_NUM_REG_RD_PHY_OLD;
    473525  delete []  in_RETIRE_NUM_REG_RE_PHY_OLD;
     526  delete [] out_RETIRE_RESTORE_RD_PHY_OLD;
     527  delete [] out_RETIRE_RESTORE_RE_PHY_OLD;
    474528
    475529#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/include/Parameters.h

    r82 r88  
    3232  public : uint32_t   _nb_inst_retire        ;   
    3333                     
    34   public : uint32_t   _size_front_end_id     ;
    35   public : uint32_t   _size_context_id       ;
    36   public : uint32_t   _size_general_register ;
    37   public : uint32_t   _size_special_register ;
    38                      
    39   public : uint32_t   _have_port_context_id  ;
    40   public : uint32_t   _have_port_front_end_id;
     34//public : uint32_t   _size_front_end_id     ;
     35//public : uint32_t   _size_context_id       ;
     36//public : uint32_t   _size_general_register ;
     37//public : uint32_t   _size_special_register ;
     38//                   
     39//public : uint32_t   _have_port_context_id  ;
     40//public : uint32_t   _have_port_front_end_id;
    4141
    4242    //-----[ methods ]-----------------------------------------------------------
     
    4646                        uint32_t   nb_special_register,
    4747                        uint32_t   nb_inst_insert     ,
    48                         uint32_t   nb_inst_retire     
     48                        uint32_t   nb_inst_retire     ,
     49                        bool       is_toplevel=false
    4950                        );
    5051//   public : Parameters  (Parameters & param) ;
    5152  public : ~Parameters () ;
     53
     54  public :        void            copy       (void);
    5255
    5356  public :        Parameters_test msg_error  (void);
  • 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

    r82 r88  
    103103  public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RD_PHY_OLD;//[nb_inst_retire]
    104104  public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_OLD;//[nb_inst_retire]
     105  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire]
     106  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_RESTORE_RE_PHY_OLD;//[nb_inst_retire]
    105107
    106108    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    107109
    108110    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     111  private   : Tgeneral_address_t          *** rat_gpr;                      //[nb_front_end][nb_context][nb_general_register_logic]
     112  private   : bool                        *** rat_gpr_update_table;         //[nb_front_end][nb_context][nb_general_register_logic]
     113  private   : Tspecial_address_t          *** rat_spr;                      //[nb_front_end][nb_context][nb_special_register_logic]
     114  private   : bool                        *** rat_spr_update_table;         //[nb_front_end][nb_context][nb_special_register_logic]
    109115
    110116    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    113119  private   : Tcontrol_t                    * internal_RETIRE_ACK;          //[nb_inst_retire]
    114120
    115   private   : Tgeneral_address_t          *** rat_gpr;                      //[nb_front_end][nb_context][nb_general_register_logic]
    116   private   : bool                        *** rat_gpr_update_table;         //[nb_front_end][nb_context][nb_general_register_logic]
    117   private   : Tspecial_address_t          *** rat_spr;                      //[nb_front_end][nb_context][nb_special_register_logic]
    118   private   : bool                        *** rat_spr_update_table;         //[nb_front_end][nb_context][nb_special_register_logic]
     121  private   : bool                        *** internal_rat_gpr_update_table;         //[nb_front_end][nb_context][nb_general_register_logic]
     122  private   : bool                        *** internal_rat_spr_update_table;         //[nb_front_end][nb_context][nb_special_register_logic]
    119123#endif
    120124
     
    150154#ifdef SYSTEMC                                 
    151155  public  : void        transition                (void);
    152   public  : void        genMoore                  (void);
     156  public  : void        genMealy_rename           (void);
     157  public  : void        genMealy_retire           (void);
    153158#endif                                         
    154159
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Parameters.cpp

    r81 r88  
    2525                          uint32_t   nb_special_register,
    2626                          uint32_t   nb_inst_insert     ,
    27                           uint32_t   nb_inst_retire     )
     27                          uint32_t   nb_inst_retire     ,
     28                          bool       is_toplevel)
    2829  {
    2930    log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"Begin");
     
    3637    _nb_inst_retire         = nb_inst_retire     ;
    3738
    38     _size_front_end_id      = log2(nb_front_end       );
    39     _size_context_id        = log2(max<uint32_t>(nb_context, nb_front_end));
    40     _size_general_register  = log2(nb_general_register);
    41     _size_special_register  = log2(nb_special_register);
     39    test();
     40
     41    if (is_toplevel)
     42      {
     43        _size_front_end_id      = log2(nb_front_end       );
     44        _size_context_id        = log2(max<uint32_t>(nb_context, nb_front_end));
     45        _size_general_register  = log2(nb_general_register);
     46        _size_special_register  = log2(nb_special_register);
    4247   
    43     _have_port_front_end_id = _size_front_end_id>0;
    44     _have_port_context_id   = _size_context_id  >0;
    45 
    46     test();
     48        _have_port_front_end_id = _size_front_end_id>0;
     49        _have_port_context_id   = _size_context_id  >0;
     50       
     51        copy();
     52      }
    4753
    4854    log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"End");
     
    6066#undef  FUNCTION
    6167#define FUNCTION "Register_Address_Translation_unit::~Parameters"
    62   Parameters::~Parameters ()
     68  Parameters::~Parameters (void)
     69  {
     70    log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"Begin");
     71    log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"End");
     72  };
     73
     74#undef  FUNCTION
     75#define FUNCTION "Register_Address_Translation_unit::copy"
     76  void Parameters::copy (void)
    6377  {
    6478    log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"Begin");
  • 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.cpp

    r81 r88  
    3939    log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"Begin");
    4040
     41#if DEBUG_Register_Address_Translation_unit == true
     42    log_printf(INFO,Register_Address_Translation_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
     43
     44    std::cout << *param << std::endl;
     45#endif   
     46
    4147    log_printf(INFO,Register_Address_Translation_unit,FUNCTION,"Allocation");
    4248
     
    4854
    4955#ifdef STATISTICS
    50     if (_usage & USE_STATISTICS)
     56    if (usage_is_set(_usage,USE_STATISTICS))
    5157      {
    5258        log_printf(INFO,Register_Address_Translation_unit,FUNCTION,"Allocation of statistics");
     
    5763
    5864#ifdef VHDL
    59     if (_usage & USE_VHDL)
     65    if (usage_is_set(_usage,USE_VHDL))
    6066      {
    6167        // generate the vhdl
     
    6773
    6874#ifdef SYSTEMC
    69     if (_usage & USE_SYSTEMC)
     75    if (usage_is_set(_usage,USE_SYSTEMC))
    7076      {
    7177        // Constant : accepted already transaction
     
    95101# endif   
    96102
    97         log_printf(INFO,Register_Address_Translation_unit,FUNCTION,"Method - genMoore");
     103        log_printf(INFO,Register_Address_Translation_unit,FUNCTION,"Method - genMealy_rename");
    98104
    99         SC_METHOD (genMoore);
     105        SC_METHOD (genMealy_rename);
    100106        dont_initialize ();
    101         sensitive << (*(in_CLOCK)).neg();
     107        sensitive << (*(in_CLOCK)).neg(); // need internal register
     108        for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
     109          {
     110            if (_param->_have_port_front_end_id)
     111            sensitive << (*(in_RENAME_FRONT_END_ID   [i]));
     112            if (_param->_have_port_context_id  )
     113            sensitive << (*(in_RENAME_CONTEXT_ID     [i]));
     114           
     115            sensitive << (*(in_RENAME_NUM_REG_RA_LOG [i]))
     116                      << (*(in_RENAME_NUM_REG_RB_LOG [i]))
     117                      << (*(in_RENAME_NUM_REG_RC_LOG [i]))
     118                      << (*(in_RENAME_NUM_REG_RD_LOG [i]))
     119                      << (*(in_RENAME_NUM_REG_RE_LOG [i]));
     120      }
     121
     122
     123# ifdef SYSTEMCASS_SPECIFIC
     124        // List dependency information
     125# endif   
     126
     127        log_printf(INFO,Register_Address_Translation_unit,FUNCTION,"Method - genMealy_retire");
     128
     129        SC_METHOD (genMealy_retire);
     130        dont_initialize ();
     131        sensitive << (*(in_CLOCK)).neg(); // need internal register
     132        for (uint32_t i=0; i<_param->_nb_inst_retire; ++i)
     133          {
     134            if (param->_have_port_front_end_id)
     135            sensitive << (*(in_RETIRE_FRONT_END_ID   [i]));
     136            if (param->_have_port_context_id)
     137            sensitive << (*(in_RETIRE_CONTEXT_ID     [i]));
     138           
     139            sensitive << (*(in_RETIRE_EVENT_STATE    [i]))
     140                      << (*(in_RETIRE_WRITE_RD       [i]))
     141                      << (*(in_RETIRE_WRITE_RE       [i]))
     142                      << (*(in_RETIRE_NUM_REG_RD_LOG [i]))
     143                      << (*(in_RETIRE_NUM_REG_RE_LOG [i]));
     144          }
    102145       
    103146# ifdef SYSTEMCASS_SPECIFIC
     
    117160
    118161#ifdef STATISTICS
    119     if (_usage & USE_STATISTICS)
     162    if (usage_is_set(_usage,USE_STATISTICS))
    120163      {
    121164        log_printf(INFO,Register_Address_Translation_unit,FUNCTION,"Generate Statistics file");
  • 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

    r81 r88  
    107107      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RD_PHY_OLD,"num_reg_rd_phy_old",Tgeneral_address_t,_param->_size_general_register);
    108108      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register);
     109      ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE_RD_PHY_OLD,"restore_rd_phy_old",Tcontrol_t        ,1);
     110      ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE_RE_PHY_OLD,"restore_re_phy_old",Tcontrol_t        ,1);
    109111    }
    110112
    111     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     113    if (usage_is_set(_usage,USE_SYSTEMC))
     114      {
    112115    internal_RENAME_ACK = new Tcontrol_t [_param->_nb_inst_insert];
    113116    internal_INSERT_ACK = new Tcontrol_t [_param->_nb_inst_insert];
    114117    internal_RETIRE_ACK = new Tcontrol_t [_param->_nb_inst_retire];
    115118
    116     rat_gpr              = new Tgeneral_address_t ** [_param->_nb_front_end];
    117     rat_gpr_update_table = new bool               ** [_param->_nb_front_end];
    118     rat_spr              = new Tspecial_address_t ** [_param->_nb_front_end];
    119     rat_spr_update_table = new bool               ** [_param->_nb_front_end];
     119    rat_gpr                       = new Tgeneral_address_t ** [_param->_nb_front_end];
     120    rat_spr                       = new Tspecial_address_t ** [_param->_nb_front_end];
     121    rat_gpr_update_table          = new bool               ** [_param->_nb_front_end];
     122    rat_spr_update_table          = new bool               ** [_param->_nb_front_end];
     123    internal_rat_gpr_update_table = new bool               ** [_param->_nb_front_end];
     124    internal_rat_spr_update_table = new bool               ** [_param->_nb_front_end];
    120125
    121126    for (uint32_t i=0; i<_param->_nb_front_end; i++)
    122127      {
    123         rat_gpr              [i] = new Tgeneral_address_t * [_param->_nb_context[i]];
    124         rat_gpr_update_table [i] = new bool               * [_param->_nb_context[i]];
    125         rat_spr              [i] = new Tspecial_address_t * [_param->_nb_context[i]];
    126         rat_spr_update_table [i] = new bool               * [_param->_nb_context[i]];
     128        rat_gpr                       [i] = new Tgeneral_address_t * [_param->_nb_context[i]];
     129        rat_spr                       [i] = new Tspecial_address_t * [_param->_nb_context[i]];
     130        rat_gpr_update_table          [i] = new bool               * [_param->_nb_context[i]];
     131        rat_spr_update_table          [i] = new bool               * [_param->_nb_context[i]];
     132        internal_rat_gpr_update_table [i] = new bool               * [_param->_nb_context[i]];
     133        internal_rat_spr_update_table [i] = new bool               * [_param->_nb_context[i]];
    127134
    128135        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
    129136          {
    130             rat_gpr              [i][j] = new Tgeneral_address_t [_param->_nb_general_register_logic];
    131             rat_gpr_update_table [i][j] = new bool               [_param->_nb_general_register_logic];
    132             rat_spr              [i][j] = new Tspecial_address_t [_param->_nb_special_register_logic];
    133             rat_spr_update_table [i][j] = new bool               [_param->_nb_special_register_logic];
     137            rat_gpr                       [i][j] = new Tgeneral_address_t [_param->_nb_general_register_logic];
     138            rat_spr                       [i][j] = new Tspecial_address_t [_param->_nb_special_register_logic];
     139            rat_gpr_update_table          [i][j] = new bool               [_param->_nb_general_register_logic];
     140            rat_spr_update_table          [i][j] = new bool               [_param->_nb_special_register_logic];
     141            internal_rat_gpr_update_table [i][j] = new bool               [_param->_nb_general_register_logic];
     142            internal_rat_spr_update_table [i][j] = new bool               [_param->_nb_special_register_logic];
    134143          }
    135144      }
     145      }
     146
     147    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    136148
    137149#ifdef POSITION
    138     _component->generate_file();
     150    if (usage_is_set(_usage,USE_POSITION))
     151      _component->generate_file();
    139152#endif
    140153
  • 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

    r81 r88  
    2424    log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"Begin");
    2525
    26     if (_usage & USE_SYSTEMC)
     26    if (usage_is_set(_usage,USE_SYSTEMC))
    2727      {
    2828        delete     in_CLOCK ;
     
    7272        delete []  in_RETIRE_NUM_REG_RD_PHY_OLD;
    7373        delete []  in_RETIRE_NUM_REG_RE_PHY_OLD;
     74        delete [] out_RETIRE_RESTORE_RD_PHY_OLD;
     75        delete [] out_RETIRE_RESTORE_RE_PHY_OLD;
     76
     77        delete [] internal_RENAME_ACK;
     78        delete [] internal_INSERT_ACK;
     79        delete [] internal_RETIRE_ACK;
     80       
     81        delete [] rat_gpr             ;
     82        delete [] rat_spr             ;
     83        delete [] rat_gpr_update_table;
     84        delete [] rat_spr_update_table;
     85        delete [] internal_rat_gpr_update_table;
     86        delete [] internal_rat_spr_update_table;
    7487      }
     88
    7589    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    76     delete [] internal_RENAME_ACK;
    77     delete [] internal_INSERT_ACK;
    78     delete [] internal_RETIRE_ACK;
    79 
    80     delete [] rat_gpr             ;
    81     delete [] rat_gpr_update_table;
    82     delete [] rat_spr             ;
    83     delete [] rat_spr_update_table;
    8490    delete    _component;
    8591
  • 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_end_cycle.cpp

    r81 r88  
    2626
    2727#ifdef STATISTICS
    28     _stat->end_cycle();
     28    if (usage_is_set(_usage,USE_STATISTICS))
     29      _stat->end_cycle();
    2930#endif   
    3031
     
    3233    // Evaluation before read the ouput signal
    3334//  sc_start(0);
    34     _interfaces->testbench();
     35    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
     36      _interfaces->testbench();
    3537#endif
    3638
  • 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_rename.cpp

    r87 r88  
    2020
    2121#undef  FUNCTION
    22 #define FUNCTION "Register_Address_Translation_unit::genMoore"
    23   void Register_Address_Translation_unit::genMoore (void)
     22#define FUNCTION "Register_Address_Translation_unit::genMealy_rename"
     23  void Register_Address_Translation_unit::genMealy_rename (void)
    2424  {
    25     log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"Begin");
     25    log_begin(Register_Address_Translation_unit,FUNCTION);
     26    log_function(Register_Address_Translation_unit,FUNCTION,_name.c_str());
    2627
    2728    for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
     
    3738      }
    3839
    39     log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"End");
     40    log_end(Register_Address_Translation_unit,FUNCTION);
    4041  };
    4142
  • 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

    r81 r88  
    2323  void Register_Address_Translation_unit::transition (void)
    2424  {
    25     log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"Begin");
     25    log_begin(Register_Address_Translation_unit,FUNCTION);
     26    log_function(Register_Address_Translation_unit,FUNCTION,_name.c_str());
    2627
    2728    if (PORT_READ(in_NRESET) == 0)
     
    9091                    }
    9192
    92  
    93                   // Test if write and have not a previous update
     93                  // Test if write and have not a previous update
    9494                  if (PORT_READ(in_RETIRE_WRITE_RD [i]) == 1)
    9595                    {
    9696                      Tgeneral_address_t rd_log = PORT_READ(in_RETIRE_NUM_REG_RD_LOG [i]);
    9797                     
    98                       log_printf(NONE,Register_Address_Translation_unit,FUNCTION,"retire[%d]",i);
    99                       log_printf(NONE,Register_Address_Translation_unit,FUNCTION," * front_end_id : %d",front_end_id);
    100                       log_printf(NONE,Register_Address_Translation_unit,FUNCTION," * context_id   : %d",context_id  );
    101                       log_printf(NONE,Register_Address_Translation_unit,FUNCTION," * rd_log       : %d",rd_log      );
     98                      log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"  * retire[%d]",i);
     99                      log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * front_end_id : %d",front_end_id);
     100                      log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * context_id   : %d",context_id  );
     101                      log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * rd_log       : %d",rd_log      );
    102102                     
     103//                    if (RETIRE_RESTORE_RD_PHY_OLD [i])
    103104                      if (rat_gpr_update_table[front_end_id][context_id][rd_log] == 0)
    104105                        {
     
    112113                      Tspecial_address_t re_log = PORT_READ(in_RETIRE_NUM_REG_RE_LOG [i]);
    113114
     115//                    if (RETIRE_RESTORE_RE_PHY_OLD [i])
    114116                      if (rat_spr_update_table[front_end_id][context_id][re_log] == 0)
    115117                        {
     
    122124      }
    123125
     126#if (DEBUG >= DEBUG_TRACE) and (DEBUG_Register_Address_Translation_unit == true)
     127    log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"  * Dump RAT (Register_Address_Translation_unit)");
     128    for (uint32_t i=0; i<_param->_nb_front_end; ++i)
     129      for (uint32_t j=0; j<_param->_nb_context[i]; ++j)
     130        {
     131          log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * front_end[%d].context[%d]",i,j);
     132
     133          for (uint32_t k=0; k<_param->_nb_general_register_logic; ++k)
     134            log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"      * GPR[%.2d] - %.5d %.1d",k,rat_gpr[i][j][k],rat_gpr_update_table[i][j][k]);
     135
     136          for (uint32_t k=0; k<_param->_nb_special_register_logic; ++k)
     137            log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"      * SPR[%.2d] - %.5d %.1d",k,rat_spr[i][j][k],rat_spr_update_table[i][j][k]);
     138        }
     139#endif
     140
    124141#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
    125142    end_cycle ();
    126143#endif
    127144
    128     log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"End");
     145    log_end(Register_Address_Translation_unit,FUNCTION);
    129146  };
    130147
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/Makefile

    r81 r88  
    2424library_clean                   : Register_translation_unit_Glue_library_clean
    2525
     26local_clean                     :
     27
    2628include                         $(DIR_COMPONENT)/Makefile.deps
    2729include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/configuration.cfg

    r81 r88  
    221       4       *2      # nb_inst_insert
    331       4       *2      # nb_inst_retire
     45       5       *2      # size_general_register
     52       2       *2      # size_special_register
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/src/main.cpp

    r81 r88  
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/include/test.h"
    99
    10 #define NB_PARAMS 2
     10#define NB_PARAMS 4
    1111
    1212void usage (int argc, char * argv[])
     
    1414  err (_("<Usage> %s name_instance list_params.\n"),argv[0]);
    1515  err (_("list_params is :\n"));
    16   err (_(" * nb_inst_insert (uint32_t)\n"));
    17   err (_(" * nb_inst_retire (uint32_t)\n"));
     16  err (_(" * nb_inst_insert        (uint32_t)\n"));
     17  err (_(" * nb_inst_retire        (uint32_t)\n"));
     18  err (_(" * size_general_register (uint32_t)\n"));
     19  err (_(" * size_special_register (uint32_t)\n"));
    1820
    1921  exit (1);
     
    3234
    3335  string name = argv[x++];
    34   uint32_t _nb_inst_insert = atoi(argv[x++]);
    35   uint32_t _nb_inst_retire = atoi(argv[x++]);
     36  uint32_t _nb_inst_insert        = fromString<uint32_t>(argv[x++]);
     37  uint32_t _nb_inst_retire        = fromString<uint32_t>(argv[x++]);
     38  uint32_t _size_general_register = fromString<uint32_t>(argv[x++]);
     39  uint32_t _size_special_register = fromString<uint32_t>(argv[x++]);
     40
    3641
    3742  int _return = EXIT_SUCCESS;
     
    4045      morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_translation_unit_glue::Parameters * param = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_translation_unit_glue::Parameters
    4146        (_nb_inst_insert,
    42          _nb_inst_retire);
     47         _nb_inst_retire,
     48         _size_general_register,
     49         _size_special_register,
     50         true //is_toplevel
     51         );
    4352     
    4453      msg(_("%s"),param->print(1).c_str());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/src/test.cpp

    r82 r88  
    2323#endif
    2424
     25  Tusage_t _usage = USE_ALL;
     26
     27//   _usage = usage_unset(_usage,USE_SYSTEMC              );
     28//   _usage = usage_unset(_usage,USE_VHDL                 );
     29//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
     30//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
     31//   _usage = usage_unset(_usage,USE_POSITION             );
     32//   _usage = usage_unset(_usage,USE_STATISTICS           );
     33//   _usage = usage_unset(_usage,USE_INFORMATION          );
     34
    2535  Register_translation_unit_Glue * _Register_translation_unit_Glue = new Register_translation_unit_Glue
    2636    (name.c_str(),
     
    2939#endif
    3040     _param,
    31      USE_ALL);
     41     _usage);
    3242 
    3343#ifdef SYSTEMC
     
    5161  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_VAL ,"out_INSERT_STAT_LIST_VAL ",Tcontrol_t,_param->_nb_inst_insert);
    5262  ALLOC1_SC_SIGNAL( in_INSERT_STAT_LIST_ACK ," in_INSERT_STAT_LIST_ACK ",Tcontrol_t,_param->_nb_inst_insert);
     63
     64  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_READ_RA           ," in_INSERT_DEPENDENCY_CHECKING_READ_RA           ",Tcontrol_t        ,_param->_nb_inst_insert);
     65  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY    ," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY    ",Tgeneral_address_t,_param->_nb_inst_insert);
     66  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_READ_RB           ," in_INSERT_DEPENDENCY_CHECKING_READ_RB           ",Tcontrol_t        ,_param->_nb_inst_insert);
     67  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY    ," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY    ",Tgeneral_address_t,_param->_nb_inst_insert);
     68  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_READ_RC           ," in_INSERT_DEPENDENCY_CHECKING_READ_RC           ",Tcontrol_t        ,_param->_nb_inst_insert);
     69  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY    ," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY    ",Tspecial_address_t,_param->_nb_inst_insert);
     70  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_WRITE_RD          ," in_INSERT_DEPENDENCY_CHECKING_WRITE_RD          ",Tcontrol_t        ,_param->_nb_inst_insert);
     71  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG    ," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG    ",Tgeneral_address_t,_param->_nb_inst_insert);
     72  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD",Tgeneral_address_t,_param->_nb_inst_insert);
     73  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW",Tgeneral_address_t,_param->_nb_inst_insert);
     74  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_WRITE_RE          ," in_INSERT_DEPENDENCY_CHECKING_WRITE_RE          ",Tcontrol_t        ,_param->_nb_inst_insert);
     75  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG    ," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG    ",Tspecial_address_t,_param->_nb_inst_insert);
     76  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD",Tspecial_address_t,_param->_nb_inst_insert);
     77  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW",Tspecial_address_t,_param->_nb_inst_insert);
     78
     79  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RA                     ,"out_INSERT_STAT_LIST_READ_RA                     ",Tcontrol_t        ,_param->_nb_inst_insert);
     80  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ,"out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ",Tgeneral_address_t,_param->_nb_inst_insert);
     81  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RB                     ,"out_INSERT_STAT_LIST_READ_RB                     ",Tcontrol_t        ,_param->_nb_inst_insert);
     82  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ,"out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ",Tgeneral_address_t,_param->_nb_inst_insert);
     83  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RC                     ,"out_INSERT_STAT_LIST_READ_RC                     ",Tcontrol_t        ,_param->_nb_inst_insert);
     84  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,"out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ",Tspecial_address_t,_param->_nb_inst_insert);
     85  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_WRITE_RD                    ,"out_INSERT_STAT_LIST_WRITE_RD                    ",Tcontrol_t        ,_param->_nb_inst_insert);
     86  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ,"out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ",Tgeneral_address_t,_param->_nb_inst_insert);
     87  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_WRITE_RE                    ,"out_INSERT_STAT_LIST_WRITE_RE                    ",Tcontrol_t        ,_param->_nb_inst_insert);
     88  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ,"out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ",Tspecial_address_t,_param->_nb_inst_insert);
     89
     90  ALLOC1_SC_SIGNAL(out_INSERT_RAT_WRITE_RD                          ,"out_INSERT_RAT_WRITE_RD                          ",Tcontrol_t        ,_param->_nb_inst_insert);
     91  ALLOC1_SC_SIGNAL(out_INSERT_RAT_NUM_REG_RD_LOG                    ,"out_INSERT_RAT_NUM_REG_RD_LOG                    ",Tgeneral_address_t,_param->_nb_inst_insert);
     92  ALLOC1_SC_SIGNAL(out_INSERT_RAT_NUM_REG_RD_PHY_NEW                ,"out_INSERT_RAT_NUM_REG_RD_PHY_NEW                ",Tgeneral_address_t,_param->_nb_inst_insert);
     93  ALLOC1_SC_SIGNAL(out_INSERT_RAT_WRITE_RE                          ,"out_INSERT_RAT_WRITE_RE                          ",Tcontrol_t        ,_param->_nb_inst_insert);
     94  ALLOC1_SC_SIGNAL(out_INSERT_RAT_NUM_REG_RE_LOG                    ,"out_INSERT_RAT_NUM_REG_RE_LOG                    ",Tspecial_address_t,_param->_nb_inst_insert);
     95  ALLOC1_SC_SIGNAL(out_INSERT_RAT_NUM_REG_RE_PHY_NEW                ,"out_INSERT_RAT_NUM_REG_RE_PHY_NEW                ",Tspecial_address_t,_param->_nb_inst_insert);
     96
     97  ALLOC1_SC_SIGNAL(out_INSERT_READ_RA                               ,"out_INSERT_READ_RA                               ",Tcontrol_t        ,_param->_nb_inst_insert);
     98  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RA_PHY                        ,"out_INSERT_NUM_REG_RA_PHY                        ",Tgeneral_address_t,_param->_nb_inst_insert);
     99  ALLOC1_SC_SIGNAL(out_INSERT_READ_RB                               ,"out_INSERT_READ_RB                               ",Tcontrol_t        ,_param->_nb_inst_insert);
     100  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RB_PHY                        ,"out_INSERT_NUM_REG_RB_PHY                        ",Tgeneral_address_t,_param->_nb_inst_insert);
     101  ALLOC1_SC_SIGNAL(out_INSERT_READ_RC                               ,"out_INSERT_READ_RC                               ",Tcontrol_t        ,_param->_nb_inst_insert);
     102  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RC_PHY                        ,"out_INSERT_NUM_REG_RC_PHY                        ",Tspecial_address_t,_param->_nb_inst_insert);
     103  ALLOC1_SC_SIGNAL(out_INSERT_WRITE_RD                              ,"out_INSERT_WRITE_RD                              ",Tcontrol_t        ,_param->_nb_inst_insert);
     104  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RD_LOG                        ,"out_INSERT_NUM_REG_RD_LOG                        ",Tgeneral_address_t,_param->_nb_inst_insert);
     105  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RD_PHY_OLD                    ,"out_INSERT_NUM_REG_RD_PHY_OLD                    ",Tgeneral_address_t,_param->_nb_inst_insert);
     106  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RD_PHY_NEW                    ,"out_INSERT_NUM_REG_RD_PHY_NEW                    ",Tgeneral_address_t,_param->_nb_inst_insert);
     107  ALLOC1_SC_SIGNAL(out_INSERT_WRITE_RE                              ,"out_INSERT_WRITE_RE                              ",Tcontrol_t        ,_param->_nb_inst_insert);
     108  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RE_LOG                        ,"out_INSERT_NUM_REG_RE_LOG                        ",Tspecial_address_t,_param->_nb_inst_insert);
     109  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RE_PHY_OLD                    ,"out_INSERT_NUM_REG_RE_PHY_OLD                    ",Tspecial_address_t,_param->_nb_inst_insert);
     110  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RE_PHY_NEW                    ,"out_INSERT_NUM_REG_RE_PHY_NEW                    ",Tspecial_address_t,_param->_nb_inst_insert);
     111
    53112  ALLOC1_SC_SIGNAL( in_RETIRE_VAL           ," in_RETIRE_VAL           ",Tcontrol_t,_param->_nb_inst_retire);
    54113  ALLOC1_SC_SIGNAL(out_RETIRE_ACK           ,"out_RETIRE_ACK           ",Tcontrol_t,_param->_nb_inst_retire);
     
    78137  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_VAL ,_param->_nb_inst_insert);
    79138  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_STAT_LIST_ACK ,_param->_nb_inst_insert);
    80   INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_RETIRE_VAL           ,_param->_nb_inst_retire);
    81   INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_RETIRE_ACK           ,_param->_nb_inst_retire);
    82   INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_RETIRE_RAT_VAL       ,_param->_nb_inst_retire);
    83   INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_RETIRE_RAT_ACK       ,_param->_nb_inst_retire);
    84   INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_RETIRE_STAT_LIST_VAL ,_param->_nb_inst_retire);
    85   INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_RETIRE_STAT_LIST_ACK ,_param->_nb_inst_retire);
     139 
     140  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_READ_RA           ,_param->_nb_inst_insert);
     141  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY    ,_param->_nb_inst_insert);
     142  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_READ_RB           ,_param->_nb_inst_insert);
     143  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY    ,_param->_nb_inst_insert);
     144  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_READ_RC           ,_param->_nb_inst_insert);
     145  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY    ,_param->_nb_inst_insert);
     146  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_WRITE_RD          ,_param->_nb_inst_insert);
     147  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG    ,_param->_nb_inst_insert);
     148  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert);
     149  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert);
     150  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_WRITE_RE          ,_param->_nb_inst_insert);
     151  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG    ,_param->_nb_inst_insert);
     152  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert);
     153  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert);
     154
     155  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_READ_RA                     ,_param->_nb_inst_insert);
     156  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ,_param->_nb_inst_insert);
     157  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_READ_RB                     ,_param->_nb_inst_insert);
     158  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ,_param->_nb_inst_insert);
     159  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_READ_RC                     ,_param->_nb_inst_insert);
     160  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,_param->_nb_inst_insert);
     161  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_WRITE_RD                    ,_param->_nb_inst_insert);
     162  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ,_param->_nb_inst_insert);
     163  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_WRITE_RE                    ,_param->_nb_inst_insert);
     164  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ,_param->_nb_inst_insert);
     165
     166  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_RAT_WRITE_RD                          ,_param->_nb_inst_insert);
     167  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_RAT_NUM_REG_RD_LOG                    ,_param->_nb_inst_insert);
     168  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_RAT_NUM_REG_RD_PHY_NEW                ,_param->_nb_inst_insert);
     169  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_RAT_WRITE_RE                          ,_param->_nb_inst_insert);
     170  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_RAT_NUM_REG_RE_LOG                    ,_param->_nb_inst_insert);
     171  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_RAT_NUM_REG_RE_PHY_NEW                ,_param->_nb_inst_insert);
     172
     173  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_READ_RA                               ,_param->_nb_inst_insert);
     174  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_NUM_REG_RA_PHY                        ,_param->_nb_inst_insert);
     175  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_READ_RB                               ,_param->_nb_inst_insert);
     176  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_NUM_REG_RB_PHY                        ,_param->_nb_inst_insert);
     177  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_READ_RC                               ,_param->_nb_inst_insert);
     178  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_NUM_REG_RC_PHY                        ,_param->_nb_inst_insert);
     179  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_WRITE_RD                              ,_param->_nb_inst_insert);
     180  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_NUM_REG_RD_LOG                        ,_param->_nb_inst_insert);
     181  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_NUM_REG_RD_PHY_OLD                    ,_param->_nb_inst_insert);
     182  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_NUM_REG_RD_PHY_NEW                    ,_param->_nb_inst_insert);
     183  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_WRITE_RE                              ,_param->_nb_inst_insert);
     184  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_NUM_REG_RE_LOG                        ,_param->_nb_inst_insert);
     185  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_NUM_REG_RE_PHY_OLD                    ,_param->_nb_inst_insert);
     186  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_NUM_REG_RE_PHY_NEW                    ,_param->_nb_inst_insert);
     187 
     188  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_RETIRE_VAL          ,_param->_nb_inst_retire);
     189  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_RETIRE_ACK          ,_param->_nb_inst_retire);
     190  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_RETIRE_RAT_VAL      ,_param->_nb_inst_retire);
     191  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_RETIRE_RAT_ACK      ,_param->_nb_inst_retire);
     192  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_RETIRE_STAT_LIST_VAL,_param->_nb_inst_retire);
     193  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_RETIRE_STAT_LIST_ACK,_param->_nb_inst_retire);
    86194
    87195  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
     
    187295  delete in_NRESET;
    188296
    189   delete []  in_INSERT_RENAME_VAL    ;
    190   delete [] out_INSERT_RENAME_ACK    ;
    191   delete [] out_INSERT_INSERT_VAL    ;
    192   delete []  in_INSERT_INSERT_ACK    ;
    193   delete [] out_INSERT_RAT_INSERT_VAL;
    194   delete []  in_INSERT_RAT_RENAME_ACK;
    195   delete []  in_INSERT_RAT_INSERT_ACK;
    196   delete [] out_INSERT_FREE_LIST_VAL ;
    197   delete []  in_INSERT_FREE_LIST_ACK ;
    198   delete [] out_INSERT_STAT_LIST_VAL ;
    199   delete []  in_INSERT_STAT_LIST_ACK ;
    200   delete []  in_RETIRE_VAL           ;
    201   delete [] out_RETIRE_ACK           ;
    202   delete [] out_RETIRE_RAT_VAL       ;
    203   delete []  in_RETIRE_RAT_ACK       ;
    204   delete [] out_RETIRE_STAT_LIST_VAL ;
    205   delete []  in_RETIRE_STAT_LIST_ACK ;
     297  DELETE1_SC_SIGNAL( in_INSERT_RENAME_VAL    ,_param->_nb_inst_insert);
     298  DELETE1_SC_SIGNAL(out_INSERT_RENAME_ACK    ,_param->_nb_inst_insert);
     299  DELETE1_SC_SIGNAL(out_INSERT_INSERT_VAL    ,_param->_nb_inst_insert);
     300  DELETE1_SC_SIGNAL( in_INSERT_INSERT_ACK    ,_param->_nb_inst_insert);
     301  DELETE1_SC_SIGNAL(out_INSERT_RAT_INSERT_VAL,_param->_nb_inst_insert);
     302  DELETE1_SC_SIGNAL( in_INSERT_RAT_RENAME_ACK,_param->_nb_inst_insert);
     303  DELETE1_SC_SIGNAL( in_INSERT_RAT_INSERT_ACK,_param->_nb_inst_insert);
     304  DELETE1_SC_SIGNAL(out_INSERT_FREE_LIST_VAL ,_param->_nb_inst_insert);
     305  DELETE1_SC_SIGNAL( in_INSERT_FREE_LIST_ACK ,_param->_nb_inst_insert);
     306  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_VAL ,_param->_nb_inst_insert);
     307  DELETE1_SC_SIGNAL( in_INSERT_STAT_LIST_ACK ,_param->_nb_inst_insert);
     308 
     309  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_READ_RA           ,_param->_nb_inst_insert);
     310  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY    ,_param->_nb_inst_insert);
     311  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_READ_RB           ,_param->_nb_inst_insert);
     312  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY    ,_param->_nb_inst_insert);
     313  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_READ_RC           ,_param->_nb_inst_insert);
     314  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY    ,_param->_nb_inst_insert);
     315  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_WRITE_RD          ,_param->_nb_inst_insert);
     316  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG    ,_param->_nb_inst_insert);
     317  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert);
     318  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert);
     319  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_WRITE_RE          ,_param->_nb_inst_insert);
     320  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG    ,_param->_nb_inst_insert);
     321  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert);
     322  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert);
     323
     324  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RA                     ,_param->_nb_inst_insert);
     325  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ,_param->_nb_inst_insert);
     326  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RB                     ,_param->_nb_inst_insert);
     327  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ,_param->_nb_inst_insert);
     328  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RC                     ,_param->_nb_inst_insert);
     329  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,_param->_nb_inst_insert);
     330  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_WRITE_RD                    ,_param->_nb_inst_insert);
     331  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ,_param->_nb_inst_insert);
     332  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_WRITE_RE                    ,_param->_nb_inst_insert);
     333  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ,_param->_nb_inst_insert);
     334
     335  DELETE1_SC_SIGNAL(out_INSERT_RAT_WRITE_RD                          ,_param->_nb_inst_insert);
     336  DELETE1_SC_SIGNAL(out_INSERT_RAT_NUM_REG_RD_LOG                    ,_param->_nb_inst_insert);
     337  DELETE1_SC_SIGNAL(out_INSERT_RAT_NUM_REG_RD_PHY_NEW                ,_param->_nb_inst_insert);
     338  DELETE1_SC_SIGNAL(out_INSERT_RAT_WRITE_RE                          ,_param->_nb_inst_insert);
     339  DELETE1_SC_SIGNAL(out_INSERT_RAT_NUM_REG_RE_LOG                    ,_param->_nb_inst_insert);
     340  DELETE1_SC_SIGNAL(out_INSERT_RAT_NUM_REG_RE_PHY_NEW                ,_param->_nb_inst_insert);
     341
     342  DELETE1_SC_SIGNAL(out_INSERT_READ_RA                               ,_param->_nb_inst_insert);
     343  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RA_PHY                        ,_param->_nb_inst_insert);
     344  DELETE1_SC_SIGNAL(out_INSERT_READ_RB                               ,_param->_nb_inst_insert);
     345  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RB_PHY                        ,_param->_nb_inst_insert);
     346  DELETE1_SC_SIGNAL(out_INSERT_READ_RC                               ,_param->_nb_inst_insert);
     347  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RC_PHY                        ,_param->_nb_inst_insert);
     348  DELETE1_SC_SIGNAL(out_INSERT_WRITE_RD                              ,_param->_nb_inst_insert);
     349  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RD_LOG                        ,_param->_nb_inst_insert);
     350  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RD_PHY_OLD                    ,_param->_nb_inst_insert);
     351  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RD_PHY_NEW                    ,_param->_nb_inst_insert);
     352  DELETE1_SC_SIGNAL(out_INSERT_WRITE_RE                              ,_param->_nb_inst_insert);
     353  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RE_LOG                        ,_param->_nb_inst_insert);
     354  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RE_PHY_OLD                    ,_param->_nb_inst_insert);
     355  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RE_PHY_NEW                    ,_param->_nb_inst_insert);
     356 
     357  DELETE1_SC_SIGNAL( in_RETIRE_VAL          ,_param->_nb_inst_retire);
     358  DELETE1_SC_SIGNAL(out_RETIRE_ACK          ,_param->_nb_inst_retire);
     359  DELETE1_SC_SIGNAL(out_RETIRE_RAT_VAL      ,_param->_nb_inst_retire);
     360  DELETE1_SC_SIGNAL( in_RETIRE_RAT_ACK      ,_param->_nb_inst_retire);
     361  DELETE1_SC_SIGNAL(out_RETIRE_STAT_LIST_VAL,_param->_nb_inst_retire);
     362  DELETE1_SC_SIGNAL( in_RETIRE_STAT_LIST_ACK,_param->_nb_inst_retire);
    206363
    207364#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Parameters.h

    r82 r88  
    2727  public : uint32_t _nb_inst_insert;
    2828  public : uint32_t _nb_inst_retire;
     29//public : uint32_t _size_general_register;
     30//public : uint32_t _size_special_register;
    2931   
    3032    //-----[ methods ]-----------------------------------------------------------
    3133  public : Parameters  (uint32_t nb_inst_insert,
    32                         uint32_t nb_inst_retire);
     34                        uint32_t nb_inst_retire,
     35                        uint32_t size_general_register,
     36                        uint32_t size_special_register,
     37                        bool     is_toplevel=false
     38                        );
    3339
    3440//   public : Parameters  (Parameters & param) ;
    3541  public : ~Parameters () ;
     42
     43  public :        void            copy       (void);
    3644
    3745  public :        Parameters_test msg_error  (void);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Register_translation_unit_Glue.h

    r82 r88  
    6464
    6565    // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    66   public    : SC_IN (Tcontrol_t)           **  in_INSERT_RENAME_VAL    ;//[nb_inst_insert]
    67   public    : SC_OUT(Tcontrol_t)           ** out_INSERT_RENAME_ACK    ;//[nb_inst_insert]
    68   public    : SC_OUT(Tcontrol_t)           ** out_INSERT_INSERT_VAL    ;//[nb_inst_insert]
    69   public    : SC_IN (Tcontrol_t)           **  in_INSERT_INSERT_ACK    ;//[nb_inst_insert]
    70   public    : SC_OUT(Tcontrol_t)           ** out_INSERT_RAT_INSERT_VAL;//[nb_inst_insert]
    71   public    : SC_IN (Tcontrol_t)           **  in_INSERT_RAT_RENAME_ACK;//[nb_inst_insert]
    72   public    : SC_IN (Tcontrol_t)           **  in_INSERT_RAT_INSERT_ACK;//[nb_inst_insert]
    73   public    : SC_OUT(Tcontrol_t)           ** out_INSERT_FREE_LIST_VAL ;//[nb_inst_insert]
    74   public    : SC_IN (Tcontrol_t)           **  in_INSERT_FREE_LIST_ACK ;//[nb_inst_insert]
    75   public    : SC_OUT(Tcontrol_t)           ** out_INSERT_STAT_LIST_VAL ;//[nb_inst_insert]
    76   public    : SC_IN (Tcontrol_t)           **  in_INSERT_STAT_LIST_ACK ;//[nb_inst_insert]
     66  public    : SC_IN (Tcontrol_t)           **  in_INSERT_RENAME_VAL                            ;//[nb_inst_insert]
     67  public    : SC_OUT(Tcontrol_t)           ** out_INSERT_RENAME_ACK                            ;//[nb_inst_insert]
     68  public    : SC_OUT(Tcontrol_t)           ** out_INSERT_INSERT_VAL                            ;//[nb_inst_insert]
     69  public    : SC_IN (Tcontrol_t)           **  in_INSERT_INSERT_ACK                            ;//[nb_inst_insert]
     70  public    : SC_OUT(Tcontrol_t)           ** out_INSERT_RAT_INSERT_VAL                        ;//[nb_inst_insert]
     71  public    : SC_IN (Tcontrol_t)           **  in_INSERT_RAT_RENAME_ACK                        ;//[nb_inst_insert]
     72  public    : SC_IN (Tcontrol_t)           **  in_INSERT_RAT_INSERT_ACK                        ;//[nb_inst_insert]
     73  public    : SC_OUT(Tcontrol_t)           ** out_INSERT_FREE_LIST_VAL                         ;//[nb_inst_insert]
     74  public    : SC_IN (Tcontrol_t)           **  in_INSERT_FREE_LIST_ACK                         ;//[nb_inst_insert]
     75  public    : SC_OUT(Tcontrol_t)           ** out_INSERT_STAT_LIST_VAL                         ;//[nb_inst_insert]
     76  public    : SC_IN (Tcontrol_t)           **  in_INSERT_STAT_LIST_ACK                         ;//[nb_inst_insert]
     77
     78  public    : SC_IN (Tcontrol_t        )   **  in_INSERT_DEPENDENCY_CHECKING_READ_RA           ;//[nb_inst_insert]
     79  public    : SC_IN (Tgeneral_address_t)   **  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY    ;//[nb_inst_insert]
     80  public    : SC_IN (Tcontrol_t        )   **  in_INSERT_DEPENDENCY_CHECKING_READ_RB           ;//[nb_inst_insert]
     81  public    : SC_IN (Tgeneral_address_t)   **  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY    ;//[nb_inst_insert]
     82  public    : SC_IN (Tcontrol_t        )   **  in_INSERT_DEPENDENCY_CHECKING_READ_RC           ;//[nb_inst_insert]
     83  public    : SC_IN (Tspecial_address_t)   **  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY    ;//[nb_inst_insert]
     84  public    : SC_IN (Tcontrol_t        )   **  in_INSERT_DEPENDENCY_CHECKING_WRITE_RD          ;//[nb_inst_insert]
     85  public    : SC_IN (Tgeneral_address_t)   **  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG    ;//[nb_inst_insert]
     86  public    : SC_IN (Tgeneral_address_t)   **  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD;//[nb_inst_insert]
     87  public    : SC_IN (Tgeneral_address_t)   **  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW;//[nb_inst_insert]
     88  public    : SC_IN (Tcontrol_t        )   **  in_INSERT_DEPENDENCY_CHECKING_WRITE_RE          ;//[nb_inst_insert]
     89  public    : SC_IN (Tspecial_address_t)   **  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG    ;//[nb_inst_insert]
     90  public    : SC_IN (Tspecial_address_t)   **  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD;//[nb_inst_insert]
     91  public    : SC_IN (Tspecial_address_t)   **  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW;//[nb_inst_insert]
     92
     93  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_STAT_LIST_READ_RA                     ;//[nb_inst_insert]
     94  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ;//[nb_inst_insert]
     95  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_STAT_LIST_READ_RB                     ;//[nb_inst_insert]
     96  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ;//[nb_inst_insert]
     97  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_STAT_LIST_READ_RC                     ;//[nb_inst_insert]
     98  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ;//[nb_inst_insert]
     99  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_STAT_LIST_WRITE_RD                    ;//[nb_inst_insert]
     100  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ;//[nb_inst_insert]
     101  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_STAT_LIST_WRITE_RE                    ;//[nb_inst_insert]
     102  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ;//[nb_inst_insert]
     103
     104  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_RAT_WRITE_RD                          ;//[nb_inst_insert]
     105  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_RAT_NUM_REG_RD_LOG                    ;//[nb_inst_insert]
     106  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_RAT_NUM_REG_RD_PHY_NEW                ;//[nb_inst_insert]
     107  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_RAT_WRITE_RE                          ;//[nb_inst_insert]
     108  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_RAT_NUM_REG_RE_LOG                    ;//[nb_inst_insert]
     109  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_RAT_NUM_REG_RE_PHY_NEW                ;//[nb_inst_insert]
     110
     111  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_READ_RA                               ;//[nb_inst_insert]
     112  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_NUM_REG_RA_PHY                        ;//[nb_inst_insert]
     113  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_READ_RB                               ;//[nb_inst_insert]
     114  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_NUM_REG_RB_PHY                        ;//[nb_inst_insert]
     115  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_READ_RC                               ;//[nb_inst_insert]
     116  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_NUM_REG_RC_PHY                        ;//[nb_inst_insert]
     117  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_WRITE_RD                              ;//[nb_inst_insert]
     118  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_NUM_REG_RD_LOG                        ;//[nb_inst_insert]
     119  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_NUM_REG_RD_PHY_OLD                    ;//[nb_inst_insert]
     120  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_NUM_REG_RD_PHY_NEW                    ;//[nb_inst_insert]
     121  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_WRITE_RE                              ;//[nb_inst_insert]
     122  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_NUM_REG_RE_LOG                        ;//[nb_inst_insert]
     123  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_NUM_REG_RE_PHY_OLD                    ;//[nb_inst_insert]
     124  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_NUM_REG_RE_PHY_NEW                    ;//[nb_inst_insert]
    77125
    78126    // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    124172  public  : void        transition                (void);
    125173# endif
     174  public  : void        genMealy_insert_valack    (void);
    126175  public  : void        genMealy_insert           (void);
    127176  public  : void        genMealy_retire           (void);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Parameters.cpp

    r81 r88  
    2121#define FUNCTION "Register_translation_unit_Glue::Parameters"
    2222  Parameters::Parameters (uint32_t nb_inst_insert,
    23                           uint32_t nb_inst_retire)
     23                          uint32_t nb_inst_retire,
     24                          uint32_t size_general_register,
     25                          uint32_t size_special_register,
     26                          bool     is_toplevel)
    2427  {
    2528    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin");
    2629
    27     _nb_inst_insert = nb_inst_insert;
    28     _nb_inst_retire = nb_inst_retire;
     30    _nb_inst_insert        = nb_inst_insert;
     31    _nb_inst_retire        = nb_inst_retire;
    2932
    3033    test();
     34
     35    if (is_toplevel)
     36      {
     37        _size_general_register = size_general_register;
     38        _size_special_register = size_special_register;
     39
     40        copy ();
     41      }
     42
    3143    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"End");
    3244  };
     
    4355#undef  FUNCTION
    4456#define FUNCTION "Register_translation_unit_Glue::~Parameters"
    45   Parameters::~Parameters ()
     57  Parameters::~Parameters (void)
     58  {
     59    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin");
     60    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"End");
     61  };
     62
     63#undef  FUNCTION
     64#define FUNCTION "Register_translation_unit_Glue::copy"
     65  void Parameters::copy (void)
    4666  {
    4767    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Parameters_print.cpp

    r81 r88  
    2828
    2929    xml.balise_open("register_translation_unit_glue");
    30     xml.singleton_begin("nb_inst_insert"); xml.attribut("value",toString(_nb_inst_insert)); xml.singleton_end();
    31     xml.singleton_begin("nb_inst_retire"); xml.attribut("value",toString(_nb_inst_retire)); xml.singleton_end();
     30    xml.singleton_begin("nb_inst_insert       "); xml.attribut("value",toString(_nb_inst_insert       )); xml.singleton_end();
     31    xml.singleton_begin("nb_inst_retire       "); xml.attribut("value",toString(_nb_inst_retire       )); xml.singleton_end();
     32    xml.singleton_begin("size_general_register"); xml.attribut("value",toString(_size_general_register)); xml.singleton_end();
     33    xml.singleton_begin("size_special_register"); xml.attribut("value",toString(_size_special_register)); xml.singleton_end();
    3234    xml.balise_close();
    3335
  • 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.cpp

    r81 r88  
    3939    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin");
    4040
     41#if DEBUG_Register_translation_unit_Glue == true
     42    log_printf(INFO,Register_translation_unit_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str());
     43
     44    std::cout << *param << std::endl;
     45#endif   
     46
    4147    log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Allocation");
    4248
     
    4854
    4955#ifdef STATISTICS
    50     if (_usage & USE_STATISTICS)
     56    if (usage_is_set(_usage,USE_STATISTICS))
    5157      {
    5258        log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Allocation of statistics");
     
    5763
    5864#ifdef VHDL
    59     if (_usage & USE_VHDL)
     65    if (usage_is_set(_usage,USE_VHDL))
    6066      {
    6167        // generate the vhdl
     
    6773
    6874#ifdef SYSTEMC
    69     if (_usage & USE_SYSTEMC)
     75    if (usage_is_set(_usage,USE_SYSTEMC))
    7076      {
    7177        log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Method - transition");
     
    8389        SC_METHOD (genMealy_retire);
    8490        dont_initialize ();
    85 //      sensitive << (*(in_CLOCK)).neg();
     91//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
    8692        for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
    8793          sensitive << (*(in_RETIRE_VAL           [i]))
     
    104110# endif   
    105111
    106         log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Method - genMealy_insert");
    107 
    108         SC_METHOD (genMealy_insert);
    109         dont_initialize ();
    110 //      sensitive << (*(in_CLOCK)).neg();
     112        log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Method - genMealy_insert_valack");
     113
     114        SC_METHOD (genMealy_insert_valack);
     115        dont_initialize ();
     116//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
    111117        for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
    112118          sensitive << (*(in_INSERT_RENAME_VAL     [i]))
     
    152158          }
    153159# endif   
     160
     161        log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Method - genMealy_insert");
     162
     163        SC_METHOD (genMealy_insert);
     164        dont_initialize ();
     165//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
     166        for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
     167          sensitive << (*(in_INSERT_DEPENDENCY_CHECKING_READ_RA            [i]))
     168                    << (*(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY     [i]))
     169                    << (*(in_INSERT_DEPENDENCY_CHECKING_READ_RB            [i]))
     170                    << (*(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY     [i]))
     171                    << (*(in_INSERT_DEPENDENCY_CHECKING_READ_RC            [i]))
     172                    << (*(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY     [i]))
     173                    << (*(in_INSERT_DEPENDENCY_CHECKING_WRITE_RD           [i]))
     174                    << (*(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG     [i]))
     175                    << (*(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD [i]))
     176                    << (*(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW [i]))
     177                    << (*(in_INSERT_DEPENDENCY_CHECKING_WRITE_RE           [i]))
     178                    << (*(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG     [i]))
     179                    << (*(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD [i]))
     180                    << (*(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW [i]));
     181       
     182# ifdef SYSTEMCASS_SPECIFIC
     183        // List dependency information
     184# endif   
     185
     186
    154187       
    155188#endif
     
    165198
    166199#ifdef STATISTICS
    167     if (_usage & USE_STATISTICS)
     200    if (usage_is_set(_usage,USE_STATISTICS))
    168201      {
    169202        log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Generate Statistics file");
  • 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

    r81 r88  
    7272      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_VAL ,"stat_list_val" ,Tcontrol_t,1);
    7373      ALLOC1_SIGNAL_IN ( in_INSERT_STAT_LIST_ACK ,"stat_list_ack" ,Tcontrol_t,1);
     74
     75      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_READ_RA           ,"DEPENDENCY_CHECKING_READ_RA"           ,Tcontrol_t        ,1);
     76      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY    ,"DEPENDENCY_CHECKING_NUM_REG_RA_PHY"    ,Tgeneral_address_t,_param->_size_general_register      );
     77      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_READ_RB           ,"DEPENDENCY_CHECKING_READ_RB"           ,Tcontrol_t        ,1);
     78      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY    ,"DEPENDENCY_CHECKING_NUM_REG_RB_PHY"    ,Tgeneral_address_t,_param->_size_general_register      );
     79      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_READ_RC           ,"DEPENDENCY_CHECKING_READ_RC"           ,Tcontrol_t        ,1);
     80      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY    ,"DEPENDENCY_CHECKING_NUM_REG_RC_PHY"    ,Tspecial_address_t,_param->_size_special_register      );
     81      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_WRITE_RD          ,"DEPENDENCY_CHECKING_WRITE_RD"          ,Tcontrol_t        ,1);
     82      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG    ,"DEPENDENCY_CHECKING_NUM_REG_RD_LOG"    ,Tgeneral_address_t,_param->_size_general_register_logic);
     83      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD,"DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD",Tgeneral_address_t,_param->_size_general_register      );
     84      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW,"DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW",Tgeneral_address_t,_param->_size_general_register      );
     85      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_WRITE_RE          ,"DEPENDENCY_CHECKING_WRITE_RE"          ,Tcontrol_t        ,1);
     86      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG    ,"DEPENDENCY_CHECKING_NUM_REG_RE_LOG"    ,Tspecial_address_t,_param->_size_special_register_logic);
     87      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD,"DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD",Tspecial_address_t,_param->_size_special_register      );
     88      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW,"DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW",Tspecial_address_t,_param->_size_special_register      );
     89
     90      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_READ_RA                     ,"STAT_LIST_READ_RA"                     ,Tcontrol_t        ,1);
     91      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ,"STAT_LIST_NUM_REG_RA_PHY"              ,Tgeneral_address_t,_param->_size_general_register      );
     92      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_READ_RB                     ,"STAT_LIST_READ_RB"                     ,Tcontrol_t        ,1);
     93      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ,"STAT_LIST_NUM_REG_RB_PHY"              ,Tgeneral_address_t,_param->_size_general_register      );
     94      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_READ_RC                     ,"STAT_LIST_READ_RC"                     ,Tcontrol_t        ,1);
     95      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,"STAT_LIST_NUM_REG_RC_PHY"              ,Tspecial_address_t,_param->_size_special_register      );
     96      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_WRITE_RD                    ,"STAT_LIST_WRITE_RD"                    ,Tcontrol_t        ,1);
     97      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ,"STAT_LIST_NUM_REG_RD_PHY_NEW"          ,Tgeneral_address_t,_param->_size_general_register      );
     98      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_WRITE_RE                    ,"STAT_LIST_WRITE_RE"                    ,Tcontrol_t        ,1);
     99      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ,"STAT_LIST_NUM_REG_RE_PHY_NEW"          ,Tspecial_address_t,_param->_size_special_register      );
     100
     101      ALLOC1_SIGNAL_OUT(out_INSERT_RAT_WRITE_RD                          ,"RAT_WRITE_RD"                          ,Tcontrol_t        ,1);
     102      ALLOC1_SIGNAL_OUT(out_INSERT_RAT_NUM_REG_RD_LOG                    ,"RAT_NUM_REG_RD_LOG"                    ,Tgeneral_address_t,_param->_size_general_register_logic);
     103      ALLOC1_SIGNAL_OUT(out_INSERT_RAT_NUM_REG_RD_PHY_NEW                ,"RAT_NUM_REG_RD_PHY_NEW"                ,Tgeneral_address_t,_param->_size_general_register      );
     104      ALLOC1_SIGNAL_OUT(out_INSERT_RAT_WRITE_RE                          ,"RAT_WRITE_RE"                          ,Tcontrol_t        ,1);
     105      ALLOC1_SIGNAL_OUT(out_INSERT_RAT_NUM_REG_RE_LOG                    ,"RAT_NUM_REG_RE_LOG"                    ,Tspecial_address_t,_param->_size_special_register_logic);
     106      ALLOC1_SIGNAL_OUT(out_INSERT_RAT_NUM_REG_RE_PHY_NEW                ,"RAT_NUM_REG_RE_PHY_NEW"                ,Tspecial_address_t,_param->_size_special_register      );
     107
     108      ALLOC1_SIGNAL_OUT(out_INSERT_READ_RA                               ,"READ_RA"                               ,Tcontrol_t        ,1);
     109      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RA_PHY                        ,"NUM_REG_RA_PHY"                        ,Tgeneral_address_t,_param->_size_general_register      );
     110      ALLOC1_SIGNAL_OUT(out_INSERT_READ_RB                               ,"READ_RB"                               ,Tcontrol_t        ,1);
     111      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RB_PHY                        ,"NUM_REG_RB_PHY"                        ,Tgeneral_address_t,_param->_size_general_register      );
     112      ALLOC1_SIGNAL_OUT(out_INSERT_READ_RC                               ,"READ_RC"                               ,Tcontrol_t        ,1);
     113      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RC_PHY                        ,"NUM_REG_RC_PHY"                        ,Tspecial_address_t,_param->_size_special_register      );
     114      ALLOC1_SIGNAL_OUT(out_INSERT_WRITE_RD                              ,"WRITE_RD"                              ,Tcontrol_t        ,1);
     115      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RD_LOG                        ,"NUM_REG_RD_LOG"                        ,Tgeneral_address_t,_param->_size_general_register_logic);
     116      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RD_PHY_OLD                    ,"NUM_REG_RD_PHY_OLD"                    ,Tgeneral_address_t,_param->_size_general_register      );
     117      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RD_PHY_NEW                    ,"NUM_REG_RD_PHY_NEW"                    ,Tgeneral_address_t,_param->_size_general_register      );
     118      ALLOC1_SIGNAL_OUT(out_INSERT_WRITE_RE                              ,"WRITE_RE"                              ,Tcontrol_t        ,1);
     119      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_LOG                        ,"NUM_REG_RE_LOG"                        ,Tspecial_address_t,_param->_size_special_register_logic);
     120      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_OLD                    ,"NUM_REG_RE_PHY_OLD"                    ,Tspecial_address_t,_param->_size_special_register      );
     121      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW                    ,"NUM_REG_RE_PHY_NEW"                    ,Tspecial_address_t,_param->_size_special_register      );
    74122    }
    75123
     
    89137
    90138#ifdef POSITION
    91     _component->generate_file();
     139    if (usage_is_set(_usage,USE_POSITION))
     140      _component->generate_file();
    92141#endif
    93142
  • 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_deallocation.cpp

    r81 r88  
    77
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Register_translation_unit_Glue.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2425    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin");
    2526
    26     if (_usage & USE_SYSTEMC)
     27    if (usage_is_set(_usage,USE_SYSTEMC))
    2728      {
    2829        delete     in_CLOCK ;
    2930        delete     in_NRESET;
    3031
    31         delete []  in_INSERT_RENAME_VAL    ;
    32         delete [] out_INSERT_RENAME_ACK    ;
    33         delete [] out_INSERT_INSERT_VAL    ;
    34         delete []  in_INSERT_INSERT_ACK    ;
    35         delete [] out_INSERT_RAT_INSERT_VAL;
    36         delete []  in_INSERT_RAT_RENAME_ACK;
    37         delete []  in_INSERT_RAT_INSERT_ACK;
    38         delete [] out_INSERT_FREE_LIST_VAL ;
    39         delete []  in_INSERT_FREE_LIST_ACK ;
    40         delete [] out_INSERT_STAT_LIST_VAL ;
    41         delete []  in_INSERT_STAT_LIST_ACK ;
     32        DELETE1_SIGNAL( in_INSERT_RENAME_VAL    ,_param->_nb_inst_insert,1);
     33        DELETE1_SIGNAL(out_INSERT_RENAME_ACK    ,_param->_nb_inst_insert,1);
     34        DELETE1_SIGNAL(out_INSERT_INSERT_VAL    ,_param->_nb_inst_insert,1);
     35        DELETE1_SIGNAL( in_INSERT_INSERT_ACK    ,_param->_nb_inst_insert,1);
     36        DELETE1_SIGNAL(out_INSERT_RAT_INSERT_VAL,_param->_nb_inst_insert,1);
     37        DELETE1_SIGNAL( in_INSERT_RAT_RENAME_ACK,_param->_nb_inst_insert,1);
     38        DELETE1_SIGNAL( in_INSERT_RAT_INSERT_ACK,_param->_nb_inst_insert,1);
     39        DELETE1_SIGNAL(out_INSERT_FREE_LIST_VAL ,_param->_nb_inst_insert,1);
     40        DELETE1_SIGNAL( in_INSERT_FREE_LIST_ACK ,_param->_nb_inst_insert,1);
     41        DELETE1_SIGNAL(out_INSERT_STAT_LIST_VAL ,_param->_nb_inst_insert,1);
     42        DELETE1_SIGNAL( in_INSERT_STAT_LIST_ACK ,_param->_nb_inst_insert,1);
     43       
     44        DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_READ_RA           ,_param->_nb_inst_insert,1);
     45        DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY    ,_param->_nb_inst_insert,_param->_size_general_register      );
     46        DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_READ_RB           ,_param->_nb_inst_insert,1);
     47        DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY    ,_param->_nb_inst_insert,_param->_size_general_register      );
     48        DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_READ_RC           ,_param->_nb_inst_insert,1);
     49        DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY    ,_param->_nb_inst_insert,_param->_size_special_register      );
     50        DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_WRITE_RD          ,_param->_nb_inst_insert,1);
     51        DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     52        DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register      );
     53        DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert,_param->_size_general_register      );
     54        DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_WRITE_RE          ,_param->_nb_inst_insert,1);
     55        DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     56        DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register      );
     57        DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register      );
     58       
     59        DELETE1_SIGNAL(out_INSERT_STAT_LIST_READ_RA                     ,_param->_nb_inst_insert,1);
     60        DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ,_param->_nb_inst_insert,_param->_size_general_register      );
     61        DELETE1_SIGNAL(out_INSERT_STAT_LIST_READ_RB                     ,_param->_nb_inst_insert,1);
     62        DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ,_param->_nb_inst_insert,_param->_size_general_register      );
     63        DELETE1_SIGNAL(out_INSERT_STAT_LIST_READ_RC                     ,_param->_nb_inst_insert,1);
     64        DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,_param->_nb_inst_insert,_param->_size_special_register      );
     65        DELETE1_SIGNAL(out_INSERT_STAT_LIST_WRITE_RD                    ,_param->_nb_inst_insert,1);
     66        DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ,_param->_nb_inst_insert,_param->_size_general_register      );
     67        DELETE1_SIGNAL(out_INSERT_STAT_LIST_WRITE_RE                    ,_param->_nb_inst_insert,1);
     68        DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ,_param->_nb_inst_insert,_param->_size_special_register      );
     69       
     70        DELETE1_SIGNAL(out_INSERT_RAT_WRITE_RD                          ,_param->_nb_inst_insert,1);
     71        DELETE1_SIGNAL(out_INSERT_RAT_NUM_REG_RD_LOG                    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     72        DELETE1_SIGNAL(out_INSERT_RAT_NUM_REG_RD_PHY_NEW                ,_param->_nb_inst_insert,_param->_size_general_register      );
     73        DELETE1_SIGNAL(out_INSERT_RAT_WRITE_RE                          ,_param->_nb_inst_insert,1);
     74        DELETE1_SIGNAL(out_INSERT_RAT_NUM_REG_RE_LOG                    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     75        DELETE1_SIGNAL(out_INSERT_RAT_NUM_REG_RE_PHY_NEW                ,_param->_nb_inst_insert,_param->_size_special_register      );
     76       
     77        DELETE1_SIGNAL(out_INSERT_READ_RA                               ,_param->_nb_inst_insert,1);
     78        DELETE1_SIGNAL(out_INSERT_NUM_REG_RA_PHY                        ,_param->_nb_inst_insert,_param->_size_general_register      );
     79        DELETE1_SIGNAL(out_INSERT_READ_RB                               ,_param->_nb_inst_insert,1);
     80        DELETE1_SIGNAL(out_INSERT_NUM_REG_RB_PHY                        ,_param->_nb_inst_insert,_param->_size_general_register      );
     81        DELETE1_SIGNAL(out_INSERT_READ_RC                               ,_param->_nb_inst_insert,1);
     82        DELETE1_SIGNAL(out_INSERT_NUM_REG_RC_PHY                        ,_param->_nb_inst_insert,_param->_size_special_register      );
     83        DELETE1_SIGNAL(out_INSERT_WRITE_RD                              ,_param->_nb_inst_insert,1);
     84        DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_LOG                        ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     85        DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_PHY_OLD                    ,_param->_nb_inst_insert,_param->_size_general_register      );
     86        DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_PHY_NEW                    ,_param->_nb_inst_insert,_param->_size_general_register      );
     87        DELETE1_SIGNAL(out_INSERT_WRITE_RE                              ,_param->_nb_inst_insert,1);
     88        DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_LOG                        ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     89        DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_PHY_OLD                    ,_param->_nb_inst_insert,_param->_size_special_register      );
     90        DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_PHY_NEW                    ,_param->_nb_inst_insert,_param->_size_special_register      );
     91       
     92        DELETE1_SIGNAL( in_RETIRE_VAL          ,_param->_nb_inst_retire,1);
     93        DELETE1_SIGNAL(out_RETIRE_ACK          ,_param->_nb_inst_retire,1);
     94        DELETE1_SIGNAL(out_RETIRE_RAT_VAL      ,_param->_nb_inst_retire,1);
     95        DELETE1_SIGNAL( in_RETIRE_RAT_ACK      ,_param->_nb_inst_retire,1);
     96        DELETE1_SIGNAL(out_RETIRE_STAT_LIST_VAL,_param->_nb_inst_retire,1);
     97        DELETE1_SIGNAL( in_RETIRE_STAT_LIST_ACK,_param->_nb_inst_retire,1);
    4298
    43         delete []  in_RETIRE_VAL           ;
    44         delete [] out_RETIRE_ACK           ;
    45         delete [] out_RETIRE_RAT_VAL       ;
    46         delete []  in_RETIRE_RAT_ACK       ;
    47         delete [] out_RETIRE_STAT_LIST_VAL ;
    48         delete []  in_RETIRE_STAT_LIST_ACK ;
    4999      }
    50100    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • 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_end_cycle.cpp

    r81 r88  
    2626
    2727#ifdef STATISTICS
    28     _stat->end_cycle();
     28    if (usage_is_set(_usage,USE_STATISTICS))
     29      _stat->end_cycle();
    2930#endif   
    3031
     
    3233    // Evaluation before read the ouput signal
    3334//  sc_start(0);
    34     _interfaces->testbench();
     35    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
     36      _interfaces->testbench();
    3537#endif
    3638
  • 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_genMealy_insert.cpp

    r81 r88  
    2323  void Register_translation_unit_Glue::genMealy_insert (void)
    2424  {
    25     log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin");
     25    log_begin(Register_translation_unit_Glue,FUNCTION);
     26    log_function(Register_translation_unit_Glue,FUNCTION,_name.c_str());
    2627
    2728    for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
    2829      {
    29         Tcontrol_t rename_val     = PORT_READ(in_INSERT_RENAME_VAL     [i]);
    30         Tcontrol_t insert_ack     = PORT_READ(in_INSERT_INSERT_ACK     [i]);
    31         Tcontrol_t rat_rename_ack = PORT_READ(in_INSERT_RAT_RENAME_ACK [i]);
    32         Tcontrol_t rat_insert_ack = PORT_READ(in_INSERT_RAT_INSERT_ACK [i]);
    33         Tcontrol_t free_list_ack  = PORT_READ(in_INSERT_FREE_LIST_ACK  [i]);
    34         Tcontrol_t stat_list_ack  = PORT_READ(in_INSERT_STAT_LIST_ACK  [i]);
     30        Tcontrol_t         READ_RA            = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_READ_RA            [i]);
     31        Tgeneral_address_t NUM_REG_RA_PHY     = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY     [i]);
     32        Tcontrol_t         READ_RB            = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_READ_RB            [i]);
     33        Tgeneral_address_t NUM_REG_RB_PHY     = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY     [i]);
     34        Tcontrol_t         READ_RC            = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_READ_RC            [i]);
     35        Tspecial_address_t NUM_REG_RC_PHY     = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY     [i]);
     36        Tcontrol_t         WRITE_RD           = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_WRITE_RD           [i]);
     37        Tgeneral_address_t NUM_REG_RD_LOG     = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG     [i]);
     38        Tgeneral_address_t NUM_REG_RD_PHY_OLD = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD [i]);
     39        Tgeneral_address_t NUM_REG_RD_PHY_NEW = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW [i]);
     40        Tcontrol_t         WRITE_RE           = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_WRITE_RE           [i]);
     41        Tspecial_address_t NUM_REG_RE_LOG     = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG     [i]);
     42        Tspecial_address_t NUM_REG_RE_PHY_OLD = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD [i]);
     43        Tspecial_address_t NUM_REG_RE_PHY_NEW = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW [i]);
    3544
    36         PORT_WRITE(out_INSERT_RENAME_ACK     [i], (insert_ack     and
    37                                                    rat_rename_ack and
    38                                                    rat_insert_ack and
    39                                                    free_list_ack  and
    40                                                    stat_list_ack  ));
    41         PORT_WRITE(out_INSERT_INSERT_VAL     [i], (rename_val     and
    42                                                    rat_rename_ack and
    43                                                    rat_insert_ack and
    44                                                    free_list_ack  and
    45                                                    stat_list_ack  ));
    46         PORT_WRITE(out_INSERT_RAT_INSERT_VAL [i], (rename_val     and
    47                                                    insert_ack     and
    48                                                    rat_rename_ack and
    49                                                    free_list_ack  and
    50                                                    stat_list_ack  ));
    51         PORT_WRITE(out_INSERT_FREE_LIST_VAL  [i], (rename_val     and
    52                                                    insert_ack     and
    53                                                    rat_rename_ack and
    54                                                    rat_insert_ack and
    55                                                    stat_list_ack  ));
    56         PORT_WRITE(out_INSERT_STAT_LIST_VAL  [i], (rename_val     and
    57                                                    insert_ack     and
    58                                                    rat_rename_ack and
    59                                                    rat_insert_ack and
    60                                                    free_list_ack  ));
     45        PORT_WRITE(out_INSERT_STAT_LIST_READ_RA            [i], READ_RA           );
     46        PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RA_PHY     [i], NUM_REG_RA_PHY    );
     47        PORT_WRITE(out_INSERT_STAT_LIST_READ_RB            [i], READ_RB           );
     48        PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RB_PHY     [i], NUM_REG_RB_PHY    );
     49        PORT_WRITE(out_INSERT_STAT_LIST_READ_RC            [i], READ_RC           );
     50        PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RC_PHY     [i], NUM_REG_RC_PHY    );
     51        PORT_WRITE(out_INSERT_STAT_LIST_WRITE_RD           [i], WRITE_RD          );
     52        PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW [i], NUM_REG_RD_PHY_NEW);
     53        PORT_WRITE(out_INSERT_STAT_LIST_WRITE_RE           [i], WRITE_RE          );
     54        PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW [i], NUM_REG_RE_PHY_NEW);
     55       
     56        PORT_WRITE(out_INSERT_RAT_WRITE_RD                 [i], WRITE_RD          );
     57        PORT_WRITE(out_INSERT_RAT_NUM_REG_RD_LOG           [i], NUM_REG_RD_LOG    );
     58        PORT_WRITE(out_INSERT_RAT_NUM_REG_RD_PHY_NEW       [i], NUM_REG_RD_PHY_NEW);
     59        PORT_WRITE(out_INSERT_RAT_WRITE_RE                 [i], WRITE_RE          );
     60        PORT_WRITE(out_INSERT_RAT_NUM_REG_RE_LOG           [i], NUM_REG_RE_LOG    );
     61        PORT_WRITE(out_INSERT_RAT_NUM_REG_RE_PHY_NEW       [i], NUM_REG_RE_PHY_NEW);
     62       
     63        PORT_WRITE(out_INSERT_READ_RA                      [i], READ_RA           );
     64        PORT_WRITE(out_INSERT_NUM_REG_RA_PHY               [i], NUM_REG_RA_PHY    );
     65        PORT_WRITE(out_INSERT_READ_RB                      [i], READ_RB           );
     66        PORT_WRITE(out_INSERT_NUM_REG_RB_PHY               [i], NUM_REG_RB_PHY    );
     67        PORT_WRITE(out_INSERT_READ_RC                      [i], READ_RC           );
     68        PORT_WRITE(out_INSERT_NUM_REG_RC_PHY               [i], NUM_REG_RC_PHY    );
     69        PORT_WRITE(out_INSERT_WRITE_RD                     [i], WRITE_RD          );
     70        PORT_WRITE(out_INSERT_NUM_REG_RD_LOG               [i], NUM_REG_RD_LOG    );
     71        PORT_WRITE(out_INSERT_NUM_REG_RD_PHY_OLD           [i], NUM_REG_RD_PHY_OLD);
     72        PORT_WRITE(out_INSERT_NUM_REG_RD_PHY_NEW           [i], NUM_REG_RD_PHY_NEW);
     73        PORT_WRITE(out_INSERT_WRITE_RE                     [i], WRITE_RE          );
     74        PORT_WRITE(out_INSERT_NUM_REG_RE_LOG               [i], NUM_REG_RE_LOG    );
     75        PORT_WRITE(out_INSERT_NUM_REG_RE_PHY_OLD           [i], NUM_REG_RE_PHY_OLD);
     76        PORT_WRITE(out_INSERT_NUM_REG_RE_PHY_NEW           [i], NUM_REG_RE_PHY_NEW);
    6177      }
    6278
    63     log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"End");
     79    log_end(Register_translation_unit_Glue,FUNCTION);
    6480  };
    6581
  • 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_genMealy_retire.cpp

    r81 r88  
    2323  void Register_translation_unit_Glue::genMealy_retire (void)
    2424  {
    25     log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin");
     25    log_begin(Register_translation_unit_Glue,FUNCTION);
     26    log_function(Register_translation_unit_Glue,FUNCTION,_name.c_str());
    2627
    2728    for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
     
    3637      }
    3738
    38     log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"End");
     39    log_end(Register_translation_unit_Glue,FUNCTION);
    3940  };
    4041
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/Makefile

    r81 r88  
    2424library_clean                   : Register_translation_unit_library_clean
    2525
     26local_clean                     :
     27
    2628include                         $(DIR_COMPONENT)/Makefile.deps
    2729include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/src/main.cpp

    r81 r88  
    6565         _nb_reg_free           ,
    6666         _nb_bank               ,
    67          _size_read_counter     );
     67         _size_read_counter     ,
     68         true //is_toplevel
     69         );
    6870     
    6971      msg(_("%s"),param->print(1).c_str());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/src/test.cpp

    r82 r88  
    2323#endif
    2424
     25  Tusage_t _usage = USE_ALL;
     26
     27//   _usage = usage_unset(_usage,USE_SYSTEMC              );
     28//   _usage = usage_unset(_usage,USE_VHDL                 );
     29//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
     30//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
     31//   _usage = usage_unset(_usage,USE_POSITION             );
     32   _usage = usage_unset(_usage,USE_STATISTICS           );
     33//   _usage = usage_unset(_usage,USE_INFORMATION          );
     34
    2535  Register_translation_unit * _Register_translation_unit = new Register_translation_unit
    2636    (name.c_str(),
     
    2939#endif
    3040     _param,
    31      USE_ALL);
     41     _usage);
    3242 
    3343#ifdef SYSTEMC
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/Makefile

    r81 r88  
    2424library_clean                   : Stat_List_unit_library_clean
    2525
     26local_clean                     :
     27
    2628include                         $(DIR_COMPONENT)/Makefile.deps
    2729include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/main.cpp

    r81 r88  
    6868         _nb_reg_free           ,
    6969         _nb_bank               ,
    70          _size_counter          );
     70         _size_counter          ,
     71         true //is_toplevel
     72         );
    7173     
    7274      msg(_("%s"),param->print(1).c_str());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/test.cpp

    r82 r88  
    3434#endif
    3535
     36  Tusage_t _usage = USE_ALL;
     37
     38//   _usage = usage_unset(_usage,USE_SYSTEMC              );
     39//   _usage = usage_unset(_usage,USE_VHDL                 );
     40//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
     41//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
     42//   _usage = usage_unset(_usage,USE_POSITION             );
     43//   _usage = usage_unset(_usage,USE_STATISTICS           );
     44//   _usage = usage_unset(_usage,USE_INFORMATION          );
     45
    3646  Stat_List_unit * _Stat_List_unit = new Stat_List_unit
    3747    (name.c_str(),
     
    4050#endif
    4151     _param,
    42      USE_ALL);
     52     _usage);
    4353 
    4454#ifdef SYSTEMC
     
    7282  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RC_PHY    ," in_RETIRE_NUM_REG_RC_PHY    ",Tspecial_address_t,_param->_nb_inst_retire);
    7383  ALLOC1_SC_SIGNAL( in_RETIRE_WRITE_RD          ," in_RETIRE_WRITE_RD          ",Tcontrol_t        ,_param->_nb_inst_retire);
     84  ALLOC1_SC_SIGNAL( in_RETIRE_RESTORE_RD_PHY_OLD," in_RETIRE_RESTORE_RD_PHY_OLD",Tcontrol_t        ,_param->_nb_inst_retire);
    7485  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD," in_RETIRE_NUM_REG_RD_PHY_OLD",Tgeneral_address_t,_param->_nb_inst_retire);
    7586  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_NEW," in_RETIRE_NUM_REG_RD_PHY_NEW",Tgeneral_address_t,_param->_nb_inst_retire);
    7687  ALLOC1_SC_SIGNAL( in_RETIRE_WRITE_RE          ," in_RETIRE_WRITE_RE          ",Tcontrol_t        ,_param->_nb_inst_retire);
     88  ALLOC1_SC_SIGNAL( in_RETIRE_RESTORE_RE_PHY_OLD," in_RETIRE_RESTORE_RE_PHY_OLD",Tcontrol_t        ,_param->_nb_inst_retire);
    7789  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD," in_RETIRE_NUM_REG_RE_PHY_OLD",Tspecial_address_t,_param->_nb_inst_retire);
    7890  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW," in_RETIRE_NUM_REG_RE_PHY_NEW",Tspecial_address_t,_param->_nb_inst_retire);
     
    116128  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RC_PHY    ,_param->_nb_inst_retire);
    117129  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_WRITE_RD          ,_param->_nb_inst_retire);
     130  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire);
    118131  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire);
    119132  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RD_PHY_NEW,_param->_nb_inst_retire);
    120133  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_WRITE_RE          ,_param->_nb_inst_retire);
     134  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire);
    121135  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire);
    122136  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RE_PHY_NEW,_param->_nb_inst_retire);
     
    347361              in_RETIRE_NUM_REG_RC_PHY     [i]->write(rc);
    348362              in_RETIRE_WRITE_RD           [i]->write(write_rd);
     363              in_RETIRE_RESTORE_RD_PHY_OLD [i]->write(0);
    349364              in_RETIRE_NUM_REG_RD_PHY_OLD [i]->write(rd_old);
    350365              in_RETIRE_NUM_REG_RD_PHY_NEW [i]->write(rd_new);
    351366              in_RETIRE_WRITE_RE           [i]->write(write_re);
     367              in_RETIRE_RESTORE_RE_PHY_OLD [i]->write(0);
    352368              in_RETIRE_NUM_REG_RE_PHY_OLD [i]->write(re_old);
    353369              in_RETIRE_NUM_REG_RE_PHY_NEW [i]->write(re_new);
     
    486502            if (in_RETIRE_VAL [i]->read() and out_RETIRE_ACK [i]->read())
    487503              {
    488                 Tcontrol_t         read_ra  = in_RETIRE_READ_RA            [i]->read();
    489                 Tgeneral_address_t ra       = in_RETIRE_NUM_REG_RA_PHY     [i]->read();
    490                 Tcontrol_t         read_rb  = in_RETIRE_READ_RB            [i]->read();
    491                 Tgeneral_address_t rb       = in_RETIRE_NUM_REG_RB_PHY     [i]->read();
    492                 Tcontrol_t         read_rc  = in_RETIRE_READ_RC            [i]->read();
    493                 Tspecial_address_t rc       = in_RETIRE_NUM_REG_RC_PHY     [i]->read();
    494                 Tcontrol_t         write_rd = in_RETIRE_WRITE_RD           [i]->read();
    495                 Tgeneral_address_t rd_old   = in_RETIRE_NUM_REG_RD_PHY_OLD [i]->read();
    496                 Tgeneral_address_t rd_new   = in_RETIRE_NUM_REG_RD_PHY_NEW [i]->read();
    497                 Tcontrol_t         write_re = in_RETIRE_WRITE_RE           [i]->read();
    498                 Tgeneral_address_t re_old   = in_RETIRE_NUM_REG_RE_PHY_OLD [i]->read();
    499                 Tgeneral_address_t re_new   = in_RETIRE_NUM_REG_RE_PHY_NEW [i]->read();         
     504                Tcontrol_t         read_ra        = in_RETIRE_READ_RA            [i]->read();
     505                Tgeneral_address_t ra             = in_RETIRE_NUM_REG_RA_PHY     [i]->read();
     506                Tcontrol_t         read_rb        = in_RETIRE_READ_RB            [i]->read();
     507                Tgeneral_address_t rb             = in_RETIRE_NUM_REG_RB_PHY     [i]->read();
     508                Tcontrol_t         read_rc        = in_RETIRE_READ_RC            [i]->read();
     509                Tspecial_address_t rc             = in_RETIRE_NUM_REG_RC_PHY     [i]->read();
     510                Tcontrol_t         write_rd       = in_RETIRE_WRITE_RD           [i]->read();
     511                Tcontrol_t         restore_rd_old = in_RETIRE_RESTORE_RD_PHY_OLD [i]->read();
     512                Tgeneral_address_t rd_old         = in_RETIRE_NUM_REG_RD_PHY_OLD [i]->read();
     513                Tgeneral_address_t rd_new         = in_RETIRE_NUM_REG_RD_PHY_NEW [i]->read();
     514                Tcontrol_t         write_re       = in_RETIRE_WRITE_RE           [i]->read();
     515                Tcontrol_t         restore_re_old = in_RETIRE_RESTORE_RE_PHY_OLD [i]->read();
     516                Tgeneral_address_t re_old         = in_RETIRE_NUM_REG_RE_PHY_OLD [i]->read();
     517                Tgeneral_address_t re_new         = in_RETIRE_NUM_REG_RE_PHY_NEW [i]->read();           
    500518
    501519                LABEL("RETIRE [%d] - Accepted",i);
     
    519537                LABEL("   * status[%d]._counter  : %d",rc,spr_status[rc]._counter );
    520538                LABEL(" * read_rd          : %d",write_rd);
     539                LABEL(" * restore_rd_old   : %d",restore_rd_old);
    521540                LABEL(" * reg_rd_old       : %d",rd_old  );
    522541                LABEL("   * status[%d]._is_free  : %d",rd_old,spr_status[rd_old]._is_free );
     
    530549                LABEL("   * status[%d]._counter  : %d",rd_new,spr_status[rd_new]._counter );
    531550                LABEL(" * read_re          : %d",write_re);
     551                LABEL(" * restore_re_old   : %d",restore_re_old);
    532552                LABEL(" * reg_re_old       : %d",re_old  );
    533553                LABEL("   * status[%d]._is_free  : %d",re_old,spr_status[re_old]._is_free );
     
    555575                if (write_rd)
    556576                  {
    557                     gpr_status[rd_old]._is_link  = 0;
    558                     gpr_status[rd_new]._is_valid = 1;
     577                    if (restore_rd_old)
     578                      {
     579                        gpr_status[rd_old]._is_link  = 1;
     580                        gpr_status[rd_new]._is_link  = 0;
     581                        gpr_status[rd_new]._is_valid = 1;
     582                      }
     583                    else
     584                      {
     585                        gpr_status[rd_old]._is_link  = 0;
     586                        gpr_status[rd_new]._is_valid = 1;
     587                      }
    559588                  }
    560589                if (write_re)
    561590                  {
    562                     spr_status[re_old]._is_link  = 0;
    563                     spr_status[re_new]._is_valid = 1;
    564                   }
     591                    if (restore_re_old)
     592                      {
     593                        spr_status[re_old]._is_link  = 1;
     594                        spr_status[re_new]._is_link  = 0;
     595                        spr_status[re_new]._is_valid = 1;
     596                      }
     597                    else
     598                      {
     599                        spr_status[re_old]._is_link  = 0;
     600                        spr_status[re_new]._is_valid = 1;
     601                      }
     602                  }
    565603              }
    566604
     
    647685  delete []  in_RETIRE_NUM_REG_RC_PHY    ;
    648686  delete []  in_RETIRE_WRITE_RD          ;
     687  delete []  in_RETIRE_RESTORE_RD_PHY_OLD;
    649688  delete []  in_RETIRE_NUM_REG_RD_PHY_OLD;
    650689  delete []  in_RETIRE_NUM_REG_RD_PHY_NEW;
    651690  delete []  in_RETIRE_WRITE_RE          ;
     691  delete []  in_RETIRE_RESTORE_RE_PHY_OLD;
    652692  delete []  in_RETIRE_NUM_REG_RE_PHY_OLD;
    653693  delete []  in_RETIRE_NUM_REG_RE_PHY_NEW;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Parameters.h

    r82 r88  
    3636  public : uint32_t   _size_counter          ;
    3737
    38   public : uint32_t   _size_general_register ;
    39   public : uint32_t   _size_special_register ;
     38//public : uint32_t   _size_general_register ;
     39//public : uint32_t   _size_special_register ;
    4040                     
    4141  public : uint32_t   _max_reader            ;
     
    6363                        uint32_t   nb_reg_free           ,
    6464                        uint32_t   nb_bank               ,
    65                         uint32_t   size_counter          );
     65                        uint32_t   size_counter          ,
     66                        bool       is_toplevel=false
     67                        );
    6668
    6769//   public : Parameters  (Parameters & param) ;
    6870  public : ~Parameters () ;
     71
     72  public :        void            copy       (void);
    6973
    7074  public :        Parameters_test msg_error  (void);
  • 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

    r82 r88  
    1 #ifndef morpheo_behavioural_core_multi_ooo_engine_ooo_engine_rename_unit_register_translation_unit_stat_list_unit_Stat_List_unit_h
     1 #ifndef morpheo_behavioural_core_multi_ooo_engine_ooo_engine_rename_unit_register_translation_unit_stat_list_unit_Stat_List_unit_h
    22#define morpheo_behavioural_core_multi_ooo_engine_ooo_engine_rename_unit_register_translation_unit_stat_list_unit_Stat_List_unit_h
    33
     
    8686  public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RC_PHY    ;//[nb_inst_retire]
    8787  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_WRITE_RD          ;//[nb_inst_retire]
     88  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire]
    8889  public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RD_PHY_OLD;//[nb_inst_retire]
    8990  public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RD_PHY_NEW;//[nb_inst_retire]
    9091  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_WRITE_RE          ;//[nb_inst_retire]
     92  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_RESTORE_RE_PHY_OLD;//[nb_inst_retire]
    9193  public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_OLD;//[nb_inst_retire]
    9294  public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_NEW;//[nb_inst_retire]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Types.h

    r81 r88  
    2323  class stat_list_entry_t
    2424  {
    25   private : bool     _is_free ; // set = is present in free list
    26   private : bool     _is_link ; // set = is present in rat
    27   private : bool     _is_valid; // set = an instruction have write in this register
    28   private : uint32_t _counter ; // number of register that must read this register
     25  public : bool     _is_free ; // set = is present in free list
     26  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
    2929
    3030  public :  stat_list_entry_t (void) {};
     
    5555    }
    5656
    57   public : void retire_write_old (void)
     57  public : void retire_write_old (bool restore_old)
    5858    {
    59       _is_link  = 0;
     59      if (not restore_old)
     60        {
     61          _is_link  = 0;
     62        }
     63      // else nothing
    6064    }
    6165
    62   public : void retire_write_new (void)
     66  public : void retire_write_new (bool restore_old)
    6367    {
     68      if (restore_old)
     69        {
     70          _is_link  = 0;
     71        }
     72
     73      // in all case
    6474      _is_valid = 1;
    6575    }
     
    7989      return ((_is_free  == 0) and
    8090              (_is_link  == 0) and
    81               (_is_valid == 1) and
     91//            (_is_valid == 1) and // if is_link <- 0, then retire_write_old or reset
    8292              (_counter  == 0));
    8393    }
    8494
    85   public : friend std::ostream& operator<< (std::ostream& output_stream,
     95  public : friend std::ostream& operator<< (std::ostream& output,
    8696                                            stat_list_entry_t & x)
    8797    {
    88       output_stream << x._is_free  << " "
    89                     << x._is_link  << " "
    90                     << x._is_valid << " "
    91                     << x._counter;
     98      output << x._is_free  << " "
     99             << x._is_link  << " "
     100             << x._is_valid << " "
     101             << x._counter;
    92102     
    93       return output_stream;
     103      return output;
    94104    }
    95105
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Parameters.cpp

    r81 r88  
    2929                          uint32_t   nb_reg_free           ,
    3030                          uint32_t   nb_bank               ,
    31                           uint32_t   size_counter          )
     31                          uint32_t   size_counter          ,
     32                          bool       is_toplevel)
    3233  {
    3334    log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
     
    4344    _size_counter           = size_counter       ;
    4445
    45     _size_general_register  = log2(nb_general_register);
    46     _size_special_register  = log2(nb_special_register);
    47    
    4846    _max_reader             = 1<<size_counter;
    4947
     
    6866
    6967    test();
     68   
     69    if (is_toplevel)
     70      {
     71        _size_general_register  = log2(nb_general_register);
     72        _size_special_register  = log2(nb_special_register);
     73       
     74        copy ();
     75      }
     76
    7077    log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
    7178  };
     
    8289#undef  FUNCTION
    8390#define FUNCTION "Stat_List_unit::~Parameters"
    84   Parameters::~Parameters ()
     91  Parameters::~Parameters (void)
    8592  {
    8693    log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
    8794    log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
    8895  };
     96
     97#undef  FUNCTION
     98#define FUNCTION "Stat_List_unit::copy"
     99  void Parameters::copy (void)
     100  {
     101    log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
     102    log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
     103  };
     104
    89105
    90106}; // 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.cpp

    r81 r88  
    1616namespace register_translation_unit {
    1717namespace stat_list_unit {
    18 
    1918
    2019#undef  FUNCTION
     
    3938    log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
    4039
     40#if DEBUG_Stat_List_unit == true
     41    log_printf(INFO,Stat_List_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
     42
     43    std::cout << *param << std::endl;
     44#endif   
     45
    4146    log_printf(INFO,Stat_List_unit,FUNCTION,"Allocation");
    4247
     
    4853
    4954#ifdef STATISTICS
    50     if (_usage & USE_STATISTICS)
     55    if (usage_is_set(_usage,USE_STATISTICS))
    5156      {
    5257        log_printf(INFO,Stat_List_unit,FUNCTION,"Allocation of statistics");
     
    5762
    5863#ifdef VHDL
    59     if (_usage & USE_VHDL)
     64    if (usage_is_set(_usage,USE_VHDL))
    6065      {
    6166        // generate the vhdl
     
    6772
    6873#ifdef SYSTEMC
    69     if (_usage & USE_SYSTEMC)
     74    if (usage_is_set(_usage,USE_SYSTEMC))
    7075      {
    7176        // Constant
     
    9095        SC_METHOD (genMoore);
    9196        dont_initialize ();
    92         sensitive << (*(in_CLOCK)).neg();
     97        sensitive << (*(in_CLOCK)).neg(); // need internal register
    9398       
    9499# ifdef SYSTEMCASS_SPECIFIC
     
    100105        SC_METHOD (genMealy);
    101106        dont_initialize ();
    102         sensitive << (*(in_CLOCK)).neg();
     107        sensitive << (*(in_CLOCK)).neg(); // need internal register
    103108        for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
    104109          sensitive << (*(in_INSERT_READ_RA        [i]))
     
    135140
    136141#ifdef STATISTICS
    137     if (_usage & USE_STATISTICS)
     142    if (usage_is_set(_usage,USE_STATISTICS))
    138143      {
    139144        log_printf(INFO,Stat_List_unit,FUNCTION,"Generate Statistics file");
  • 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

    r81 r88  
    8787       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RC_PHY    ,"num_reg_rc_phy"    ,Tspecial_address_t,_param->_size_special_register);
    8888       ALLOC1_SIGNAL_IN ( in_RETIRE_WRITE_RD          ,"write_rd"          ,Tcontrol_t        ,1                             );
     89       ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE_RD_PHY_OLD,"restore_rd_phy_old",Tcontrol_t        ,1                             );
    8990       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RD_PHY_OLD,"num_reg_rd_phy_old",Tgeneral_address_t,_param->_size_general_register);
    9091       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RD_PHY_NEW,"num_reg_rd_phy_new",Tgeneral_address_t,_param->_size_general_register);
    9192       ALLOC1_SIGNAL_IN ( in_RETIRE_WRITE_RE          ,"write_re"          ,Tcontrol_t        ,1                             );
     93       ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE_RE_PHY_OLD,"restore_re_phy_old",Tcontrol_t        ,1                             );
    9294       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register);
    9395       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register);
     
    112114     }
    113115
    114     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     116    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     117    if (usage_is_set(_usage,USE_SYSTEMC))
     118      {
    115119     gpr_stat_list = new stat_list_entry_t * [_param->_nb_bank];
    116120     spr_stat_list = new stat_list_entry_t * [_param->_nb_bank];
     
    128132     internal_PUSH_SPR_VAL      = new Tcontrol_t [_param->_nb_reg_free];
    129133     internal_PUSH_SPR_NUM_BANK = new uint32_t   [_param->_nb_reg_free];
     134      }
     135
     136    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    130137
    131138#ifdef POSITION
    132     _component->generate_file();
     139    if (usage_is_set(_usage,USE_POSITION))
     140      _component->generate_file();
    133141#endif
    134142
  • 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

    r81 r88  
    2424    log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
    2525
    26     if (_usage & USE_SYSTEMC)
     26    if (usage_is_set(_usage,USE_SYSTEMC))
    2727      {
    2828        delete     in_CLOCK ;
     
    5151        delete []  in_RETIRE_NUM_REG_RC_PHY    ;
    5252        delete []  in_RETIRE_WRITE_RD          ;
     53        delete []  in_RETIRE_RESTORE_RD_PHY_OLD;
    5354        delete []  in_RETIRE_NUM_REG_RD_PHY_OLD;
    5455        delete []  in_RETIRE_NUM_REG_RD_PHY_NEW;
    5556        delete []  in_RETIRE_WRITE_RE          ;
     57        delete []  in_RETIRE_RESTORE_RE_PHY_OLD;
    5658        delete []  in_RETIRE_NUM_REG_RE_PHY_OLD;
    5759        delete []  in_RETIRE_NUM_REG_RE_PHY_NEW;
     
    6466        delete []  in_PUSH_SPR_ACK             ;
    6567        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;
    6680      }
     81
     82
    6783    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    68     delete [] gpr_stat_list;
    69     delete [] spr_stat_list;
    70 
    71     delete [] internal_INSERT_ACK       ;
    72     delete [] internal_RETIRE_ACK       ;
    73     delete [] internal_PUSH_GPR_VAL     ;
    74     delete [] internal_PUSH_GPR_NUM_BANK;
    75     delete [] internal_PUSH_SPR_VAL     ;
    76     delete [] internal_PUSH_SPR_NUM_BANK;
    7784
    7885    delete _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_end_cycle.cpp

    r81 r88  
    2626
    2727#ifdef STATISTICS
    28     _stat->end_cycle();
     28    if (usage_is_set(_usage,USE_STATISTICS))
     29      _stat->end_cycle();
    2930#endif   
    3031
     
    3233    // Evaluation before read the ouput signal
    3334//  sc_start(0);
    34     _interfaces->testbench();
     35    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
     36      _interfaces->testbench();
    3537#endif
    3638
  • 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

    r81 r88  
    2323  void Stat_List_unit::genMealy (void)
    2424  {
    25     log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
     25    log_begin(Stat_List_unit,FUNCTION);
     26    log_function(Stat_List_unit,FUNCTION,_name.c_str());
    2627
    2728    for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
     
    5758      }
    5859   
    59     log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
     60    log_end(Stat_List_unit,FUNCTION);
    6061  };
    6162
  • 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

    r81 r88  
    2323  void Stat_List_unit::genMoore (void)
    2424  {
    25     log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
     25    log_begin(Stat_List_unit,FUNCTION);
     26    log_function(Stat_List_unit,FUNCTION,_name.c_str());
    2627
    2728    uint32_t gpr_ptr = internal_GPR_PTR_FREE;
     
    6970      }
    7071   
    71     log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
     72    log_end(Stat_List_unit,FUNCTION);
    7273  };
    7374
  • 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

    r81 r88  
    2323  void Stat_List_unit::transition (void)
    2424  {
    25     log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
     25    log_begin(Stat_List_unit,FUNCTION);
     26    log_function(Stat_List_unit,FUNCTION,_name.c_str());
    2627
    2728    if (PORT_READ(in_NRESET) == 0)
     
    121122              if (PORT_READ(in_RETIRE_WRITE_RD [i]))
    122123                {
     124                  Tcontrol_t restore_old = PORT_READ(in_RETIRE_RESTORE_RD_PHY_OLD [i]);
    123125                  {
    124126                    Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RD_PHY_OLD [i]);
    125127                    uint32_t bank = num_reg >> _param->_shift_gpr;
    126128                    uint32_t reg  = num_reg  & _param->_mask_gpr ;
    127                     gpr_stat_list [bank][reg].retire_write_old();
     129                    gpr_stat_list [bank][reg].retire_write_old(restore_old);
    128130                  }
    129131                  {
     
    131133                    uint32_t bank = num_reg >> _param->_shift_gpr;
    132134                    uint32_t reg  = num_reg  & _param->_mask_gpr ;
    133                     gpr_stat_list [bank][reg].retire_write_new();
     135                    gpr_stat_list [bank][reg].retire_write_new(restore_old);
    134136                  }
    135137                }
     
    137139              if (PORT_READ(in_RETIRE_WRITE_RE [i]))
    138140                {
     141                  Tcontrol_t restore_old = PORT_READ(in_RETIRE_RESTORE_RE_PHY_OLD [i]);
    139142                  {
    140143                    Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_OLD [i]);
    141144                    uint32_t bank = num_reg >> _param->_shift_spr;
    142145                    uint32_t reg  = num_reg  & _param->_mask_spr ;
    143                     spr_stat_list [bank][reg].retire_write_old();
     146                    spr_stat_list [bank][reg].retire_write_old(restore_old);
    144147                  }
    145148                  {
     
    147150                    uint32_t bank = num_reg >> _param->_shift_spr;
    148151                    uint32_t reg  = num_reg  & _param->_mask_spr ;
    149                     spr_stat_list [bank][reg].retire_write_new();
     152                    spr_stat_list [bank][reg].retire_write_new(restore_old);
    150153                  }
    151154                }
     
    171174        internal_SPR_PTR_FREE = ((internal_SPR_PTR_FREE==0)?_param->_nb_special_register_by_bank:internal_SPR_PTR_FREE)-1;
    172175      }
    173    
    174 //     log_printf(TRACE,Stat_List_unit,FUNCTION,"Print gpr_stat_list :");
    175 //     for (uint32_t i=0; i<_param->_nb_bank; i++)
    176 //       {
    177 //      log_printf(TRACE,Stat_List_unit,FUNCTION," * Bank : %d",i);
    178 //      for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++)
    179 //        {
    180 //          std::ostringstream str;
    181 //          str << gpr_stat_list [i][j];
    182 //          log_printf(TRACE,Stat_List_unit,FUNCTION,"   [%d] %s",j,str.str().c_str());
    183 
    184 //        }
    185 //       }
    186 //     log_printf(TRACE,Stat_List_unit,FUNCTION,"Print spr_stat_list :");
    187 //     for (uint32_t i=0; i<_param->_nb_bank; i++)
    188 //       {
    189 //      log_printf(TRACE,Stat_List_unit,FUNCTION," * Bank : %d",i);
    190 //      for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++)
    191 //        {
    192 //          std::ostringstream str;
    193 //          str << spr_stat_list [i][j];
    194 //          log_printf(TRACE,Stat_List_unit,FUNCTION,"   [%d] %s",j,str.str().c_str());
    195 //        }
    196 //       }
     176
     177
     178#if (DEBUG >= DEBUG_TRACE)
     179    log_printf(TRACE,Stat_List_unit,FUNCTION,"  * Dump Stat List");
     180    for (uint32_t i=0; i<_param->_nb_bank; i++)
     181      for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++)
     182        log_printf(TRACE,Stat_List_unit,FUNCTION,"    * GPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d, valid %.1d, counter %.4d",
     183                   i,
     184                   j,
     185                   (i<<_param->_shift_gpr)|j,
     186                   gpr_stat_list[i][j]._is_free,
     187                   gpr_stat_list[i][j]._is_link,
     188                   gpr_stat_list[i][j]._is_valid,
     189                   gpr_stat_list[i][j]._counter);
     190    for (uint32_t i=0; i<_param->_nb_bank; i++)
     191      for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++)
     192        log_printf(TRACE,Stat_List_unit,FUNCTION,"    * SPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d, valid %.1d, counter %.4d",
     193                   i,
     194                   j,
     195                   (i<<_param->_shift_spr)|j,
     196                   spr_stat_list[i][j]._is_free,
     197                   spr_stat_list[i][j]._is_link,
     198                   spr_stat_list[i][j]._is_valid,
     199                   spr_stat_list[i][j]._counter);
     200#endif
    197201
    198202#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
     
    200204#endif
    201205
    202     log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
     206    log_end(Stat_List_unit,FUNCTION);
    203207  };
    204208
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Parameters.h

    r82 r88  
    4040  public : uint32_t   _size_read_counter     ;
    4141
    42   public : uint32_t   _size_front_end_id     ;
    43   public : uint32_t   _size_context_id       ;
    44   public : uint32_t   _size_general_register ;
    45   public : uint32_t   _size_special_register ;
     42//public : uint32_t   _size_front_end_id     ;
     43//public : uint32_t   _size_context_id       ;
     44//public : uint32_t   _size_general_register ;
     45//public : uint32_t   _size_special_register ;
    4646                     
    47   public : uint32_t   _have_port_context_id  ;
    48   public : uint32_t   _have_port_front_end_id;
     47//public : uint32_t   _have_port_context_id  ;
     48//public : uint32_t   _have_port_front_end_id;
    4949
    5050  public : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::dependency_checking_unit::         Parameters * _param_dependency_checking_unit;
     
    6262                        uint32_t   nb_reg_free           ,
    6363                        uint32_t   nb_bank               ,
    64                         uint32_t   size_read_counter     );
     64                        uint32_t   size_read_counter     ,
     65                        bool       is_toplevel=false);
    6566//   public : Parameters  (Parameters & param) ;
    6667  public : ~Parameters () ;
     68
     69  public :        void            copy       (void);
    6770
    6871  public :        Parameters_test msg_error  (void);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Parameters.cpp

    r81 r88  
    2828                          uint32_t   nb_reg_free           ,
    2929                          uint32_t   nb_bank               ,
    30                           uint32_t   size_read_counter     )
     30                          uint32_t   size_read_counter     ,
     31                          bool       is_toplevel)
    3132  {
    3233    log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
     
    4243    _size_read_counter   = size_read_counter  ;
    4344
    44     uint32_t max_nb_context = max<uint32_t>(nb_context, nb_front_end);
     45    uint32_t size_general_register = log2(nb_general_register);
     46    uint32_t size_special_register = log2(nb_special_register);
     47    uint32_t max_nb_context        = max<uint32_t>(nb_context, nb_front_end);
    4548   
    46     _size_front_end_id      = log2(nb_front_end       );
    47     _size_context_id        = log2(max_nb_context     );
    48     _size_general_register  = log2(nb_general_register);
    49     _size_special_register  = log2(nb_special_register);
    50    
    51     _have_port_front_end_id = _size_front_end_id>0;
    52     _have_port_context_id   = _size_context_id  >0;
    53 
    54 
    5549    uint32_t nb_thread = 0;
    5650    for (uint32_t i=0; i<nb_front_end; i++)
     
    9488    _param_register_translation_unit_glue    = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_translation_unit_glue::Parameters
    9589      (_nb_inst_insert,
    96        _nb_inst_retire);
     90       _nb_inst_retire,
     91        size_general_register,
     92        size_special_register);
    9793     
    9894    test();
     95
     96    if (is_toplevel)
     97      {
     98        _size_front_end_id      = log2(nb_front_end       );
     99        _size_context_id        = log2(max_nb_context     );
     100
     101        _size_general_register  = size_general_register;
     102        _size_special_register  = size_special_register;
     103       
     104        _have_port_front_end_id = _size_front_end_id>0;
     105        _have_port_context_id   = _size_context_id  >0;
     106
     107        copy();
     108      }
     109
    99110    log_printf(FUNC,Register_translation_unit,FUNCTION,"End");
    100111  };
     
    124135  };
    125136
     137#undef  FUNCTION
     138#define FUNCTION "Register_translation_unit::copy"
     139  void Parameters::copy (void)
     140  {
     141    log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
     142
     143    COPY(_param_dependency_checking_unit);
     144    COPY(_param_free_list_unit);
     145    COPY(_param_register_address_translation_unit);
     146    COPY(_param_stat_list_unit);   
     147    COPY(_param_register_translation_unit_glue);
     148
     149    log_printf(FUNC,Register_translation_unit,FUNCTION,"End");
     150  };
     151
    126152}; // end namespace register_translation_unit
    127153}; // end namespace rename_unit
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit.cpp

    r81 r88  
    3838    log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
    3939
     40#if DEBUG_Register_translation_unit == true
     41    log_printf(INFO,Register_translation_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
     42
     43    std::cout << *param << std::endl;
     44#endif   
     45
    4046    log_printf(INFO,Register_translation_unit,FUNCTION,"Allocation");
    4147
     
    4753
    4854#ifdef STATISTICS
    49     if (_usage & USE_STATISTICS)
     55    if (usage_is_set(_usage,USE_STATISTICS))
    5056      {
    5157        log_printf(INFO,Register_translation_unit,FUNCTION,"Allocation of statistics");
     
    5662
    5763#ifdef VHDL
    58     if (_usage & USE_VHDL)
     64    if (usage_is_set(_usage,USE_VHDL))
    5965      {
    6066        // generate the vhdl
     
    6672
    6773#ifdef SYSTEMC
    68     if (_usage & USE_SYSTEMC)
     74    if (usage_is_set(_usage,USE_SYSTEMC))
    6975      {
    7076        log_printf(INFO,Register_translation_unit,FUNCTION,"Method - transition");
     
    9096
    9197#ifdef STATISTICS
    92     if (_usage & USE_STATISTICS)
     98    if (usage_is_set(_usage,USE_STATISTICS))
    9399      {
    94100        log_printf(INFO,Register_translation_unit,FUNCTION,"Generate Statistics file");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_allocation.cpp

    r82 r88  
    130130     {
    131131       name = _name+"_dependency_checking_unit";
    132        std::cout << "Create   : " << name << std::endl;
    133        
     132       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
     133
    134134       _component_dependency_checking_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::dependency_checking_unit::Dependency_checking_unit
    135135         (name.c_str()
     
    149149     {
    150150       name = _name+"_free_list_unit";
    151        std::cout << "Create   : " << name << std::endl;
     151       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
    152152       
    153153       _component_free_list_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::free_list_unit::Free_List_unit
     
    168168     {
    169169       name = _name+"_register_address_translation_unit";
    170        std::cout << "Create   : " << name << std::endl;
     170       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
    171171       
    172172       _component_register_address_translation_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit
     
    187187     {
    188188       name = _name+"_stat_list_unit";
    189        std::cout << "Create   : " << name << std::endl;
     189       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
    190190       
    191191       _component_stat_list_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::stat_list_unit::Stat_List_unit
     
    206206     {
    207207       name = _name+"_register_translation_unit_glue";
    208        std::cout << "Create   : " << name << std::endl;
     208       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
    209209       
    210210       _component_register_translation_unit_glue = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_translation_unit_glue::Register_translation_unit_Glue
     
    225225    // ~~~~~[ Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    226226    std::string src,dest;
     227
     228    // ===================================================================
     229    // =====[ register_address_translation_unit ]=========================
     230    // ===================================================================
     231    {
     232      src = _name+"_register_address_translation_unit";
     233      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
     234           
     235      {
     236        dest = _name;
     237#ifdef POSITION
     238        _component->interface_map (src ,"",
     239                                   dest,"");
     240#endif
     241        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
     242        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
     243      }
     244
     245      // ~~~~~[ Interface "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     246      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
     247        {
     248          dest = _name;
     249#ifdef POSITION
     250          _component->interface_map (src ,"rename_"+toString(i)
     251                                     dest,"rename_"+toString(i));
     252#endif
     253         
     254          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_VAL"               ,
     255                              dest, "in_RENAME_"+toString(i)+"_VAL"               );
     256          if (_param->_have_port_front_end_id)
     257          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_FRONT_END_ID"      ,
     258                              dest, "in_RENAME_"+toString(i)+"_FRONT_END_ID"      );
     259          if (_param->_have_port_context_id)
     260          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_CONTEXT_ID"        ,
     261                              dest, "in_RENAME_"+toString(i)+"_CONTEXT_ID"        );
     262          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RA_LOG"    ,
     263                              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RA_LOG"    );
     264          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RB_LOG"    ,
     265                              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RB_LOG"    );
     266          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RC_LOG"    ,
     267                              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RC_LOG"    );
     268          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RD_LOG"    ,
     269                              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RD_LOG"    );
     270          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RE_LOG"    ,
     271                              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RE_LOG"    );
     272
     273          dest = _name+"_register_translation_unit_glue";
     274          COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_ACK",
     275                                   dest, "in_INSERT_"+toString(i)+"_RAT_RENAME_ACK");
     276         
     277          dest = _name+"_dependency_checking_unit";
     278          COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RA_PHY"    ,
     279                                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RA_PHY"    );
     280          COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RB_PHY"    ,
     281                                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RB_PHY"    );
     282          COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RC_PHY"    ,
     283                                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RC_PHY"    );
     284          COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
     285                                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
     286          COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
     287                                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
     288        }
     289
     290      // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     291      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
     292        {
     293          dest = _name+"_register_translation_unit_glue";
     294#ifdef POSITION
     295          _component->interface_map (src ,"rename_"+toString(i)
     296                                     dest,"rename_in_"+toString(i));
     297#endif
     298          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_VAL",
     299                                   dest,"out_INSERT_"+toString(i)+"_RAT_INSERT_VAL");
     300          COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_ACK",
     301                                   dest, "in_INSERT_"+toString(i)+"_RAT_INSERT_ACK");
     302          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RD"      ,
     303                                   dest,"out_INSERT_"+toString(i)+"_RAT_WRITE_RD"      );
     304          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RE"      ,
     305                                   dest,"out_INSERT_"+toString(i)+"_RAT_WRITE_RE"      );
     306          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RD_LOG",
     307                                   dest,"out_INSERT_"+toString(i)+"_RAT_NUM_REG_RD_LOG");
     308          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RE_LOG",
     309                                   dest,"out_INSERT_"+toString(i)+"_RAT_NUM_REG_RE_LOG");
     310          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RD_PHY",
     311                                   dest,"out_INSERT_"+toString(i)+"_RAT_NUM_REG_RD_PHY_NEW");
     312          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RE_PHY",
     313                                   dest,"out_INSERT_"+toString(i)+"_RAT_NUM_REG_RE_PHY_NEW");
     314        }
     315
     316      // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     317      for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
     318        {
     319          dest = _name;
     320#ifdef POSITION
     321          _component->interface_map (src ,"retire_"+toString(i)
     322                                     dest,"retire_"+toString(i));
     323#endif
     324
     325          if (_param->_have_port_front_end_id)
     326          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_FRONT_END_ID"      ,
     327                              dest, "in_RETIRE_"+toString(i)+"_FRONT_END_ID"      );
     328          if (_param->_have_port_context_id)
     329          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_CONTEXT_ID"        ,
     330                              dest, "in_RETIRE_"+toString(i)+"_CONTEXT_ID"        );
     331          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_EVENT_STATE"       ,
     332                              dest, "in_RETIRE_"+toString(i)+"_EVENT_STATE"       );
     333          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_WRITE_RD"          ,
     334                              dest, "in_RETIRE_"+toString(i)+"_WRITE_RD"          );
     335          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_WRITE_RE"          ,
     336                              dest, "in_RETIRE_"+toString(i)+"_WRITE_RE"          );
     337          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RD_LOG"    ,
     338                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RD_LOG"    );
     339          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RE_LOG"    ,
     340                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_LOG"    );
     341          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
     342                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
     343          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
     344                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
     345
     346          dest = _name+"_register_translation_unit_glue";
     347          COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_VAL"          ,
     348                                   dest,"out_RETIRE_"+toString(i)+"_RAT_VAL"      );
     349          COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_ACK"          ,
     350                                   dest, "in_RETIRE_"+toString(i)+"_RAT_ACK"      );
     351
     352          dest = _name+"_stat_list_unit";
     353          COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE_RD_PHY_OLD",
     354                                   dest, "in_RETIRE_"+toString(i)+"_RESTORE_RD_PHY_OLD");
     355          COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD",
     356                                   dest, "in_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD");
     357        }
     358    }
    227359   
     360    // ===================================================================
     361    // =====[ free_list_unit ]============================================
     362    // ===================================================================
     363    {
     364      src = _name+"_free_list_unit";
     365      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
     366           
     367      {
     368        dest = _name;
     369#ifdef POSITION
     370        _component->interface_map (src ,"",
     371                                   dest,"");
     372#endif
     373        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
     374        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
     375      }
     376
     377      // ~~~~~[ interface : "pop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     378      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
     379        {
     380          dest = _name;
     381#ifdef POSITION
     382          _component->interface_map (src ,"pop_"+toString(i)
     383                                     dest,"rename_"+toString(i));
     384#endif
     385         
     386          PORT_MAP(_component,src , "in_POP_"+toString(i)+"_GPR_VAL"    ,
     387                              dest,"in_RENAME_"+toString(i)+"_WRITE_RD");
     388          PORT_MAP(_component,src , "in_POP_"+toString(i)+"_SPR_VAL"    ,
     389                              dest,"in_RENAME_"+toString(i)+"_WRITE_RE");
     390
     391          dest = _name+"_register_translation_unit_glue";
     392          COMPONENT_MAP(_component,src , "in_POP_"+toString(i)+"_VAL" ,
     393                                   dest,"out_INSERT_"+toString(i)+"_FREE_LIST_VAL" );
     394          COMPONENT_MAP(_component,src ,"out_POP_"+toString(i)+"_ACK" ,
     395                                   dest, "in_INSERT_"+toString(i)+"_FREE_LIST_ACK" );
     396
     397          dest = _name+"_dependency_checking_unit";
     398
     399          COMPONENT_MAP(_component,src ,"out_POP_"+toString(i)+"_GPR_NUM_REG",
     400                                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RD_PHY_NEW");
     401          COMPONENT_MAP(_component,src ,"out_POP_"+toString(i)+"_SPR_NUM_REG",
     402                                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
     403        }
     404
     405      // ~~~~~[ interface : "push_gpr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     406      // ~~~~~[ interface : "push_spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     407      for (uint32_t i=0; i<_param->_nb_reg_free; i++)
     408        {
     409          dest = _name+"_stat_list_unit";
     410#ifdef POSITION
     411          _component->interface_map (src ,"push_gpr_"+toString(i)
     412                                     dest,"push_gpr_"+toString(i));
     413#endif
     414
     415          COMPONENT_MAP(_component,src , "in_PUSH_GPR_"+toString(i)+"_VAL"    ,
     416                                   dest,"out_PUSH_GPR_"+toString(i)+"_VAL"    );
     417          COMPONENT_MAP(_component,src ,"out_PUSH_GPR_"+toString(i)+"_ACK"    ,
     418                                   dest, "in_PUSH_GPR_"+toString(i)+"_ACK"    );
     419          COMPONENT_MAP(_component,src , "in_PUSH_GPR_"+toString(i)+"_NUM_REG",
     420                                   dest,"out_PUSH_GPR_"+toString(i)+"_NUM_REG");
     421
     422#ifdef POSITION
     423          _component->interface_map (src ,"push_spr_"+toString(i)
     424                                     dest,"push_spr_"+toString(i));
     425#endif
     426
     427          COMPONENT_MAP(_component,src , "in_PUSH_SPR_"+toString(i)+"_VAL"    ,
     428                                   dest,"out_PUSH_SPR_"+toString(i)+"_VAL"    );
     429          COMPONENT_MAP(_component,src ,"out_PUSH_SPR_"+toString(i)+"_ACK"    ,
     430                                   dest, "in_PUSH_SPR_"+toString(i)+"_ACK"    );
     431          COMPONENT_MAP(_component,src , "in_PUSH_SPR_"+toString(i)+"_NUM_REG",
     432                                   dest,"out_PUSH_SPR_"+toString(i)+"_NUM_REG");
     433        }
     434    }
     435
     436
    228437    // ===================================================================
    229438    // =====[ dependency_checking_unit ]==================================
     
    231440    {
    232441      src = _name+"_dependency_checking_unit";
    233       std::cout << "Instance : " << src << std::endl;
     442      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
    234443           
    235444      {
     
    252461#endif
    253462
    254 //        PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_VAL"               ,dest,);
    255 //        PORT_MAP(_component,src ,"out_RENAME_IN_"+toString(i)+"_ACK"               ,dest,);
     463// //     PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_VAL"               ,dest,);
     464// //     PORT_MAP(_component,src ,"out_RENAME_IN_"+toString(i)+"_ACK"               ,dest,);
    256465          if (_param->_have_port_front_end_id)
    257466          PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_FRONT_END_ID"      ,
     
    280489          PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RE_LOG"    ,
    281490                              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RE_LOG"    );
    282 
    283           dest = _name+"_register_address_translation_unit";
    284491         
    285           PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RA_PHY"    ,
    286                               dest,"out_RENAME_"+toString(i)+"_NUM_REG_RA_PHY"    );
    287           PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RB_PHY"    ,
    288                               dest,"out_RENAME_"+toString(i)+"_NUM_REG_RB_PHY"    );
    289           PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RC_PHY"    ,
    290                               dest,"out_RENAME_"+toString(i)+"_NUM_REG_RC_PHY"    );
    291           PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
    292                               dest,"out_RENAME_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
    293           PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
    294                               dest,"out_RENAME_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
     492          // in_RENAME_IN_NUM_REG_RA_PHY     - register_address_translation_unit
     493          // in_RENAME_IN_NUM_REG_RB_PHY     - register_address_translation_unit
     494          // in_RENAME_IN_NUM_REG_RC_PHY     - register_address_translation_unit
     495          // in_RENAME_IN_NUM_REG_RD_PHY_OLD - register_address_translation_unit
     496          // in_RENAME_IN_NUM_REG_RE_PHY_OLD - register_address_translation_unit
    295497         
    296           dest = _name+"_free_list_unit";
    297          
    298           PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
    299                               dest,"out_POP_"+toString(i)+"_GPR_NUM_REG");
    300           PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
    301                               dest,"out_POP_"+toString(i)+"_SPR_NUM_REG");
     498          // in_RENAME_IN_NUM_REG_RD_PHY_NEW - free_list_unit
     499          // in_RENAME_IN_NUM_REG_RE_PHY_NEW - free_list_unit
    302500        }
    303501
     
    311509#endif
    312510
    313 //        PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_VAL"               ,
    314 //                            dest,"out_INSERT_"+toString(i)+"_VAL"               );
    315 //        PORT_MAP(_component,src , "in_RENAME_OUT_"+toString(i)+"_ACK"               ,
    316 //                            dest, "in_INSERT_"+toString(i)+"_ACK"               );
    317511          if (_param->_have_port_front_end_id)
    318512          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_FRONT_END_ID"      ,
     
    321515          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_CONTEXT_ID"        ,
    322516                              dest,"out_INSERT_"+toString(i)+"_CONTEXT_ID"        );
    323           PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RA"           ,
    324                               dest,"out_INSERT_"+toString(i)+"_READ_RA"           );
    325517          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RA_LOG"    ,
    326518                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RA_LOG"    );
    327           PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RA_PHY"    ,
    328                               dest,"out_INSERT_"+toString(i)+"_NUM_REG_RA_PHY"    );
    329           PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RB"           ,
    330                               dest,"out_INSERT_"+toString(i)+"_READ_RB"           );
    331519          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RB_LOG"    ,
    332520                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RB_LOG"    );
    333           PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RB_PHY"    ,
    334                               dest,"out_INSERT_"+toString(i)+"_NUM_REG_RB_PHY"    );
    335           PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RC"           ,
    336                               dest,"out_INSERT_"+toString(i)+"_READ_RC"           );
    337521          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RC_LOG"    ,
    338522                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RC_LOG"    );
    339           PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RC_PHY"    ,
    340                               dest,"out_INSERT_"+toString(i)+"_NUM_REG_RC_PHY"    );
    341           PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_WRITE_RD"          ,
    342                               dest,"out_INSERT_"+toString(i)+"_WRITE_RD"          );
    343           PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_LOG"    ,
    344                               dest,"out_INSERT_"+toString(i)+"_NUM_REG_RD_LOG"    );
    345           PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
    346                               dest,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
    347           PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
    348                               dest,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_NEW");
    349           PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_WRITE_RE"          ,
    350                               dest,"out_INSERT_"+toString(i)+"_WRITE_RE"          );
    351           PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_LOG"    ,
    352                               dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_LOG"    );
    353           PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
    354                               dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
    355           PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
    356                               dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
    357         }
     523
     524//        PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_VAL"               ,
     525//                            dest,"out_INSERT_"+toString(i)+"_VAL"               );
     526//        PORT_MAP(_component,src , "in_RENAME_OUT_"+toString(i)+"_ACK"               ,
     527//                            dest, "in_INSERT_"+toString(i)+"_ACK"               );
     528
     529          dest = _name+"_register_translation_unit_glue";
     530
     531          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RA"           ,
     532                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_READ_RA"           );
     533          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RA_PHY"    ,
     534                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RA_PHY"    );
     535          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RB"           ,
     536                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_READ_RB"           );
     537          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RB_PHY"    ,
     538                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RB_PHY"    );
     539          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RC"           ,
     540                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_READ_RC"           );
     541          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RC_PHY"    ,
     542                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RC_PHY"    );
     543          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_WRITE_RD"          ,
     544                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_WRITE_RD"          );
     545          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_LOG"    ,
     546                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RD_LOG"    );
     547          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
     548                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD");
     549          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
     550                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW");
     551          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_WRITE_RE"          ,
     552                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_WRITE_RE"          );
     553          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_LOG"    ,
     554                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RE_LOG"    );
     555          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
     556                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD");
     557          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
     558                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW");
     559        }
    358560    }
    359561
    360562    // ===================================================================
    361     // =====[ free_list_unit ]============================================
     563    // =====[ stat_list_unit ]============================================
    362564    // ===================================================================
    363565    {
    364       src = _name+"_free_list_unit";
    365       std::cout << "Instance : " << src << std::endl;
     566      src = _name+"_stat_list_unit";
     567      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
    366568           
    367569      {
     
    375577      }
    376578
    377       // ~~~~~[ interface : "pop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    378       for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
    379         {
    380           dest = _name;
    381 #ifdef POSITION
    382           _component->interface_map (src ,"pop_"+toString(i)
    383                                      dest,"rename_"+toString(i));
    384 #endif
    385          
    386           PORT_MAP(_component,src , "in_POP_"+toString(i)+"_GPR_VAL"    ,
    387                               dest,"in_RENAME_"+toString(i)+"_WRITE_RD");
    388           PORT_MAP(_component,src , "in_POP_"+toString(i)+"_SPR_VAL"    ,
    389                               dest,"in_RENAME_"+toString(i)+"_WRITE_RE");
    390 
    391           dest = _name+"_register_translation_unit_glue";
    392           PORT_MAP(_component,src , "in_POP_"+toString(i)+"_VAL" ,
    393                               dest,"out_INSERT_"+toString(i)+"_FREE_LIST_VAL" );
    394           PORT_MAP(_component,src ,"out_POP_"+toString(i)+"_ACK" ,
    395                               dest, "in_INSERT_"+toString(i)+"_FREE_LIST_ACK" );
    396 
    397           dest = _name+"_dependency_checking_unit";
    398 
    399           PORT_MAP(_component,src ,"out_POP_"+toString(i)+"_GPR_NUM_REG",
    400                               dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RD_PHY_NEW");
    401           PORT_MAP(_component,src ,"out_POP_"+toString(i)+"_SPR_NUM_REG",
    402                               dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
    403         }
    404       // ~~~~~[ interface : "push_gpr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    405       // ~~~~~[ interface : "push_spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    406       for (uint32_t i=0; i<_param->_nb_reg_free; i++)
    407         {
    408           dest = _name+"_stat_list_unit";
    409 #ifdef POSITION
    410           _component->interface_map (src ,"push_gpr_"+toString(i)
    411                                      dest,"push_gpr_"+toString(i));
    412 #endif
    413 
    414           PORT_MAP(_component,src , "in_PUSH_GPR_"+toString(i)+"_VAL"    ,
    415                               dest,"out_PUSH_GPR_"+toString(i)+"_VAL"    );
    416           PORT_MAP(_component,src ,"out_PUSH_GPR_"+toString(i)+"_ACK"    ,
    417                               dest, "in_PUSH_GPR_"+toString(i)+"_ACK"    );
    418           PORT_MAP(_component,src , "in_PUSH_GPR_"+toString(i)+"_NUM_REG",
    419                               dest,"out_PUSH_GPR_"+toString(i)+"_NUM_REG");
    420 
    421 #ifdef POSITION
    422           _component->interface_map (src ,"push_spr_"+toString(i)
    423                                      dest,"push_spr_"+toString(i));
    424 #endif
    425 
    426           PORT_MAP(_component,src , "in_PUSH_SPR_"+toString(i)+"_VAL"    ,
    427                               dest,"out_PUSH_SPR_"+toString(i)+"_VAL"    );
    428           PORT_MAP(_component,src ,"out_PUSH_SPR_"+toString(i)+"_ACK"    ,
    429                               dest, "in_PUSH_SPR_"+toString(i)+"_ACK"    );
    430           PORT_MAP(_component,src , "in_PUSH_SPR_"+toString(i)+"_NUM_REG",
    431                               dest,"out_PUSH_SPR_"+toString(i)+"_NUM_REG");
    432         }
    433     }
    434 
    435     // ===================================================================
    436     // =====[ register_address_translation_unit ]=========================
    437     // ===================================================================
    438     {
    439       src = _name+"_register_address_translation_unit";
    440       std::cout << "Instance : " << src << std::endl;
    441            
    442       {
    443         dest = _name;
    444 #ifdef POSITION
    445         _component->interface_map (src ,"",
    446                                    dest,"");
    447 #endif
    448         PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
    449         PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
    450       }
    451 
    452       // ~~~~~[ Interface "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    453       for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
    454         {
    455           dest = _name;
    456 #ifdef POSITION
    457           _component->interface_map (src ,"rename_"+toString(i)
    458                                      dest,"rename_"+toString(i));
    459 #endif
    460          
    461           PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_VAL"               ,
    462                               dest, "in_RENAME_"+toString(i)+"_VAL"               );
    463           if (_param->_have_port_front_end_id)
    464           PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_FRONT_END_ID"      ,
    465                               dest, "in_RENAME_"+toString(i)+"_FRONT_END_ID"      );
    466           if (_param->_have_port_context_id)
    467           PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_CONTEXT_ID"        ,
    468                               dest, "in_RENAME_"+toString(i)+"_CONTEXT_ID"        );
    469           PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RA_LOG"    ,
    470                               dest, "in_RENAME_"+toString(i)+"_NUM_REG_RA_LOG"    );
    471           PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RB_LOG"    ,
    472                               dest, "in_RENAME_"+toString(i)+"_NUM_REG_RB_LOG"    );
    473           PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RC_LOG"    ,
    474                               dest, "in_RENAME_"+toString(i)+"_NUM_REG_RC_LOG"    );
    475           PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RD_LOG"    ,
    476                               dest, "in_RENAME_"+toString(i)+"_NUM_REG_RD_LOG"    );
    477           PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RE_LOG"    ,
    478                               dest, "in_RENAME_"+toString(i)+"_NUM_REG_RE_LOG"    );
    479 
    480           dest = _name+"_register_translation_unit_glue";
    481           PORT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_ACK",
    482                               dest, "in_INSERT_"+toString(i)+"_RAT_RENAME_ACK");
    483          
    484           dest = _name+"_dependency_checking_unit";
    485           PORT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RA_PHY"    ,
    486                               dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RA_PHY"    );
    487           PORT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RB_PHY"    ,
    488                               dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RB_PHY"    );
    489           PORT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RC_PHY"    ,
    490                               dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RC_PHY"    );
    491           PORT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
    492                               dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
    493           PORT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
    494                               dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
    495         }
    496 
    497579      // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    498580      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
    499581        {
    500           dest = _name+"_dependency_checking_unit";
    501 #ifdef POSITION
    502           _component->interface_map (src ,"rename_"+toString(i)
    503                                      dest,"rename_in_"+toString(i));
    504 #endif
    505 
    506           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RD"      ,
    507                               dest,"out_RENAME_OUT_"+toString(i)+"_WRITE_RD"      );
    508           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RE"      ,
    509                               dest,"out_RENAME_OUT_"+toString(i)+"_WRITE_RE"      );
    510           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RD_LOG",
    511                               dest,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_LOG");
    512           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RE_LOG",
    513                               dest,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_LOG");
    514           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RD_PHY",
    515                               dest,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
    516           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RE_PHY",
    517                               dest,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
    518 
    519582          dest = _name+"_register_translation_unit_glue";
    520           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_VAL",
    521                               dest,"out_INSERT_"+toString(i)+"_RAT_INSERT_VAL");
    522           PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_ACK",
    523                               dest, "in_INSERT_"+toString(i)+"_RAT_INSERT_ACK");
    524         }
    525 
    526       // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    527       for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
    528         {
    529           dest = _name;
    530 #ifdef POSITION
    531           _component->interface_map (src ,"retire_"+toString(i)
    532                                      dest,"retire_"+toString(i));
    533 #endif
    534 
    535           if (_param->_have_port_front_end_id)
    536           PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_FRONT_END_ID"      ,
    537                               dest, "in_RETIRE_"+toString(i)+"_FRONT_END_ID"      );
    538           if (_param->_have_port_context_id)
    539           PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_CONTEXT_ID"        ,
    540                               dest, "in_RETIRE_"+toString(i)+"_CONTEXT_ID"        );
    541           PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_EVENT_STATE"       ,
    542                               dest, "in_RETIRE_"+toString(i)+"_EVENT_STATE"       );
    543           PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_WRITE_RD"          ,
    544                               dest, "in_RETIRE_"+toString(i)+"_WRITE_RD"          );
    545           PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_WRITE_RE"          ,
    546                               dest, "in_RETIRE_"+toString(i)+"_WRITE_RE"          );
    547           PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RD_LOG"    ,
    548                               dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RD_LOG"    );
    549           PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RE_LOG"    ,
    550                               dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_LOG"    );
    551           PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
    552                               dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
    553           PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
    554                               dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
    555 
    556           dest = _name+"_register_translation_unit_glue";
    557           PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_VAL"          ,
    558                               dest,"out_RETIRE_"+toString(i)+"_RAT_VAL"      );
    559           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_ACK"          ,
    560                               dest, "in_RETIRE_"+toString(i)+"_RAT_ACK"      );
    561         }
    562     }
    563    
    564     // ===================================================================
    565     // =====[ stat_list_unit ]============================================
    566     // ===================================================================
    567     {
    568       src = _name+"_stat_list_unit";
    569       std::cout << "Instance : " << src << std::endl;
    570            
    571       {
    572         dest = _name;
    573 #ifdef POSITION
    574         _component->interface_map (src ,"",
    575                                    dest,"");
    576 #endif
    577         PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
    578         PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
    579       }
    580 
    581       // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    582       for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
    583         {
    584           dest = _name+"_dependency_checking_unit";
    585583#ifdef POSITION
    586584          _component->interface_map (src ,"insert_"+toString(i)
    587                                      dest,"rename_out_"+toString(i));
    588 #endif
    589 
    590           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_READ_RA"           ,
    591                               dest,"out_RENAME_OUT_"+toString(i)+"_READ_RA"           );
    592           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RA_PHY"    ,
    593                               dest,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RA_PHY"    );
    594           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_READ_RB"           ,
    595                               dest,"out_RENAME_OUT_"+toString(i)+"_READ_RB"           );
    596           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RB_PHY"    ,
    597                               dest,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RB_PHY"    );
    598           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_READ_RC"           ,
    599                               dest,"out_RENAME_OUT_"+toString(i)+"_READ_RC"           );
    600           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RC_PHY"    ,
    601                               dest,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RC_PHY"    );
    602           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RD"          ,
    603                               dest,"out_RENAME_OUT_"+toString(i)+"_WRITE_RD"          );
    604           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
    605                               dest,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_PHY_NEW");
    606           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RE"          ,
    607                               dest,"out_RENAME_OUT_"+toString(i)+"_WRITE_RE"          );
    608           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
    609                               dest,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
    610 
    611           dest = _name+"_register_translation_unit_glue";
    612           PORT_MAP(_component,src ,  "in_INSERT_"+toString(i)+"_VAL" ,
    613                               dest,"out_INSERT_"+toString(i)+"_STAT_LIST_VAL");
    614           PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_ACK" ,
    615                               dest, "in_INSERT_"+toString(i)+"_STAT_LIST_ACK" );
     585                                     dest,"insert_stat_list_"+toString(i));
     586#endif
     587
     588          COMPONENT_MAP(_component,src ,  "in_INSERT_"+toString(i)+"_VAL" ,
     589                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_VAL");
     590          COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_ACK" ,
     591                                   dest, "in_INSERT_"+toString(i)+"_STAT_LIST_ACK" );
     592          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_READ_RA"           ,
     593                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_READ_RA"           );
     594          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RA_PHY"    ,
     595                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RA_PHY"    );
     596          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_READ_RB"           ,
     597                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_READ_RB"           );
     598          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RB_PHY"    ,
     599                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RB_PHY"    );
     600          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_READ_RC"           ,
     601                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_READ_RC"           );
     602          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RC_PHY"    ,
     603                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RC_PHY"    );
     604          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RD"          ,
     605                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_WRITE_RD"          );
     606          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
     607                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RD_PHY_NEW");
     608          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RE"          ,
     609                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_WRITE_RE"          );
     610          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
     611                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RE_PHY_NEW");
    616612        }
    617613
     
    650646                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
    651647
     648          // in_RETIRE_RESTORE_RD_PHY_OLD - register_address_translation_unit.out_RETIRE_RESTORE_RD_PHY_OLD
     649          // in_RETIRE_RESTORE_RE_PHY_OLD - register_address_translation_unit.out_RETIRE_RESTORE_RE_PHY_OLD
     650
    652651          dest = _name+"_register_translation_unit_glue";
    653           PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_VAL",
    654                               dest,"out_RETIRE_"+toString(i)+"_STAT_LIST_VAL");
    655           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_ACK",
    656                               dest, "in_RETIRE_"+toString(i)+"_STAT_LIST_ACK");
     652          COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_VAL",
     653                                   dest,"out_RETIRE_"+toString(i)+"_STAT_LIST_VAL");
     654          COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_ACK",
     655                                   dest, "in_RETIRE_"+toString(i)+"_STAT_LIST_ACK");
    657656        }
    658657
     
    667666#endif
    668667
    669           PORT_MAP(_component,src ,"out_PUSH_GPR_"+toString(i)+"_VAL"    ,
    670                               dest, "in_PUSH_GPR_"+toString(i)+"_VAL"    );
    671           PORT_MAP(_component,src , "in_PUSH_GPR_"+toString(i)+"_ACK"    ,
    672                               dest,"out_PUSH_GPR_"+toString(i)+"_ACK"    );
    673           PORT_MAP(_component,src ,"out_PUSH_GPR_"+toString(i)+"_NUM_REG",
    674                               dest, "in_PUSH_GPR_"+toString(i)+"_NUM_REG");
     668          //out_PUSH_GPR_VAL     - free_list_unit
     669          // in_PUSH_GPR_ACK     - free_list_unit
     670          //out_PUSH_GPR_NUM_REG - free_list_unit
    675671
    676672#ifdef POSITION
     
    679675#endif
    680676
    681           PORT_MAP(_component,src ,"out_PUSH_SPR_"+toString(i)+"_VAL"    ,
    682                               dest, "in_PUSH_SPR_"+toString(i)+"_VAL"    );
    683           PORT_MAP(_component,src , "in_PUSH_SPR_"+toString(i)+"_ACK"    ,
    684                               dest,"out_PUSH_SPR_"+toString(i)+"_ACK"    );
    685           PORT_MAP(_component,src ,"out_PUSH_SPR_"+toString(i)+"_NUM_REG",
    686                               dest, "in_PUSH_SPR_"+toString(i)+"_NUM_REG");
     677          //out_PUSH_SPR_VAL     - free_list_unit
     678          // in_PUSH_SPR_ACK     - free_list_unit
     679          //out_PUSH_SPR_NUM_REG - free_list_unit
    687680        }
    688681    }
     
    693686    {
    694687      src = _name+"_register_translation_unit_glue";
    695       std::cout << "Instance : " << src << std::endl;
     688      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
    696689           
    697690      {
     
    723716                              dest, "in_INSERT_"+toString(i)+"_ACK"    );
    724717
    725           dest = _name+"_register_address_translation_unit";
    726           PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_RAT_INSERT_VAL",
    727                               dest, "in_INSERT_"+toString(i)+"_VAL");
    728           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_RAT_RENAME_ACK",
    729                               dest,"out_RENAME_"+toString(i)+"_ACK");
    730           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_RAT_INSERT_ACK",
    731                               dest,"out_INSERT_"+toString(i)+"_ACK");
    732 
    733           dest = _name+"_free_list_unit";
    734           PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_FREE_LIST_VAL" ,
    735                               dest, "in_POP_"+toString(i)+"_VAL" );
    736           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_FREE_LIST_ACK" ,
    737                               dest,"out_POP_"+toString(i)+"_ACK" );
    738 
    739           dest = _name+"_stat_list_unit";
    740           PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_STAT_LIST_VAL" ,
    741                               dest, "in_INSERT_"+toString(i)+"_VAL" );
    742           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_STAT_LIST_ACK" ,
    743                               dest,"out_INSERT_"+toString(i)+"_ACK" );
     718          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_READ_RA"           ,
     719                              dest,"out_INSERT_"+toString(i)+"_READ_RA"           );
     720          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RA_PHY"    ,
     721                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RA_PHY"    );
     722          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_READ_RB"           ,
     723                              dest,"out_INSERT_"+toString(i)+"_READ_RB"           );
     724          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RB_PHY"    ,
     725                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RB_PHY"    );
     726          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_READ_RC"           ,
     727                              dest,"out_INSERT_"+toString(i)+"_READ_RC"           );
     728          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RC_PHY"    ,
     729                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RC_PHY"    );
     730          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_WRITE_RD"          ,
     731                              dest,"out_INSERT_"+toString(i)+"_WRITE_RD"          );
     732          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RD_LOG"    ,
     733                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RD_LOG"    );
     734          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
     735                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
     736          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
     737                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_NEW");
     738          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_WRITE_RE"          ,
     739                              dest,"out_INSERT_"+toString(i)+"_WRITE_RE"          );
     740          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RE_LOG"    ,
     741                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_LOG"    );
     742          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
     743                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
     744          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
     745                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
     746
     747          // out_INSERT_RAT_INSERT_VAL - register_address_translation_unit
     748          //  in_INSERT_RAT_RENAME_ACK - register_address_translation_unit
     749          //  in_INSERT_RAT_INSERT_ACK - register_address_translation_unit
     750          // out_INSERT_FREE_LIST_VAL  - free_list_unit
     751          //  in_INSERT_FREE_LIST_ACK  - free_list_unit
     752          // out_INSERT_STAT_LIST_VAL  - stat_list_unit
     753          //  in_INSERT_STAT_LIST_ACK  - stat_list_unit
     754
     755          //  in_INSERT_DEPENDENCY_CHECKING_READ_RA            - dependency_checking_unit
     756          //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY     - dependency_checking_unit
     757          //  in_INSERT_DEPENDENCY_CHECKING_READ_RB            - dependency_checking_unit
     758          //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY     - dependency_checking_unit
     759          //  in_INSERT_DEPENDENCY_CHECKING_READ_RC            - dependency_checking_unit
     760          //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY     - dependency_checking_unit
     761          //  in_INSERT_DEPENDENCY_CHECKING_WRITE_RD           - dependency_checking_unit
     762          //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG     - dependency_checking_unit
     763          //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD - dependency_checking_unit
     764          //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW - dependency_checking_unit
     765          //  in_INSERT_DEPENDENCY_CHECKING_WRITE_RE           - dependency_checking_unit
     766          //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG     - dependency_checking_unit
     767          //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD - dependency_checking_unit
     768          //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW - dependency_checking_unit
     769
     770          // out_INSERT_STAT_LIST_READ_RA                      - stat_list_unit
     771          // out_INSERT_STAT_LIST_NUM_REG_RA_PHY               - stat_list_unit
     772          // out_INSERT_STAT_LIST_READ_RB                      - stat_list_unit
     773          // out_INSERT_STAT_LIST_NUM_REG_RB_PHY               - stat_list_unit
     774          // out_INSERT_STAT_LIST_READ_RC                      - stat_list_unit
     775          // out_INSERT_STAT_LIST_NUM_REG_RC_PHY               - stat_list_unit
     776          // out_INSERT_STAT_LIST_WRITE_RD                     - stat_list_unit
     777          // out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW           - stat_list_unit
     778          // out_INSERT_STAT_LIST_WRITE_RE                     - stat_list_unit
     779          // out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW           - stat_list_unit
     780
     781          // out_INSERT_RAT_WRITE_RD                           - register_address_translation_unit
     782          // out_INSERT_RAT_NUM_REG_RD_LOG                     - register_address_translation_unit
     783          // out_INSERT_RAT_NUM_REG_RD_PHY_NEW                 - register_address_translation_unit
     784          // out_INSERT_RAT_WRITE_RE                           - register_address_translation_unit
     785          // out_INSERT_RAT_NUM_REG_RE_LOG                     - register_address_translation_unit
     786          // out_INSERT_RAT_NUM_REG_RE_PHY_NEW                 - register_address_translation_unit
    744787        }
    745788
     
    758801                              dest,"out_RETIRE_"+toString(i)+"_ACK"          );
    759802
    760           dest = _name+"_register_address_translation_unit";
    761           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RAT_VAL"      ,
    762                               dest, "in_RETIRE_"+toString(i)+"_VAL"          );
    763           PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_RAT_ACK"      ,
    764                               dest,"out_RETIRE_"+toString(i)+"_ACK"          );
    765 
    766           dest = _name+"_stat_list_unit";
    767           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_STAT_LIST_VAL",
    768                               dest, "in_RETIRE_"+toString(i)+"_VAL");
    769           PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_STAT_LIST_ACK",
    770                               dest,"out_RETIRE_"+toString(i)+"_ACK");
     803          // out_RETIRE_RAT_VAL       - register_address_translation_unit
     804          //  in_RETIRE_RAT_ACK       - register_address_translation_unit
     805          // out_RETIRE_STAT_LIST_VAL - stat_list_unit
     806          //  in_RETIRE_STAT_LIST_ACK - stat_list_unit
    771807        }
    772808     }
     
    774810
    775811    // ~~~~~[ Others ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    776      _component->test_map();
    777 
    778 #ifdef POSITION
    779     _component->generate_file();
     812#if (DEBUG_Register_translation_unit == true)
     813    _component->test_map();
     814#endif
     815
     816#ifdef POSITION
     817    if (usage_is_set(_usage,USE_POSITION))
     818      _component->generate_file();
    780819#endif
    781820
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_deallocation.cpp

    r81 r88  
    2323    log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
    2424
    25     if (_usage & USE_SYSTEMC)
     25    if (usage_is_set(_usage,USE_SYSTEMC))
    2626      {
    2727        delete    in_CLOCK ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_end_cycle.cpp

    r81 r88  
    2525
    2626#ifdef STATISTICS
    27     _stat->end_cycle();
     27    if (usage_is_set(_usage,USE_STATISTICS))
     28      _stat->end_cycle();
    2829#endif   
    2930
     
    3132    // Evaluation before read the ouput signal
    3233//  sc_start(0);
    33     _interfaces->testbench();
     34    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
     35      _interfaces->testbench();
    3436#endif
    3537
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/Makefile.deps

    r81 r88  
    1313include                         $(DIR_MORPHEO)/Behavioural/Makefile.deps
    1414endif
     15ifndef Priority
     16include                         $(DIR_MORPHEO)/Behavioural/Generic/Priority/Makefile.deps
     17endif
    1518
    1619#-----[ Directory ]----------------------------------------
    1720
    18 Rename_select_DIR                       =       $(DIR_MORPHEO)/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select
     21Rename_select_DIR               =       $(DIR_MORPHEO)/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select
    1922
    2023#-----[ Library ]------------------------------------------
    2124
    22 Rename_select_LIBRARY           =       -lRename_select \
     25Rename_select_LIBRARY           =       -lRename_select                 \
     26                                        $(Priority_LIBRARY)             \
    2327                                        $(Behavioural_LIBRARY) 
    2428
    25 Rename_select_DIR_LIBRARY               =       -L$(Rename_select_DIR)/lib      \
     29Rename_select_DIR_LIBRARY       =       -L$(Rename_select_DIR)/lib      \
     30                                        $(Priority_DIR_LIBRARY)         \
    2631                                        $(Behavioural_DIR_LIBRARY)
    2732
     
    3136                                @\
    3237                                $(MAKE) Behavioural_library;            \
     38                                $(MAKE) Priority_library;               \
    3339                                $(MAKE) --directory=$(Rename_select_DIR) --makefile=Makefile;
    3440
     
    3642                                @\
    3743                                $(MAKE) Behavioural_library_clean;      \
     44                                $(MAKE) Priority_library_clean;         \
    3845                                $(MAKE) --directory=$(Rename_select_DIR) --makefile=Makefile clean;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/SelfTest/Makefile

    r81 r88  
    2424library_clean                   : Rename_select_library_clean
    2525
     26local_clean                     :
     27
    2628include                         $(DIR_COMPONENT)/Makefile.deps
    2729include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/SelfTest/src/main.cpp

    r81 r88  
    1616  err (_(" * nb_front_end                         (uint32_t         )\n"));
    1717  err (_(" * nb_context            [nb_front_end] (uint32_t         )\n"));
     18//   err (_(" * size_nb_front_end_id                 (uint32_t         )\n"));
     19//   err (_(" * size_nb_context_id                   (uint32_t         )\n"));
    1820  err (_(" * max_branch_speculated                (uint32_t         )\n"));
    1921  err (_(" * size_general_data                    (uint32_t         )\n"));
     
    4951    _nb_context [i] = atoi(argv[x++]);
    5052
     53//   uint32_t          _size_front_end_id    = atoi(argv[x++]);
     54//   uint32_t          _size_context_id      = atoi(argv[x++]);
    5155  uint32_t          _max_branch_speculated= atoi(argv[x++]);
    5256  uint32_t          _size_general_data    = atoi(argv[x++]);
     
    6670        (_nb_front_end         ,
    6771         _nb_context           ,
     72//          _size_front_end_id    ,
     73//          _size_context_id      ,
    6874         _max_branch_speculated,
    6975         _size_general_data    ,
     
    7278         _nb_front_end_select  ,
    7379         _priority             ,
    74          _load_balancing       );
     80         _load_balancing       ,
     81         true // is_toplevel
     82         );
    7583     
    7684      msg(_("%s"),param->print(1).c_str());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/SelfTest/src/test.cpp

    r82 r88  
    2323#endif
    2424
     25  Tusage_t _usage = USE_ALL;
     26
     27//   _usage = usage_unset(_usage,USE_SYSTEMC              );
     28//   _usage = usage_unset(_usage,USE_VHDL                 );
     29//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
     30//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
     31//   _usage = usage_unset(_usage,USE_POSITION             );
     32//   _usage = usage_unset(_usage,USE_STATISTICS           );
     33//   _usage = usage_unset(_usage,USE_INFORMATION          );
     34
    2535  Rename_select * _Rename_select = new Rename_select
    2636    (name.c_str(),
     
    2939#endif
    3040     _param,
    31      USE_ALL);
     41     _usage);
    3242 
    3343#ifdef SYSTEMC
     
    4050  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
    4151
    42   ALLOC2_SC_SIGNAL( in_RENAME_IN_VAL           ," in_RENAME_IN_VAL           ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    43   ALLOC2_SC_SIGNAL(out_RENAME_IN_ACK           ,"out_RENAME_IN_ACK           ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    44   ALLOC2_SC_SIGNAL( in_RENAME_IN_FRONT_END_ID  ," in_RENAME_IN_FRONT_END_ID  ",Tcontext_t        ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    45   ALLOC2_SC_SIGNAL( in_RENAME_IN_CONTEXT_ID    ," in_RENAME_IN_CONTEXT_ID    ",Tcontext_t        ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    46   ALLOC2_SC_SIGNAL( in_RENAME_IN_DEPTH         ," in_RENAME_IN_DEPTH         ",Tdepth_t          ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    47   ALLOC2_SC_SIGNAL( in_RENAME_IN_TYPE          ," in_RENAME_IN_TYPE          ",Ttype_t           ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    48   ALLOC2_SC_SIGNAL( in_RENAME_IN_OPERATION     ," in_RENAME_IN_OPERATION     ",Toperation_t      ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    49   ALLOC2_SC_SIGNAL( in_RENAME_IN_ADDRESS       ," in_RENAME_IN_ADDRESS       ",Tgeneral_data_t   ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    50   ALLOC2_SC_SIGNAL( in_RENAME_IN_HAS_IMMEDIAT  ," in_RENAME_IN_HAS_IMMEDIAT  ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    51   ALLOC2_SC_SIGNAL( in_RENAME_IN_IMMEDIAT      ," in_RENAME_IN_IMMEDIAT      ",Tgeneral_data_t   ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    52   ALLOC2_SC_SIGNAL( in_RENAME_IN_READ_RA       ," in_RENAME_IN_READ_RA       ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    53   ALLOC2_SC_SIGNAL( in_RENAME_IN_NUM_REG_RA    ," in_RENAME_IN_NUM_REG_RA    ",Tgeneral_address_t,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    54   ALLOC2_SC_SIGNAL( in_RENAME_IN_READ_RB       ," in_RENAME_IN_READ_RB       ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    55   ALLOC2_SC_SIGNAL( in_RENAME_IN_NUM_REG_RB    ," in_RENAME_IN_NUM_REG_RB    ",Tgeneral_address_t,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    56   ALLOC2_SC_SIGNAL( in_RENAME_IN_READ_RC       ," in_RENAME_IN_READ_RC       ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    57   ALLOC2_SC_SIGNAL( in_RENAME_IN_NUM_REG_RC    ," in_RENAME_IN_NUM_REG_RC    ",Tspecial_address_t,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    58   ALLOC2_SC_SIGNAL( in_RENAME_IN_WRITE_RD      ," in_RENAME_IN_WRITE_RD      ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    59   ALLOC2_SC_SIGNAL( in_RENAME_IN_NUM_REG_RD    ," in_RENAME_IN_NUM_REG_RD    ",Tgeneral_address_t,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    60   ALLOC2_SC_SIGNAL( in_RENAME_IN_WRITE_RE      ," in_RENAME_IN_WRITE_RE      ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    61   ALLOC2_SC_SIGNAL( in_RENAME_IN_NUM_REG_RE    ," in_RENAME_IN_NUM_REG_RE    ",Tspecial_address_t,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    62   ALLOC2_SC_SIGNAL( in_RENAME_IN_EXCEPTION_USE ," in_RENAME_IN_EXCEPTION_USE ",Texception_t      ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
     52  ALLOC2_SC_SIGNAL( in_RENAME_IN_VAL           ," in_RENAME_IN_VAL           ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     53  ALLOC2_SC_SIGNAL(out_RENAME_IN_ACK           ,"out_RENAME_IN_ACK           ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     54  ALLOC2_SC_SIGNAL( in_RENAME_IN_FRONT_END_ID  ," in_RENAME_IN_FRONT_END_ID  ",Tcontext_t        ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     55  ALLOC2_SC_SIGNAL( in_RENAME_IN_CONTEXT_ID    ," in_RENAME_IN_CONTEXT_ID    ",Tcontext_t        ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     56  ALLOC2_SC_SIGNAL( in_RENAME_IN_DEPTH         ," in_RENAME_IN_DEPTH         ",Tdepth_t          ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     57  ALLOC2_SC_SIGNAL( in_RENAME_IN_TYPE          ," in_RENAME_IN_TYPE          ",Ttype_t           ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     58  ALLOC2_SC_SIGNAL( in_RENAME_IN_OPERATION     ," in_RENAME_IN_OPERATION     ",Toperation_t      ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     59  ALLOC2_SC_SIGNAL( in_RENAME_IN_NO_EXECUTE    ," in_RENAME_IN_NO_EXECUTE    ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     60  ALLOC2_SC_SIGNAL( in_RENAME_IN_IS_DELAY_SLOT ," in_RENAME_IN_IS_DELAY_SLOT ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     61  ALLOC2_SC_SIGNAL( in_RENAME_IN_ADDRESS       ," in_RENAME_IN_ADDRESS       ",Tgeneral_data_t   ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     62  ALLOC2_SC_SIGNAL( in_RENAME_IN_HAS_IMMEDIAT  ," in_RENAME_IN_HAS_IMMEDIAT  ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     63  ALLOC2_SC_SIGNAL( in_RENAME_IN_IMMEDIAT      ," in_RENAME_IN_IMMEDIAT      ",Tgeneral_data_t   ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     64  ALLOC2_SC_SIGNAL( in_RENAME_IN_READ_RA       ," in_RENAME_IN_READ_RA       ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     65  ALLOC2_SC_SIGNAL( in_RENAME_IN_NUM_REG_RA    ," in_RENAME_IN_NUM_REG_RA    ",Tgeneral_address_t,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     66  ALLOC2_SC_SIGNAL( in_RENAME_IN_READ_RB       ," in_RENAME_IN_READ_RB       ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     67  ALLOC2_SC_SIGNAL( in_RENAME_IN_NUM_REG_RB    ," in_RENAME_IN_NUM_REG_RB    ",Tgeneral_address_t,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     68  ALLOC2_SC_SIGNAL( in_RENAME_IN_READ_RC       ," in_RENAME_IN_READ_RC       ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     69  ALLOC2_SC_SIGNAL( in_RENAME_IN_NUM_REG_RC    ," in_RENAME_IN_NUM_REG_RC    ",Tspecial_address_t,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     70  ALLOC2_SC_SIGNAL( in_RENAME_IN_WRITE_RD      ," in_RENAME_IN_WRITE_RD      ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     71  ALLOC2_SC_SIGNAL( in_RENAME_IN_NUM_REG_RD    ," in_RENAME_IN_NUM_REG_RD    ",Tgeneral_address_t,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     72  ALLOC2_SC_SIGNAL( in_RENAME_IN_WRITE_RE      ," in_RENAME_IN_WRITE_RE      ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     73  ALLOC2_SC_SIGNAL( in_RENAME_IN_NUM_REG_RE    ," in_RENAME_IN_NUM_REG_RE    ",Tspecial_address_t,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     74  ALLOC2_SC_SIGNAL( in_RENAME_IN_EXCEPTION_USE ," in_RENAME_IN_EXCEPTION_USE ",Texception_t      ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     75  ALLOC2_SC_SIGNAL( in_RENAME_IN_EXCEPTION     ," in_RENAME_IN_EXCEPTION     ",Texception_t      ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
    6376
    6477  ALLOC1_SC_SIGNAL(out_RENAME_OUT_VAL          ,"out_RENAME_OUT_VAL          ",Tcontrol_t        ,_param->_nb_inst_rename);
     
    6982  ALLOC1_SC_SIGNAL(out_RENAME_OUT_TYPE         ,"out_RENAME_OUT_TYPE         ",Ttype_t           ,_param->_nb_inst_rename);
    7083  ALLOC1_SC_SIGNAL(out_RENAME_OUT_OPERATION    ,"out_RENAME_OUT_OPERATION    ",Toperation_t      ,_param->_nb_inst_rename);
     84  ALLOC1_SC_SIGNAL(out_RENAME_OUT_NO_EXECUTE   ,"out_RENAME_OUT_NO_EXECUTE   ",Tcontrol_t        ,_param->_nb_inst_rename);
     85  ALLOC1_SC_SIGNAL(out_RENAME_OUT_IS_DELAY_SLOT,"out_RENAME_OUT_IS_DELAY_SLOT",Tcontrol_t        ,_param->_nb_inst_rename);
    7186  ALLOC1_SC_SIGNAL(out_RENAME_OUT_ADDRESS      ,"out_RENAME_OUT_ADDRESS      ",Tgeneral_data_t   ,_param->_nb_inst_rename);
    7287  ALLOC1_SC_SIGNAL(out_RENAME_OUT_HAS_IMMEDIAT ,"out_RENAME_OUT_HAS_IMMEDIAT ",Tcontrol_t        ,_param->_nb_inst_rename);
     
    8398  ALLOC1_SC_SIGNAL(out_RENAME_OUT_NUM_REG_RE   ,"out_RENAME_OUT_NUM_REG_RE   ",Tspecial_address_t,_param->_nb_inst_rename);
    8499  ALLOC1_SC_SIGNAL(out_RENAME_OUT_EXCEPTION_USE,"out_RENAME_OUT_EXCEPTION_USE",Texception_t      ,_param->_nb_inst_rename);
     100  ALLOC1_SC_SIGNAL(out_RENAME_OUT_EXCEPTION    ,"out_RENAME_OUT_EXCEPTION    ",Texception_t      ,_param->_nb_inst_rename);
    85101 
    86102  /********************************************************
     
    93109  (*(_Rename_select->in_NRESET))       (*(in_NRESET));
    94110
    95   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_VAL           ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    96   INSTANCE2_SC_SIGNAL(_Rename_select,out_RENAME_IN_ACK           ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
     111  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_VAL           ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     112  INSTANCE2_SC_SIGNAL(_Rename_select,out_RENAME_IN_ACK           ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
    97113  if (_param->_have_port_front_end_id)
    98   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_FRONT_END_ID  ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
     114  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_FRONT_END_ID  ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
    99115  if (_param->_have_port_context_id)
    100   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_CONTEXT_ID    ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
     116  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_CONTEXT_ID    ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
    101117  if (_param->_have_port_depth)
    102   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_DEPTH         ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    103   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_TYPE          ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    104   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_OPERATION     ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    105   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_ADDRESS       ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    106   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_HAS_IMMEDIAT  ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    107   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_IMMEDIAT      ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    108   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_READ_RA       ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    109   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_NUM_REG_RA    ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    110   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_READ_RB       ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    111   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_NUM_REG_RB    ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    112   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_READ_RC       ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    113   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_NUM_REG_RC    ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    114   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_WRITE_RD      ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    115   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_NUM_REG_RD    ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    116   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_WRITE_RE      ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    117   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_NUM_REG_RE    ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    118   INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_EXCEPTION_USE ,_param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
     118  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_DEPTH         ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     119  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_TYPE          ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     120  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_OPERATION     ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     121  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_NO_EXECUTE    ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     122  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_IS_DELAY_SLOT ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     123  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_ADDRESS       ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     124  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_HAS_IMMEDIAT  ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     125  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_IMMEDIAT      ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     126  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_READ_RA       ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     127  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_NUM_REG_RA    ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     128  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_READ_RB       ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     129  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_NUM_REG_RB    ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     130  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_READ_RC       ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     131  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_NUM_REG_RC    ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     132  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_WRITE_RD      ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     133  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_NUM_REG_RD    ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     134  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_WRITE_RE      ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     135  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_NUM_REG_RE    ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     136  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_EXCEPTION_USE ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     137  INSTANCE2_SC_SIGNAL(_Rename_select, in_RENAME_IN_EXCEPTION     ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
    119138
    120139  INSTANCE1_SC_SIGNAL(_Rename_select,out_RENAME_OUT_VAL          ,_param->_nb_inst_rename);
     
    128147  INSTANCE1_SC_SIGNAL(_Rename_select,out_RENAME_OUT_TYPE         ,_param->_nb_inst_rename);
    129148  INSTANCE1_SC_SIGNAL(_Rename_select,out_RENAME_OUT_OPERATION    ,_param->_nb_inst_rename);
     149  INSTANCE1_SC_SIGNAL(_Rename_select,out_RENAME_OUT_NO_EXECUTE   ,_param->_nb_inst_rename);
     150  INSTANCE1_SC_SIGNAL(_Rename_select,out_RENAME_OUT_IS_DELAY_SLOT,_param->_nb_inst_rename);
    130151  INSTANCE1_SC_SIGNAL(_Rename_select,out_RENAME_OUT_ADDRESS      ,_param->_nb_inst_rename);
    131152  INSTANCE1_SC_SIGNAL(_Rename_select,out_RENAME_OUT_HAS_IMMEDIAT ,_param->_nb_inst_rename);
     
    142163  INSTANCE1_SC_SIGNAL(_Rename_select,out_RENAME_OUT_NUM_REG_RE   ,_param->_nb_inst_rename);
    143164  INSTANCE1_SC_SIGNAL(_Rename_select,out_RENAME_OUT_EXCEPTION_USE,_param->_nb_inst_rename);
     165  INSTANCE1_SC_SIGNAL(_Rename_select,out_RENAME_OUT_EXCEPTION    ,_param->_nb_inst_rename);
    144166
    145167  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
     
    189211            in_RENAME_IN_TYPE         [i][j]->write(range<Ttype_t           >(rand(),_param->_size_type                  ));
    190212            in_RENAME_IN_OPERATION    [i][j]->write(range<Toperation_t      >(rand(),_param->_size_operation             ));
     213            in_RENAME_IN_NO_EXECUTE   [i][j]->write(rand()%2);
     214            in_RENAME_IN_IS_DELAY_SLOT[i][j]->write(rand()%2);
    191215            in_RENAME_IN_ADDRESS      [i][j]->write(address++                                                             );
    192216            in_RENAME_IN_HAS_IMMEDIAT [i][j]->write(range<Tcontrol_t        >(rand(),1                                   ));
     
    203227            in_RENAME_IN_NUM_REG_RE   [i][j]->write(range<Tspecial_address_t>(rand(),_param->_size_special_register_logic));
    204228            in_RENAME_IN_EXCEPTION_USE[i][j]->write(range<Texception_t      >(rand(),_param->_size_exception             ));
     229            in_RENAME_IN_EXCEPTION    [i][j]->write(range<Texception_t      >(rand(),_param->_size_exception             ));
    205230          }
    206231
     
    256281                      TEST(Ttype_t           ,out_RENAME_OUT_TYPE         [i]->read(),in_RENAME_IN_TYPE         [x][y]->read());
    257282                      TEST(Toperation_t      ,out_RENAME_OUT_OPERATION    [i]->read(),in_RENAME_IN_OPERATION    [x][y]->read());
     283                      TEST(Tcontrol_t        ,out_RENAME_OUT_NO_EXECUTE   [i]->read(),in_RENAME_IN_NO_EXECUTE   [x][y]->read());
     284                      TEST(Tcontrol_t        ,out_RENAME_OUT_IS_DELAY_SLOT[i]->read(),in_RENAME_IN_IS_DELAY_SLOT[x][y]->read());
    258285                      TEST(Tcontrol_t        ,out_RENAME_OUT_HAS_IMMEDIAT [i]->read(),in_RENAME_IN_HAS_IMMEDIAT [x][y]->read());
    259286                      TEST(Tgeneral_data_t   ,out_RENAME_OUT_IMMEDIAT     [i]->read(),in_RENAME_IN_IMMEDIAT     [x][y]->read());
     
    269296                      TEST(Tspecial_address_t,out_RENAME_OUT_NUM_REG_RE   [i]->read(),in_RENAME_IN_NUM_REG_RE   [x][y]->read());
    270297                      TEST(Texception_t      ,out_RENAME_OUT_EXCEPTION_USE[i]->read(),in_RENAME_IN_EXCEPTION_USE[x][y]->read());
    271 
     298                      TEST(Texception_t      ,out_RENAME_OUT_EXCEPTION    [i]->read(),in_RENAME_IN_EXCEPTION    [x][y]->read());
    272299                  }
    273300
     
    300327  delete []  in_RENAME_IN_TYPE          ;
    301328  delete []  in_RENAME_IN_OPERATION     ;
     329  delete []  in_RENAME_IN_NO_EXECUTE    ;
     330  delete []  in_RENAME_IN_IS_DELAY_SLOT ;
    302331  delete []  in_RENAME_IN_ADDRESS       ;
    303332  delete []  in_RENAME_IN_HAS_IMMEDIAT  ;
     
    314343  delete []  in_RENAME_IN_NUM_REG_RE    ;
    315344  delete []  in_RENAME_IN_EXCEPTION_USE ;
     345  delete []  in_RENAME_IN_EXCEPTION     ;
    316346 
    317347  delete [] out_RENAME_OUT_VAL          ;
     
    322352  delete [] out_RENAME_OUT_TYPE         ;
    323353  delete [] out_RENAME_OUT_OPERATION    ;
     354  delete [] out_RENAME_OUT_NO_EXECUTE   ;
     355  delete [] out_RENAME_OUT_IS_DELAY_SLOT;
    324356  delete [] out_RENAME_OUT_ADDRESS      ;
    325357  delete [] out_RENAME_OUT_HAS_IMMEDIAT ;
     
    336368  delete [] out_RENAME_OUT_NUM_REG_RE   ;
    337369  delete [] out_RENAME_OUT_EXCEPTION_USE;
     370  delete [] out_RENAME_OUT_EXCEPTION    ;
    338371#endif
    339372
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/include/Parameters.h

    r82 r88  
    2828  public : uint32_t *        _nb_context            ;//[nb_front_end]
    2929  public : uint32_t          _max_branch_speculated ;
    30   public : uint32_t          _size_general_data     ;
     30//public : uint32_t          _size_general_data     ;
    3131  public : uint32_t          _nb_inst_rename        ;
    3232  public : uint32_t *        _nb_inst_decod         ;//[nb_front_end]
     
    3636
    3737  public : uint32_t          _max_nb_inst_decod     ;
     38//public : uint32_t          _size_depth            ;
     39//public : uint32_t          _size_front_end_id     ;
     40//public : uint32_t          _size_context_id       ;
    3841
    39   public : uint32_t          _size_front_end_id     ;
    40   public : uint32_t          _size_context_id       ;
    41   public : uint32_t          _size_depth            ;
    42 
    43   public : bool              _have_port_front_end_id;
    44   public : bool              _have_port_context_id  ;
    45   public : bool              _have_port_depth       ;
     42//public : bool              _have_port_front_end_id;
     43//public : bool              _have_port_context_id  ;
     44//public : bool              _have_port_depth       ;
    4645
    4746    //-----[ methods ]-----------------------------------------------------------
    4847  public : Parameters  (uint32_t          nb_front_end         ,
    4948                        uint32_t *        nb_context           ,
     49//                      uint32_t          size_front_end_id    ,
     50//                      uint32_t          size_context_id      ,
    5051                        uint32_t          max_branch_speculated,
    5152                        uint32_t          size_general_data    ,
     
    5455                        uint32_t          nb_front_end_select  ,
    5556                        Tpriority_t       priority             ,
    56                         Tload_balancing_t load_balancing       );
    57 //   public : Parameters  (Parameters & param) ;
     57                        Tload_balancing_t load_balancing       ,
     58                        bool              is_toplevel=true);
     59//public : Parameters  (Parameters & param) ;
    5860  public : ~Parameters () ;
     61
     62  public :        void            copy       (void);
    5963
    6064  public :        Parameters_test msg_error  (void);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/include/Rename_select.h

    r82 r88  
    1313#endif
    1414
    15 #include <iostream>
    1615#include "Common/include/ToString.h"
    1716#include "Common/include/Debug.h"
     
    2726#endif
    2827#include "Behavioural/include/Usage.h"
     28
     29#include "Behavioural/Generic/Priority/include/Priority.h"
     30
    2931#include <list>
     32#include <iostream>
    3033
    3134namespace morpheo {
     
    7174  public    : SC_IN (Ttype_t           )  ***  in_RENAME_IN_TYPE          ;//[nb_front_end][nb_inst_decod]
    7275  public    : SC_IN (Toperation_t      )  ***  in_RENAME_IN_OPERATION     ;//[nb_front_end][nb_inst_decod]
     76  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_NO_EXECUTE    ;//[nb_front_end][nb_inst_decod]
     77  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_IS_DELAY_SLOT ;//[nb_front_end][nb_inst_decod]
    7378  public    : SC_IN (Tgeneral_data_t   )  ***  in_RENAME_IN_ADDRESS       ;//[nb_front_end][nb_inst_decod]
    7479  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_HAS_IMMEDIAT  ;//[nb_front_end][nb_inst_decod]
     
    8590  public    : SC_IN (Tspecial_address_t)  ***  in_RENAME_IN_NUM_REG_RE    ;//[nb_front_end][nb_inst_decod]
    8691  public    : SC_IN (Texception_t      )  ***  in_RENAME_IN_EXCEPTION_USE ;//[nb_front_end][nb_inst_decod]
     92  public    : SC_IN (Texception_t      )  ***  in_RENAME_IN_EXCEPTION     ;//[nb_front_end][nb_inst_decod]
    8793
    8894    // ~~~~~[ Interface : "rename_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    94100  public    : SC_OUT(Ttype_t           )   ** out_RENAME_OUT_TYPE         ;//[nb_inst_rename]
    95101  public    : SC_OUT(Toperation_t      )   ** out_RENAME_OUT_OPERATION    ;//[nb_inst_rename]
     102  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_NO_EXECUTE   ;//[nb_inst_rename]
     103  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_IS_DELAY_SLOT;//[nb_inst_rename]
    96104  public    : SC_OUT(Tgeneral_data_t   )   ** out_RENAME_OUT_ADDRESS      ;//[nb_inst_rename]
    97105  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_HAS_IMMEDIAT ;//[nb_inst_rename]
     
    108116  public    : SC_OUT(Tspecial_address_t)   ** out_RENAME_OUT_NUM_REG_RE   ;//[nb_inst_rename]
    109117  public    : SC_OUT(Texception_t      )   ** out_RENAME_OUT_EXCEPTION_USE;//[nb_inst_rename]
     118  public    : SC_OUT(Texception_t      )   ** out_RENAME_OUT_EXCEPTION    ;//[nb_inst_rename]
    110119
    111120    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     121  private   : generic::priority::Priority   * _priority;
    112122
    113123    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    114   private   : uint32_t                        reg_FRONT_END_PRIORITY;
    115124
    116125    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    117   private   : std::list<select_t>             select;
    118126#endif
    119127
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/include/Types.h

    r81 r88  
    1919namespace rename_select {
    2020
    21   class select_t
    22   {
    23   public : uint32_t _front_end ;
    24   public : uint32_t _inst_decod;
    25    
    26   public : select_t (uint32_t front_end,
    27                      uint32_t inst_decod)
    28     {
    29       _front_end  = front_end ;
    30       _inst_decod = inst_decod;
    31     }
    32   };
    33 
    3421}; // end namespace rename_select
    3522}; // end namespace rename_unit
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Parameters.cpp

    r81 r88  
    2222  Parameters::Parameters (uint32_t          nb_front_end         ,
    2323                          uint32_t *        nb_context           ,
     24//                           uint32_t          size_front_end_id    ,
     25//                           uint32_t          size_context_id      ,
    2426                          uint32_t          max_branch_speculated,
    2527                          uint32_t          size_general_data    ,
     
    2830                          uint32_t          nb_front_end_select  ,
    2931                          Tpriority_t       priority             ,
    30                           Tload_balancing_t load_balancing       )
     32                          Tload_balancing_t load_balancing       ,
     33                          bool              is_toplevel)
    3134  {
    3235    log_printf(FUNC,Rename_select,FUNCTION,"Begin");
     
    3538    _nb_context            = nb_context           ;
    3639    _max_branch_speculated = max_branch_speculated;
    37     _size_general_data     = size_general_data    ;
    3840    _nb_inst_rename        = nb_inst_rename       ;
    3941    _nb_inst_decod         = nb_inst_decod        ;
     
    4446    _max_nb_inst_decod     = max<uint32_t>(nb_inst_decod,nb_front_end);
    4547
    46     _size_front_end_id     = log2(nb_front_end);
    47     _size_context_id       = log2(max<uint32_t>(nb_context,nb_front_end));
    48     _size_depth            = log2(max_branch_speculated);
     48    test();
    4949
    50     _have_port_front_end_id= _size_front_end_id > 0;
    51     _have_port_context_id  = _size_context_id   > 0;
    52     _have_port_depth       = _size_depth        > 0;
     50    if (is_toplevel)
     51      {
     52        _size_general_data     = size_general_data    ;
     53        _size_depth            = log2(max_branch_speculated);
     54        _size_front_end_id     = log2(_nb_front_end);
     55        _size_context_id       = log2(max<uint32_t>(_nb_context,_nb_front_end));
    5356       
    54     test();
     57        _have_port_front_end_id= _size_front_end_id > 0;
     58        _have_port_context_id  = _size_context_id   > 0;
     59        _have_port_depth       = _size_depth        > 0;
     60       
     61        copy();
     62      }
     63
    5564    log_printf(FUNC,Rename_select,FUNCTION,"End");
    5665  };
     
    7382  };
    7483
     84#undef  FUNCTION
     85#define FUNCTION "Rename_select::copy"
     86  void Parameters::copy (void)
     87  {
     88    log_printf(FUNC,Rename_select,FUNCTION,"Begin");
     89    log_printf(FUNC,Rename_select,FUNCTION,"End");
     90  };
     91
    7592}; // end namespace rename_select
    7693}; // end namespace rename_unit
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select.cpp

    r81 r88  
    3838    log_printf(FUNC,Rename_select,FUNCTION,"Begin");
    3939
     40#if DEBUG_Core == true
     41    log_printf(INFO,Core,FUNCTION,_("<%s> Parameters"),_name.c_str());
     42
     43    std::cout << *param << std::endl;
     44#endif   
     45
    4046    log_printf(INFO,Rename_select,FUNCTION,"Allocation");
    4147
     
    4753
    4854#ifdef STATISTICS
    49     if (_usage & USE_STATISTICS)
     55    if (usage_is_set(_usage,USE_STATISTICS))
    5056      {
    5157        log_printf(INFO,Rename_select,FUNCTION,"Allocation of statistics");
     
    5662
    5763#ifdef VHDL
    58     if (_usage & USE_VHDL)
     64    if (usage_is_set(_usage,USE_VHDL))
    5965      {
    6066        // generate the vhdl
     
    6672
    6773#ifdef SYSTEMC
    68     if (_usage & USE_SYSTEMC)
     74    if (usage_is_set(_usage,USE_SYSTEMC))
    6975      {
    7076        log_printf(INFO,Rename_select,FUNCTION,"Method - transition");
     
    8995                        << (*(in_RENAME_IN_TYPE          [i][j]))
    9096                        << (*(in_RENAME_IN_OPERATION     [i][j]))
     97                        << (*(in_RENAME_IN_NO_EXECUTE    [i][j]))
     98                        << (*(in_RENAME_IN_IS_DELAY_SLOT [i][j]))
    9199                        << (*(in_RENAME_IN_ADDRESS       [i][j]))
    92100                        << (*(in_RENAME_IN_HAS_IMMEDIAT  [i][j]))
     
    102110                        << (*(in_RENAME_IN_WRITE_RE      [i][j]))
    103111                        << (*(in_RENAME_IN_NUM_REG_RE    [i][j]))
    104                         << (*(in_RENAME_IN_EXCEPTION_USE [i][j]));
     112                        << (*(in_RENAME_IN_EXCEPTION_USE [i][j]))
     113                        << (*(in_RENAME_IN_EXCEPTION     [i][j]));
    105114              if (_param->_have_port_front_end_id)
    106115              sensitive << (*(in_RENAME_IN_FRONT_END_ID  [i][j]));
     
    150159                  (*(out_RENAME_OUT_OPERATION     [x])) (*(in_RENAME_IN_VAL           [i][j]));
    151160                  (*(out_RENAME_OUT_OPERATION     [x])) (*(in_RENAME_IN_OPERATION     [i][j]));
     161                  (*(out_RENAME_OUT_NO_EXECUTE    [x])) (*(in_RENAME_IN_VAL           [i][j]));
     162                  (*(out_RENAME_OUT_NO_EXECUTE    [x])) (*(in_RENAME_IN_NO_EXECUTE    [i][j]));
     163                  (*(out_RENAME_OUT_IS_DELAY_SLOT [x])) (*(in_RENAME_IN_VAL           [i][j]));
     164                  (*(out_RENAME_OUT_IS_DELAY_SLOT [x])) (*(in_RENAME_IN_IS_DELAY_SLOT [i][j]));
    152165                  (*(out_RENAME_OUT_ADDRESS       [x])) (*(in_RENAME_IN_VAL           [i][j]));
    153166                  (*(out_RENAME_OUT_ADDRESS       [x])) (*(in_RENAME_IN_ADDRESS       [i][j]));
     
    178191                  (*(out_RENAME_OUT_EXCEPTION_USE [x])) (*(in_RENAME_IN_VAL           [i][j]));
    179192                  (*(out_RENAME_OUT_EXCEPTION_USE [x])) (*(in_RENAME_IN_EXCEPTION_USE [i][j]));
     193                  (*(out_RENAME_OUT_EXCEPTION     [x])) (*(in_RENAME_IN_VAL           [i][j]));
     194                  (*(out_RENAME_OUT_EXCEPTION     [x])) (*(in_RENAME_IN_EXCEPTION     [i][j]));
    180195                }
    181196          }
     
    194209
    195210#ifdef STATISTICS
    196     if (_usage & USE_STATISTICS)
     211    if (usage_is_set(_usage,USE_STATISTICS))
    197212      {
    198213        log_printf(INFO,Rename_select,FUNCTION,"Generate Statistics file");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_allocation.cpp

    r81 r88  
    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[alloc_interface_it1]);
     60      ALLOC2_INTERFACE("rename_in", IN, EAST, "output of decod's stage", _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    6161     
    62       _ALLOC2_VALACK_IN ( in_RENAME_IN_VAL           ,VAL, _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    63       _ALLOC2_VALACK_OUT(out_RENAME_IN_ACK           ,ACK, _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    64       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_FRONT_END_ID  ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id          , _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    65       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_CONTEXT_ID    ,"context_id"   ,Tcontext_t        ,_param->_size_context_id            , _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    66       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_DEPTH         ,"depth"        ,Tdepth_t          ,_param->_size_depth                 , _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    67       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_TYPE          ,"type"         ,Ttype_t           ,_param->_size_type                  , _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    68       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_OPERATION     ,"operation"    ,Toperation_t      ,_param->_size_operation             , _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    69       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_ADDRESS       ,"address"      ,Tgeneral_data_t   ,_param->_size_general_data          , _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    70       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_HAS_IMMEDIAT  ,"has_immediat" ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    71       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_IMMEDIAT      ,"immediat"     ,Tgeneral_data_t   ,_param->_size_general_data          , _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    72       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_READ_RA       ,"read_ra"      ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    73       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RA    ,"num_reg_ra"   ,Tgeneral_address_t,_param->_size_general_register_logic, _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    74       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_READ_RB       ,"read_rb"      ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    75       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RB    ,"num_reg_rb"   ,Tgeneral_address_t,_param->_size_general_register_logic, _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    76       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_READ_RC       ,"read_rc"      ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    77       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RC    ,"num_reg_rc"   ,Tspecial_address_t,_param->_size_special_register_logic, _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    78       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_WRITE_RD      ,"write_rd"     ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    79       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RD    ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register_logic, _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    80       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_WRITE_RE      ,"write_re"     ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    81       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RE    ,"num_reg_re"   ,Tspecial_address_t,_param->_size_special_register_logic, _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
    82       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION_USE ,"exception_use",Texception_t      ,_param->_size_exception             , _param->_nb_front_end, _param->_nb_inst_decod[alloc_signal_it1]);
     62      _ALLOC2_VALACK_IN ( in_RENAME_IN_VAL           ,VAL, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     63      _ALLOC2_VALACK_OUT(out_RENAME_IN_ACK           ,ACK, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     64      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_FRONT_END_ID  ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id          , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     65      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_CONTEXT_ID    ,"context_id"   ,Tcontext_t        ,_param->_size_context_id            , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     66      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_DEPTH         ,"depth"        ,Tdepth_t          ,_param->_size_depth                 , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     67      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_TYPE          ,"type"         ,Ttype_t           ,_param->_size_type                  , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     68      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_OPERATION     ,"operation"    ,Toperation_t      ,_param->_size_operation             , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     69      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NO_EXECUTE    ,"no_execute"   ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     70      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_IS_DELAY_SLOT ,"is_delay_slot",Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     71      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_ADDRESS       ,"address"      ,Tgeneral_data_t   ,_param->_size_general_data          , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     72      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_HAS_IMMEDIAT  ,"has_immediat" ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     73      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_IMMEDIAT      ,"immediat"     ,Tgeneral_data_t   ,_param->_size_general_data          , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     74      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_READ_RA       ,"read_ra"      ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     75      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RA    ,"num_reg_ra"   ,Tgeneral_address_t,_param->_size_general_register_logic, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     76      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_READ_RB       ,"read_rb"      ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     77      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RB    ,"num_reg_rb"   ,Tgeneral_address_t,_param->_size_general_register_logic, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     78      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_READ_RC       ,"read_rc"      ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     79      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RC    ,"num_reg_rc"   ,Tspecial_address_t,_param->_size_special_register_logic, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     80      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_WRITE_RD      ,"write_rd"     ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     81      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RD    ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register_logic, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     82      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_WRITE_RE      ,"write_re"     ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     83      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RE    ,"num_reg_re"   ,Tspecial_address_t,_param->_size_special_register_logic, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     84      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION_USE ,"exception_use",Texception_t      ,_param->_size_exception             , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     85      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION     ,"exception"    ,Texception_t      ,_param->_size_exception             , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    8386    }
    8487
     
    9497      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_TYPE          ,"type"         ,Ttype_t           ,_param->_size_type                  );
    9598      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_OPERATION     ,"operation"    ,Toperation_t      ,_param->_size_operation             );
     99      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_NO_EXECUTE    ,"no_execute"   ,Tcontrol_t        ,1                                   );
     100      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_IS_DELAY_SLOT ,"is_delay_slot",Tcontrol_t        ,1                                   );
    96101      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_ADDRESS       ,"address"      ,Tgeneral_data_t   ,_param->_size_general_data          );
    97102      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_HAS_IMMEDIAT  ,"has_immediat" ,Tcontrol_t        ,1                                   );
     
    108113      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_NUM_REG_RE    ,"num_reg_re"   ,Tspecial_address_t,_param->_size_special_register_logic);
    109114      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_EXCEPTION_USE ,"exception_use",Texception_t      ,_param->_size_exception             );
     115      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_EXCEPTION     ,"exception"    ,Texception_t      ,_param->_size_exception             );
    110116    }
    111117
    112 
    113118    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     119    _priority = new generic::priority::Priority (_name+"_priority"      ,
     120                                                 _param->_priority      ,
     121                                                 _param->_load_balancing,
     122                                                 _param->_nb_front_end  ,
     123                                                 _param->_nb_inst_decod ,
     124                                                 _param->_nb_front_end_select);
    114125
    115126#ifdef POSITION
    116     _component->generate_file();
     127    if (usage_is_set(_usage,USE_POSITION))
     128      _component->generate_file();
    117129#endif
    118130
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_deallocation.cpp

    r81 r88  
    2323    log_printf(FUNC,Rename_select,FUNCTION,"Begin");
    2424
    25     if (_usage & USE_SYSTEMC)
     25    if (usage_is_set(_usage,USE_SYSTEMC))
    2626      {
    2727        delete    in_CLOCK ;
     
    3838        delete []  in_RENAME_IN_TYPE          ;
    3939        delete []  in_RENAME_IN_OPERATION     ;
     40        delete []  in_RENAME_IN_NO_EXECUTE    ;
     41        delete []  in_RENAME_IN_IS_DELAY_SLOT ;
    4042        delete []  in_RENAME_IN_ADDRESS       ;
    4143        delete []  in_RENAME_IN_HAS_IMMEDIAT  ;
     
    5254        delete []  in_RENAME_IN_NUM_REG_RE    ;
    5355        delete []  in_RENAME_IN_EXCEPTION_USE ;
     56        delete []  in_RENAME_IN_EXCEPTION     ;
    5457
    5558        delete [] out_RENAME_OUT_VAL          ;
     
    7982      }
    8083    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    81 
     84    delete _priority;
    8285    delete _component;
    8386
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_end_cycle.cpp

    r81 r88  
    2525
    2626#ifdef STATISTICS
    27     _stat->end_cycle();
     27    if (usage_is_set(_usage,USE_STATISTICS))
     28      _stat->end_cycle();
    2829#endif   
    2930
     
    3132    // Evaluation before read the ouput signal
    3233//  sc_start(0);
    33     _interfaces->testbench();
     34    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
     35      _interfaces->testbench();
    3436#endif
    3537
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_genMealy.cpp

    r81 r88  
    2222  void Rename_select::genMealy (void)
    2323  {
    24     log_printf(FUNC,Rename_select,FUNCTION,"Begin");
     24    log_begin(Rename_select,FUNCTION);
     25    log_function(Rename_select,FUNCTION,_name.c_str());
    2526
    26     Tcontrol_t ack [_param->_nb_front_end][_param->_max_nb_inst_decod];
     27    Tcontrol_t val                  [_param->_nb_inst_rename];
     28    Tcontrol_t ack                  [_param->_nb_front_end][_param->_max_nb_inst_decod];
     29    Tcontrol_t previous_transaction [_param->_nb_front_end];
     30
     31    for (uint32_t i=0; i<_param->_nb_inst_rename; ++i)
     32      val [i] = false;
    2733    for (uint32_t i=0; i<_param->_nb_front_end; i++)
    28       for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++)
    29         ack [i][j] = false;
    30    
    31     std::list<select_t>::iterator it=select.begin();
     34      {
     35        previous_transaction [i] = true;
     36        for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++)
     37          ack [i][j] = false;
     38      }
     39
     40    std::list<generic::priority::select_t> * select = _priority->select();
     41    std::list<generic::priority::select_t>::iterator it=select->begin();
    3242
    3343    for (uint32_t i=0; i<_param->_nb_inst_rename; i++)
    3444      {
    35         Tcontrol_t val = false;
     45        log_printf(TRACE,Rename_select,FUNCTION,"  * inst_rename [%d]",i);
    3646
    37         while ((it != select.end()) and (val == false))
     47        // Scan all instruction until find
     48        while ((it != select->end()) and (val [i] == false))
    3849          {
    39             Tcontext_t x = it->_front_end ;
    40             uint32_t   y = it->_inst_decod;
     50            Tcontext_t x = it->grp;
     51            uint32_t   y = it->elt;
    4152
    42             // Test if this instruction is valid
    43             if (PORT_READ(in_RENAME_IN_VAL[x][y]) == 1)
     53            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]));
     55            log_printf(TRACE,Rename_select,FUNCTION,"      * previous_transaction : %d",previous_transaction[x]);
     56
     57            // Test if this instruction is valid and if all previous instruction of this front end is an valid transaction
     58            if (previous_transaction [x] and
     59                PORT_READ(in_RENAME_IN_VAL[x][y]))
    4460              {
    4561                // Find !!!
    46                 val        = true;
     62                val [i]    = true;
    4763                ack [x][y] = PORT_READ(in_RENAME_OUT_ACK [i]);
     64
     65                log_printf(TRACE,Rename_select,FUNCTION,"      * rename_out_ack       : %d",PORT_READ(in_RENAME_OUT_ACK[i]));
    4866
    4967                if (_param->_have_port_front_end_id)
     
    5573                PORT_WRITE(out_RENAME_OUT_TYPE         [i],PORT_READ(in_RENAME_IN_TYPE          [x][y]));
    5674                PORT_WRITE(out_RENAME_OUT_OPERATION    [i],PORT_READ(in_RENAME_IN_OPERATION     [x][y]));
     75                PORT_WRITE(out_RENAME_OUT_NO_EXECUTE   [i],PORT_READ(in_RENAME_IN_NO_EXECUTE    [x][y]));
     76                PORT_WRITE(out_RENAME_OUT_IS_DELAY_SLOT[i],PORT_READ(in_RENAME_IN_IS_DELAY_SLOT [x][y]));
    5777                PORT_WRITE(out_RENAME_OUT_ADDRESS      [i],PORT_READ(in_RENAME_IN_ADDRESS       [x][y]));
    5878                PORT_WRITE(out_RENAME_OUT_HAS_IMMEDIAT [i],PORT_READ(in_RENAME_IN_HAS_IMMEDIAT  [x][y]));
     
    6989                PORT_WRITE(out_RENAME_OUT_NUM_REG_RE   [i],PORT_READ(in_RENAME_IN_NUM_REG_RE    [x][y]));
    7090                PORT_WRITE(out_RENAME_OUT_EXCEPTION_USE[i],PORT_READ(in_RENAME_IN_EXCEPTION_USE [x][y]));
     91                PORT_WRITE(out_RENAME_OUT_EXCEPTION    [i],PORT_READ(in_RENAME_IN_EXCEPTION     [x][y]));
    7192              }
     93
     94            // ack = 1 if previous_transaction == true and rename_in_val == true and rename_out == true
     95            previous_transaction [x] = ack [x][y];
    7296
    7397            it ++;
    7498          }
    7599
    76         PORT_WRITE(out_RENAME_OUT_VAL [i], val);
    77100      }
     101
     102    for (uint32_t i=0; i<_param->_nb_inst_rename; ++i)
     103      PORT_WRITE(out_RENAME_OUT_VAL [i], val [i]);
    78104
    79105    for (uint32_t i=0; i<_param->_nb_front_end; i++)
     
    81107        PORT_WRITE(out_RENAME_IN_ACK [i][j], ack [i][j]);
    82108
    83     log_printf(FUNC,Rename_select,FUNCTION,"End");
     109    log_end(Rename_select,FUNCTION);
    84110  };
    85111
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_transition.cpp

    r81 r88  
    2626    if (PORT_READ(in_NRESET) == 0)
    2727      {
    28         select.clear();
    29         reg_FRONT_END_PRIORITY = 0;
     28        _priority->reset();
    3029      }
    3130    else
    3231      {
    33         switch (_param->_priority)
    34           {
    35           case PRIORITY_STATIC :
    36             {
    37               reg_FRONT_END_PRIORITY = (reg_FRONT_END_PRIORITY+_param->_nb_front_end_select)%_param->_nb_front_end;
    38               break;
    39             }
    40           case PRIORITY_ROUND_ROBIN :
    41             {
    42               reg_FRONT_END_PRIORITY = (reg_FRONT_END_PRIORITY+1)%_param->_nb_front_end;
    43               break;
    44             }
    45           default:
    46             {
    47               break;
    48             }
    49           }
    50 
    51         // flush list
    52         select.clear();
    53        
    54         // Compute next scan order !!!
    55         switch (_param->_load_balancing)
    56           {
    57           case LOAD_BALANCING_BALANCE :
    58             {
    59               for (uint32_t j=0; j<_param->_max_nb_inst_decod; j++)
    60                 for (uint32_t i=0; i<_param->_nb_front_end_select; i++)
    61                   {
    62                     uint32_t x=(reg_FRONT_END_PRIORITY+i)%_param->_nb_front_end;
    63                    
    64                     // Test valid inst_decod
    65                     if (j < _param->_nb_inst_decod[x])
    66                       select.push_back(select_t(x,j));
    67                   }
    68                  
    69               break;
    70             }
    71           case LOAD_BALANCING_MAXIMUM_FOR_PRIORITY :
    72             {
    73 
    74               for (uint32_t i=0; i<_param->_nb_front_end_select; i++)
    75                 {
    76                   uint32_t x=(reg_FRONT_END_PRIORITY+i)%_param->_nb_front_end;
    77                  
    78                   for (uint32_t j=0; j<_param->_nb_inst_decod[x]; j++)
    79                     select.push_back(select_t(x,j));
    80                 }
    81 
    82               break;
    83             }
    84           default :
    85             {
    86               break;
    87             }
    88           }
     32        _priority->transition();
    8933
    9034// #if (DEBUG >= DEBUG_TRACE)
Note: See TracChangeset for help on using the changeset viewer.