Ignore:
Timestamp:
Dec 10, 2008, 7:31:39 PM (16 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/Read_queue/src/Parameters.cpp

    r81 r88  
    3030                          uint32_t nb_spr_write       ,
    3131                          uint32_t size_store_queue   ,
    32                           uint32_t size_load_queue    ):
    33     _size_queue            (size_queue           ),
    34     _nb_context            (nb_context           ),
    35     _nb_front_end          (nb_front_end         ),
    36     _nb_ooo_engine         (nb_ooo_engine        ),
    37     _nb_packet             (nb_packet            ),
    38     _size_general_data     (size_general_data    ),
    39     _size_special_data     (size_special_data    ),
    40     _nb_general_register   (nb_general_register  ),
    41     _nb_special_register   (nb_special_register  ),
    42     _nb_gpr_write          (nb_gpr_write         ),
    43     _nb_spr_write          (nb_spr_write         ),
    44     _size_store_queue      (size_store_queue     ),
    45     _size_load_queue       (size_load_queue      ),
    46 
    47     _nb_gpr_read           (2                    ),
    48     _nb_spr_read           (1                    ),
    49     _size_context_id       (static_cast<uint32_t>(log2(_nb_context         ))),
    50     _size_front_end_id     (static_cast<uint32_t>(log2(_nb_front_end       ))),
    51     _size_ooo_engine_id    (static_cast<uint32_t>(log2(_nb_ooo_engine      ))),
    52     _size_rob_id           (static_cast<uint32_t>(log2(_nb_packet          ))),
    53     _size_general_register (static_cast<uint32_t>(log2(_nb_general_register))),
    54     _size_special_register (static_cast<uint32_t>(log2(_nb_special_register))),
    55 
    56     _have_port_context_id    (_size_context_id    > 0),
    57     _have_port_front_end_id  (_size_front_end_id  > 0),
    58     _have_port_ooo_engine_id (_size_ooo_engine_id > 0),
    59     _have_port_rob_id        (_size_rob_id        > 0),
    60     _have_port_load_queue_ptr(_size_load_queue    > 1),
    61 
    62     _size_internal_queue     (  _size_context_id       //_context_id   
    63                               + _size_front_end_id     //_front_end_id
    64                               + _size_ooo_engine_id    //_ooo_engine_id
    65                               + _size_rob_id           //_rob_id       
    66                               + _size_operation        //_operation   
    67                               + _size_type             //_type         
    68                               + log2(_size_store_queue)//_store_queue_ptr_write
    69                               + log2(_size_load_queue )//_load_queue_ptr_write
    70                               + 1                      //_has_immediat
    71                               + _size_general_data     //_immediat     
    72                               + 1                      //_read_ra     
    73                               + _size_general_register //_num_reg_ra   
    74                               + 1                      //_read_rb     
    75                               + _size_general_register //_num_reg_rb   
    76                               + 1                      //_read_rc     
    77                               + _size_special_register //_num_reg_rc   
    78                               + 1                      //_write_rd     
    79                               + _size_general_register //_num_reg_rd   
    80                               + 1                      //_write_re     
    81                               + _size_special_register //_num_reg_re   
    82                                 )
    83                                
    84 
     32                          uint32_t size_load_queue    ,
     33                          bool     is_toplevel)
    8534  {
    8635    log_printf(FUNC,Read_queue,"Parameters","Begin");
     36
     37    _size_queue              = size_queue           ;
     38    _nb_context              = nb_context           ;
     39    _nb_front_end            = nb_front_end         ;
     40    _nb_ooo_engine           = nb_ooo_engine        ;
     41    _nb_packet               = nb_packet            ;
     42    _nb_general_register     = nb_general_register  ;
     43    _nb_special_register     = nb_special_register  ;
     44    _nb_gpr_write            = nb_gpr_write         ;
     45    _nb_spr_write            = nb_spr_write         ;
     46                             
     47    _nb_gpr_read             = 2                    ;
     48    _nb_spr_read             = 1                    ;
     49
     50    _size_internal_queue     = (  log2(nb_context         ) //_context_id   
     51                                + log2(nb_front_end       ) //_front_end_id
     52                                + log2(nb_ooo_engine      ) //_ooo_engine_id
     53                                + log2(nb_packet          ) //_rob_id       
     54                                + _size_operation           //_operation   
     55                                + _size_type                //_type         
     56                                + log2(size_store_queue   ) //_store_queue_ptr_write
     57                                + log2(size_load_queue    ) //_load_queue_ptr_write
     58                                + 1                         //_has_immediat
     59                                +  size_general_data        //_immediat     
     60                                + 1                         //_read_ra     
     61                                + log2(nb_general_register) //_num_reg_ra   
     62                                + 1                         //_read_rb     
     63                                + log2(nb_general_register) //_num_reg_rb   
     64                                + 1                         //_read_rc     
     65                                + log2(nb_special_register) //_num_reg_rc   
     66                                + 1                         //_write_rd     
     67                                + log2(nb_general_register) //_num_reg_rd   
     68                                + 1                         //_write_re     
     69                                + log2(nb_special_register) //_num_reg_re   
     70                                );
     71
    8772    test();
     73
     74    if (is_toplevel)
     75      {
     76        _size_general_data       = size_general_data    ;
     77        _size_special_data       = size_special_data    ;
     78        _size_store_queue_ptr    = log2(size_store_queue);
     79        _size_load_queue_ptr     = log2(size_load_queue );
     80        _size_context_id         = log2(_nb_context         );
     81        _size_front_end_id       = log2(_nb_front_end       );
     82        _size_ooo_engine_id      = log2(_nb_ooo_engine      );
     83        _size_rob_ptr            = log2(_nb_packet          );
     84        _size_general_register   = log2(_nb_general_register);
     85        _size_special_register   = log2(_nb_special_register);
     86       
     87        _have_port_context_id    = _size_context_id    > 0;
     88        _have_port_front_end_id  = _size_front_end_id  > 0;
     89        _have_port_ooo_engine_id = _size_ooo_engine_id > 0;
     90        _have_port_rob_ptr       = _size_rob_ptr       > 0;
     91        _have_port_load_queue_ptr= _size_load_queue_ptr> 0;
     92       
     93        copy();
     94      }
     95
    8896    log_printf(FUNC,Read_queue,"Parameters","End");
    8997  };
    9098 
    91   Parameters::Parameters (Parameters & param):
    92     _size_queue            (param._size_queue            ),
    93     _nb_context            (param._nb_context            ),
    94     _nb_front_end          (param._nb_front_end          ),
    95     _nb_ooo_engine         (param._nb_ooo_engine         ),
    96     _nb_packet             (param._nb_packet             ),
    97     _size_general_data     (param._size_general_data     ),
    98     _size_special_data     (param._size_special_data     ),
    99     _nb_general_register   (param._nb_general_register   ),
    100     _nb_special_register   (param._nb_special_register   ),
    101     _nb_gpr_write          (param._nb_gpr_write          ),
    102     _nb_spr_write          (param._nb_spr_write          ),
    103     _size_store_queue      (param._size_store_queue      ),
    104     _size_load_queue       (param._size_load_queue       ),
     99//   Parameters::Parameters (Parameters & param):
     100//     _size_queue            (param._size_queue            ),
     101//     _nb_context            (param._nb_context            ),
     102//     _nb_front_end          (param._nb_front_end          ),
     103//     _nb_ooo_engine         (param._nb_ooo_engine         ),
     104//     _nb_packet             (param._nb_packet             ),
     105//     _size_general_data     (param._size_general_data     ),
     106//     _size_special_data     (param._size_special_data     ),
     107//     _nb_general_register   (param._nb_general_register   ),
     108//     _nb_special_register   (param._nb_special_register   ),
     109//     _nb_gpr_write          (param._nb_gpr_write          ),
     110//     _nb_spr_write          (param._nb_spr_write          ),
     111//     _size_store_queue      (param._size_store_queue      ),
     112//     _size_load_queue       (param._size_load_queue       ),
    105113
    106     _nb_gpr_read           (param._nb_gpr_read           ),
    107     _nb_spr_read           (param._nb_spr_read           ),
    108     _size_context_id       (param._size_context_id       ),
    109     _size_front_end_id     (param._size_front_end_id     ),
    110     _size_ooo_engine_id    (param._size_ooo_engine_id    ),
    111     _size_rob_id           (param._size_rob_id           ),
    112     _size_general_register (param._size_general_register ),
    113     _size_special_register (param._size_special_register ),
     114//     _nb_gpr_read           (param._nb_gpr_read           ),
     115//     _nb_spr_read           (param._nb_spr_read           ),
     116//     _size_context_id       (param._size_context_id       ),
     117//     _size_front_end_id     (param._size_front_end_id     ),
     118//     _size_ooo_engine_id    (param._size_ooo_engine_id    ),
     119//     _size_rob_id           (param._size_rob_id           ),
     120//     _size_general_register (param._size_general_register ),
     121//     _size_special_register (param._size_special_register ),
    114122
    115     _have_port_context_id    (param._have_port_context_id   ),
    116     _have_port_front_end_id  (param._have_port_front_end_id ),
    117     _have_port_ooo_engine_id (param._have_port_ooo_engine_id),
    118     _have_port_rob_id        (param._have_port_rob_id       ),
    119     _have_port_load_queue_ptr(param._have_port_load_queue_ptr),
     123//     _have_port_context_id    (param._have_port_context_id   ),
     124//     _have_port_front_end_id  (param._have_port_front_end_id ),
     125//     _have_port_ooo_engine_id (param._have_port_ooo_engine_id),
     126//     _have_port_rob_id        (param._have_port_rob_id       ),
     127//     _have_port_load_queue_ptr(param._have_port_load_queue_ptr),
    120128
    121     _size_internal_queue     (param._size_internal_queue    )
    122   {
    123     log_printf(FUNC,Read_queue,"Parameters (copy)","Begin");
    124     test();
    125     log_printf(FUNC,Read_queue,"Parameters (copy)","End");
    126   };
     129//     _size_internal_queue     (param._size_internal_queue    )
     130//   {
     131//     log_printf(FUNC,Read_queue,"Parameters (copy)","Begin");
     132//     test();
     133//     log_printf(FUNC,Read_queue,"Parameters (copy)","End");
     134//   };
    127135
    128   Parameters::~Parameters ()
     136  Parameters::~Parameters (void)
    129137  {
    130138    log_printf(FUNC,Read_queue,"~Parameters","Begin");
    131139    log_printf(FUNC,Read_queue,"~Parameters","End");
     140  };
     141
     142  void Parameters::copy (void)
     143  {
     144    log_printf(FUNC,Read_queue,"copy","Begin");
     145    log_printf(FUNC,Read_queue,"copy","End");
    132146  };
    133147
Note: See TracChangeset for help on using the changeset viewer.