Ignore:
Timestamp:
Jan 15, 2009, 6:19:08 PM (15 years ago)
Author:
rosiere
Message:

1) Add soc test
2) fix bug (Pc management, Decod and execute, Update prediction ...)

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Execute_queue.h

    r97 r101  
    1414
    1515#include <iostream>
    16 #include <queue>
     16#include <list>
    1717#include "Common/include/ToString.h"
    1818#include "Common/include/Debug.h"
     
    9999   
    100100    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    101   private   : std::queue<execute_queue_entry_t *> * _queue;
     101  private   : std::list<execute_queue_entry_t *> * _queue;
    102102    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    103103  private   : Tcontrol_t                       internal_EXECUTE_QUEUE_IN_ACK ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_allocation.cpp

    r97 r101  
    9696    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    9797
    98      _queue = new std::queue<execute_queue_entry_t *>;
     98     _queue = new std::list<execute_queue_entry_t *>;
    9999
    100100#ifdef POSITION
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_deallocation.cpp

    r88 r101  
    7272      {
    7373        delete _queue->front();
    74         _queue->pop();
     74        _queue->pop_front();
    7575      }
    7676    delete _queue;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_genMoore.cpp

    r96 r101  
    2323  void Execute_queue::genMoore (void)
    2424  {
    25     log_printf(FUNC,Execute_queue,FUNCTION,"Begin");
     25    log_begin(Execute_queue,FUNCTION);
     26    log_function(Execute_queue,FUNCTION,_name.c_str());
    2627
    2728    // -----[ Interface "execute_queue_in" ]--------------------------------
     
    5960    }
    6061
    61     log_printf(FUNC,Execute_queue,FUNCTION,"End");
     62    log_end(Execute_queue,FUNCTION);
    6263  };
    6364
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_transition.cpp

    r96 r101  
    2323  void Execute_queue::transition (void)
    2424  {
    25     log_printf(FUNC,Execute_queue,FUNCTION,"Begin");
     25    log_begin(Execute_queue,FUNCTION);
     26    log_function(Execute_queue,FUNCTION,_name.c_str());
    2627
    2728    if (PORT_READ(in_NRESET) == 0)
     
    3233        // > 2) flush all slot in one cycle
    3334
    34         while (_queue->empty() == false)
    35           _queue->pop();
     35        _queue->clear();
    3636      }
    3737    else
     
    5353               PORT_READ(in_EXECUTE_QUEUE_IN_DATA         ));
    5454           
    55             _queue->push(entry);
     55            _queue->push_back(entry);
    5656          }
    5757
     
    6060          {
    6161            delete _queue->front();
    62             _queue->pop();
     62            _queue->pop_front();
    6363          }
    6464      }
     
    6969#endif
    7070   
     71#if DEBUG_Execute_queue and (DEBUG >= DEBUG_TRACE)
     72    log_printf(TRACE,Execute_queue,FUNCTION,"  * Dump Execute_queue");
     73    {
     74      uint32_t i=0;
     75      for (std::list<execute_queue_entry_t *>::iterator it=_queue->begin();
     76           it!=_queue->end();
     77           ++it)
     78        {
     79          log_printf(TRACE,Execute_queue,FUNCTION,"  [%d] %.2d %.2d %.2d, %.4d, %.1d, %.2d %.1d, %.8x %.8x",
     80                     i,
     81                     (*it)->_context_id   ,
     82                     (*it)->_front_end_id ,
     83                     (*it)->_ooo_engine_id,
     84                     (*it)->_packet_id    ,
     85                   //(*it)->_operation    ,
     86                   //(*it)->_type         ,
     87                     (*it)->_flags        ,
     88                     (*it)->_exception    ,
     89                     (*it)->_no_sequence  ,
     90                     (*it)->_address      ,
     91                     (*it)->_data
     92                     );
     93          i++;
     94        }
     95    }
     96#endif
     97
    7198
    7299#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
     
    74101#endif
    75102
    76     log_printf(FUNC,Execute_queue,FUNCTION,"End");
     103    log_end(Execute_queue,FUNCTION);
    77104  };
    78105
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_vhdl.cpp

    r100 r101  
    3535      (_param->_size_queue,
    3636       _param->_size_internal_queue,
    37        0
     37       0,
     38       false,
     39       false
    3840       );
    3941   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_genMoore.cpp

    r88 r101  
    2323  void Write_queue::genMoore (void)
    2424  {
    25     log_printf(FUNC,Write_queue,FUNCTION,"Begin");
     25    log_begin(Write_queue,FUNCTION);
     26    log_function(Write_queue,FUNCTION,_name.c_str());
    2627   
    2728    // -----[ Interface "Write_queue_in" ]--------------------------------
     
    109110        }
    110111    }
    111     log_printf(FUNC,Write_queue,FUNCTION,"End");
     112    log_end(Write_queue,FUNCTION);
    112113  };
    113114
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_transition.cpp

    r97 r101  
    2424  void Write_queue::transition (void)
    2525  {
    26     log_printf(FUNC,Write_queue,FUNCTION,"Begin");
     26    log_begin(Write_queue,FUNCTION);
     27    log_function(Write_queue,FUNCTION,_name.c_str());
    2728
    2829    if (PORT_READ(in_NRESET) == 0)
     
    8788#endif
    8889
     90#if DEBUG_Write_queue and (DEBUG >= DEBUG_TRACE)
     91    log_printf(TRACE,Write_queue,FUNCTION,"  * Dump Write_queue");
     92    {
     93      uint32_t i=0;
     94     
     95      for (std::list<write_queue_entry_t *>::iterator it=_queue->begin();
     96           it!=_queue->end();
     97           ++it)
     98        {
     99          log_printf(TRACE,Write_queue,FUNCTION,"  [%d] %.2d %.2d %.2d, %.4d, %.1d %.4d %.8x, %.1d %.4d %.1d, %.2d %.1d, %.8x",
     100                     i,
     101                     (*it)->_context_id   ,
     102                     (*it)->_front_end_id ,
     103                     (*it)->_ooo_engine_id,
     104                     (*it)->_packet_id    ,
     105                   //(*it)->_operation    ,
     106                   //(*it)->_type         ,
     107                     (*it)->_write_rd     ,
     108                     (*it)->_num_reg_rd   ,
     109                     (*it)->_data_rd      ,
     110                     (*it)->_write_re     ,
     111                     (*it)->_num_reg_re   ,
     112                     (*it)->_data_re      ,
     113                     (*it)->_exception    ,
     114                     (*it)->_no_sequence  ,
     115                     (*it)->_address      );
     116          i++;
     117        }
     118    }
     119#endif
     120
    89121#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
    90122    end_cycle ();
    91123#endif
    92124
    93     log_printf(FUNC,Write_queue,FUNCTION,"End");
     125    log_end(Write_queue,FUNCTION);
    94126  };
    95127
Note: See TracChangeset for help on using the changeset viewer.