Ignore:
Timestamp:
Jun 17, 2009, 2:11:25 PM (15 years ago)
Author:
rosiere
Message:

1) Add test and configuration
2) Fix Bug
3) Add log file in load store unit
4) Fix Bug in environment

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit
Files:
6 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/include/Load_store_unit.h

    r122 r124  
    1414#endif
    1515
    16 #include <iostream>
    1716#include "Common/include/ToString.h"
    1817#include "Common/include/Debug.h"
     
    3130#endif
    3231#include "Behavioural/include/Usage.h"
     32
     33#include <iostream>
     34#include <fstream>
    3335
    3436namespace morpheo {
     
    194196  private   : Tcontrol_t                      internal_DCACHE_REQ_VAL         ;
    195197  private   : Tselect_queue_t                 internal_DCACHE_REQ_SELECT_QUEUE;
    196 #endif
     198
     199#if defined(DEBUG) and defined(DEBUG_Load_store_unit) and (DEBUG_Load_store_unit == true)
     200  private   : std::ofstream                 * memory_log_file;
     201#endif
     202
     203#endif
     204
    197205
    198206    // -----[ methods ]---------------------------------------------------
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Parameters.h

    r104 r124  
    4343  public : uint32_t            _nb_general_register          ;
    4444  public : uint32_t            _nb_special_register          ;
     45  public : uint32_t            _nb_thread                    ;
     46  public : bool              * _num_thread_valid             ; //[nb_thread]
    4547
    4648//public : uint32_t            _size_address_store_queue             ;
     
    6668  public : Tdcache_address_t   _mask_address_msb                     ;
    6769  public : Tdcache_address_t   _mask_check_hit_byte                  ;
    68  
     70
    6971    //-----[ methods ]-----------------------------------------------------------
    7072  public : Parameters  (uint32_t            size_store_queue       ,
     
    8486                        uint32_t            nb_general_register    ,
    8587                        uint32_t            nb_special_register    ,
     88                        uint32_t            nb_thread              ,
     89                        bool              * num_thread_valid       , //[nb_thread]
    8690                        bool                is_toplevel=false);
    8791
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_allocation.cpp

    r122 r124  
    99#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
    1010#include "Behavioural/include/Allocation.h"
     11#include "Common/include/Filename.h"
    1112
    1213namespace morpheo                    {
     
    177178#endif
    178179
     180#if defined(DEBUG) and defined(DEBUG_Load_store_unit) and (DEBUG_Load_store_unit == true)
     181    directory_init ();
     182
     183    memory_log_file = new std::ofstream [_param->_nb_thread];
     184    for (uint32_t i=0; i<_param->_nb_thread; ++i)
     185      if (_param->_num_thread_valid [i])
     186        {
     187         
     188          std::string filename = morpheo::filename(MORPHEO_LOG,
     189                                                   "Memory_access-thread_"+toString(i),
     190                                                   "",
     191                                                   "log",
     192                                                   _simulation_file_with_date,
     193                                                   _simulation_file_with_pid ,
     194                                                   true);
     195         
     196          memory_log_file [i].open(filename.c_str() ,std::ios::out | std::ios::trunc);
     197        }
     198#endif
     199
    179200    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
    180201  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_deallocation.cpp

    r122 r124  
    121121    delete    _component;
    122122
     123#if defined(DEBUG) and defined(DEBUG_Load_store_unit) and (DEBUG_Load_store_unit == true)
     124    for (uint32_t i=0; i<_param->_nb_thread; ++i)
     125      if (_param->_num_thread_valid [i])
     126        {
     127          memory_log_file [i].close();
     128        }
     129#endif
    123130
    124131    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_transition.cpp

    r122 r124  
    88
    99#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
     10#include "Behavioural/include/Identification.h"
    1011
    1112namespace morpheo                    {
     
    950951                  _store_queue [reg_STORE_QUEUE_PTR_READ]._state = STORE_QUEUE_COMMIT;
    951952
     953#if defined(DEBUG) and defined(DEBUG_Load_store_unit) and (DEBUG_Load_store_unit == true)
     954                    {
     955                      // log file
     956                      Tcontext_t num_thread    = get_num_thread(_store_queue [reg_STORE_QUEUE_PTR_READ]._context_id   , _param->_size_context_id   ,
     957                                                                _store_queue [reg_STORE_QUEUE_PTR_READ]._front_end_id , _param->_size_front_end_id ,
     958                                                                _store_queue [reg_STORE_QUEUE_PTR_READ]._ooo_engine_id, _param->_size_ooo_engine_id);
     959
     960                      memory_log_file [num_thread]
     961                        << "[" << simulation_cycle() << "] "
     962                        << std::hex
     963                        << "@ 0x" << std::setfill('0') << std::setw(_param->_size_general_data/4) << _store_queue [reg_STORE_QUEUE_PTR_READ]._address << " -[ Write ]-> 0x" << std::setfill('0') << std::setw(_param->_size_general_data/4) << _store_queue [reg_STORE_QUEUE_PTR_READ]._wdata << " "
     964                        << std::dec
     965                        << "{" << toString(_store_queue [reg_STORE_QUEUE_PTR_READ]._operation) << "}";
     966                     
     967                      memory_log_file [num_thread] << std::endl;
     968                    }
     969#endif     
     970
     971
    952972                  break;
    953973                }
     
    11251145                _load_queue [packet_id]._rdata = data;
    11261146               
     1147#if defined(DEBUG) and defined(DEBUG_Load_store_unit) and (DEBUG_Load_store_unit == true)
     1148                {
     1149                  // log file
     1150                  Tcontext_t num_thread    = get_num_thread(_load_queue [packet_id]._context_id   , _param->_size_context_id   ,
     1151                                                            _load_queue [packet_id]._front_end_id , _param->_size_front_end_id ,
     1152                                                            _load_queue [packet_id]._ooo_engine_id, _param->_size_ooo_engine_id);
     1153                 
     1154                  memory_log_file [num_thread]
     1155                    << "[" << simulation_cycle() << "] "
     1156                    << std::hex
     1157                    << "@ 0x" << std::setfill('0') << std::setw(_param->_size_general_data/4) << _load_queue [packet_id]._address << " -[ Read  ]-> 0x" << std::setfill('0') << std::setw(_param->_size_general_data/4) << _load_queue [packet_id]._rdata << " "
     1158                    << std::dec
     1159                    << "{" << toString(_load_queue [packet_id]._operation) << "}";
     1160                 
     1161                  memory_log_file [num_thread] << std::endl;
     1162                }
     1163#endif     
     1164
    11271165                if (error != DCACHE_ERROR_NONE)
    11281166                  {
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters.cpp

    r117 r124  
    3636                          uint32_t            nb_general_register    ,
    3737                          uint32_t            nb_special_register    ,
     38                          uint32_t            nb_thread              ,
     39                          bool              * num_thread_valid       , //[nb_thread]
    3840                          bool                is_toplevel)
    3941  {
     
    5456    _nb_general_register                   = nb_general_register    ;
    5557    _nb_special_register                   = nb_special_register    ;
     58    _nb_thread                             = nb_thread              ;
     59    _num_thread_valid                      = num_thread_valid       ;
    5660   
    5761    _size_speculative_access_queue_ptr     = log2(size_speculative_access_queue);
     
    149153  {
    150154    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
     155
    151156    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
    152157  };
Note: See TracChangeset for help on using the changeset viewer.