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/Rename_unit/Load_Store_pointer_unit
Files:
12 edited

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