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_Execute_unit/Execute_unit/Load_store_unit/src/Parameters.cpp

    r81 r88  
    2626                          Tspeculative_load_t speculative_load       ,
    2727                          uint32_t            nb_bypass_memory       ,
     28                          uint32_t            nb_cache_port          ,
     29                          uint32_t            nb_inst_memory         ,
    2830                          uint32_t            nb_context             ,
    2931                          uint32_t            nb_front_end           ,
     
    3335                          uint32_t            size_special_data      ,
    3436                          uint32_t            nb_general_register    ,
    35                           uint32_t            nb_special_register    ):
    36     _size_store_queue        (size_store_queue       ),
    37     _size_load_queue         (size_load_queue        ),
    38     _size_speculative_access_queue (size_speculative_access_queue),
    39     _nb_port_check           (nb_port_check          ),
    40     _speculative_load        (speculative_load       ),
    41     _nb_bypass_memory        (nb_bypass_memory       ),
    42     _nb_context              (nb_context             ),
    43     _nb_front_end            (nb_front_end           ),
    44     _nb_ooo_engine           (nb_ooo_engine          ),
    45     _nb_packet               (nb_packet              ),
    46     _size_general_data       (size_general_data      ),
    47     _size_special_data       (size_special_data      ),
    48     _nb_general_register     (nb_general_register    ),
    49     _nb_special_register     (nb_special_register    ),
    50    
    51     _size_address_store_queue              (log2(size_store_queue             )),
    52     _size_address_load_queue               (log2(size_load_queue              )),
    53     _size_address_speculative_access_queue (log2(size_speculative_access_queue)),
    54 
    55     _size_context_id         (log2(nb_context         )),
    56     _size_front_end_id       (log2(nb_front_end       )),
    57     _size_ooo_engine_id      (log2(nb_ooo_engine      )),
    58     _size_packet_id          (log2(nb_packet          )),
    59     _size_general_register   (log2(nb_general_register)),
    60     _size_special_register   (log2(nb_special_register)),
    61     _size_dcache_context_id  (_size_context_id + _size_front_end_id + _size_ooo_engine_id),
    62     _size_dcache_packet_id   ((log2((size_store_queue>size_load_queue)?size_store_queue:size_load_queue))+1),
    63 
    64     _have_port_context_id        (_size_context_id   >0),
    65     _have_port_front_end_id      (_size_front_end_id >0),
    66     _have_port_ooo_engine_id     (_size_ooo_engine_id>0),
    67     _have_port_packet_id         (_size_packet_id    >0),
    68     _have_port_dcache_context_id (_size_dcache_context_id>0),
    69     _have_port_load_queue_ptr    (_size_load_queue>1),
    70 
    71     _mask_address_lsb            (gen_mask<Tdcache_address_t>(log2(size_general_data/8))),
    72     _mask_address_msb            (gen_mask<Tdcache_address_t>(size_general_data) << log2(size_general_data/8))
     37                          uint32_t            nb_special_register    ,
     38                          bool                is_toplevel)
    7339  {
    7440    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
     41
     42    _size_store_queue                      = size_store_queue       ;
     43    _size_load_queue                       = size_load_queue        ;
     44    _size_speculative_access_queue         = size_speculative_access_queue;
     45    _nb_port_check                         = nb_port_check          ;
     46    _speculative_load                      = speculative_load       ;
     47    _nb_bypass_memory                      = nb_bypass_memory       ;
     48    _nb_cache_port                         = nb_cache_port          ;
     49    _nb_inst_memory                        = nb_inst_memory         ;
     50    _nb_context                            = nb_context             ;
     51    _nb_front_end                          = nb_front_end           ;
     52    _nb_ooo_engine                         = nb_ooo_engine          ;
     53    _nb_packet                             = nb_packet              ;
     54    _nb_general_register                   = nb_general_register    ;
     55    _nb_special_register                   = nb_special_register    ;
     56   
     57    _size_speculative_access_queue_ptr     = log2(size_speculative_access_queue);
     58
     59    _size_dcache_context_id                = log2(nb_context) + log2(nb_front_end) + log2(nb_ooo_engine);
     60    _size_dcache_packet_id                 = (log2((size_store_queue>size_load_queue)?size_store_queue:size_load_queue))+1;
     61
     62    _have_port_dcache_context_id           = _size_dcache_context_id>0;
     63
     64    _mask_address_lsb                      = gen_mask<Tdcache_address_t>(log2(size_general_data/8));
     65    _mask_address_msb                      = gen_mask<Tdcache_address_t>(size_general_data) << log2(size_general_data/8);
     66
    7567    test();
     68
     69    if (is_toplevel)
     70      {
     71        _size_context_id                       = log2(nb_context         );
     72        _size_front_end_id                     = log2(nb_front_end       );
     73        _size_ooo_engine_id                    = log2(nb_ooo_engine      );
     74        _size_rob_ptr                          = log2(nb_packet          );
     75        _size_general_register                 = log2(nb_general_register);
     76        _size_special_register                 = log2(nb_special_register);
     77        _size_store_queue_ptr                  = log2(size_store_queue   );
     78        _size_load_queue_ptr                   = log2(size_load_queue    );
     79        _size_general_data                     = size_general_data      ;
     80        _size_special_data                     = size_special_data      ;
     81
     82        _have_port_context_id                  = _size_context_id    >0;
     83        _have_port_front_end_id                = _size_front_end_id  >0;
     84        _have_port_ooo_engine_id               = _size_ooo_engine_id >0;
     85        _have_port_rob_ptr                     = _size_rob_ptr       >0;
     86        _have_port_load_queue_ptr              = _size_load_queue_ptr>0;
     87
     88        copy();
     89      }
     90
    7691    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
    7792  };
    7893 
     94// #undef  FUNCTION
     95// #define FUNCTION "Load_store_unit::Parameters (copy)"
     96//   Parameters::Parameters (Parameters & param):
     97//     _size_store_queue        (param._size_store_queue       ),
     98//     _size_load_queue         (param._size_load_queue        ),
     99//     _size_speculative_access_queue (param._size_speculative_access_queue),
     100//     _nb_port_check           (param._nb_port_check          ),
     101//     _speculative_load        (param._speculative_load       ),
     102//     _nb_bypass_memory        (param._nb_bypass_memory       ),
     103//     _nb_cache_port           (param._nb_cache_port          ),
     104//     _nb_inst_memory          (param._nb_inst_memory         ),
     105//     _nb_context              (param._nb_context             ),
     106//     _nb_front_end            (param._nb_front_end           ),
     107//     _nb_ooo_engine           (param._nb_ooo_engine          ),
     108//     _nb_packet               (param._nb_packet              ),
     109//     _size_general_data       (param._size_general_data      ),
     110//     _size_special_data       (param._size_special_data      ),
     111//     _nb_general_register     (param._nb_general_register    ),
     112//     _nb_special_register     (param._nb_special_register    ),
     113
     114//     _size_address_store_queue              (param._size_address_store_queue             ),
     115//     _size_address_load_queue               (param._size_address_load_queue              ),
     116//     _size_address_speculative_access_queue (param._size_address_speculative_access_queue),
     117
     118//     _size_context_id         (param._size_context_id        ),
     119//     _size_front_end_id       (param._size_front_end_id      ),
     120//     _size_ooo_engine_id      (param._size_ooo_engine_id     ),
     121//     _size_packet_id          (param._size_packet_id         ),
     122//     _size_general_register   (param._size_general_register  ),
     123//     _size_special_register   (param._size_special_register  ),
     124//     _size_dcache_context_id  (param._size_dcache_context_id ),
     125//     _size_dcache_packet_id   (param._size_dcache_packet_id  ),
     126
     127//     _have_port_context_id    (param._have_port_context_id   ),
     128//     _have_port_front_end_id  (param._have_port_front_end_id ),
     129//     _have_port_ooo_engine_id (param._have_port_ooo_engine_id),
     130//     _have_port_packet_id     (param._have_port_packet_id    ),
     131//     _have_port_dcache_context_id(param._have_port_dcache_context_id),
     132//     _have_port_load_queue_ptr(param._have_port_load_queue_ptr),
     133
     134//     _mask_address_lsb        (param._mask_address_lsb),
     135//     _mask_address_msb        (param._mask_address_msb)
     136//   {
     137//     log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
     138//     test();
     139//     log_printf(FUNC,Load_store_unit,FUNCTION,"End");
     140//   };
     141
    79142#undef  FUNCTION
    80 #define FUNCTION "Load_store_unit::Parameters (copy)"
    81   Parameters::Parameters (Parameters & param):
    82     _size_store_queue        (param._size_store_queue       ),
    83     _size_load_queue         (param._size_load_queue        ),
    84     _size_speculative_access_queue (param._size_speculative_access_queue),
    85     _nb_port_check           (param._nb_port_check          ),
    86     _speculative_load        (param._speculative_load       ),
    87     _nb_bypass_memory        (param._nb_bypass_memory       ),
    88     _nb_context              (param._nb_context             ),
    89     _nb_front_end            (param._nb_front_end           ),
    90     _nb_ooo_engine           (param._nb_ooo_engine          ),
    91     _nb_packet               (param._nb_packet              ),
    92     _size_general_data       (param._size_general_data      ),
    93     _size_special_data       (param._size_special_data      ),
    94     _nb_general_register     (param._nb_general_register    ),
    95     _nb_special_register     (param._nb_special_register    ),
    96 
    97     _size_address_store_queue              (param._size_address_store_queue             ),
    98     _size_address_load_queue               (param._size_address_load_queue              ),
    99     _size_address_speculative_access_queue (param._size_address_speculative_access_queue),
    100 
    101     _size_context_id         (param._size_context_id        ),
    102     _size_front_end_id       (param._size_front_end_id      ),
    103     _size_ooo_engine_id      (param._size_ooo_engine_id     ),
    104     _size_packet_id          (param._size_packet_id         ),
    105     _size_general_register   (param._size_general_register  ),
    106     _size_special_register   (param._size_special_register  ),
    107     _size_dcache_context_id  (param._size_dcache_context_id ),
    108     _size_dcache_packet_id   (param._size_dcache_packet_id  ),
    109 
    110     _have_port_context_id    (param._have_port_context_id   ),
    111     _have_port_front_end_id  (param._have_port_front_end_id ),
    112     _have_port_ooo_engine_id (param._have_port_ooo_engine_id),
    113     _have_port_packet_id     (param._have_port_packet_id    ),
    114     _have_port_dcache_context_id(param._have_port_dcache_context_id),
    115     _have_port_load_queue_ptr(param._have_port_load_queue_ptr),
    116 
    117     _mask_address_lsb        (param._mask_address_lsb),
    118     _mask_address_msb        (param._mask_address_msb)
     143#define FUNCTION "Load_store_unit::~Parameters"
     144  Parameters::~Parameters (void)
    119145  {
    120146    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
    121     test();
    122147    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
    123148  };
    124149
    125150#undef  FUNCTION
    126 #define FUNCTION "Load_store_unit::~Parameters"
    127   Parameters::~Parameters ()
     151#define FUNCTION "Load_store_unit::copy"
     152  void Parameters::copy (void)
    128153  {
    129154    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
Note: See TracChangeset for help on using the changeset viewer.