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/Multi_Read_unit/Read_unit/src/Parameters.cpp

    r81 r88  
    2020#define FUNCTION "Read_unit::Parameters"
    2121  Parameters::Parameters (uint32_t size_read_queue         ,
    22                           uint32_t size_reservation_station,
    23                           uint32_t nb_context              ,
    24                           uint32_t nb_front_end            ,
    25                           uint32_t nb_ooo_engine           ,
    26                           uint32_t nb_packet               ,
    27                           uint32_t size_general_data       ,
    28                           uint32_t size_special_data       ,
    29                           uint32_t nb_general_register     ,
    30                           uint32_t nb_special_register     ,
    31                           uint32_t nb_gpr_write            ,
    32                           uint32_t nb_spr_write            ,
    33                           uint32_t size_store_queue        ,
    34                           uint32_t size_load_queue         ,
    35                           uint32_t nb_inst_retire          ,
    36                           uint32_t nb_bypass_write         ,
    37                           uint32_t nb_bypass_memory        ):
    38     _size_read_queue          (size_read_queue         ),
    39     _size_reservation_station (size_reservation_station),
    40     _nb_context               (nb_context              ),
    41     _nb_front_end             (nb_front_end            ),
    42     _nb_ooo_engine            (nb_ooo_engine           ),
    43     _nb_packet                (nb_packet               ),
    44     _size_general_data        (size_general_data       ),
    45     _size_special_data        (size_special_data       ),
    46     _nb_general_register      (nb_general_register     ),
    47     _nb_special_register      (nb_special_register     ),
    48     _nb_gpr_write             (nb_gpr_write            ),
    49     _nb_spr_write             (nb_spr_write            ),
    50     _size_store_queue         (size_store_queue        ),
    51     _size_load_queue          (size_load_queue         ),
    52     _nb_inst_retire           (nb_inst_retire          ),
    53     _nb_bypass_write          (nb_bypass_write         ),
    54     _nb_bypass_memory         (nb_bypass_memory        ),
    55    
    56     _nb_gpr_read              (2),
    57     _nb_spr_read              (1),   
    58     _size_context_id          (log2(nb_context         )),
    59     _size_front_end_id        (log2(nb_front_end       )),
    60     _size_ooo_engine_id       (log2(nb_ooo_engine      )),
    61     _size_packet_id           (log2(nb_packet          )),
    62     _size_general_register    (log2(nb_general_register)),
    63     _size_special_register    (log2(nb_special_register)),
    64    
    65     _have_port_context_id     (_size_context_id   >0),
    66     _have_port_front_end_id   (_size_front_end_id >0),
    67     _have_port_ooo_engine_id  (_size_ooo_engine_id>0),
    68     _have_port_packet_id      (_size_packet_id    >0),
    69     _have_port_load_queue_ptr (_size_load_queue   >1)
     22                          uint32_t size_reservation_station,
     23                          uint32_t nb_context              ,
     24                          uint32_t nb_front_end            ,
     25                          uint32_t nb_ooo_engine           ,
     26                          uint32_t nb_packet               ,
     27                          uint32_t size_general_data       ,
     28                          uint32_t size_special_data       ,
     29                          uint32_t nb_general_register     ,
     30                          uint32_t nb_special_register     ,
     31                          uint32_t nb_gpr_write            ,
     32                          uint32_t nb_spr_write            ,
     33                          uint32_t size_store_queue        ,
     34                          uint32_t size_load_queue         ,
     35                          uint32_t nb_inst_retire          ,
     36                          uint32_t nb_bypass_write         ,
     37                          uint32_t nb_bypass_memory        ,
     38                          bool     is_toplevel)
    7039  {
    7140    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
    7241
     42    _size_read_queue          = size_read_queue         ;
     43    _size_reservation_station = size_reservation_station;
     44    _nb_context               = nb_context              ;
     45    _nb_front_end             = nb_front_end            ;
     46    _nb_ooo_engine            = nb_ooo_engine           ;
     47    _nb_packet                = nb_packet               ;
     48    _nb_general_register      = nb_general_register     ;
     49    _nb_special_register      = nb_special_register     ;
     50    _nb_gpr_write             = nb_gpr_write            ;
     51    _nb_spr_write             = nb_spr_write            ;
     52    _nb_inst_retire           = nb_inst_retire          ;
     53    _nb_bypass_write          = nb_bypass_write         ;
     54    _nb_bypass_memory         = nb_bypass_memory        ;
     55   
     56    _nb_gpr_read              = 2;
     57    _nb_spr_read              = 1;   
     58
    7359    _param_read_queue = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Parameters
    74       ( _size_read_queue   
    75         ,_nb_context         
    76         ,_nb_front_end       
    77         ,_nb_ooo_engine
    78         ,_nb_packet         
    79         ,_size_general_data 
    80         ,_size_special_data 
    81         ,_nb_general_register
    82         ,_nb_special_register
    83         ,_nb_gpr_write
    84         ,_nb_spr_write
    85         ,_size_store_queue
    86         ,_size_load_queue
    87         );
     60      (_size_read_queue   
     61      ,_nb_context         
     62      ,_nb_front_end       
     63      ,_nb_ooo_engine
     64      ,_nb_packet         
     65      , size_general_data 
     66      , size_special_data 
     67      ,_nb_general_register
     68      ,_nb_special_register
     69      ,_nb_gpr_write
     70      ,_nb_spr_write
     71      , size_store_queue
     72      , size_load_queue
     73      );
    8874
    8975    _param_reservation_station = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Parameters
    90         (size_reservation_station
    91          ,nb_inst_retire     
    92          ,nb_context         
    93          ,nb_front_end       
    94          ,nb_ooo_engine
    95          ,nb_packet         
    96          ,size_general_data 
    97          ,size_special_data 
    98          ,nb_general_register
    99          ,nb_special_register
    100          ,nb_gpr_write
    101          ,nb_spr_write
    102          ,nb_bypass_write
    103          ,nb_bypass_memory
    104          ,size_store_queue
    105          ,size_load_queue
    106          );
    107 
     76        (_size_reservation_station
     77        ,_nb_inst_retire     
     78        ,_nb_context         
     79        ,_nb_front_end       
     80        ,_nb_ooo_engine
     81        ,_nb_packet         
     82        , size_general_data 
     83        , size_special_data 
     84        ,_nb_general_register
     85        ,_nb_special_register
     86        ,_nb_gpr_write
     87        ,_nb_spr_write
     88        ,_nb_bypass_write
     89        ,_nb_bypass_memory
     90        , size_store_queue
     91        , size_load_queue
     92        );
    10893
    10994    test();
     95
     96    if (is_toplevel)
     97      {
     98        _size_context_id          = log2(nb_context         );
     99        _size_front_end_id        = log2(nb_front_end       );
     100        _size_ooo_engine_id       = log2(nb_ooo_engine      );
     101        _size_rob_ptr             = log2(nb_packet          );
     102        _size_general_register    = log2(nb_general_register);
     103        _size_special_register    = log2(nb_special_register);
     104        _size_general_data        = size_general_data       ;
     105        _size_special_data        = size_special_data       ;
     106        _size_store_queue_ptr     = log2(size_store_queue   );
     107        _size_load_queue_ptr      = log2(size_load_queue    );
     108       
     109        _have_port_context_id     = _size_context_id     > 0;
     110        _have_port_front_end_id   = _size_front_end_id   > 0;
     111        _have_port_ooo_engine_id  = _size_ooo_engine_id  > 0;
     112        _have_port_rob_ptr        = _size_rob_ptr        > 0;
     113        _have_port_load_queue_ptr = _size_load_queue_ptr > 0;
     114
     115        copy();
     116      }
    110117
    111118    log_printf(FUNC,Read_unit,FUNCTION,"End");
    112119  };
    113120 
     121// #undef  FUNCTION
     122// #define FUNCTION "Read_unit::Parameters (copy)"
     123//   Parameters::Parameters (Parameters & param):
     124//     _size_read_queue          (param._size_read_queue         ),
     125//     _size_reservation_station (param._size_reservation_station),
     126//     _nb_context               (param._nb_context              ),
     127//     _nb_front_end             (param._nb_front_end            ),
     128//     _nb_ooo_engine            (param._nb_ooo_engine           ),
     129//     _nb_packet                (param._nb_packet               ),
     130//     _size_general_data        (param._size_general_data       ),
     131//     _size_special_data        (param._size_special_data       ),
     132//     _nb_general_register      (param._nb_general_register     ),
     133//     _nb_special_register      (param._nb_special_register     ),
     134//     _nb_gpr_write             (param._nb_gpr_write            ),
     135//     _nb_spr_write             (param._nb_spr_write            ),
     136//     _size_store_queue         (param._size_store_queue        ),
     137//     _size_load_queue          (param._size_load_queue         ),
     138//     _nb_inst_retire           (param._nb_inst_retire          ),
     139//     _nb_bypass_write          (param._nb_bypass_write         ),
     140//     _nb_bypass_memory         (param._nb_bypass_memory        ),
     141
     142//     _nb_gpr_read              (param._nb_gpr_read             ),
     143//     _nb_spr_read              (param._nb_spr_read             ),   
     144//     _size_context_id          (param._size_context_id         ),
     145//     _size_front_end_id        (param._size_front_end_id       ),
     146//     _size_ooo_engine_id       (param._size_ooo_engine_id      ),
     147//     _size_packet_id           (param._size_packet_id          ),
     148//     _size_general_register    (param._size_general_register   ),
     149//     _size_special_register    (param._size_special_register   ),
     150
     151//     _have_port_context_id     (param._have_port_context_id    ),
     152//     _have_port_front_end_id   (param._have_port_front_end_id  ),
     153//     _have_port_ooo_engine_id  (param._have_port_ooo_engine_id ),
     154//     _have_port_packet_id      (param._have_port_packet_id     ),
     155//     _have_port_load_queue_ptr (param._have_port_load_queue_ptr)
     156//   {
     157//     log_printf(FUNC,Read_unit,FUNCTION,"Begin");
     158
     159//     _param_read_queue          = param._param_read_queue         ;
     160//     _param_reservation_station = param._param_reservation_station;
     161
     162//     test();
     163
     164//     log_printf(FUNC,Read_unit,FUNCTION,"End");
     165//   };
     166
    114167#undef  FUNCTION
    115 #define FUNCTION "Read_unit::Parameters (copy)"
    116   Parameters::Parameters (Parameters & param):
    117     _size_read_queue          (param._size_read_queue         ),
    118     _size_reservation_station (param._size_reservation_station),
    119     _nb_context               (param._nb_context              ),
    120     _nb_front_end             (param._nb_front_end            ),
    121     _nb_ooo_engine            (param._nb_ooo_engine           ),
    122     _nb_packet                (param._nb_packet               ),
    123     _size_general_data        (param._size_general_data       ),
    124     _size_special_data        (param._size_special_data       ),
    125     _nb_general_register      (param._nb_general_register     ),
    126     _nb_special_register      (param._nb_special_register     ),
    127     _nb_gpr_write             (param._nb_gpr_write            ),
    128     _nb_spr_write             (param._nb_spr_write            ),
    129     _size_store_queue         (param._size_store_queue        ),
    130     _size_load_queue          (param._size_load_queue         ),
    131     _nb_inst_retire           (param._nb_inst_retire          ),
    132     _nb_bypass_write          (param._nb_bypass_write         ),
    133     _nb_bypass_memory         (param._nb_bypass_memory        ),
    134 
    135     _nb_gpr_read              (param._nb_gpr_read             ),
    136     _nb_spr_read              (param._nb_spr_read             ),   
    137     _size_context_id          (param._size_context_id         ),
    138     _size_front_end_id        (param._size_front_end_id       ),
    139     _size_ooo_engine_id       (param._size_ooo_engine_id      ),
    140     _size_packet_id           (param._size_packet_id          ),
    141     _size_general_register    (param._size_general_register   ),
    142     _size_special_register    (param._size_special_register   ),
    143 
    144     _have_port_context_id     (param._have_port_context_id    ),
    145     _have_port_front_end_id   (param._have_port_front_end_id  ),
    146     _have_port_ooo_engine_id  (param._have_port_ooo_engine_id ),
    147     _have_port_packet_id      (param._have_port_packet_id     ),
    148     _have_port_load_queue_ptr (param._have_port_load_queue_ptr)
     168#define FUNCTION "Read_unit::~Parameters"
     169  Parameters::~Parameters (void)
    149170  {
    150171    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
    151172
    152     _param_read_queue          = param._param_read_queue         ;
    153     _param_reservation_station = param._param_reservation_station;
    154 
    155     test();
     173    delete _param_read_queue;
     174    delete _param_reservation_station;
    156175
    157176    log_printf(FUNC,Read_unit,FUNCTION,"End");
     
    159178
    160179#undef  FUNCTION
    161 #define FUNCTION "Read_unit::~Parameters"
    162   Parameters::~Parameters ()
     180#define FUNCTION "Read_unit::copy"
     181  void Parameters::copy (void)
    163182  {
    164183    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
    165184
    166     delete _param_read_queue;
    167     delete _param_reservation_station;
     185    COPY(_param_read_queue);
     186    COPY(_param_reservation_station);
    168187
    169188    log_printf(FUNC,Read_unit,FUNCTION,"End");
Note: See TracChangeset for help on using the changeset viewer.