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

Almost complete design
with Test and test platform

File:
1 edited

Legend:

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

    r81 r88  
    77
    88#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Parameters.h"
     9#include "Common/include/Max.h"
    910
    1011namespace morpheo {
     
    2021#define FUNCTION "Read_unit_to_Execution_unit::Parameters"
    2122  Parameters::Parameters (uint32_t    nb_read_unit           ,
     23                          uint32_t  * nb_read_unit_port      ,
    2224                          uint32_t    nb_execute_unit        ,
     25                          uint32_t  * nb_execute_unit_port   ,
    2326                          uint32_t    nb_context             ,
    2427                          uint32_t    nb_front_end           ,
     
    3235                          uint32_t    size_load_queue        ,
    3336                          Tpriority_t priority               ,
    34                           bool     ** table_routing          ,
     37                          bool    *** table_routing          ,
    3538                          bool     ** table_execute_type     ,
    36                           bool     ** table_execute_thread   ):
    37     _nb_read_unit            (nb_read_unit       ),
    38     _nb_execute_unit         (nb_execute_unit    ),
    39     _nb_context              (nb_context         ),
    40     _nb_front_end            (nb_front_end       ),
    41     _nb_ooo_engine           (nb_ooo_engine      ),
    42     _nb_packet               (nb_packet          ),
    43     _size_general_data       (size_general_data  ),
    44     _size_special_data       (size_special_data  ),
    45     _nb_general_register     (nb_general_register),
    46     _nb_special_register     (nb_special_register),
    47     _size_store_queue        (size_store_queue   ),
    48     _size_load_queue         (size_load_queue    ),
    49     _priority                (priority           ),
    50 
    51     _size_context_id         (log2(nb_context         )),
    52     _size_front_end_id       (log2(nb_front_end       )),
    53     _size_ooo_engine_id      (log2(nb_ooo_engine      )),
    54     _size_packet_id          (log2(nb_packet          )),
    55     _size_general_register   (log2(nb_general_register)),
    56     _size_special_register   (log2(nb_special_register)),
    57    
    58     _have_port_context_id    (_size_context_id    > 0),
    59     _have_port_front_end_id  (_size_front_end_id  > 0),
    60     _have_port_ooo_engine_id (_size_ooo_engine_id > 0),
    61     _have_port_packet_id     (_size_packet_id     > 0),
    62     _have_port_load_queue_ptr(_size_load_queue    > 1),
    63 
    64     _nb_thread               (get_nb_thread (nb_context, nb_front_end, nb_ooo_engine))
     39                          bool     ** table_execute_thread   ,
     40                          bool        is_toplevel            )
    6541  {
    6642    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
    6743
    68     _table_routing        = table_routing       ;
    69     _table_execute_type   = table_execute_type  ;
    70     _table_execute_thread = table_execute_thread;
     44    _nb_read_unit            = nb_read_unit        ;
     45    _nb_read_unit_port       = nb_read_unit_port   ;   
     46    _nb_execute_unit         = nb_execute_unit     ;
     47    _nb_execute_unit_port    = nb_execute_unit_port;
     48    _nb_context              = nb_context          ;
     49    _nb_front_end            = nb_front_end        ;
     50    _nb_ooo_engine           = nb_ooo_engine       ;
     51    _nb_packet               = nb_packet           ;
     52    _nb_general_register     = nb_general_register ;
     53    _nb_special_register     = nb_special_register ;
     54    _priority                = priority            ;
     55    _table_routing           = table_routing       ;
     56    _table_execute_type      = table_execute_type  ;
     57    _table_execute_thread    = table_execute_thread;
    7158
    72     _nb_load_store_unit   = 0;
     59    _max_nb_read_unit_port   = max<uint32_t>(_nb_read_unit_port, _nb_read_unit);
     60    _max_nb_execute_unit_port= max<uint32_t>(_nb_execute_unit_port, _nb_execute_unit);
     61
     62    _nb_thread               = get_nb_thread (nb_context, nb_front_end, nb_ooo_engine);
     63    _nb_load_store_unit      = 0;
    7364
    7465    for (uint32_t i=0; i<nb_execute_unit; i++)
     
    8273    test();
    8374
     75    if (is_toplevel)
     76      {
     77        _size_context_id         = log2(nb_context         );
     78        _size_front_end_id       = log2(nb_front_end       );
     79        _size_ooo_engine_id      = log2(nb_ooo_engine      );
     80        _size_rob_ptr            = log2(nb_packet          );
     81        _size_general_register   = log2(nb_general_register);
     82        _size_special_register   = log2(nb_special_register);
     83        _size_general_data       = size_general_data   ;
     84        _size_special_data       = size_special_data   ;
     85        _size_store_queue_ptr    = log2(size_store_queue   );
     86        _size_load_queue_ptr     = log2(size_load_queue    );
     87       
     88        _have_port_context_id    = _size_context_id    > 0;
     89        _have_port_front_end_id  = _size_front_end_id  > 0;
     90        _have_port_ooo_engine_id = _size_ooo_engine_id > 0;
     91        _have_port_rob_ptr       = _size_rob_ptr       > 0;
     92        _have_port_load_queue_ptr= _size_load_queue_ptr> 0;
     93       
     94        copy();
     95      }
     96
    8497    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
    8598  };
    8699 
     100// #undef  FUNCTION
     101// #define FUNCTION "Read_unit_to_Execution_unit::Parameters (copy)"
     102//   Parameters::Parameters (Parameters & param)
     103//   {
     104//     log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
     105
     106//     test();
     107//     log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
     108//   };
     109
    87110#undef  FUNCTION
    88 #define FUNCTION "Read_unit_to_Execution_unit::Parameters (copy)"
    89   Parameters::Parameters (Parameters & param):
    90     _nb_read_unit            (param._nb_read_unit           ),
    91     _nb_execute_unit         (param._nb_execute_unit        ),
    92     _nb_context              (param._nb_context             ),
    93     _nb_front_end            (param._nb_front_end           ),
    94     _nb_ooo_engine           (param._nb_ooo_engine          ),
    95     _nb_packet               (param._nb_packet              ),
    96     _size_general_data       (param._size_general_data      ),
    97     _size_special_data       (param._size_special_data      ),
    98     _nb_general_register     (param._nb_general_register    ),
    99     _nb_special_register     (param._nb_special_register    ),
    100     _size_store_queue        (param._size_store_queue       ),
    101     _size_load_queue         (param._size_load_queue        ),
    102     _priority                (param._priority               ),
    103 
    104     _size_context_id         (param._size_context_id        ),
    105     _size_front_end_id       (param._size_front_end_id      ),
    106     _size_ooo_engine_id      (param._size_ooo_engine_id     ),
    107     _size_packet_id          (param._size_packet_id         ),
    108     _size_general_register   (param._size_general_register  ),
    109     _size_special_register   (param._size_special_register  ),
    110 
    111     _have_port_context_id    (param._have_port_context_id   ),
    112     _have_port_front_end_id  (param._have_port_front_end_id ),
    113     _have_port_ooo_engine_id (param._have_port_ooo_engine_id),
    114     _have_port_packet_id     (param._have_port_packet_id    ),
    115     _have_port_load_queue_ptr(param._have_port_load_queue_ptr),
    116 
    117     _nb_thread               (param._nb_thread              )
     111#define FUNCTION "Read_unit_to_Execution_unit::~Parameters"
     112  Parameters::~Parameters ()
    118113  {
    119114    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
    120 
    121     _table_routing        = param._table_routing       ;
    122     _table_execute_type   = param._table_execute_type  ;
    123     _table_execute_thread = param._table_execute_thread;
    124     _nb_load_store_unit   = param._nb_load_store_unit  ;
    125     _nb_functionnal_unit  = param._nb_functionnal_unit ;
    126 
    127     test();
    128115    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
    129116  };
    130117
    131118#undef  FUNCTION
    132 #define FUNCTION "Read_unit_to_Execution_unit::~Parameters"
    133   Parameters::~Parameters ()
     119#define FUNCTION "Read_unit_to_Execution_unit::copy"
     120  void Parameters::copy (void)
    134121  {
    135122    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
Note: See TracChangeset for help on using the changeset viewer.