Ignore:
Timestamp:
Apr 14, 2009, 8:39:12 PM (15 years ago)
Author:
rosiere
Message:

1) Add modelsim simulation systemC
2) Modelsim cosimulation systemC / VHDL is not finish !!!! (cf execute_queue and write_unit)
3) Add multi architecture
5) Add template for comparator, multiplier and divider
6) Change Message
Warning) Various test macro have change, many selftest can't compile

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core
Files:
17 added
101 edited
3 moved

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/Makefile.defs

    r88 r113  
    77#
    88
     9ENTITY                          = Core_Glue
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Dcache_Access/Makefile.defs

    r88 r113  
    77#
    88
     9ENTITY                          = Dcache_Access
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Icache_Access/Makefile.defs

    r88 r113  
    77#
    88
     9ENTITY                          = Icache_Access
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Makefile.defs

    r88 r113  
    77#
    88
     9ENTITY                          = Core
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Execute_loop_Glue/Makefile.defs

    r88 r113  
    77#
    88
     9ENTITY                          = Execute_loop_Glue
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Execute_loop_Glue/SelfTest/src/test.cpp

    r88 r113  
    4848  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
    4949 
     50  sc_signal<Tcontrol_t        > **  in_GPR_WRITE_WRITE_UNIT_VAL               ;
     51  sc_signal<Tcontrol_t        > ** out_GPR_WRITE_WRITE_UNIT_ACK               ;
     52  sc_signal<Tcontext_t        > **  in_GPR_WRITE_WRITE_UNIT_OOO_ENGINE_ID     ;
     53  sc_signal<Tgeneral_address_t> **  in_GPR_WRITE_WRITE_UNIT_NUM_REG           ;
     54  sc_signal<Tgeneral_data_t   > **  in_GPR_WRITE_WRITE_UNIT_DATA              ;
     55  sc_signal<Tcontrol_t        > ** out_GPR_WRITE_REGISTER_FILE_VAL            ;
     56  sc_signal<Tcontrol_t        > **  in_GPR_WRITE_REGISTER_FILE_ACK            ;
     57  sc_signal<Tcontext_t        > ** out_GPR_WRITE_REGISTER_FILE_OOO_ENGINE_ID  ;
     58  sc_signal<Tgeneral_address_t> ** out_GPR_WRITE_REGISTER_FILE_NUM_REG        ;
     59  sc_signal<Tgeneral_data_t   > ** out_GPR_WRITE_REGISTER_FILE_DATA           ;
     60  sc_signal<Tcontrol_t        > ** out_GPR_WRITE_READ_UNIT_VAL                ;
     61  sc_signal<Tcontext_t        > ** out_GPR_WRITE_READ_UNIT_OOO_ENGINE_ID      ;
     62  sc_signal<Tgeneral_address_t> ** out_GPR_WRITE_READ_UNIT_NUM_REG            ;
     63  sc_signal<Tgeneral_data_t   > ** out_GPR_WRITE_READ_UNIT_DATA               ;
     64  sc_signal<Tcontrol_t        > **  in_SPR_WRITE_WRITE_UNIT_VAL               ;
     65  sc_signal<Tcontrol_t        > ** out_SPR_WRITE_WRITE_UNIT_ACK               ;
     66  sc_signal<Tcontext_t        > **  in_SPR_WRITE_WRITE_UNIT_OOO_ENGINE_ID     ;
     67  sc_signal<Tspecial_address_t> **  in_SPR_WRITE_WRITE_UNIT_NUM_REG           ;
     68  sc_signal<Tspecial_data_t   > **  in_SPR_WRITE_WRITE_UNIT_DATA              ;
     69  sc_signal<Tcontrol_t        > ** out_SPR_WRITE_REGISTER_FILE_VAL            ;
     70  sc_signal<Tcontrol_t        > **  in_SPR_WRITE_REGISTER_FILE_ACK            ;
     71  sc_signal<Tcontext_t        > ** out_SPR_WRITE_REGISTER_FILE_OOO_ENGINE_ID  ;
     72  sc_signal<Tspecial_address_t> ** out_SPR_WRITE_REGISTER_FILE_NUM_REG        ;
     73  sc_signal<Tspecial_data_t   > ** out_SPR_WRITE_REGISTER_FILE_DATA           ;
     74  sc_signal<Tcontrol_t        > ** out_SPR_WRITE_READ_UNIT_VAL                ;
     75  sc_signal<Tcontext_t        > ** out_SPR_WRITE_READ_UNIT_OOO_ENGINE_ID      ;
     76  sc_signal<Tspecial_address_t> ** out_SPR_WRITE_READ_UNIT_NUM_REG            ;
     77  sc_signal<Tspecial_data_t   > ** out_SPR_WRITE_READ_UNIT_DATA               ;
     78
    5079  ALLOC1_SC_SIGNAL( in_GPR_WRITE_WRITE_UNIT_VAL               ," in_GPR_WRITE_WRITE_UNIT_VAL             ",Tcontrol_t        ,_param->_nb_gpr_write);
    5180  ALLOC1_SC_SIGNAL(out_GPR_WRITE_WRITE_UNIT_ACK               ,"out_GPR_WRITE_WRITE_UNIT_ACK             ",Tcontrol_t        ,_param->_nb_gpr_write);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Execute_loop
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Functionnal_unit
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/Operation/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Operation
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/Makefile.defs

    r81 r113  
    22# $Id$
    33#
    4 # [ Description ]
     4# [ Description ]
    55#
    66# Makefile
    77#
    88
    9 #-----[ Directory ]----------------------------------------
     9ENTITY                          = Load_store_unit
     10
     11#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../..
    1113DIR_MORPHEO                     = $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/include/Memory.h

    r101 r113  
    147147    trace_memory_t trace;
    148148
    149     trace._cycle    = sc_simulation_time();
     149    trace._cycle    = simulation_cycle();
    150150    trace._context  = context;
    151151    trace._address  = address;
     
    229229    trace_memory_t trace;
    230230
    231     trace._cycle    = sc_simulation_time();
     231    trace._cycle    = simulation_cycle();
    232232    trace._context  = context;
    233233    trace._address  = address;
     
    247247    trace_memory_t trace;
    248248
    249     trace._cycle    = sc_simulation_time();
     249    trace._cycle    = simulation_cycle();
    250250    trace._context  = context;
    251251    trace._address  = address;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/src/test1.cpp

    r82 r113  
    270270            load_queue_use  [i] = false;
    271271
    272           double             current_cycle = sc_simulation_time();
     272          double             current_cycle = simulation_cycle();
    273273          double             cycle_min     = current_cycle;
    274274
     
    451451              in_MEMORY_IN_VAL ->write((not fifo_request.empty()) and
    452452                                       can_execute                and
    453                                        (sc_simulation_time() >= fifo_request.top()._cycle));
     453                                       (simulation_cycle() >= fifo_request.top()._cycle));
    454454
    455455              if (_param->_have_port_context_id)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/src/test2.cpp

    r104 r113  
    412412              if (not fifo_request.empty())
    413413                {
    414                   can_execute = sc_simulation_time() >= fifo_request.top()._cycle;
     414                  can_execute = simulation_cycle() >= fifo_request.top()._cycle;
    415415                  if (is_operation_memory_store(fifo_request.top()._operation))
    416416                    can_execute &= (not store_queue_use [fifo_request.top()._store_queue_ptr_write] and (nb_store_slot_use < _param->_size_store_queue-1)) or is_operation_memory_store_head(fifo_request.top()._operation);
     
    512512                    }
    513513                 
    514                   std::cout << "kane - nb_request_memory_out : " << nb_request_memory_out << std::endl;
    515 
    516514                  // a lot of test
    517515                  TEST(Tpacket_t         , out_MEMORY_OUT_PACKET_ID    [0]->read(), tab_request[packet_id]._packet_id    );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Read_unit
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/Makefile.defs

    r81 r113  
    22# $Id$
    33#
    4 # [ Description ]
     4# [ Description ]
    55#
    66# Makefile
    77#
    88
    9 #-----[ Directory ]----------------------------------------
     9ENTITY                          = Read_queue
     10
     11#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../..
    1113DIR_MORPHEO                     = $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/Makefile.defs

    r81 r113  
    22# $Id$
    33#
    4 # [ Description ]
     4# [ Description ]
    55#
    66# Makefile
    77#
    88
    9 #-----[ Directory ]----------------------------------------
     9ENTITY                          = Reservation_station
     10
     11#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../..
    1113DIR_MORPHEO                     = $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Execute_queue
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest/include/top.h

    r111 r113  
    22 * $Id$
    33 *
    4  * [ Description ]
     4 * [ Description ]
    55 *
    6  * Test "RegisterFile"
     6 * Test "Execute_queue"
    77 */
    88
     
    1111#endif
    1212
    13 #include <string>
    14 #include <iostream>
    15 #include <sys/time.h>
     13#define NB_ITERATION  16
     14#define CYCLE_MAX     (1024*NB_ITERATION)
    1615
     16#include "Common/include/Test.h"
    1717#include "Common/include/Time.h"
    1818#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Execute_queue.h"
     
    2929using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_queue;
    3030
    31 void test    (string name,
    32               morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_queue::Parameters * param);
     31SC_MODULE(top)
     32{
     33#ifdef SYSTEMC
     34 private: sc_clock               *  in_CLOCK ;
     35 private: sc_signal<Tcontrol_t>  *  in_NRESET;
     36
     37  private: sc_signal<Tcontrol_t        >    *  in_EXECUTE_QUEUE_IN_VAL           ;
     38  private: sc_signal<Tcontrol_t        >    * out_EXECUTE_QUEUE_IN_ACK           ;
     39  private: sc_signal<Tcontext_t        >    *  in_EXECUTE_QUEUE_IN_CONTEXT_ID    ;
     40  private: sc_signal<Tcontext_t        >    *  in_EXECUTE_QUEUE_IN_FRONT_END_ID  ;
     41  private: sc_signal<Tcontext_t        >    *  in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID ;
     42  private: sc_signal<Tpacket_t         >    *  in_EXECUTE_QUEUE_IN_PACKET_ID     ;
     43//private: sc_signal<Toperation_t      >    *  in_EXECUTE_QUEUE_IN_OPERATION     ;
     44//private: sc_signal<Ttype_t           >    *  in_EXECUTE_QUEUE_IN_TYPE          ;
     45  private: sc_signal<Tspecial_data_t   >    *  in_EXECUTE_QUEUE_IN_FLAGS         ;
     46  private: sc_signal<Texception_t      >    *  in_EXECUTE_QUEUE_IN_EXCEPTION     ;
     47  private: sc_signal<Tcontrol_t        >    *  in_EXECUTE_QUEUE_IN_NO_SEQUENCE   ;
     48  private: sc_signal<Taddress_t        >    *  in_EXECUTE_QUEUE_IN_ADDRESS       ;
     49  private: sc_signal<Tgeneral_data_t   >    *  in_EXECUTE_QUEUE_IN_DATA          ;
     50
     51  private: sc_signal<Tcontrol_t        >    * out_EXECUTE_QUEUE_OUT_VAL          ;
     52  private: sc_signal<Tcontrol_t        >    *  in_EXECUTE_QUEUE_OUT_ACK          ;
     53  private: sc_signal<Tcontext_t        >    * out_EXECUTE_QUEUE_OUT_CONTEXT_ID   ;
     54  private: sc_signal<Tcontext_t        >    * out_EXECUTE_QUEUE_OUT_FRONT_END_ID ;
     55  private: sc_signal<Tcontext_t        >    * out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID;
     56  private: sc_signal<Tpacket_t         >    * out_EXECUTE_QUEUE_OUT_PACKET_ID    ;
     57//private: sc_signal<Toperation_t      >    * out_EXECUTE_QUEUE_OUT_OPERATION    ;
     58//private: sc_signal<Ttype_t           >    * out_EXECUTE_QUEUE_OUT_TYPE         ;
     59  private: sc_signal<Tspecial_data_t   >    * out_EXECUTE_QUEUE_OUT_FLAGS        ;
     60  private: sc_signal<Texception_t      >    * out_EXECUTE_QUEUE_OUT_EXCEPTION    ;
     61  private: sc_signal<Tcontrol_t        >    * out_EXECUTE_QUEUE_OUT_NO_SEQUENCE  ;
     62  private: sc_signal<Taddress_t        >    * out_EXECUTE_QUEUE_OUT_ADDRESS      ;
     63  private: sc_signal<Tgeneral_data_t   >    * out_EXECUTE_QUEUE_OUT_DATA         ;
     64
     65#endif
     66
     67 private: std::string name;
     68 private: Tusage_t _usage;
     69 private: morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_queue::Parameters * _param;
     70#ifdef STATISTICS
     71 private: morpheo::behavioural::Parameters_Statistics * _param_stat;
     72#endif
     73 private: Execute_queue * component;
     74
     75 private: void usage
     76    (
     77#ifdef MTI_SYSTEMC
     78     int argc, const char * const * argv
     79#else
     80     int argc, char * argv[]
     81#endif
     82     );
     83 private: void allocation   (void);
     84 private: void deallocation (void);
     85 public : void test         (void);
     86
     87#ifdef MTI_SYSTEMC
     88  SC_CTOR(top::top);
     89#else
     90 public : top (sc_module_name module_name,int argc, char * argv[]);
     91#endif
     92 public : ~top(void);
     93};
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest/src/main.cpp

    r88 r113  
    22 * $Id$
    33 *
    4  * [ Description ]
     4 * [ Description ]
    55 *
    66 */
    77
    8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest/include/test.h"
     8#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest/include/top.h"
    99
    10 #define NB_PARAMS 7
    11 
    12 void usage (int argc, char * argv[])
     10#ifndef MTI_SYSTEMC
     11# ifndef SYSTEMC
     12int main    (int argc, char * argv[])
     13# else
     14int sc_main (int argc, char * argv[])
     15# endif
    1316{
    14   err (_("<Usage> %s name_instance list_params.\n"),argv[0]);
    15   err (_("list_params is :\n"));
    16   err (_(" * size_queue          (uint32_t)\n"));
    17   err (_(" * nb_context          (uint32_t)\n"));
    18   err (_(" * nb_front_end        (uint32_t)\n"));
    19   err (_(" * nb_ooo_engine       (uint32_t)\n"));
    20   err (_(" * nb_packet           (uint32_t)\n"));
    21   err (_(" * size_general_data   (uint32_t)\n"));
    22   err (_(" * size_special_data   (uint32_t)\n"));
    23 
    24   exit (1);
    25 }
    26 
    27 #ifndef SYSTEMC
    28 int main    (int argc, char * argv[])
    29 #else
    30 int sc_main (int argc, char * argv[])
    31 #endif
    32 {
    33   if (argc != 2+NB_PARAMS)
    34     usage (argc, argv);
    35 
    36   uint32_t       x = 1;
    37 
    38   const string   name      =      argv[x++];
    39   const uint32_t size_queue          = atoi(argv[x++]);
    40   const uint32_t nb_context          = atoi(argv[x++]);
    41   const uint32_t nb_front_end        = atoi(argv[x++]);
    42   const uint32_t nb_ooo_engine       = atoi(argv[x++]);
    43   const uint32_t nb_packet           = atoi(argv[x++]);
    44   const uint32_t size_general_data   = atoi(argv[x++]);
    45   const uint32_t size_special_data   = atoi(argv[x++]);
     17  int _return = EXIT_SUCCESS;
    4618
    4719  try
    4820    {
    49       morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_queue::Parameters * param = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_queue::Parameters
    50         (size_queue         ,
    51          nb_context         ,
    52          nb_front_end       ,
    53          nb_ooo_engine      ,
    54          nb_packet          ,
    55          size_general_data  ,
    56          size_special_data  ,
    57          true // is_toplevel
    58          );
    59      
    60       msg(_("%s"),param->print(1).c_str());
    61      
    62       test (name,param);
     21      top * my_top = new top ("my_top",argc,argv);
     22
     23      my_top->test();
     24
     25      delete my_top;
    6326    }
    6427  catch (morpheo::ErrorMorpheo & error)
    6528    {
    66       msg (_("<%s> : %s.\n"),name.c_str(), error.what ());
    67       exit (EXIT_FAILURE);
     29      msgError(_("%s\n"),error.what ());
     30      _return = EXIT_FAILURE;
    6831    }
    69   catch (...)
     32 
     33  try
    7034    {
    71       err (_("<%s> : This test must generate a error.\n"),name.c_str());
    72       exit (EXIT_FAILURE);
     35      if (_return == EXIT_SUCCESS)
     36        TEST_OK("Execute_queue : no error");
     37      else
     38        TEST_KO("Execute_queue : a lot of error");
     39    }
     40  catch (morpheo::ErrorMorpheo & error)
     41    {
     42//    msgError(_("<%s> :\n%s"),name.c_str(), error.what ());
     43      _return = EXIT_FAILURE;
    7344    }
    7445
    75   return (EXIT_SUCCESS);
     46  return _return;
    7647}
    77 
     48#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Execute_queue.h

    r101 r113  
    1818#include "Common/include/Debug.h"
    1919
     20#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Wrapper_Execute_queue.h"
    2021#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Parameters.h"
    2122#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Types.h"
     
    2829#endif
    2930#include "Behavioural/include/Usage.h"
     31#include "Behavioural/include/Simulation.h"
     32
     33#include "Behavioural/Generic/Queue/include/Queue.h"
    3034
    3135namespace morpheo {
     
    4751  protected : const std::string  _name;
    4852  protected : const Parameters * _param;
    49   private   : const Tusage_t     _usage;
     53  public    :      Tusage_t     _usage;
    5054
    5155#ifdef STATISTICS
     
    9599  public    : SC_OUT(Taddress_t        )    * out_EXECUTE_QUEUE_OUT_ADDRESS      ;
    96100  public    : SC_OUT(Tgeneral_data_t   )    * out_EXECUTE_QUEUE_OUT_DATA         ;
    97 
    98     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    99101   
    100102    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     
    103105  private   : Tcontrol_t                       internal_EXECUTE_QUEUE_IN_ACK ;
    104106  private   : Tcontrol_t                       internal_EXECUTE_QUEUE_OUT_VAL;
     107
     108    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     109# ifdef VHDL
     110  private   : morpheo::behavioural::generic::queue::Parameters * _param_queue;
     111  private   : morpheo::behavioural::generic::queue::Queue      * _component_queue;
     112# endif
     113#endif
     114
     115#ifdef MODELSIM_COSIMULATION
     116    // ~~~~~[ Wrapper ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     117  private   : Wrapper_Execute_queue * _wrapper;
    105118#endif
    106119
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Parameters.h

    r98 r113  
    6161  public :        Parameters_test msg_error  (void);
    6262
    63   public :        std::string   print      (uint32_t depth);
    64   public : friend std::ostream& operator<< (std::ostream& output_stream,
    65                                             morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_queue::Parameters & x);
     63  public :        std::string     id         (void) const;
     64
     65  public :        std::string     print      (uint32_t depth);
     66  public : friend std::ostream&   operator<< (std::ostream& output_stream,
     67                                              morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_queue::Parameters & x);
    6668  };
    6769
     
    7274}; // end namespace multi_execute_loop
    7375}; // end namespace core
    74 
    7576}; // end namespace behavioural
    7677}; // end namespace morpheo             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue.cpp

    r88 r113  
    3535    _name              (name)
    3636    ,_param            (param)
    37     ,_usage            (usage)
    3837  {
    39     log_printf(FUNC,Execute_queue,FUNCTION,"Begin");
     38    log_begin(Execute_queue,FUNCTION);
    4039
    41 #if DEBUG_Execute_queue == true
    42     log_printf(INFO,Execute_queue,FUNCTION,_("<%s> Parameters"),_name.c_str());
     40    _usage = usage_environment(usage);
    4341
    44     std::cout << *param << std::endl;
    45 #endif   
     42// #if DEBUG_Execute_queue == true
     43//     log_printf(INFO,Execute_queue,FUNCTION,_("<%s> Parameters"),_name.c_str());
    4644
    47     log_printf(INFO,Execute_queue,FUNCTION,"Allocation");
     45//     std::cout << *param << std::endl;
     46// #endif   
     47
     48#ifdef MODELSIM_COSIMULATION
     49    {
     50      std::string param_id = param->id();
     51     
     52      if ((_model.get_type(_param->_type) == MODEL_VHDL) and
     53          (param_id != "")
     54          )
     55        {
     56          std::string vhdl_id = vhdl_get_id(_name);
     57         
     58          if (vhdl_id == param_id)
     59            {
     60              msgInformation(_("<%s> Use VHDL model\n"),_name.c_str());
     61              _usage = usage_cosimulation(_usage);
     62            }
     63          else
     64            {
     65              log_printf(TRACE,Execute_queue,FUNCTION,"get_id : %s",vhdl_id.c_str());
     66              log_printf(TRACE,Execute_queue,FUNCTION,"id     : %s",param_id.c_str());
     67           
     68              msgWarning(_("<%s> Can't load VHDL model, continue with SystemC model\n"),_name.c_str());
     69            }
     70        }
     71    }
     72#endif
     73
     74    log_printf(INFO,Execute_queue,FUNCTION,_("<%s> Allocation"),_name.c_str());
    4875    allocation ();
    4976
     
    5178    if (usage_is_set(_usage,USE_STATISTICS))
    5279      {
    53         log_printf(INFO,Execute_queue,FUNCTION,"Allocation of statistics");
     80        log_printf(INFO,Execute_queue,FUNCTION,("<%s> Allocation of statistics"),_name.c_str());
    5481
    5582        statistics_declaration(param_statistics);
     
    6188      {
    6289        // generate the vhdl
    63         log_printf(INFO,Execute_queue,FUNCTION,"Generate the vhdl");
     90        log_printf(INFO,Execute_queue,FUNCTION,_("<%s> Generate the vhdl"),_name.c_str());
    6491       
    6592        vhdl();
     
    6895
    6996#ifdef SYSTEMC
    70     if (usage_is_set(_usage,USE_SYSTEMC))
     97    if (usage_is_set(_usage,USE_SYSTEMC_BODY))
    7198      {
    72         log_printf(INFO,Execute_queue,FUNCTION,"Method - transition");
     99        log_printf(INFO,Execute_queue,FUNCTION,_("<%s> Method - transition"),_name.c_str());
    73100
    74101        SC_METHOD (transition);
     
    80107# endif   
    81108
    82         log_printf(INFO,Execute_queue,FUNCTION,"Method - genMoore");
     109        log_printf(INFO,Execute_queue,FUNCTION,_("<%s> Method - genMoore"),_name.c_str());
    83110
    84111        SC_METHOD (genMoore);
     
    89116        // List dependency information
    90117# endif   
    91        
     118      }
    92119#endif
    93       }
    94     log_printf(FUNC,Execute_queue,FUNCTION,"End");
     120    log_end(Execute_queue,FUNCTION);
    95121  };
    96122   
     
    99125  Execute_queue::~Execute_queue (void)
    100126  {
    101     log_printf(FUNC,Execute_queue,FUNCTION,"Begin");
     127    log_begin(Execute_queue,FUNCTION);
    102128
    103129#ifdef STATISTICS
    104130    if (usage_is_set(_usage,USE_STATISTICS))
    105131      {
    106         log_printf(INFO,Execute_queue,FUNCTION,"Generate Statistics file");
     132        log_printf(INFO,Execute_queue,FUNCTION,_("<%s> Generate Statistics file"),_name.c_str());
    107133       
    108134        delete _stat;
     
    110136#endif
    111137
    112     log_printf(INFO,Execute_queue,FUNCTION,"Deallocation");
     138    log_printf(INFO,Execute_queue,FUNCTION,_("<%s> Deallocation"),_name.c_str());
    113139    deallocation ();
    114140
    115     log_printf(FUNC,Execute_queue,FUNCTION,"End");
     141    log_end(Execute_queue,FUNCTION);
    116142  };
    117143
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_allocation.cpp

    r112 r113  
    22 * $Id$
    33 *
    4  * [ Description ]
     4 * [ Description ]
    55 *
    66 */
    77
     8#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Wrapper_Execute_queue.h"
    89#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Execute_queue.h"
    910#include "Behavioural/include/Allocation.h"
     
    2728
    2829    Entity * entity = _component->set_entity (_name       
    29                                               ,"Execute_queue"
     30                                              ,_param->_type
    3031#ifdef POSITION
    3132                                              ,COMBINATORY
     
    3536    _interfaces = entity->set_interfaces();
    3637
    37     // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     38    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    3839
    3940      Interface * interface = _interfaces->set_interface(""
     
    5455       ALLOC0_VALACK_IN ( in_EXECUTE_QUEUE_IN_VAL,VAL);
    5556       ALLOC0_VALACK_OUT(out_EXECUTE_QUEUE_IN_ACK,ACK);
    56        ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id       );
    57        ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id     );
    58        ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id    );
    59        ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_rob_ptr        );
    60 //     ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation        );
    61 //     ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type             );
    62        ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FLAGS        ,"flags"        ,Tspecial_data_t   ,_param->_size_special_data     );
    63        ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception        );
    64        ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t        ,1                              );
     57       ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id         );
     58       ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id       );
     59       ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id      );
     60       ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_rob_ptr            );
     61//     ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation          );
     62//     ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type               );
     63       ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FLAGS        ,"flags"        ,Tspecial_data_t   ,_param->_size_special_data       );
     64       ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception          );
     65       ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t        ,1                                );
    6566       ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_ADDRESS      ,"address"      ,Taddress_t        ,_param->_size_instruction_address);
    66        ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data     );
     67       ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data       );
    6768
    6869       ALLOC0_INTERFACE_END();
     
    9091     }
    9192
    92     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    93 
    94      _queue = new std::list<execute_queue_entry_t *>;
     93     // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     94     if (usage_is_set(_usage,USE_SYSTEMC_BODY))
     95       {
     96         _queue = new std::list<execute_queue_entry_t *>;
     97       }
     98
     99     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     100#ifdef VHDL
     101    if (usage_is_set(_usage,USE_VHDL))
     102      {
     103        _param_queue = new morpheo::behavioural::generic::queue::Parameters
     104          (_param->_size_queue,
     105           _param->_size_internal_queue,
     106           0,
     107           false,
     108           false
     109           );
     110       
     111        std::string queue_name = _name + "_queue";
     112        _component_queue = new morpheo::behavioural::generic::queue::Queue
     113          (queue_name.c_str()
     114# ifdef STATISTICS
     115           ,NULL
     116# endif
     117           ,_param_queue
     118           ,USE_VHDL);
     119       
     120        _component->set_component(_component_queue->_component
     121# ifdef POSITION
     122                                  , 0, 0, 0, 0
     123# endif
     124                                  , INSTANCE_LIBRARY
     125                                  );
     126      }
     127#endif
    95128
    96129#ifdef POSITION
    97      if (usage_is_set(_usage,USE_POSITION))
    98        _component->generate_file();
    99 #endif
    100 
     130    if (usage_is_set(_usage,USE_POSITION))
     131      _component->generate_file();
     132#endif
     133 
     134#ifdef MODELSIM_COSIMULATION
     135    if (usage_is_set(_usage,USE_COSIMULATION))
     136      {
     137        log_printf(INFO,Execute_queue,FUNCTION,_("<%s> : Create Wrapper"),_name.c_str());
     138
     139        _wrapper = new Wrapper_Execute_queue(_name.c_str(),"morpheo_behavioural","/dsk/l1/misc/Morpheo/work",_param);
     140//      _wrapper = new Wrapper_Execute_queue(_name.c_str(),"morpheo_behavioural","work");
     141
     142        log_printf(INFO,Execute_queue,FUNCTION,_("<%s> : Wrapper Instanciation"),_name.c_str());
     143
     144//         INSTANCE0_FOREIGN_SIGNAL_CLOCK(_wrapper, in_CLOCK                                              , "in_CLOCK"                           ,1);
     145//         INSTANCE0_FOREIGN_SIGNAL_IN   (_wrapper, in_NRESET                          ,Tcontrol_t        , "in_NRESET"                          ,1);
     146                                                                                                                     
     147//         INSTANCE0_FOREIGN_SIGNAL_IN   (_wrapper, in_EXECUTE_QUEUE_IN_VAL            ,Tcontrol_t        , "in_EXECUTE_QUEUE_IN_VAL"            ,1                                );
     148//         INSTANCE0_FOREIGN_SIGNAL_OUT  (_wrapper,out_EXECUTE_QUEUE_IN_ACK            ,Tcontrol_t        ,"out_EXECUTE_QUEUE_IN_ACK"            ,1                                );
     149//         INSTANCE0_FOREIGN_SIGNAL_IN   (_wrapper, in_EXECUTE_QUEUE_IN_CONTEXT_ID     ,Tcontext_t        , "in_EXECUTE_QUEUE_IN_CONTEXT_ID"     ,_param->_size_context_id         );
     150//         INSTANCE0_FOREIGN_SIGNAL_IN   (_wrapper, in_EXECUTE_QUEUE_IN_FRONT_END_ID   ,Tcontext_t        , "in_EXECUTE_QUEUE_IN_FRONT_END_ID"   ,_param->_size_front_end_id       );
     151//         INSTANCE0_FOREIGN_SIGNAL_IN   (_wrapper, in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID  ,Tcontext_t        , "in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID"  ,_param->_size_ooo_engine_id      );
     152//         INSTANCE0_FOREIGN_SIGNAL_IN   (_wrapper, in_EXECUTE_QUEUE_IN_PACKET_ID      ,Tpacket_t         , "in_EXECUTE_QUEUE_IN_PACKET_ID"      ,_param->_size_rob_ptr            );
     153// //      INSTANCE0_FOREIGN_SIGNAL_IN   (_wrapper, in_EXECUTE_QUEUE_IN_OPERATION      ,Toperation_t      , "in_EXECUTE_QUEUE_IN_OPERATION"      ,_param->_size_operation          );
     154// //      INSTANCE0_FOREIGN_SIGNAL_IN   (_wrapper, in_EXECUTE_QUEUE_IN_TYPE           ,Ttype_t           , "in_EXECUTE_QUEUE_IN_TYPE"           ,_param->_size_type               );
     155//         INSTANCE0_FOREIGN_SIGNAL_IN   (_wrapper, in_EXECUTE_QUEUE_IN_FLAGS          ,Tspecial_data_t   , "in_EXECUTE_QUEUE_IN_FLAGS"          ,_param->_size_special_data       );
     156//         INSTANCE0_FOREIGN_SIGNAL_IN   (_wrapper, in_EXECUTE_QUEUE_IN_EXCEPTION      ,Texception_t      , "in_EXECUTE_QUEUE_IN_EXCEPTION"      ,_param->_size_exception          );
     157//         INSTANCE0_FOREIGN_SIGNAL_IN   (_wrapper, in_EXECUTE_QUEUE_IN_NO_SEQUENCE    ,Tcontrol_t        , "in_EXECUTE_QUEUE_IN_NO_SEQUENCE"    ,1                                );
     158//         INSTANCE0_FOREIGN_SIGNAL_IN   (_wrapper, in_EXECUTE_QUEUE_IN_ADDRESS        ,Taddress_t        , "in_EXECUTE_QUEUE_IN_ADDRESS"        ,_param->_size_instruction_address);
     159//         INSTANCE0_FOREIGN_SIGNAL_IN   (_wrapper, in_EXECUTE_QUEUE_IN_DATA           ,Tgeneral_data_t   , "in_EXECUTE_QUEUE_IN_DATA"           ,_param->_size_general_data       );
     160                                                                                                                     
     161//         INSTANCE0_FOREIGN_SIGNAL_OUT  (_wrapper,out_EXECUTE_QUEUE_OUT_VAL           ,Tcontrol_t        ,"out_EXECUTE_QUEUE_OUT_VAL"           ,1                                );
     162//         INSTANCE0_FOREIGN_SIGNAL_IN   (_wrapper, in_EXECUTE_QUEUE_OUT_ACK           ,Tcontrol_t        , "in_EXECUTE_QUEUE_OUT_ACK"           ,1                                );
     163//         INSTANCE0_FOREIGN_SIGNAL_OUT  (_wrapper,out_EXECUTE_QUEUE_OUT_CONTEXT_ID    ,Tcontext_t        ,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID"    ,_param->_size_context_id         );
     164//         INSTANCE0_FOREIGN_SIGNAL_OUT  (_wrapper,out_EXECUTE_QUEUE_OUT_FRONT_END_ID  ,Tcontext_t        ,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID"  ,_param->_size_front_end_id       );
     165//         INSTANCE0_FOREIGN_SIGNAL_OUT  (_wrapper,out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID ,Tcontext_t        ,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID" ,_param->_size_ooo_engine_id      );
     166//         INSTANCE0_FOREIGN_SIGNAL_OUT  (_wrapper,out_EXECUTE_QUEUE_OUT_PACKET_ID     ,Tpacket_t         ,"out_EXECUTE_QUEUE_OUT_PACKET_ID"     ,_param->_size_rob_ptr            );
     167// //      INSTANCE0_FOREIGN_SIGNAL_OUT  (_wrapper,out_EXECUTE_QUEUE_OUT_OPERATION     ,Toperation_t      ,"out_EXECUTE_QUEUE_OUT_OPERATION"     ,_param->_size_operation          );
     168// //      INSTANCE0_FOREIGN_SIGNAL_OUT  (_wrapper,out_EXECUTE_QUEUE_OUT_TYPE          ,Ttype_t           ,"out_EXECUTE_QUEUE_OUT_TYPE"          ,_param->_size_type               );
     169//         INSTANCE0_FOREIGN_SIGNAL_OUT  (_wrapper,out_EXECUTE_QUEUE_OUT_FLAGS         ,Tspecial_data_t   ,"out_EXECUTE_QUEUE_OUT_FLAGS"         ,_param->_size_special_data       );
     170//         INSTANCE0_FOREIGN_SIGNAL_OUT  (_wrapper,out_EXECUTE_QUEUE_OUT_EXCEPTION     ,Texception_t      ,"out_EXECUTE_QUEUE_OUT_EXCEPTION"     ,_param->_size_exception          );
     171//         INSTANCE0_FOREIGN_SIGNAL_OUT  (_wrapper,out_EXECUTE_QUEUE_OUT_NO_SEQUENCE   ,Tcontrol_t        ,"out_EXECUTE_QUEUE_OUT_NO_SEQUENCE"   ,1                                );
     172//         INSTANCE0_FOREIGN_SIGNAL_OUT  (_wrapper,out_EXECUTE_QUEUE_OUT_ADDRESS       ,Taddress_t        ,"out_EXECUTE_QUEUE_OUT_ADDRESS"       ,_param->_size_instruction_address);
     173//         INSTANCE0_FOREIGN_SIGNAL_OUT  (_wrapper,out_EXECUTE_QUEUE_OUT_DATA          ,Tgeneral_data_t   ,"out_EXECUTE_QUEUE_OUT_DATA"          ,_param->_size_general_data       );
     174
     175        INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_CLOCK                           ,Tcontrol_t     , "in_CLOCK"                           ,1);
     176        INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_NRESET                          ,Tcontrol_t     , "in_NRESET"                          ,1);
     177                                                                                           
     178        INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_VAL            ,Tcontrol_t     , "in_EXECUTE_QUEUE_IN_VAL"            ,1                                );
     179        INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_IN_ACK            ,Tcontrol_t     ,"out_EXECUTE_QUEUE_IN_ACK"            ,1                                );
     180        INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_CONTEXT_ID     ,Tcontext_t     , "in_EXECUTE_QUEUE_IN_CONTEXT_ID"     ,_param->_size_context_id         );
     181        INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_FRONT_END_ID   ,Tcontext_t     , "in_EXECUTE_QUEUE_IN_FRONT_END_ID"   ,_param->_size_front_end_id       );
     182        INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID  ,Tcontext_t     , "in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID"  ,_param->_size_ooo_engine_id      );
     183        INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_PACKET_ID      ,Tpacket_t      , "in_EXECUTE_QUEUE_IN_PACKET_ID"      ,_param->_size_rob_ptr            );
     184//      INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_OPERATION      ,Toperation_t   , "in_EXECUTE_QUEUE_IN_OPERATION"      ,_param->_size_operation          );
     185//      INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_TYPE           ,Ttype_t        , "in_EXECUTE_QUEUE_IN_TYPE"           ,_param->_size_type               );
     186        INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_FLAGS          ,Tspecial_data_t, "in_EXECUTE_QUEUE_IN_FLAGS"          ,_param->_size_special_data       );
     187        INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_EXCEPTION      ,Texception_t   , "in_EXECUTE_QUEUE_IN_EXCEPTION"      ,_param->_size_exception          );
     188        INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_NO_SEQUENCE    ,Tcontrol_t     , "in_EXECUTE_QUEUE_IN_NO_SEQUENCE"    ,1                                );
     189        INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_ADDRESS        ,Taddress_t     , "in_EXECUTE_QUEUE_IN_ADDRESS"        ,_param->_size_instruction_address);
     190        INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_IN_DATA           ,Tgeneral_data_t, "in_EXECUTE_QUEUE_IN_DATA"           ,_param->_size_general_data       );
     191                                                                                           
     192        INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_VAL           ,Tcontrol_t     ,"out_EXECUTE_QUEUE_OUT_VAL"           ,1                                );
     193        INSTANCE0_FOREIGN_SIGNAL(_wrapper, in_EXECUTE_QUEUE_OUT_ACK           ,Tcontrol_t     , "in_EXECUTE_QUEUE_OUT_ACK"           ,1                                );
     194        INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_CONTEXT_ID    ,Tcontext_t     ,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID"    ,_param->_size_context_id         );
     195        INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_FRONT_END_ID  ,Tcontext_t     ,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID"  ,_param->_size_front_end_id       );
     196        INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID ,Tcontext_t     ,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID" ,_param->_size_ooo_engine_id      );
     197        INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_PACKET_ID     ,Tpacket_t      ,"out_EXECUTE_QUEUE_OUT_PACKET_ID"     ,_param->_size_rob_ptr            );
     198//      INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_OPERATION     ,Toperation_t   ,"out_EXECUTE_QUEUE_OUT_OPERATION"     ,_param->_size_operation          );
     199//      INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_TYPE          ,Ttype_t        ,"out_EXECUTE_QUEUE_OUT_TYPE"          ,_param->_size_type               );
     200        INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_FLAGS         ,Tspecial_data_t,"out_EXECUTE_QUEUE_OUT_FLAGS"         ,_param->_size_special_data       );
     201        INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_EXCEPTION     ,Texception_t   ,"out_EXECUTE_QUEUE_OUT_EXCEPTION"     ,_param->_size_exception          );
     202        INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_NO_SEQUENCE   ,Tcontrol_t     ,"out_EXECUTE_QUEUE_OUT_NO_SEQUENCE"   ,1                                );
     203        INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_ADDRESS       ,Taddress_t     ,"out_EXECUTE_QUEUE_OUT_ADDRESS"       ,_param->_size_instruction_address);
     204        INSTANCE0_FOREIGN_SIGNAL(_wrapper,out_EXECUTE_QUEUE_OUT_DATA          ,Tgeneral_data_t,"out_EXECUTE_QUEUE_OUT_DATA"          ,_param->_size_general_data       );
     205
     206        log_printf(INFO,Execute_queue,FUNCTION,_("<%s> : Wrapper Instanciation end"),_name.c_str());
     207      }
     208#endif
     209     
    101210    log_printf(FUNC,Execute_queue,FUNCTION,"End");
    102211  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_deallocation.cpp

    r112 r113  
    2525    log_printf(FUNC,Execute_queue,FUNCTION,"Begin");
    2626
    27     if (usage_is_set(_usage,USE_SYSTEMC))
     27    if (usage_is_set(_usage,USE_SYSTEMC_INTERFACE))
    2828      {
    2929        delete    in_CLOCK ;
     
    6060
    6161    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    62     while (not _queue->empty())
     62    if (usage_is_set(_usage,USE_SYSTEMC_BODY))
    6363      {
    64         delete _queue->front();
    65         _queue->pop_front();
     64        while (not _queue->empty())
     65          {
     66            delete _queue->front();
     67            _queue->pop_front();
     68          }
     69        delete _queue;
    6670      }
    67     delete _queue;
    6871
    6972    delete _component;
     73
     74#ifdef VHDL
     75    if (usage_is_set(_usage,USE_VHDL))
     76      {
     77        delete _component_queue;
     78        delete _param_queue;
     79      }
     80#endif
     81
     82#ifdef MODELSIM_COSIMULATION
     83    if (usage_is_set(_usage,USE_COSIMULATION))
     84      {
     85        delete _wrapper;
     86      }
     87#endif
    7088
    7189    log_printf(FUNC,Execute_queue,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_statistics_declaration.cpp

    r81 r113  
    2626
    2727    _stat = new Stat (static_cast<std::string>(_name),
    28                       "Execute_queue",
     28                      _param->_type,
    2929                      param_statistics);
    3030   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_vhdl.cpp

    r101 r113  
    99#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Execute_queue.h"
    1010#include "Behavioural/include/Vhdl.h"
    11 #include "Behavioural/Generic/Queue/include/Queue.h"
    1211
    1312namespace morpheo                    {
     
    2322#undef  FUNCTION
    2423#define FUNCTION "Execute_queue::vhdl"
    25   void Execute_queue::vhdl (void)
     24  void Execute_queue::vhdl (void) 
    2625  {
    2726    log_printf(FUNC,Execute_queue,FUNCTION,"Begin");
    2827
    29     //----- Queue -----
    30    
    31     morpheo::behavioural::generic::queue::Parameters * param_queue;
    32     morpheo::behavioural::generic::queue::Queue      * queue;
    33    
    34     param_queue = new morpheo::behavioural::generic::queue::Parameters
    35       (_param->_size_queue,
    36        _param->_size_internal_queue,
    37        0,
    38        false,
    39        false
    40        );
    41    
    42     std::string queue_name = _name + "_queue";
    43     queue = new morpheo::behavioural::generic::queue::Queue
    44       (queue_name.c_str()
    45 #ifdef STATISTICS
    46        ,NULL
    47 #endif
    48        ,param_queue
    49        ,USE_VHDL);
    50    
    51     _component->set_component(queue->_component
    52 #ifdef POSITION
    53                               , 0, 0, 0, 0
    54 #endif
    55                               , INSTANCE_LIBRARY
    56                               );
    57 
    58     Vhdl * vhdl = new Vhdl (_name);
     28    Vhdl * vhdl = new Vhdl (_name,_param->id());
    5929
    6030    _interfaces->set_port(vhdl);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_vhdl_body.cpp

    r98 r113  
    5757    size = _param->_size_context_id;
    5858    max = min-1+size;
    59     vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_CONTEXT_ID;");
     59    vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_CONTEXT_ID "+std_logic_range(size)+";");
    6060    min = max+1;
    6161      }
     
    6464    size = _param->_size_front_end_id;
    6565    max = min-1+size;
    66     vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_FRONT_END_ID;");
     66    vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_FRONT_END_ID"+std_logic_range(size)+";");
    6767    min = max+1;
    6868      }
     
    7171    size = _param->_size_ooo_engine_id;
    7272    max = min-1+size;
    73     vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID;");
     73    vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID"+std_logic_range(size)+";");
    7474    min = max+1;
    7575      }
     
    7878    size = _param->_size_rob_ptr;
    7979    max = min-1+size;
    80     vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_PACKET_ID;");
     80    vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_PACKET_ID"+std_logic_range(size)+";");
    8181    min = max+1;
    8282      }
     
    8484//  size = _param->_size_operation;
    8585//  max = min-1+size;
    86 //  vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_OPERATION;");
     86//  vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_OPERATION"+std_logic_range(size)+";");
    8787//  min = max+1;
    8888//
    8989//  size = _param->_size_type;
    9090//  max = min-1+size;
    91 //  vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_TYPE;");
     91//  vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_TYPE"+std_logic_range(size)+";");
    9292//  min = max+1;
    9393
    9494    size = _param->_size_special_data;
    9595    max = min-1+size;
    96     vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_FLAGS;");
     96    vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_FLAGS"+std_logic_range(size)+";");
    9797    min = max+1;
    9898
    9999    size = _param->_size_exception;   
    100100    max = min-1+size;
    101     vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_EXCEPTION;");
     101    vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_EXCEPTION"+std_logic_range(size)+";");
    102102    min = max+1;
    103103
    104104    size = 1;
    105105    max = min-1+size;
    106     vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_NO_SEQUENCE;");
     106    vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_NO_SEQUENCE"+std_logic_range(size)+";");
    107107    min = max+1;
    108108
    109109    size = _param->_size_instruction_address;
    110110    max = min-1+size;
    111     vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_ADDRESS;");
     111    vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_ADDRESS"+std_logic_range(size)+";");
    112112    min = max+1;
    113113
    114114    size = _param->_size_general_data;
    115115    max = min-1+size;
    116     vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_DATA;");
     116    vhdl->set_body   (0,"internal_QUEUE_INSERT_DATA "+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_EXECUTE_QUEUE_IN_DATA"+std_logic_range(size)+";");
    117117    min = max+1;
    118118    }
     
    125125
    126126    if(_param->_have_port_context_id)
    127     vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID    <= internal_EXECUTE_QUEUE_OUT_CONTEXT_ID   ;");
     127    vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID    "+std_logic_range(_param->_size_context_id         )+" <= internal_EXECUTE_QUEUE_OUT_CONTEXT_ID   ;");
    128128    if(_param->_have_port_front_end_id)
    129     vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID  <= internal_EXECUTE_QUEUE_OUT_FRONT_END_ID ;");
     129    vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID  "+std_logic_range(_param->_size_front_end_id       )+" <= internal_EXECUTE_QUEUE_OUT_FRONT_END_ID ;");
    130130    if(_param->_have_port_ooo_engine_id)
    131     vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID <= internal_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID;");
     131    vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID "+std_logic_range(_param->_size_ooo_engine_id      )+" <= internal_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID;");
    132132    if(_param->_have_port_rob_ptr)
    133     vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_PACKET_ID     <= internal_EXECUTE_QUEUE_OUT_PACKET_ID    ;");
    134 //  vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_OPERATION     <= internal_EXECUTE_QUEUE_OUT_OPERATION    ;");
    135 //  vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_TYPE          <= internal_EXECUTE_QUEUE_OUT_TYPE         ;");
    136     vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_FLAGS         <= internal_EXECUTE_QUEUE_OUT_FLAGS        ;");
    137     vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_EXCEPTION     <= internal_EXECUTE_QUEUE_OUT_EXCEPTION    ;");
    138     vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_NO_SEQUENCE   <= internal_EXECUTE_QUEUE_OUT_NO_SEQUENCE  ;");
    139     vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_ADDRESS       <= internal_EXECUTE_QUEUE_OUT_ADDRESS      ;");
    140     vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_DATA          <= internal_EXECUTE_QUEUE_OUT_DATA         ;");
     133    vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_PACKET_ID     "+std_logic_range(_param->_size_rob_ptr            )+" <= internal_EXECUTE_QUEUE_OUT_PACKET_ID    ;");
     134//  vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_OPERATION     "+std_logic_range(_param->_size_operation          )+" <= internal_EXECUTE_QUEUE_OUT_OPERATION    ;");
     135//  vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_TYPE          "+std_logic_range(_param->_size_type               )+" <= internal_EXECUTE_QUEUE_OUT_TYPE         ;");
     136    vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_FLAGS         "+std_logic_range(_param->_size_special_data       )+" <= internal_EXECUTE_QUEUE_OUT_FLAGS        ;");
     137    vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_EXCEPTION     "+std_logic_range(_param->_size_exception          )+" <= internal_EXECUTE_QUEUE_OUT_EXCEPTION    ;");
     138    vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_NO_SEQUENCE   "+std_logic_range(1                                )+" <= internal_EXECUTE_QUEUE_OUT_NO_SEQUENCE  ;");
     139    vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_ADDRESS       "+std_logic_range(_param->_size_instruction_address)+" <= internal_EXECUTE_QUEUE_OUT_ADDRESS      ;");
     140    vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_DATA          "+std_logic_range(_param->_size_general_data       )+" <= internal_EXECUTE_QUEUE_OUT_DATA         ;");
    141141
    142 
    143 //     vhdl->set_body (0,"");
    144 //     vhdl->set_body (0,"process (in_CLOCK)");
    145 //     vhdl->set_body (0,"begin");
    146 //     vhdl->set_body (1,"if in_CLOCK'event and in_CLOCK = '1' then");
    147 // //     vhdl->set_body (2,"if in_NRESET = '0' then");
    148 // //     vhdl->set_body (3,"reg_CURRENT_STATE <= STATE_0;");
    149 // //     vhdl->set_body (2,"else");
    150 //     vhdl->set_body (3,"reg_CURRENT_STATE <= sig_NEXT_STATE;");
    151 // //     vhdl->set_body (2,"end if;");
    152 
    153 //     for (uint32_t i = 0; i <_param->_size_queue - 1; i++)
    154 //       {
    155 //      vhdl->set_body (2,"if sig_WEN_"+toString(i)+" = '1' then");
    156 //      vhdl->set_body (3,"if sig_SEL_"+toString(i)+" = '0' then");
    157 //      if (_param->_have_port_context_id)
    158 //      vhdl->set_body (4,"reg_CONTEXT_ID_"+toString(i)+"    <= in_EXECUTE_QUEUE_IN_CONTEXT_ID;");
    159 //      if (_param->_have_port_front_end_id)
    160 //      vhdl->set_body (4,"reg_FRONT_END_ID_"+toString(i)+"  <= in_EXECUTE_QUEUE_IN_FRONT_END_ID;");
    161 //      if (_param->_have_port_ooo_engine_id)
    162 //      vhdl->set_body (4,"reg_OOO_ENGINE_ID_"+toString(i)+" <= in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID;");
    163 //      if (_param->_have_port_rob_ptr)
    164 //         vhdl->set_body (4,"reg_PACKET_ID_"+toString(i)+"     <= in_EXECUTE_QUEUE_IN_PACKET_ID;");
    165 //      vhdl->set_body (4, "reg_FLAGS_"+toString(i)+"        <= in_EXECUTE_QUEUE_IN_FLAGS;");
    166 //      vhdl->set_body (4, "reg_EXCEPTION_"+toString(i)+"    <= in_EXECUTE_QUEUE_IN_EXCEPTION;");
    167 //      vhdl->set_body (4, "reg_NO_SEQUENCE_"+toString(i)+"  <= in_EXECUTE_QUEUE_IN_NO_SEQUENCE;");
    168 //      vhdl->set_body (4, "reg_ADDRESS_"+toString(i)+"      <= in_EXECUTE_QUEUE_IN_ADDRESS;");
    169 //      vhdl->set_body (4, "reg_DATA_"+toString(i)+"         <= in_EXECUTE_QUEUE_IN_DATA;");
    170 
    171 //      vhdl->set_body (3, "else");
    172 //      if (_param->_have_port_context_id)
    173 //      vhdl->set_body (4,"reg_CONTEXT_ID_"+toString(i)+"    <= reg_CONTEXT_ID_"+toString(i+1)+";");
    174 //      if (_param->_have_port_front_end_id)
    175 //      vhdl->set_body (4,"reg_FRONT_END_ID_"+toString(i)+"  <= reg_FRONT_END_ID_"+toString(i+1)+";");
    176 //      if (_param->_have_port_ooo_engine_id)
    177 //      vhdl->set_body (4,"reg_OOO_ENGINE_ID_"+toString(i)+" <= reg_OOO_ENGINE_ID_"+toString(i+1)+";");
    178 //      if (_param->_have_port_rob_ptr)
    179 //         vhdl->set_body (4,"reg_PACKET_ID_"+toString(i)+"     <= reg_PACKET_ID_"+toString(i+1)+";");
    180 //      vhdl->set_body (4, "reg_FLAGS_"+toString(i)+"        <= reg_FLAGS_"+toString(i+1)+";");
    181 //      vhdl->set_body (4, "reg_EXCEPTION_"+toString(i)+"    <= reg_EXCEPTION_"+toString(i+1)+";");
    182 //      vhdl->set_body (4, "reg_NO_SEQUENCE_"+toString(i)+"  <= reg_NO_SEQUENCE_"+toString(i+1)+";");
    183 //      vhdl->set_body (4, "reg_ADDRESS_"+toString(i)+"      <= reg_ADDRESS_"+toString(i+1)+";");
    184 //      vhdl->set_body (4, "reg_DATA_"+toString(i)+"         <= reg_DATA_"+toString(i+1)+";");
    185        
    186 //      vhdl->set_body (3,"end if;");
    187 
    188 //      vhdl->set_body (2,"end if;");
    189 //       }
    190 
    191 //     vhdl->set_body (2,"if sig_WEN_"+toString(_param->_size_queue-1)+" = '1' then");
    192 //     if (_param->_have_port_context_id)
    193 //       vhdl->set_body (3,"reg_CONTEXT_ID_"+toString(_param->_size_queue-1)+"    <= in_EXECUTE_QUEUE_IN_CONTEXT_ID;");
    194 //     if (_param->_have_port_front_end_id)
    195 //       vhdl->set_body (3,"reg_FRONT_END_ID_"+toString(_param->_size_queue-1)+"  <= in_EXECUTE_QUEUE_IN_FRONT_END_ID;");
    196 //     if (_param->_have_port_ooo_engine_id)
    197 //       vhdl->set_body (3,"reg_OOO_ENGINE_ID_"+toString(_param->_size_queue-1)+" <= in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID;");
    198 //     if (_param->_have_port_rob_ptr)
    199 //       vhdl->set_body (3,"reg_PACKET_ID_"+toString(_param->_size_queue-1)+"     <= in_EXECUTE_QUEUE_IN_PACKET_ID;");
    200 //     vhdl->set_body (3, "reg_FLAGS_"+toString(_param->_size_queue-1)+"        <= in_EXECUTE_QUEUE_IN_FLAGS;");
    201 //     vhdl->set_body (3, "reg_EXCEPTION_"+toString(_param->_size_queue-1)+"    <= in_EXECUTE_QUEUE_IN_EXCEPTION;");
    202 //     vhdl->set_body (3, "reg_NO_SEQUENCE_"+toString(_param->_size_queue-1)+"  <= in_EXECUTE_QUEUE_IN_NO_SEQUENCE;");
    203 //     vhdl->set_body (3, "reg_ADDRESS_"+toString(_param->_size_queue-1)+"      <= in_EXECUTE_QUEUE_IN_ADDRESS;");
    204 //     vhdl->set_body (3, "reg_DATA_"+toString(_param->_size_queue-1)+"         <= in_EXECUTE_QUEUE_IN_DATA;");
    205 //     vhdl->set_body (2,"end if;");
    206 
    207 
    208 //     vhdl->set_body (1,"end if;");
    209 //     vhdl->set_body (0,"end process;");
    210 
    211 
    212 //     vhdl->set_body (0,"");
    213 //     vhdl->set_body (0,"");
    214 //     vhdl->set_body (0,"");
    215 
    216 //     vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_VAL <= sig_OUT_VAL;");
    217 //     vhdl->set_body (0,"out_EXECUTE_QUEUE_IN_ACK <= sig_IN_ACK;");
    218 //     if (_param->_have_port_context_id)
    219 //     vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID <= reg_CONTEXT_ID_0;");
    220 //     if (_param->_have_port_front_end_id)
    221 //     vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID <= reg_FRONT_END_ID_0;");
    222 //     if (_param->_have_port_ooo_engine_id)
    223 //     vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID <= reg_OOO_ENGINE_ID_0;");
    224 //     if (_param->_have_port_rob_ptr)
    225 //     vhdl->set_body (0,"out_EXECUTE_QUEUE_OUT_PACKET_ID <= reg_PACKET_ID_0;");
    226 //     vhdl->set_body (0, "out_EXECUTE_QUEUE_OUT_FLAGS <= reg_FLAGS_0;");
    227 //     vhdl->set_body (0, "out_EXECUTE_QUEUE_OUT_EXCEPTION <= reg_EXCEPTION_0;");
    228 //     vhdl->set_body (0, "out_EXECUTE_QUEUE_OUT_NO_SEQUENCE <= reg_NO_SEQUENCE_0;");
    229 //     vhdl->set_body (0, "out_EXECUTE_QUEUE_OUT_ADDRESS <= reg_ADDRESS_0;");
    230 //     vhdl->set_body (0, "out_EXECUTE_QUEUE_OUT_DATA <= reg_DATA_0;");
    231 
    232 
    233 //     vhdl->set_body (0,"");
    234 
    235 //     vhdl->set_body (0,"process (reg_CURRENT_STATE, in_EXECUTE_QUEUE_OUT_ACK, in_EXECUTE_QUEUE_IN_VAL, in_NRESET)");
    236 //     vhdl->set_body (0,"begin");
    237 //     vhdl->set_body (1,"if in_NRESET = '0' then");
    238 //     vhdl->set_body (2,"sig_NEXT_STATE <= STATE_0;");
    239 //     vhdl->set_body (1,"else");
    240 //     vhdl->set_body (2,"case reg_CURRENT_STATE is");
    241 //     for (uint32_t i = 0; i <_param->_size_queue + 1; i++)
    242 //       {
    243 //      vhdl->set_body (3,"when STATE_"+toString(i)+" =>");
    244 //      if (i == 0)
    245 //        {
    246 //          vhdl->set_body (4,"if in_EXECUTE_QUEUE_IN_VAL = '1' then");
    247 //          vhdl->set_body (5,"sig_NEXT_STATE <= reg_CURRENT_STATE ("+toString(_param->_size_queue-1)+" downto 0) & '0';");
    248 //          vhdl->set_body (4,"else");
    249 //          vhdl->set_body (5,"sig_NEXT_STATE <= reg_CURRENT_STATE;");
    250 //          vhdl->set_body (4,"end if;");
    251 //          continue;
    252 //        }
    253 //      if (i == (_param->_size_queue))
    254 //        {
    255 //          vhdl->set_body (4,"if in_EXECUTE_QUEUE_OUT_ACK = '1' then");
    256 //          vhdl->set_body (5,"sig_NEXT_STATE <= '0' & reg_CURRENT_STATE ("+toString(_param->_size_queue)+" downto 1);");
    257 //          vhdl->set_body (4,"else");
    258 //          vhdl->set_body (5,"sig_NEXT_STATE <= reg_CURRENT_STATE;");
    259 //          vhdl->set_body (4,"end if;");
    260 //          continue;
    261 //        }
    262 //      vhdl->set_body (4,"if in_EXECUTE_QUEUE_IN_VAL = '1' and in_EXECUTE_QUEUE_OUT_ACK = '0' then");
    263 //      vhdl->set_body (5,"sig_NEXT_STATE <= reg_CURRENT_STATE ("+toString(_param->_size_queue-1)+" downto 0) & '0';");
    264 //      vhdl->set_body (4,"elsif in_EXECUTE_QUEUE_IN_VAL = '0' and in_EXECUTE_QUEUE_OUT_ACK = '1' then");
    265 //      vhdl->set_body (5,"sig_NEXT_STATE <= '0' & reg_CURRENT_STATE ("+toString(_param->_size_queue)+" downto 1);");
    266 //      vhdl->set_body (4,"else");
    267 //      vhdl->set_body (5,"sig_NEXT_STATE <= reg_CURRENT_STATE;");
    268 //      vhdl->set_body (4,"end if;");
    269 //       }
    270 //     vhdl->set_body (3,"when others => assert false report \"wrong state\" severity failure;");
    271 //     vhdl->set_body (2,"end case;");
    272 //     vhdl->set_body (1,"end if;");
    273 
    274 //     vhdl->set_body (2,"case reg_CURRENT_STATE is");
    275 //     for (uint32_t i = 0; i <_param->_size_queue + 1; i++)
    276 //       {
    277 //      vhdl->set_body (3,"when STATE_"+toString(i)+" =>");
    278 //      if (i == 0)
    279 //        {
    280 //          vhdl->set_body (4,"sig_OUT_VAL <= '0';");
    281 //          vhdl->set_body (4,"sig_IN_ACK <= '1';");
    282 //          for (uint32_t j = 0; j <_param->_size_queue; j++)
    283 //            {
    284 //              if (i == j)
    285 //                {
    286 //                  vhdl->set_body (4,"sig_SEL_"+toString(j)+" <= '0';");
    287 //                  vhdl->set_body (4,"sig_WEN_"+toString(j)+" <= in_EXECUTE_QUEUE_IN_VAL;");
    288 //                }
    289 //              else
    290 //                {
    291 //                  if (j < (_param->_size_queue - 1))
    292 //                    vhdl->set_body (4,"sig_SEL_"+toString(j)+" <= '0';");
    293 //                  vhdl->set_body (4,"sig_WEN_"+toString(j)+" <= '0';");
    294 //                }
    295 //            }
    296 //          continue;
    297 //        }
    298 //      if (i == (_param->_size_queue))
    299 //        {
    300 //          vhdl->set_body (4,"sig_OUT_VAL <= '1';");
    301 //          vhdl->set_body (4,"sig_IN_ACK <= '0';");
    302 //          for (uint32_t j = 0; j <_param->_size_queue; j++)
    303 //            {
    304 //              if (j == (i - 1))
    305 //                {
    306 //                  vhdl->set_body (4,"sig_WEN_"+toString(j)+" <= '0';");
    307 //                }
    308 //              else
    309 //                {
    310 //                  vhdl->set_body (4,"sig_SEL_"+toString(j)+" <= in_EXECUTE_QUEUE_OUT_ACK;");
    311 //                  vhdl->set_body (4,"sig_WEN_"+toString(j)+" <= in_EXECUTE_QUEUE_OUT_ACK;");
    312 //                }
    313 //            }
    314 //          continue;
    315 //        }
    316 //      vhdl->set_body (4,"sig_OUT_VAL <= '1';");
    317 //      vhdl->set_body (4,"sig_IN_ACK <= '1';");
    318 //      for (uint32_t j = 0; j <_param->_size_queue; j++)
    319 //        {
    320 //          if (j < (i - 1))
    321 //            {
    322 //              vhdl->set_body (4,"sig_SEL_"+toString(j)+" <= in_EXECUTE_QUEUE_OUT_ACK;");
    323 //              vhdl->set_body (4,"sig_WEN_"+toString(j)+" <= in_EXECUTE_QUEUE_OUT_ACK;");
    324 //            }
    325 //          if (j == (i - 1))
    326 //            {
    327 //              vhdl->set_body (4,"sig_SEL_"+toString(j)+" <= '0';");
    328 //              vhdl->set_body (4,"sig_WEN_"+toString(j)+" <= in_EXECUTE_QUEUE_OUT_ACK and in_EXECUTE_QUEUE_IN_VAL;");
    329 //            }
    330 //          if (j == i)
    331 //            {
    332 //              if (j < (_param->_size_queue - 1))
    333 //                vhdl->set_body (4,"sig_SEL_"+toString(j)+" <= '0';");
    334 //              vhdl->set_body (4,"sig_WEN_"+toString(j)+" <= in_EXECUTE_QUEUE_IN_VAL and not in_EXECUTE_QUEUE_OUT_ACK;");
    335 //            }
    336 //          if (j > i)
    337 //            {
    338 //              if (j < (_param->_size_queue - 1))
    339 //                vhdl->set_body (4,"sig_SEL_"+toString(j)+" <= '0';");
    340 //              vhdl->set_body (4,"sig_WEN_"+toString(j)+" <= '0';");
    341 //            }
    342 //        }
    343 //       }
    344 //     vhdl->set_body (3,"when others =>");
    345 //     vhdl->set_body (2,"end case;");
    346 //     vhdl->set_body (0,"end process;");
     142    vhdl->set_debug  ("in_CLOCK = 'U'","GLOP1: Clock = 'U'");
     143    vhdl->set_debug  ("in_CLOCK = 'X'","GLOP2: Clock = 'X'");
     144    vhdl->set_debug  ("in_CLOCK = 'Z'","GLOP3: Clock = 'Z'");
     145    vhdl->set_debug  ("in_CLOCK = 'W'","GLOP4: Clock = 'W'");
     146    vhdl->set_debug  ("in_CLOCK = '1'","KANE : Clock = '1'");
     147    vhdl->set_debug  ("in_CLOCK = '0'","SETH : Clock = '0'");
    347148
    348149    log_printf(FUNC,Execute_queue,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Parameters.cpp

    r111 r113  
    2727                          uint32_t size_general_data  ,
    2828                          uint32_t size_special_data  ,
    29                           bool     is_toplevel        )
     29                          bool     is_toplevel        ):
     30    behavioural::Parameters("Execute_queue")
    3031  {
    3132    log_printf(FUNC,Execute_queue,FUNCTION,"Begin");
     
    5758        copy();
    5859      }
    59 
    60     _size_internal_queue =
    61       (_size_context_id          +
    62        _size_front_end_id        +
    63        _size_ooo_engine_id       +
    64        _size_rob_ptr             +     
    65 //     _size_operation           +
    66 //     _size_type                +
    67        _size_special_data        +
    68        _size_exception           +
    69        1                         +
    70        _size_general_data        +
    71        _size_general_data
    72        );
    7360
    7461    log_printf(FUNC,Execute_queue,FUNCTION,"End");
     
    114101  {
    115102    log_printf(FUNC,Execute_queue,FUNCTION,"Begin");
     103
     104    _size_internal_queue =
     105      (_size_context_id          +
     106       _size_front_end_id        +
     107       _size_ooo_engine_id       +
     108       _size_rob_ptr             +     
     109//     _size_operation           +
     110//     _size_type                +
     111       _size_special_data        +
     112       _size_exception           +
     113       1                         +
     114       _size_general_data        +
     115       _size_general_data
     116       );
     117
    116118    log_printf(FUNC,Execute_queue,FUNCTION,"End");
    117119  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Write_unit
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/include/top.h

    r111 r113  
    44 * [ Description ]
    55 *
    6  * Test "RegisterFile"
     6 * Test "Write_unit"
    77 */
    88
     
    1111#endif
    1212
    13 #include <string>
    14 #include <iostream>
    15 #include <sys/time.h>
     13#define NB_ITERATION  1
     14#define CYCLE_MAX     (2048*NB_ITERATION)
    1615
     16#include "Common/include/Test.h"
    1717#include "Common/include/Time.h"
    1818#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Write_unit.h"
     
    2828using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit;
    2929
    30 void test    (string name,
    31               morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::Parameters * param);
     30SC_MODULE(top)
     31{
     32#ifdef SYSTEMC
     33 private: sc_clock               *  in_CLOCK ;
     34 private: sc_signal<Tcontrol_t>  *  in_NRESET;
     35
     36  private: sc_signal<Tcontrol_t        >    *  in_WRITE_UNIT_IN_VAL          ;
     37  private: sc_signal<Tcontrol_t        >    * out_WRITE_UNIT_IN_ACK          ;
     38  private: sc_signal<Tcontext_t        >    *  in_WRITE_UNIT_IN_CONTEXT_ID   ;
     39  private: sc_signal<Tcontext_t        >    *  in_WRITE_UNIT_IN_FRONT_END_ID ;
     40  private: sc_signal<Tcontext_t        >    *  in_WRITE_UNIT_IN_OOO_ENGINE_ID;
     41  private: sc_signal<Tpacket_t         >    *  in_WRITE_UNIT_IN_PACKET_ID    ;
     42//private: sc_signal<Toperation_t      >    *  in_WRITE_UNIT_IN_OPERATION    ;
     43//private: sc_signal<Ttype_t           >    *  in_WRITE_UNIT_IN_TYPE         ;
     44  private: sc_signal<Tcontrol_t        >    *  in_WRITE_UNIT_IN_WRITE_RD     ;
     45  private: sc_signal<Tgeneral_address_t>    *  in_WRITE_UNIT_IN_NUM_REG_RD   ;
     46  private: sc_signal<Tgeneral_data_t   >    *  in_WRITE_UNIT_IN_DATA_RD      ;
     47  private: sc_signal<Tcontrol_t        >    *  in_WRITE_UNIT_IN_WRITE_RE     ;
     48  private: sc_signal<Tspecial_address_t>    *  in_WRITE_UNIT_IN_NUM_REG_RE   ;
     49  private: sc_signal<Tspecial_data_t   >    *  in_WRITE_UNIT_IN_DATA_RE      ;
     50  private: sc_signal<Texception_t      >    *  in_WRITE_UNIT_IN_EXCEPTION    ;
     51  private: sc_signal<Tcontrol_t        >    *  in_WRITE_UNIT_IN_NO_SEQUENCE  ;
     52  private: sc_signal<Taddress_t        >    *  in_WRITE_UNIT_IN_ADDRESS      ;
     53
     54  private: sc_signal<Tcontrol_t        >    * out_WRITE_UNIT_OUT_VAL          ;
     55  private: sc_signal<Tcontrol_t        >    *  in_WRITE_UNIT_OUT_ACK          ;
     56  private: sc_signal<Tcontext_t        >    * out_WRITE_UNIT_OUT_CONTEXT_ID   ;
     57  private: sc_signal<Tcontext_t        >    * out_WRITE_UNIT_OUT_FRONT_END_ID ;
     58  private: sc_signal<Tcontext_t        >    * out_WRITE_UNIT_OUT_OOO_ENGINE_ID;
     59  private: sc_signal<Tpacket_t         >    * out_WRITE_UNIT_OUT_PACKET_ID    ;
     60//private: sc_signal<Toperation_t      >    * out_WRITE_UNIT_OUT_OPERATION    ;
     61//private: sc_signal<Ttype_t           >    * out_WRITE_UNIT_OUT_TYPE         ;
     62  private: sc_signal<Tspecial_data_t   >    * out_WRITE_UNIT_OUT_FLAGS        ;
     63  private: sc_signal<Texception_t      >    * out_WRITE_UNIT_OUT_EXCEPTION    ;
     64  private: sc_signal<Tcontrol_t        >    * out_WRITE_UNIT_OUT_NO_SEQUENCE  ;
     65  private: sc_signal<Taddress_t        >    * out_WRITE_UNIT_OUT_ADDRESS      ;
     66  private: sc_signal<Tgeneral_data_t   >    * out_WRITE_UNIT_OUT_DATA         ;
     67
     68  private: sc_signal<Tcontrol_t        >   ** out_GPR_WRITE_VAL               ;
     69  private: sc_signal<Tcontrol_t        >   **  in_GPR_WRITE_ACK               ;
     70  private: sc_signal<Tcontext_t        >   ** out_GPR_WRITE_OOO_ENGINE_ID     ;
     71  private: sc_signal<Tgeneral_address_t>   ** out_GPR_WRITE_NUM_REG           ;
     72  private: sc_signal<Tgeneral_data_t   >   ** out_GPR_WRITE_DATA              ;
     73
     74  private: sc_signal<Tcontrol_t        >   ** out_SPR_WRITE_VAL               ;
     75  private: sc_signal<Tcontrol_t        >   **  in_SPR_WRITE_ACK               ;
     76  private: sc_signal<Tcontext_t        >   ** out_SPR_WRITE_OOO_ENGINE_ID     ;
     77  private: sc_signal<Tspecial_address_t>   ** out_SPR_WRITE_NUM_REG           ;
     78  private: sc_signal<Tspecial_data_t   >   ** out_SPR_WRITE_DATA              ;
     79
     80  private: sc_signal<Tcontext_t        >   ** out_BYPASS_WRITE_OOO_ENGINE_ID ;
     81  private: sc_signal<Tcontrol_t        >   ** out_BYPASS_WRITE_GPR_VAL       ;
     82  private: sc_signal<Tgeneral_address_t>   ** out_BYPASS_WRITE_GPR_NUM_REG   ; // RD
     83  private: sc_signal<Tgeneral_data_t   >   ** out_BYPASS_WRITE_GPR_DATA      ;
     84  private: sc_signal<Tcontrol_t        >   ** out_BYPASS_WRITE_SPR_VAL       ;
     85  private: sc_signal<Tspecial_address_t>   ** out_BYPASS_WRITE_SPR_NUM_REG   ; // RE
     86  private: sc_signal<Tspecial_data_t   >   ** out_BYPASS_WRITE_SPR_DATA      ;
     87#endif
     88
     89 private: std::string name;
     90 private: Tusage_t _usage;
     91 private: morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::Parameters * _param;
     92#ifdef STATISTICS
     93 private: morpheo::behavioural::Parameters_Statistics * _param_stat;
     94#endif
     95 private: Write_unit * component;
     96
     97 private: void usage
     98    (
     99#ifdef MTI_SYSTEMC
     100     int argc, const char * const * argv
     101#else
     102     int argc, char * argv[]
     103#endif
     104     );
     105 private: void allocation   (void);
     106 private: void deallocation (void);
     107 public : void test         (void);
     108
     109#ifdef MTI_SYSTEMC
     110  SC_CTOR(top::top);
     111#else
     112 public : top (sc_module_name module_name,int argc, char * argv[]);
     113#endif
     114 public : ~top(void);
     115};
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/src/main.cpp

    r88 r113  
    66 */
    77
    8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/include/test.h"
     8#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/include/top.h"
    99
    10 #define NB_PARAMS 11
    11 
    12 void usage (int argc, char * argv[])
     10#ifndef MTI_SYSTEMC
     11# ifndef SYSTEMC
     12int main    (int argc, char * argv[])
     13# else
     14int sc_main (int argc, char * argv[])
     15# endif
    1316{
    14   err (_("<Usage> %s name_instance list_params.\n"),argv[0]);
    15   err (_("list_params is :\n"));
    16   err (_(" * size_write_queue    (uint32_t)\n"));
    17   err (_(" * size_execute_queue  (uint32_t)\n"));
    18   err (_(" * nb_context          (uint32_t)\n"));
    19   err (_(" * nb_front_end        (uint32_t)\n"));
    20   err (_(" * nb_ooo_engine       (uint32_t)\n"));
    21   err (_(" * nb_packet           (uint32_t)\n"));
    22   err (_(" * size_general_data   (uint32_t)\n"));
    23   err (_(" * nb_general_register (uint32_t)\n"));
    24   err (_(" * size_special_data   (uint32_t)\n"));
    25   err (_(" * nb_special_register (uint32_t)\n"));
    26   err (_(" * nb_bypass_write     (uint32_t)\n"));
    27 
    28   exit (1);
    29 }
    30 
    31 #ifndef SYSTEMC
    32 int main    (int argc, char * argv[])
    33 #else
    34 int sc_main (int argc, char * argv[])
    35 #endif
    36 {
    37   if (argc != 2+NB_PARAMS)
    38     usage (argc, argv);
    39 
    40   uint32_t       x = 1;
    41 
    42   const string   name                =      argv[x++];
    43   const uint32_t size_write_queue    = atoi(argv[x++]);
    44   const uint32_t size_execute_queue  = atoi(argv[x++]);
    45   const uint32_t nb_context          = atoi(argv[x++]);
    46   const uint32_t nb_front_end        = atoi(argv[x++]);
    47   const uint32_t nb_ooo_engine       = atoi(argv[x++]);
    48   const uint32_t nb_packet           = atoi(argv[x++]);
    49   const uint32_t size_general_data   = atoi(argv[x++]);
    50   const uint32_t nb_general_register = atoi(argv[x++]);
    51   const uint32_t size_special_data   = atoi(argv[x++]);
    52   const uint32_t nb_special_register = atoi(argv[x++]);
    53   const uint32_t nb_bypass_write     = atoi(argv[x++]);
     17  int _return = EXIT_SUCCESS;
    5418
    5519  try
    5620    {
    57       morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::Parameters * param = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::Parameters
    58         (size_write_queue   ,
    59          size_execute_queue ,
    60          nb_context         ,
    61          nb_front_end       ,
    62          nb_ooo_engine      ,
    63          nb_packet          ,
    64          size_general_data  ,
    65          nb_general_register,
    66          size_special_data  ,
    67          nb_special_register,
    68          nb_bypass_write    ,
    69          true // is_toplevel
    70          );
    71      
    72       msg(_("%s"),param->print(1).c_str());
    73      
    74       test (name,param);
     21      top * my_top = new top ("my_top",argc,argv);
     22
     23      my_top->test();
     24
     25      delete my_top;
    7526    }
    7627  catch (morpheo::ErrorMorpheo & error)
    7728    {
    78       msg (_("<%s> : %s.\n"),name.c_str(), error.what ());
    79       exit (EXIT_FAILURE);
     29      msgError(_("%s\n"),error.what ());
     30      _return = EXIT_FAILURE;
    8031    }
    81   catch (...)
     32 
     33  try
    8234    {
    83       err (_("<%s> : This test must generate a error.\n"),name.c_str());
    84       exit (EXIT_FAILURE);
     35      if (_return == EXIT_SUCCESS)
     36        TEST_OK("Write_unit : no error");
     37      else
     38        TEST_KO("Write_unit : a lot of error");
     39    }
     40  catch (morpheo::ErrorMorpheo & error)
     41    {
     42//    msgError(_("<%s> :\n%s"),name.c_str(), error.what ());
     43      _return = EXIT_FAILURE;
    8544    }
    8645
    87   return (EXIT_SUCCESS);
     46  return _return;
    8847}
    89 
     48#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Write_queue
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/include/top.h

    r111 r113  
    22 * $Id$
    33 *
    4  * [ Description ]
     4 * [ Description ]
    55 *
    6  * Test "RegisterFile"
     6 * Test "Write_queue"
    77 */
    88
     
    1111#endif
    1212
    13 #include <string>
    14 #include <iostream>
    15 #include <sys/time.h>
     13#define NB_ITERATION  1
     14#define CYCLE_MAX     (1024*NB_ITERATION)
    1615
     16#include "Common/include/Test.h"
    1717#include "Common/include/Time.h"
    1818#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Write_queue.h"
     
    2929using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue;
    3030
    31 void test    (string name,
    32               morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Parameters * param);
     31SC_MODULE(top)
     32{
     33#ifdef SYSTEMC
     34 private: sc_clock               *  in_CLOCK ;
     35 private: sc_signal<Tcontrol_t>  *  in_NRESET;
     36
     37  private: sc_signal<Tcontrol_t        >  *  in_WRITE_QUEUE_IN_VAL           ;
     38  private: sc_signal<Tcontrol_t        >  * out_WRITE_QUEUE_IN_ACK           ;
     39  private: sc_signal<Tcontext_t        >  *  in_WRITE_QUEUE_IN_CONTEXT_ID    ;
     40  private: sc_signal<Tcontext_t        >  *  in_WRITE_QUEUE_IN_FRONT_END_ID  ;
     41  private: sc_signal<Tcontext_t        >  *  in_WRITE_QUEUE_IN_OOO_ENGINE_ID ;
     42  private: sc_signal<Tpacket_t         >  *  in_WRITE_QUEUE_IN_PACKET_ID     ;
     43//private: sc_signal<Toperation_t      >  *  in_WRITE_QUEUE_IN_OPERATION     ;
     44//private: sc_signal<Ttype_t           >  *  in_WRITE_QUEUE_IN_TYPE          ;
     45  private: sc_signal<Tcontrol_t        >  *  in_WRITE_QUEUE_IN_WRITE_RD      ;
     46  private: sc_signal<Tgeneral_address_t>  *  in_WRITE_QUEUE_IN_NUM_REG_RD    ;
     47  private: sc_signal<Tgeneral_data_t   >  *  in_WRITE_QUEUE_IN_DATA_RD       ;
     48  private: sc_signal<Tcontrol_t        >  *  in_WRITE_QUEUE_IN_WRITE_RE      ;
     49  private: sc_signal<Tspecial_address_t>  *  in_WRITE_QUEUE_IN_NUM_REG_RE    ;
     50  private: sc_signal<Tspecial_data_t   >  *  in_WRITE_QUEUE_IN_DATA_RE       ;
     51  private: sc_signal<Texception_t      >  *  in_WRITE_QUEUE_IN_EXCEPTION     ;
     52  private: sc_signal<Tcontrol_t        >  *  in_WRITE_QUEUE_IN_NO_SEQUENCE   ;
     53  private: sc_signal<Taddress_t        >  *  in_WRITE_QUEUE_IN_ADDRESS       ;
     54  private: sc_signal<Tcontrol_t        >  * out_WRITE_QUEUE_OUT_VAL          ;
     55  private: sc_signal<Tcontrol_t        >  *  in_WRITE_QUEUE_OUT_ACK          ;
     56  private: sc_signal<Tcontext_t        >  * out_WRITE_QUEUE_OUT_CONTEXT_ID   ;
     57  private: sc_signal<Tcontext_t        >  * out_WRITE_QUEUE_OUT_FRONT_END_ID ;
     58  private: sc_signal<Tcontext_t        >  * out_WRITE_QUEUE_OUT_OOO_ENGINE_ID;
     59  private: sc_signal<Tpacket_t         >  * out_WRITE_QUEUE_OUT_PACKET_ID    ;
     60//private: sc_signal<Toperation_t      >  * out_WRITE_QUEUE_OUT_OPERATION    ;
     61//private: sc_signal<Ttype_t           >  * out_WRITE_QUEUE_OUT_TYPE         ;
     62  private: sc_signal<Tspecial_data_t   >  * out_WRITE_QUEUE_OUT_FLAGS        ;
     63  private: sc_signal<Texception_t      >  * out_WRITE_QUEUE_OUT_EXCEPTION    ;
     64  private: sc_signal<Tcontrol_t        >  * out_WRITE_QUEUE_OUT_NO_SEQUENCE  ;
     65  private: sc_signal<Tgeneral_data_t   >  * out_WRITE_QUEUE_OUT_ADDRESS      ;
     66  private: sc_signal<Taddress_t        >  * out_WRITE_QUEUE_OUT_DATA         ;
     67  private: sc_signal<Tcontrol_t        > ** out_GPR_WRITE_VAL                ;
     68  private: sc_signal<Tcontrol_t        > **  in_GPR_WRITE_ACK                ;
     69  private: sc_signal<Tcontext_t        > ** out_GPR_WRITE_OOO_ENGINE_ID      ;
     70  private: sc_signal<Tgeneral_address_t> ** out_GPR_WRITE_NUM_REG            ;
     71  private: sc_signal<Tgeneral_data_t   > ** out_GPR_WRITE_DATA               ;
     72  private: sc_signal<Tcontrol_t        > ** out_SPR_WRITE_VAL                ;
     73  private: sc_signal<Tcontrol_t        > **  in_SPR_WRITE_ACK                ;
     74  private: sc_signal<Tcontext_t        > ** out_SPR_WRITE_OOO_ENGINE_ID      ;
     75  private: sc_signal<Tspecial_address_t> ** out_SPR_WRITE_NUM_REG            ;
     76  private: sc_signal<Tspecial_data_t   > ** out_SPR_WRITE_DATA               ;
     77  private: sc_signal<Tcontext_t        > ** out_BYPASS_WRITE_OOO_ENGINE_ID   ;
     78  private: sc_signal<Tcontrol_t        > ** out_BYPASS_WRITE_GPR_VAL         ;
     79  private: sc_signal<Tgeneral_address_t> ** out_BYPASS_WRITE_GPR_NUM_REG     ;
     80  private: sc_signal<Tgeneral_data_t   > ** out_BYPASS_WRITE_GPR_DATA        ;
     81  private: sc_signal<Tcontrol_t        > ** out_BYPASS_WRITE_SPR_VAL         ;
     82  private: sc_signal<Tspecial_address_t> ** out_BYPASS_WRITE_SPR_NUM_REG     ;
     83  private: sc_signal<Tspecial_data_t   > ** out_BYPASS_WRITE_SPR_DATA        ;
     84
     85#endif
     86
     87 private: std::string name;
     88 private: Tusage_t _usage;
     89 private: morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Parameters * _param;
     90#ifdef STATISTICS
     91 private: morpheo::behavioural::Parameters_Statistics * _param_stat;
     92#endif
     93 private: Write_queue * component;
     94
     95 private: void usage
     96    (
     97#ifdef MTI_SYSTEMC
     98     int argc, const char * const * argv
     99#else
     100     int argc, char * argv[]
     101#endif
     102     );
     103 private: void allocation   (void);
     104 private: void deallocation (void);
     105 public : void test         (void);
     106
     107#ifdef MTI_SYSTEMC
     108  SC_CTOR(top::top);
     109#else
     110 public : top (sc_module_name module_name,int argc, char * argv[]);
     111#endif
     112 public : ~top(void);
     113};
     114
     115 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/src/main.cpp

    r88 r113  
    22 * $Id$
    33 *
    4  * [ Description ]
     4 * [ Description ]
    55 *
    66 */
    77
    8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/include/test.h"
     8#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/include/top.h"
    99
    10 #define NB_PARAMS 10
    11 
    12 void usage (int argc, char * argv[])
     10#ifndef MTI_SYSTEMC
     11# ifndef SYSTEMC
     12int main    (int argc, char * argv[])
     13# else
     14int sc_main (int argc, char * argv[])
     15# endif
    1316{
    14   err (_("<Usage> %s name_instance list_params.\n"),argv[0]);
    15   err (_("list_params is :\n"));
    16   err (_(" * size_queue          (uint32_t)\n"));
    17   err (_(" * nb_context          (uint32_t)\n"));
    18   err (_(" * nb_front_end        (uint32_t)\n"));
    19   err (_(" * nb_ooo_engine       (uint32_t)\n"));
    20   err (_(" * nb_packet           (uint32_t)\n"));
    21   err (_(" * size_general_data   (uint32_t)\n"));
    22   err (_(" * nb_general_register (uint32_t)\n"));
    23   err (_(" * size_special_data   (uint32_t)\n"));
    24   err (_(" * nb_special_register (uint32_t)\n"));
    25   err (_(" * nb_bypass_write     (uint32_t)\n"));
    26 
    27   exit (1);
    28 }
    29 
    30 #ifndef SYSTEMC
    31 int main    (int argc, char * argv[])
    32 #else
    33 int sc_main (int argc, char * argv[])
    34 #endif
    35 {
    36   if (argc != 2+NB_PARAMS)
    37     usage (argc, argv);
    38 
    39   uint32_t       x = 1;
    40 
    41   const string   name                =      argv[x++];
    42   const uint32_t size_queue          = atoi(argv[x++]);
    43   const uint32_t nb_context          = atoi(argv[x++]);
    44   const uint32_t nb_front_end        = atoi(argv[x++]);
    45   const uint32_t nb_ooo_engine       = atoi(argv[x++]);
    46   const uint32_t nb_packet           = atoi(argv[x++]);
    47   const uint32_t size_general_data   = atoi(argv[x++]);
    48   const uint32_t nb_general_register = atoi(argv[x++]);
    49   const uint32_t size_special_data   = atoi(argv[x++]);
    50   const uint32_t nb_special_register = atoi(argv[x++]);
    51   const uint32_t nb_bypass_write     = atoi(argv[x++]);
     17  int _return = EXIT_SUCCESS;
    5218
    5319  try
    5420    {
    55       morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Parameters * param = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Parameters
    56         (size_queue         ,
    57          nb_context         ,
    58          nb_front_end       ,
    59          nb_ooo_engine      ,
    60          nb_packet          ,
    61          size_general_data  ,
    62          nb_general_register,
    63          size_special_data  ,
    64          nb_special_register,
    65          nb_bypass_write    ,
    66          true // is_toplevel
    67          );
    68      
    69       msg(_("%s"),param->print(1).c_str());
    70      
    71       test (name,param);
     21      top * my_top = new top ("my_top",argc,argv);
     22
     23      my_top->test();
     24
     25      delete my_top;
    7226    }
    7327  catch (morpheo::ErrorMorpheo & error)
    7428    {
    75       msg (_("<%s> : %s.\n"),name.c_str(), error.what ());
    76       exit (EXIT_FAILURE);
     29      msg(_("%s"),error.what ());
     30      _return = EXIT_FAILURE;
    7731    }
    78   catch (...)
     32 
     33  try
    7934    {
    80       err (_("<%s> : This test must generate a error.\n"),name.c_str());
    81       exit (EXIT_FAILURE);
     35      if (_return == EXIT_SUCCESS)
     36        TEST_OK("Write_queue : no error");
     37      else
     38        TEST_KO("Write_queue : a lot of error");
     39    }
     40  catch (morpheo::ErrorMorpheo & error)
     41    {
     42//    msgError(_("<%s> :\n%s"),name.c_str(), error.what ());
     43      _return = EXIT_FAILURE;
    8244    }
    8345
    84   return (EXIT_SUCCESS);
     46  return _return;
    8547}
    86 
     48#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Write_queue.h

    r97 r113  
    3030#include "Behavioural/include/Usage.h"
    3131
     32#include "Behavioural/Generic/Queue/include/Queue.h"
     33
    3234namespace morpheo {
    3335namespace behavioural {
     
    4850  protected : const std::string  _name;
    4951  protected : const Parameters * _param;
    50   private   : const Tusage_t     _usage;
     52  public    :      Tusage_t     _usage;
    5153
    5254#ifdef STATISTICS
     
    126128
    127129    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     130  private   : morpheo::behavioural::generic::queue::Parameters * _param_queue;
     131  private   : morpheo::behavioural::generic::queue::Queue      * _component_queue;
    128132
    129133    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Parameters.cpp

    r103 r113  
    3030                          uint32_t nb_special_register,
    3131                          uint32_t nb_bypass_write    ,
    32                           bool     is_toplevel)
     32                          bool     is_toplevel):
     33    behavioural::Parameters ("Write_queue")
    3334  {
    3435    log_printf(FUNC,Write_queue,FUNCTION,"Begin");
     
    6768        copy();
    6869      }
    69 
    70     _size_internal_queue =
    71       ( _size_context_id          + 
    72         _size_front_end_id        + 
    73         _size_ooo_engine_id       + 
    74         _size_rob_ptr             +
    75         1                         +
    76         _size_general_register    +
    77         _size_general_data        +
    78         1                         +
    79         _size_special_register    +
    80         _size_special_data        +
    81         _size_exception           +
    82         1                         +
    83         _size_instruction_address
    84        );
    8570
    8671    log_printf(FUNC,Write_queue,FUNCTION,"End");
     
    134119  {
    135120    log_printf(FUNC,Write_queue,FUNCTION,"Begin");
     121
     122    _size_internal_queue =
     123      ( _size_context_id          + 
     124        _size_front_end_id        + 
     125        _size_ooo_engine_id       + 
     126        _size_rob_ptr             +
     127        1                         +
     128        _size_general_register    +
     129        _size_general_data        +
     130        1                         +
     131        _size_special_register    +
     132        _size_special_data        +
     133        _size_exception           +
     134        1                         +
     135        _size_instruction_address
     136       );
     137
    136138    log_printf(FUNC,Write_queue,FUNCTION,"End");
    137139  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Parameters_msg_error.cpp

    r81 r113  
    2626    log_printf(FUNC,Write_queue,FUNCTION,"Begin");
    2727
    28     Parameters_test test ("Write_queue");
     28    Parameters_test test (_type);
    2929
    3030    if (_nb_bypass_write > _size_queue)
    31       test.error("The write_queue can't have more bypass_write than entry in the queue.");
     31      test.error("The write_queue can't have more bypass_write than entry in the queue.\n");
    3232
    3333    log_printf(FUNC,Write_queue,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue.cpp

    r88 r113  
    3737    ,_usage            (usage)
    3838  {
    39     log_printf(FUNC,Write_queue,FUNCTION,"Begin");
     39    log_begin(Write_queue,FUNCTION);
    4040
    41 #if DEBUG_Write_queue == true
    42     log_printf(INFO,Write_queue,FUNCTION,_("<%s> Parameters"),_name.c_str());
     41// #if DEBUG_Write_queue == true
     42//     log_printf(INFO,Write_queue,FUNCTION,_("<%s> Parameters"),_name.c_str());
    4343
    44     std::cout << *param << std::endl;
    45 #endif   
     44//     std::cout << *param << std::endl;
     45// #endif   
    4646
    47     log_printf(INFO,Write_queue,FUNCTION,"Allocation");
     47    log_printf(INFO,Write_queue,FUNCTION,_("<%s> Allocation"),_name.c_str());
    4848    allocation ();
    4949
     
    5151    if (usage_is_set(_usage,USE_STATISTICS))
    5252      {
    53         log_printf(INFO,Write_queue,FUNCTION,"Allocation of statistics");
     53        log_printf(INFO,Write_queue,FUNCTION,_("<%s> Allocation of statistics"),_name.c_str());
    5454
    5555        statistics_declaration(param_statistics);
     
    6161      {
    6262        // generate the vhdl
    63         log_printf(INFO,Write_queue,FUNCTION,"Generate the vhdl");
     63        log_printf(INFO,Write_queue,FUNCTION,_("<%s> Generate the vhdl"),_name.c_str());
    6464       
    6565        vhdl();
     
    7070    if (usage_is_set(_usage,USE_SYSTEMC))
    7171      {
    72         log_printf(INFO,Write_queue,FUNCTION,"Method - transition");
     72        log_printf(INFO,Write_queue,FUNCTION,_("<%s> Method - transition"),_name.c_str());
    7373
    7474        SC_METHOD (transition);
     
    8080# endif   
    8181
    82         log_printf(INFO,Write_queue,FUNCTION,"Method - genMoore");
     82        log_printf(INFO,Write_queue,FUNCTION,_("<%s> Method - genMoore"),_name.c_str());
    8383
    8484        SC_METHOD (genMoore);
     
    9292#endif
    9393      }
    94     log_printf(FUNC,Write_queue,FUNCTION,"End");
     94    log_end(Write_queue,FUNCTION);
    9595  };
    9696   
     
    9999  Write_queue::~Write_queue (void)
    100100  {
    101     log_printf(FUNC,Write_queue,FUNCTION,"Begin");
     101    log_begin(Write_queue,FUNCTION);
    102102
    103103#ifdef STATISTICS
    104104    if (usage_is_set(_usage,USE_STATISTICS))
    105105      {
    106         log_printf(INFO,Write_queue,FUNCTION,"Generate Statistics file");
     106        log_printf(INFO,Write_queue,FUNCTION,_("<%s> Generate Statistics file"),_name.c_str());
    107107       
    108108        delete _stat;
     
    110110#endif
    111111
    112     log_printf(INFO,Write_queue,FUNCTION,"Deallocation");
     112    log_printf(INFO,Write_queue,FUNCTION,_("<%s> Deallocation"),_name.c_str());
    113113    deallocation ();
    114114
    115     log_printf(FUNC,Write_queue,FUNCTION,"End");
     115    log_end(Write_queue,FUNCTION);
    116116  };
    117117
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_allocation.cpp

    r112 r113  
    2828
    2929    Entity * entity = _component->set_entity (_name       
    30                                               ,"Write_queue"
     30                                              ,_param->_type
    3131#ifdef POSITION
    3232                                              ,COMBINATORY
     
    136136     }
    137137
    138     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     138    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    139139
    140140     _queue = new std::list<write_queue_entry_t *>;
     141
     142    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     143    _param_queue = new morpheo::behavioural::generic::queue::Parameters
     144      (_param->_size_queue,
     145       _param->_size_internal_queue,
     146       _param->_nb_bypass_write,
     147       false,
     148       false
     149       );
     150
     151    std::string queue_name = _name + "_queue";
     152    _component_queue = new morpheo::behavioural::generic::queue::Queue
     153      (queue_name.c_str()
     154#ifdef STATISTICS
     155       ,NULL
     156#endif
     157       ,_param_queue
     158       ,USE_VHDL);
     159   
     160    _component->set_component(_component_queue->_component
     161#ifdef POSITION
     162                              , 50, 50, 50, 50
     163#endif
     164                              , INSTANCE_LIBRARY
     165                              );
    141166
    142167#ifdef POSITION
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_deallocation.cpp

    r112 r113  
    9292
    9393    delete _component;
     94    delete _component_queue;
     95    delete _param_queue;
    9496
    9597    log_printf(FUNC,Write_queue,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_statistics_declaration.cpp

    r81 r113  
    2626
    2727    _stat = new Stat (static_cast<std::string>(_name),
    28                       "Write_queue",
     28                      _param->_type,
    2929                      param_statistics);
    3030
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_vhdl.cpp

    r105 r113  
    99#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Write_queue.h"
    1010#include "Behavioural/include/Vhdl.h"
    11 #include "Behavioural/Generic/Queue/include/Queue.h"
    1211
    1312namespace morpheo                    {
     
    2625  {
    2726    log_printf(FUNC,Write_queue,FUNCTION,"Begin");
    28 
    29     morpheo::behavioural::generic::queue::Parameters * param_queue;
    30     morpheo::behavioural::generic::queue::Queue      * queue;
    31    
    32     param_queue = new morpheo::behavioural::generic::queue::Parameters
    33       (_param->_size_queue,
    34        _param->_size_internal_queue,
    35        _param->_nb_bypass_write,
    36        false,
    37        false
    38        );
    39 
    40     std::cout << "size internal queue :" << _param->_size_internal_queue << "." << std::endl;
    41 
    42     std::string queue_name = _name + "_queue";
    43     queue = new morpheo::behavioural::generic::queue::Queue
    44       (queue_name.c_str()
    45 #ifdef STATISTICS
    46        ,NULL
    47 #endif
    48        ,param_queue
    49        ,USE_VHDL);
    50    
    51     _component->set_component(queue->_component
    52 #ifdef POSITION
    53                               , 50, 50, 50, 50
    54 #endif
    55                               , INSTANCE_LIBRARY
    56                               );
    57 
    58 
    5927
    6028    Vhdl * vhdl = new Vhdl (_name);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_vhdl_declaration.cpp

    r103 r113  
    5454    uint32_t min = 0;
    5555    uint32_t max, size;
    56     uint32_t min_ooo, max_ooo;
     56    uint32_t min_ooo, max_ooo = 0;
    5757    uint32_t pos_write_rd, min_gpr_num_reg, max_gpr_num_reg, min_gpr_data, max_gpr_data;
    5858    uint32_t pos_write_re, min_spr_num_reg, max_spr_num_reg, min_spr_data, max_spr_data;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Write_unit.h

    r97 r113  
    4848  protected : const std::string  _name;
    4949  protected : const Parameters * _param;
    50   private   : const Tusage_t     _usage;
     50  public    :      Tusage_t     _usage;
    5151
    5252#ifdef STATISTICS
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Parameters.cpp

    r97 r113  
    3030                          uint32_t nb_special_register,
    3131                          uint32_t nb_bypass_write    ,
    32                           bool     is_toplevel        )
     32                          bool     is_toplevel        ):
     33    behavioural::Parameters("Write_unit")
    3334  {
    3435    log_printf(FUNC,Write_unit,FUNCTION,"Begin");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit.cpp

    r88 r113  
    3636    ,_usage            (usage)
    3737  {
    38     log_printf(FUNC,Write_unit,FUNCTION,"Begin");
     38    log_begin(Write_unit,FUNCTION);
    3939
    40 #if DEBUG_Write_unit == true
    41     log_printf(INFO,Write_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
     40// #if DEBUG_Write_unit == true
     41//     log_printf(INFO,Write_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
    4242
    43     std::cout << *param << std::endl;
    44 #endif   
     43//     std::cout << *param << std::endl;
     44// #endif   
    4545
    46     log_printf(INFO,Write_unit,FUNCTION,"Allocation");
     46    log_printf(INFO,Write_unit,FUNCTION,_("<%s> Allocation"),_name.c_str());
    4747
    4848    allocation (
     
    5555    if (usage_is_set(_usage,USE_STATISTICS))
    5656      {
    57         log_printf(INFO,Write_unit,FUNCTION,"Allocation of statistics");
     57        log_printf(INFO,Write_unit,FUNCTION,_("<%s> Allocation of statistics"),_name.c_str());
    5858
    5959        statistics_declaration(param_statistics);
     
    6565      {
    6666        // generate the vhdl
    67         log_printf(INFO,Write_unit,FUNCTION,"Generate the vhdl");
     67        log_printf(INFO,Write_unit,FUNCTION,_("<%s> Generate the vhdl"),_name.c_str());
    6868       
    6969        vhdl();
     
    7474    if (usage_is_set(_usage,USE_SYSTEMC))
    7575      {
    76         log_printf(INFO,Write_unit,FUNCTION,"Method - transition");
     76        log_printf(INFO,Write_unit,FUNCTION,_("<%s> Method - transition"),_name.c_str());
    7777
    7878        SC_METHOD (transition);
     
    8686#endif
    8787      }
    88     log_printf(FUNC,Write_unit,FUNCTION,"End");
     88    log_end(Write_unit,FUNCTION);
    8989  };
    9090   
     
    9393  Write_unit::~Write_unit (void)
    9494  {
    95     log_printf(FUNC,Write_unit,FUNCTION,"Begin");
     95    log_begin(Write_unit,FUNCTION);
    9696
    9797#ifdef STATISTICS
    9898    if (usage_is_set(_usage,USE_STATISTICS))
    9999      {
    100         log_printf(INFO,Write_unit,FUNCTION,"Generate Statistics file");
     100        log_printf(INFO,Write_unit,FUNCTION,_("<%s> Generate Statistics file"),_name.c_str());
    101101
    102102        delete _stat;
     
    104104#endif
    105105
    106     log_printf(INFO,Write_unit,FUNCTION,"Deallocation");
     106    log_printf(INFO,Write_unit,FUNCTION,_("<%s> Deallocation"),_name.c_str());
    107107    deallocation ();
    108108
    109     log_printf(FUNC,Write_unit,FUNCTION,"End");
     109    log_end(Write_unit,FUNCTION);
    110110  };
    111111
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_allocation.cpp

    r112 r113  
    3434
    3535    Entity * entity = _component->set_entity (_name       
    36                                               ,"Write_unit"
     36                                              ,_param->_type
    3737#ifdef POSITION
    3838                                              ,COMBINATORY
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_statistics_declaration.cpp

    r81 r113  
    2525
    2626    _stat       = new Stat (static_cast<std::string>(_name),
    27                             "Write_unit",
     27                            _param->_type,
    2828                            param_statistics);
    2929
    30     _stat->add_stat(component_write_queue->_stat);
    31     if (_param->_have_component_execute_queue)
     30    if (usage_is_set(component_write_queue->_usage,USE_STATISTICS))
     31      _stat->add_stat(component_write_queue->_stat);
     32   
     33    if (_param->_have_component_execute_queue and (usage_is_set(component_execute_queue->_usage,USE_STATISTICS)))
    3234      _stat->add_stat(component_execute_queue->_stat);
    3335       
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Execute_unit_to_Write_unit
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Read_unit_to_Execution_unit
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Makefile.defs

    r81 r113  
    22# $Id$
    33#
    4 # [ Description ]
     4# [ Description ]
    55#
    66# Makefile
    77#
    88
    9 #-----[ Directory ]----------------------------------------
     9ENTITY                          = Register_unit
     10
     11#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../..
    1113DIR_MORPHEO                     = $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/Makefile.defs

    r81 r113  
    22# $Id$
    33#
    4 # [ Description ]
     4# [ Description ]
    55#
    66# Makefile
    77#
    88
    9 #-----[ Directory ]----------------------------------------
     9ENTITY                          = Register_unit_Glue
     10
     11#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
    1113DIR_MORPHEO                     = $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/Makefile.defs

    r83 r113  
    77#
    88
     9ENTITY                          = Context_State
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/Instruction/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Instruction
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Decod
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/src/test.cpp

    r112 r113  
    5151  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
    5252  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
     53
     54  sc_signal<Tcontrol_t         > ***  in_IFETCH_VAL                         ;//[nb_context][nb_inst_fetch]
     55  sc_signal<Tcontrol_t         > *** out_IFETCH_ACK                         ;//[nb_context][nb_inst_fetch]
     56  sc_signal<Tinstruction_t     > ***  in_IFETCH_INSTRUCTION                 ;//[nb_context][nb_inst_fetch]
     57  sc_signal<Tcontext_t         >  **  in_IFETCH_CONTEXT_ID                  ;//[nb_context]
     58  sc_signal<Tgeneral_address_t >  **  in_IFETCH_ADDRESS                     ;//[nb_context]
     59//sc_signal<Tgeneral_address_t >  **  in_IFETCH_ADDRESS_NEXT                ;//[nb_context]
     60  sc_signal<Tinst_ifetch_ptr_t >  **  in_IFETCH_INST_IFETCH_PTR             ;//[nb_context]
     61  sc_signal<Tbranch_state_t    >  **  in_IFETCH_BRANCH_STATE                ;//[nb_context]
     62  sc_signal<Tprediction_ptr_t  >  **  in_IFETCH_BRANCH_UPDATE_PREDICTION_ID ;//[nb_context]
     63  sc_signal<Texception_t       >  **  in_IFETCH_EXCEPTION                   ;//[nb_context]
     64  sc_signal<Tcontrol_t         >  ** out_DECOD_VAL                          ;//[nb_inst_decod]
     65  sc_signal<Tcontrol_t         >  **  in_DECOD_ACK                          ;//[nb_inst_decod]
     66  sc_signal<Tcontext_t         >  ** out_DECOD_CONTEXT_ID                   ;//[nb_inst_decod]
     67  sc_signal<Tdepth_t           >  ** out_DECOD_DEPTH                        ;//[nb_inst_decod]
     68  sc_signal<Ttype_t            >  ** out_DECOD_TYPE                         ;//[nb_inst_decod]
     69  sc_signal<Toperation_t       >  ** out_DECOD_OPERATION                    ;//[nb_inst_decod]
     70  sc_signal<Tcontrol_t         >  ** out_DECOD_NO_EXECUTE                   ;//[nb_inst_decod]
     71  sc_signal<Tcontrol_t         >  ** out_DECOD_IS_DELAY_SLOT                ;//[nb_inst_decod]
     72  sc_signal<Tgeneral_data_t    >  ** out_DECOD_ADDRESS                      ;//[nb_inst_decod]
     73  sc_signal<Tgeneral_data_t    >  ** out_DECOD_ADDRESS_NEXT                 ;//[nb_inst_decod]
     74  sc_signal<Tcontrol_t         >  ** out_DECOD_HAS_IMMEDIAT                 ;//[nb_inst_decod]
     75  sc_signal<Tgeneral_data_t    >  ** out_DECOD_IMMEDIAT                     ;//[nb_inst_decod]
     76  sc_signal<Tcontrol_t         >  ** out_DECOD_READ_RA                      ;//[nb_inst_decod]
     77  sc_signal<Tgeneral_address_t >  ** out_DECOD_NUM_REG_RA                   ;//[nb_inst_decod]
     78  sc_signal<Tcontrol_t         >  ** out_DECOD_READ_RB                      ;//[nb_inst_decod]
     79  sc_signal<Tgeneral_address_t >  ** out_DECOD_NUM_REG_RB                   ;//[nb_inst_decod]
     80  sc_signal<Tcontrol_t         >  ** out_DECOD_READ_RC                      ;//[nb_inst_decod]
     81  sc_signal<Tspecial_address_t >  ** out_DECOD_NUM_REG_RC                   ;//[nb_inst_decod]
     82  sc_signal<Tcontrol_t         >  ** out_DECOD_WRITE_RD                     ;//[nb_inst_decod]
     83  sc_signal<Tgeneral_address_t >  ** out_DECOD_NUM_REG_RD                   ;//[nb_inst_decod]
     84  sc_signal<Tcontrol_t         >  ** out_DECOD_WRITE_RE                     ;//[nb_inst_decod]
     85  sc_signal<Tspecial_address_t >  ** out_DECOD_NUM_REG_RE                   ;//[nb_inst_decod]
     86  sc_signal<Texception_t       >  ** out_DECOD_EXCEPTION_USE                ;//[nb_inst_decod]
     87  sc_signal<Texception_t       >  ** out_DECOD_EXCEPTION                    ;//[nb_inst_decod]
     88  sc_signal<Tcontrol_t         >  ** out_PREDICT_VAL                        ;//[nb_inst_decod]
     89  sc_signal<Tcontrol_t         >  **  in_PREDICT_ACK                        ;//[nb_inst_decod]
     90  sc_signal<Tcontext_t         >  ** out_PREDICT_CONTEXT_ID                 ;//[nb_inst_decod]
     91  sc_signal<Tcontrol_t         >  ** out_PREDICT_MATCH_INST_IFETCH_PTR      ;//[nb_inst_decod]
     92  sc_signal<Tbranch_state_t    >  ** out_PREDICT_BRANCH_STATE               ;//[nb_inst_decod]
     93  sc_signal<Tprediction_ptr_t  >  ** out_PREDICT_BRANCH_UPDATE_PREDICTION_ID;//[nb_inst_decod]
     94  sc_signal<Tbranch_condition_t>  ** out_PREDICT_BRANCH_CONDITION           ;//[nb_inst_decod]
     95//sc_signal<Tcontrol_t         >  ** out_PREDICT_BRANCH_STACK_WRITE         ;//[nb_inst_decod]
     96  sc_signal<Tcontrol_t         >  ** out_PREDICT_BRANCH_DIRECTION           ;//[nb_inst_decod]
     97  sc_signal<Tgeneral_data_t    >  ** out_PREDICT_ADDRESS_SRC                ;//[nb_inst_decod]
     98  sc_signal<Tgeneral_data_t    >  ** out_PREDICT_ADDRESS_DEST               ;//[nb_inst_decod]
     99  sc_signal<Tcontrol_t         >  **  in_PREDICT_CAN_CONTINUE               ;//[nb_inst_decod]
     100  sc_signal<Tcontrol_t         >  **  in_CONTEXT_DECOD_ENABLE               ;//[nb_context]
     101  sc_signal<Tcontrol_t         >  **  in_CONTEXT_DEPTH_VAL                  ;//[nb_context]
     102  sc_signal<Tdepth_t           >  **  in_CONTEXT_DEPTH                      ;//[nb_context]
     103  sc_signal<Tcontrol_t         >   * out_CONTEXT_EVENT_VAL                  ;
     104  sc_signal<Tcontrol_t         >   *  in_CONTEXT_EVENT_ACK                  ;
     105  sc_signal<Tcontext_t         >   * out_CONTEXT_EVENT_CONTEXT_ID           ;
     106  sc_signal<Tdepth_t           >   * out_CONTEXT_EVENT_DEPTH                ;
     107  sc_signal<Tevent_type_t      >   * out_CONTEXT_EVENT_TYPE                 ;
     108  sc_signal<Tcontrol_t         >   * out_CONTEXT_EVENT_IS_DELAY_SLOT        ;
     109  sc_signal<Tgeneral_data_t    >   * out_CONTEXT_EVENT_ADDRESS              ;
     110  sc_signal<Tgeneral_data_t    >   * out_CONTEXT_EVENT_ADDRESS_EPCR         ;
    53111
    54112  ALLOC2_SC_SIGNAL( in_IFETCH_VAL                         ," in_IFETCH_VAL                         ",Tcontrol_t         ,_param->_nb_context,_param->_nb_inst_fetch[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/Makefile.defs

    r82 r113  
    77#
    88
     9ENTITY                          = Decod_queue
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/SelfTest/src/test.cpp

    r111 r113  
    5151  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
    5252  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
     53
     54  sc_signal<Tcontrol_t         >  **  in_DECOD_IN_VAL            ;//[nb_inst_decod]
     55  sc_signal<Tcontrol_t         >  ** out_DECOD_IN_ACK            ;//[nb_inst_decod]
     56  sc_signal<Tcontext_t         >  **  in_DECOD_IN_CONTEXT_ID     ;//[nb_inst_decod]
     57  sc_signal<Tdepth_t           >  **  in_DECOD_IN_DEPTH          ;//[nb_inst_decod]
     58  sc_signal<Ttype_t            >  **  in_DECOD_IN_TYPE           ;//[nb_inst_decod]
     59  sc_signal<Toperation_t       >  **  in_DECOD_IN_OPERATION      ;//[nb_inst_decod]
     60  sc_signal<Tcontrol_t         >  **  in_DECOD_IN_NO_EXECUTE     ;//[nb_inst_decod]
     61  sc_signal<Tcontrol_t         >  **  in_DECOD_IN_IS_DELAY_SLOT  ;//[nb_inst_decod]
     62  sc_signal<Tgeneral_data_t    >  **  in_DECOD_IN_ADDRESS        ;//[nb_inst_decod]
     63  sc_signal<Tgeneral_data_t    >  **  in_DECOD_IN_ADDRESS_NEXT   ;//[nb_inst_decod]
     64  sc_signal<Tcontrol_t         >  **  in_DECOD_IN_HAS_IMMEDIAT   ;//[nb_inst_decod]
     65  sc_signal<Tgeneral_data_t    >  **  in_DECOD_IN_IMMEDIAT       ;//[nb_inst_decod]
     66  sc_signal<Tcontrol_t         >  **  in_DECOD_IN_READ_RA        ;//[nb_inst_decod]
     67  sc_signal<Tgeneral_address_t >  **  in_DECOD_IN_NUM_REG_RA     ;//[nb_inst_decod]
     68  sc_signal<Tcontrol_t         >  **  in_DECOD_IN_READ_RB        ;//[nb_inst_decod]
     69  sc_signal<Tgeneral_address_t >  **  in_DECOD_IN_NUM_REG_RB     ;//[nb_inst_decod]
     70  sc_signal<Tcontrol_t         >  **  in_DECOD_IN_READ_RC        ;//[nb_inst_decod]
     71  sc_signal<Tspecial_address_t >  **  in_DECOD_IN_NUM_REG_RC     ;//[nb_inst_decod]
     72  sc_signal<Tcontrol_t         >  **  in_DECOD_IN_WRITE_RD       ;//[nb_inst_decod]
     73  sc_signal<Tgeneral_address_t >  **  in_DECOD_IN_NUM_REG_RD     ;//[nb_inst_decod]
     74  sc_signal<Tcontrol_t         >  **  in_DECOD_IN_WRITE_RE       ;//[nb_inst_decod]
     75  sc_signal<Tspecial_address_t >  **  in_DECOD_IN_NUM_REG_RE     ;//[nb_inst_decod]
     76  sc_signal<Texception_t       >  **  in_DECOD_IN_EXCEPTION_USE  ;//[nb_inst_decod]
     77  sc_signal<Texception_t       >  **  in_DECOD_IN_EXCEPTION      ;//[nb_inst_decod]
     78  sc_signal<Tcontrol_t         >  ** out_DECOD_OUT_VAL           ;//[nb_inst_decod]
     79  sc_signal<Tcontrol_t         >  **  in_DECOD_OUT_ACK           ;//[nb_inst_decod]
     80  sc_signal<Tcontext_t         >  ** out_DECOD_OUT_CONTEXT_ID    ;//[nb_inst_decod]
     81  sc_signal<Tdepth_t           >  ** out_DECOD_OUT_DEPTH         ;//[nb_inst_decod]
     82  sc_signal<Ttype_t            >  ** out_DECOD_OUT_TYPE          ;//[nb_inst_decod]
     83  sc_signal<Toperation_t       >  ** out_DECOD_OUT_OPERATION     ;//[nb_inst_decod]
     84  sc_signal<Tcontrol_t         >  ** out_DECOD_OUT_NO_EXECUTE    ;//[nb_inst_decod]
     85  sc_signal<Tcontrol_t         >  ** out_DECOD_OUT_IS_DELAY_SLOT ;//[nb_inst_decod]
     86  sc_signal<Tgeneral_data_t    >  ** out_DECOD_OUT_ADDRESS       ;//[nb_inst_decod]
     87  sc_signal<Tgeneral_data_t    >  ** out_DECOD_OUT_ADDRESS_NEXT  ;//[nb_inst_decod]
     88  sc_signal<Tcontrol_t         >  ** out_DECOD_OUT_HAS_IMMEDIAT  ;//[nb_inst_decod]
     89  sc_signal<Tgeneral_data_t    >  ** out_DECOD_OUT_IMMEDIAT      ;//[nb_inst_decod]
     90  sc_signal<Tcontrol_t         >  ** out_DECOD_OUT_READ_RA       ;//[nb_inst_decod]
     91  sc_signal<Tgeneral_address_t >  ** out_DECOD_OUT_NUM_REG_RA    ;//[nb_inst_decod]
     92  sc_signal<Tcontrol_t         >  ** out_DECOD_OUT_READ_RB       ;//[nb_inst_decod]
     93  sc_signal<Tgeneral_address_t >  ** out_DECOD_OUT_NUM_REG_RB    ;//[nb_inst_decod]
     94  sc_signal<Tcontrol_t         >  ** out_DECOD_OUT_READ_RC       ;//[nb_inst_decod]
     95  sc_signal<Tspecial_address_t >  ** out_DECOD_OUT_NUM_REG_RC    ;//[nb_inst_decod]
     96  sc_signal<Tcontrol_t         >  ** out_DECOD_OUT_WRITE_RD      ;//[nb_inst_decod]
     97  sc_signal<Tgeneral_address_t >  ** out_DECOD_OUT_NUM_REG_RD    ;//[nb_inst_decod]
     98  sc_signal<Tcontrol_t         >  ** out_DECOD_OUT_WRITE_RE      ;//[nb_inst_decod]
     99  sc_signal<Tspecial_address_t >  ** out_DECOD_OUT_NUM_REG_RE    ;//[nb_inst_decod]
     100  sc_signal<Texception_t       >  ** out_DECOD_OUT_EXCEPTION_USE ;//[nb_inst_decod]
     101  sc_signal<Texception_t       >  ** out_DECOD_OUT_EXCEPTION     ;//[nb_inst_decod]
     102  sc_signal<Tdepth_t           >  **  in_DEPTH_MIN               ;//[nb_context]
     103  sc_signal<Tdepth_t           >  **  in_DEPTH_MAX               ;//[nb_context]
     104  sc_signal<Tcontrol_t         >  **  in_DEPTH_FULL              ;//[nb_context]
     105  sc_signal<Tcounter_t         >  ** out_NB_INST_ALL             ;//[nb_context]
    53106
    54107  ALLOC1_SC_SIGNAL( in_DECOD_IN_VAL            ," in_DECOD_IN_VAL           ",Tcontrol_t         ,_param->_nb_inst_decod);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Makefile.defs

    r83 r113  
    77#
    88
     9ENTITY                          = Decod_unit
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/Makefile.defs

    r88 r113  
    77#
    88
     9ENTITY                          = Front_end_Glue
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Address_management
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management/SelfTest/src/test.cpp

    r112 r113  
    5050  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
    5151  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
     52
     53  sc_signal<Tcontrol_t        >    * out_ADDRESS_VAL                         ;
     54  sc_signal<Tcontrol_t        >    *  in_ADDRESS_ACK                         ; //icache_req_ack and ifetch_queue_ack
     55  sc_signal<Tgeneral_address_t>    * out_ADDRESS_INSTRUCTION_ADDRESS         ;
     56  sc_signal<Tcontrol_t        >   ** out_ADDRESS_INSTRUCTION_ENABLE          ; //[nb_instruction]
     57  sc_signal<Tinst_ifetch_ptr_t>    * out_ADDRESS_INST_IFETCH_PTR             ;
     58  sc_signal<Tbranch_state_t   >    * out_ADDRESS_BRANCH_STATE                ;
     59  sc_signal<Tprediction_ptr_t >    * out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID ;
     60  sc_signal<Tcontrol_t        >    * out_PREDICT_VAL                         ;
     61  sc_signal<Tcontrol_t        >    *  in_PREDICT_ACK                         ;
     62  sc_signal<Tgeneral_address_t>    * out_PREDICT_PC_PREVIOUS                 ;
     63  sc_signal<Tgeneral_address_t>    * out_PREDICT_PC_CURRENT                  ;
     64  sc_signal<Tcontrol_t        >    * out_PREDICT_PC_CURRENT_IS_DS_TAKE       ;
     65  sc_signal<Tgeneral_address_t>    *  in_PREDICT_PC_NEXT                     ;
     66  sc_signal<Tcontrol_t        >    *  in_PREDICT_PC_NEXT_IS_DS_TAKE          ;
     67  sc_signal<Tcontrol_t        >   **  in_PREDICT_INSTRUCTION_ENABLE          ; //[nb_instruction]
     68//sc_signal<Tcontrol_t        >    *  in_PREDICT_BRANCH_IS_CURRENT           ;
     69  sc_signal<Tbranch_state_t   >    *  in_PREDICT_BRANCH_STATE                ;
     70  sc_signal<Tprediction_ptr_t >    *  in_PREDICT_BRANCH_UPDATE_PREDICTION_ID ;
     71  sc_signal<Tinst_ifetch_ptr_t>    *  in_PREDICT_INST_IFETCH_PTR             ;
     72  sc_signal<Tcontrol_t        >    *  in_EVENT_VAL                           ;
     73  sc_signal<Tcontrol_t        >    * out_EVENT_ACK                           ;
     74  sc_signal<Tgeneral_address_t>    *  in_EVENT_ADDRESS                       ;
     75  sc_signal<Tgeneral_address_t>    *  in_EVENT_ADDRESS_NEXT                  ;
     76  sc_signal<Tcontrol_t        >    *  in_EVENT_ADDRESS_NEXT_VAL              ;
     77  sc_signal<Tcontrol_t        >    *  in_EVENT_IS_DS_TAKE                    ;
    5278
    5379  ALLOC0_SC_SIGNAL (out_ADDRESS_VAL                        ,"out_ADDRESS_VAL                        ",Tcontrol_t        );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Ifetch_queue
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/SelfTest/src/main.cpp

    r88 r113  
    77
    88#include "Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/SelfTest/include/test.h"
    9 
     9#include "Behavioural/include/Selftest.h"
    1010#define NB_PARAMS 4
    1111
     
    3333  uint32_t x = 1;
    3434
    35   string name = argv[x++];
    36  
    37   uint32_t _size_queue                    = fromString<uint32_t>(argv[x++]);
    38   uint32_t _nb_instruction                = fromString<uint32_t>(argv[x++]);
    39   uint32_t _size_branch_update_prediction = fromString<uint32_t>(argv[x++]);
    40   uint32_t _size_general_data             = fromString<uint32_t>(argv[x++]);
     35  string   name;
     36  uint32_t _size_queue                   ;
     37  uint32_t _nb_instruction               ;
     38  uint32_t _size_branch_update_prediction;
     39  uint32_t _size_general_data            ;
     40
     41  SELFTEST0( name                         ,string ,argv,x);
     42  SELFTEST0(_size_queue                   ,uint32_t,argv,x);
     43  SELFTEST0(_nb_instruction               ,uint32_t,argv,x);
     44  SELFTEST0(_size_branch_update_prediction,uint32_t,argv,x);
     45  SELFTEST0(_size_general_data            ,uint32_t,argv,x);
    4146
    4247  int _return = EXIT_SUCCESS;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/SelfTest/src/test.cpp

    r112 r113  
    6767  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
    6868  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
     69
     70  sc_signal<Tcontrol_t            >  *  in_ADDRESS_VAL                         ;
     71  sc_signal<Tcontrol_t            >  * out_ADDRESS_ACK                         ;
     72  sc_signal<Tifetch_queue_ptr_t   >  * out_ADDRESS_IFETCH_QUEUE_ID             ;
     73  sc_signal<Tcontrol_t            > **  in_ADDRESS_INSTRUCTION_ENABLE          ;//[nb_instruction]
     74  sc_signal<Tgeneral_address_t    >  *  in_ADDRESS_INSTRUCTION_ADDRESS         ;
     75  sc_signal<Tinst_ifetch_ptr_t    >  *  in_ADDRESS_INST_IFETCH_PTR             ;
     76  sc_signal<Tbranch_state_t       >  *  in_ADDRESS_BRANCH_STATE                ;
     77  sc_signal<Tprediction_ptr_t     >  *  in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID ;
     78  sc_signal<Tcontrol_t            > ** out_DECOD_VAL                           ;//[nb_instruction]
     79  sc_signal<Tcontrol_t            > **  in_DECOD_ACK                           ;//[nb_instruction]
     80  sc_signal<Tinstruction_t        > ** out_DECOD_INSTRUCTION                   ;//[nb_instruction]
     81  sc_signal<Tgeneral_address_t    >  * out_DECOD_ADDRESS                       ;
     82  sc_signal<Tinst_ifetch_ptr_t    >  * out_DECOD_INST_IFETCH_PTR               ;
     83  sc_signal<Tbranch_state_t       >  * out_DECOD_BRANCH_STATE                  ;
     84  sc_signal<Tprediction_ptr_t     >  * out_DECOD_BRANCH_UPDATE_PREDICTION_ID   ;
     85  sc_signal<Texception_t          >  * out_DECOD_EXCEPTION                     ;
     86  sc_signal<Tcontrol_t            >  *  in_ICACHE_RSP_VAL                      ;
     87  sc_signal<Tcontrol_t            >  * out_ICACHE_RSP_ACK                      ;
     88  sc_signal<Tpacket_t             >  *  in_ICACHE_RSP_PACKET_ID                ;
     89  sc_signal<Ticache_instruction_t > **  in_ICACHE_RSP_INSTRUCTION              ;//[nb_instruction]
     90  sc_signal<Ticache_error_t       >  *  in_ICACHE_RSP_ERROR                    ;
     91  sc_signal<Tcontrol_t            >  *  in_EVENT_RESET_VAL                     ;// val if : miss_speculation, exception, synchronization
     92  sc_signal<Tcontrol_t            >  * out_EVENT_RESET_ACK                     ;
    6993
    7094  ALLOC0_SC_SIGNAL( in_ADDRESS_VAL                        ," in_ADDRESS_VAL                        ",Tcontrol_t           );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Parameters_msg_error.cpp

    r109 r113  
    1818namespace ifetch_queue {
    1919
    20 
    2120#undef  FUNCTION
    2221#define FUNCTION "Ifetch_queue::msg_error"
     
    2827
    2928    if (not is_multiple (_nb_instruction_in_queue,_nb_instruction))
    30       test.error("Size of ifetch queue must be a multiple of nb_instruction.\n");
     29      test.error(_("Size of ifetch queue must be a multiple of nb_instruction.\n"));
    3130
    3231    if (_size_queue == 1)
    33       test.warning("To best perfomance, size_queue must be > 1.\n");
     32      test.warning(_("To best perfomance, size_queue must be > 1.\n"));
    3433   
    3534    log_printf(FUNC,Ifetch_queue,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_unit_Glue/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Ifetch_unit_Glue
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Ifetch_unit
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Makefile.defs

    r88 r113  
    77#
    88
     9ENTITY                          = Front_end
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Branch_Target_Buffer_Glue
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Branch_Target_Buffer_Register
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register/include/Branch_Target_Buffer_Register.h

    r82 r113  
    137137   morpheo::behavioural::Tusage_t                usage
    138138   );
     139
    139140  public  :          ~Branch_Target_Buffer_Register             (void);
    140141                                               
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register/src/Branch_Target_Buffer_Register.cpp

    r88 r113  
    88#include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register/include/Branch_Target_Buffer_Register.h"
    99
    10 namespace morpheo                    {
     10namespace morpheo {
    1111namespace behavioural {
    1212namespace core {
     
    1616namespace branch_target_buffer {
    1717namespace branch_target_buffer_register {
    18 
    1918
    2019#undef  FUNCTION
     
    3332   morpheo::behavioural::Tusage_t usage
    3433   ):
    35     _name              (name)
    36     ,_param            (param)
    37     ,_usage            (usage)
     34    _name  (name)
     35   ,_param (param)
     36   ,_usage (usage)
    3837  {
    3938    log_printf(FUNC,Branch_Target_Buffer_Register,FUNCTION,"Begin");
     
    160159          }
    161160
    162 # ifdef SYSTEMCASS_SPECIFIC
    163         // List dependency information
    164         for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
    165           {
    166             (*(out_DECOD_HIT [i])) (*(in_DECOD_VAL         [i]));
    167             (*(out_DECOD_HIT [i])) (*(in_DECOD_ADDRESS_SRC [i]));
    168             if (_param->_have_port_context_id)
    169             (*(out_DECOD_HIT [i])) (*(in_DECOD_CONTEXT_ID  [i]));
    170 
    171             (*(out_DECOD_HIT_INDEX [i])) (*(in_DECOD_VAL         [i]));
    172             (*(out_DECOD_HIT_INDEX [i])) (*(in_DECOD_ADDRESS_SRC [i]));
    173             if (_param->_have_port_context_id)
    174             (*(out_DECOD_HIT_INDEX [i])) (*(in_DECOD_CONTEXT_ID  [i]));
    175           }
    176           }
    177 #endif
     161// # ifdef SYSTEMCASS_SPECIFIC
     162//      // List dependency information
     163//      for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
     164//        {
     165//          (*(out_DECOD_HIT [i])) (*(in_DECOD_VAL         [i]));
     166//          (*(out_DECOD_HIT [i])) (*(in_DECOD_ADDRESS_SRC [i]));
     167//          if (_param->_have_port_context_id)
     168//          (*(out_DECOD_HIT [i])) (*(in_DECOD_CONTEXT_ID  [i]));
     169
     170//          (*(out_DECOD_HIT_INDEX [i])) (*(in_DECOD_VAL         [i]));
     171//          (*(out_DECOD_HIT_INDEX [i])) (*(in_DECOD_ADDRESS_SRC [i]));
     172//          if (_param->_have_port_context_id)
     173//          (*(out_DECOD_HIT_INDEX [i])) (*(in_DECOD_CONTEXT_ID  [i]));
     174//        }
     175// #endif
     176          }
    178177
    179178        if (_param->_have_port_victim)
     
    192191          }
    193192
    194 # ifdef SYSTEMCASS_SPECIFIC
    195         // List dependency information
    196         for (uint32_t i=0; i<_param->_nb_inst_update; i++)
    197           {
    198             (*(out_UPDATE_HIT [i])) (*(in_UPDATE_VAL         [i]));
    199             (*(out_UPDATE_HIT [i])) (*(in_UPDATE_ADDRESS_SRC [i]));
    200             if (_param->_have_port_context_id)
    201             (*(out_UPDATE_HIT [i])) (*(in_UPDATE_CONTEXT_ID  [i]));
    202 
    203             (*(out_UPDATE_HIT_INDEX [i])) (*(in_UPDATE_VAL         [i]));
    204             (*(out_UPDATE_HIT_INDEX [i])) (*(in_UPDATE_ADDRESS_SRC [i]));
    205             if (_param->_have_port_context_id)
    206             (*(out_UPDATE_HIT_INDEX [i])) (*(in_UPDATE_CONTEXT_ID  [i]));
    207           }
    208           }
    209 # endif
     193// # ifdef SYSTEMCASS_SPECIFIC
     194//      // List dependency information
     195//      for (uint32_t i=0; i<_param->_nb_inst_update; i++)
     196//        {
     197//          (*(out_UPDATE_HIT [i])) (*(in_UPDATE_VAL         [i]));
     198//          (*(out_UPDATE_HIT [i])) (*(in_UPDATE_ADDRESS_SRC [i]));
     199//          if (_param->_have_port_context_id)
     200//          (*(out_UPDATE_HIT [i])) (*(in_UPDATE_CONTEXT_ID  [i]));
     201
     202//          (*(out_UPDATE_HIT_INDEX [i])) (*(in_UPDATE_VAL         [i]));
     203//          (*(out_UPDATE_HIT_INDEX [i])) (*(in_UPDATE_ADDRESS_SRC [i]));
     204//          if (_param->_have_port_context_id)
     205//          (*(out_UPDATE_HIT_INDEX [i])) (*(in_UPDATE_CONTEXT_ID  [i]));
     206//        }
     207// # endif
     208          }
    210209#endif
    211210
     
    229228    log_printf(INFO,Branch_Target_Buffer_Register,FUNCTION,"Deallocation");
    230229    deallocation ();
    231 
    232230    log_printf(FUNC,Branch_Target_Buffer_Register,FUNCTION,"End");
    233231  };
     
    239237}; // end namespace multi_front_end
    240238}; // end namespace core
    241 
    242239}; // end namespace behavioural
    243 }; // end namespace morpheo             
     240}; // end namespace morpheo
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Branch_Target_Buffer
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Direction_Glue
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Direction
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Makefile.defs

    r110 r113  
    77#
    88
     9ENTITY                          = Meta_Predictor
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/Makefile.defs

    r110 r113  
    77#
    88
     9ENTITY                          = Meta_Predictor_Glue
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Makefile.defs

    r110 r113  
    77#
    88
     9ENTITY                          = Two_Level_Branch_Predictor
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Prediction_unit
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Prediction_unit_Glue/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Prediction_unit_Glue
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Return_Address_Stack
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Update_Prediction_Table
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/SelfTest/src/test.cpp

    r112 r113  
    12761276//                    TEST(Tcontrol_t         ,out_UPDATE_RAS_FLUSH             [port]->read(),0);
    12771277                      TEST(Tcontrol_t         ,out_UPDATE_RAS_PUSH              [port]->read(),push_ras  (it_ufpt->condition));
    1278                       LABEL("KANE : out_UPDATE_RAS_ADDRESS [port]->read() : %.8x",out_UPDATE_RAS_ADDRESS [port]->read());
    1279                       LABEL("KANE : it_ufpt->ras_address                  : %.8x",it_ufpt->ras_address);
    1280 
    12811278                      TEST(Taddress_t         ,out_UPDATE_RAS_ADDRESS           [port]->read(),it_ufpt->ras_address);
    12821279                      TEST(Tptr_t             ,out_UPDATE_RAS_INDEX             [port]->read(),it_ufpt->ras_index);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_transition.cpp

    r112 r113  
    117117                        << std::dec
    118118                        <<         reg_UPDATE_PREDICTION_TABLE [i][bottom]._good_take         << " - "
    119                         << "["  << sc_simulation_time() << "] " << " "
     119                        << "["  << simulation_cycle() << "] " << " "
    120120                        <<         reg_UPDATE_PREDICTION_TABLE [i][bottom]._miss_prediction   << " "
    121121                        <<         reg_UPDATE_PREDICTION_TABLE [i][bottom]._ifetch_prediction << " "
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/Makefile.defs

    r88 r113  
    77#
    88
     9ENTITY                          = Commit_unit
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp

    r112 r113  
    175175                  entry->address_next            = PORT_READ(in_INSERT_ADDRESS_NEXT          [x][y]);
    176176#ifdef DEBUG
    177                   entry->cycle_rob_in            = sc_simulation_time();
    178                   entry->cycle_commit            = sc_simulation_time();
     177                  entry->cycle_rob_in            = simulation_cycle();
     178                  entry->cycle_commit            = simulation_cycle();
    179179#endif
    180180
     
    352352
    353353#ifdef DEBUG
    354                   entry->cycle_commit            = sc_simulation_time();
     354                  entry->cycle_commit            = simulation_cycle();
    355355#endif
    356356                  }
     
    426426                // log file
    427427                instruction_log_file [num_thread]
    428                   << "[" << sc_simulation_time() << "] "
     428                  << "[" << simulation_cycle() << "] "
    429429                  << "{" << ((retire_ok)?" OK ":"!KO!") << "} "
    430430                  << std::hex
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/Makefile.defs

    r88 r113  
    77#
    88
     9ENTITY                          = Issue_queue
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Makefile.defs

    r88 r113  
    77#
    88
     9ENTITY                          = OOO_Engine
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/Makefile.defs

    r88 r113  
    77#
    88
     9ENTITY                          = OOO_Engine_Glue
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/Makefile.defs

    r88 r113  
    77#
    88
     9ENTITY                          = Reexecute_unit
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Load_Store_pointer_unit
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Makefile.defs

    r88 r113  
    77#
    88
     9ENTITY                          = Rename_unit
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Dependency_checking_unit
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Free_List_unit
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/SelfTest/src/test.cpp

    r109 r113  
    4949  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
    5050  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
     51
     52  sc_signal<Tcontrol_t        > **  in_POP_VAL        ;
     53  sc_signal<Tcontrol_t        > ** out_POP_ACK        ;
     54  sc_signal<Tcontrol_t        > **  in_POP_GPR_VAL    ; // write_rd
     55  sc_signal<Tgeneral_address_t> ** out_POP_GPR_NUM_REG; // num_reg_rd
     56  sc_signal<Tcontrol_t        > **  in_POP_SPR_VAL    ; // write_re
     57  sc_signal<Tspecial_address_t> ** out_POP_SPR_NUM_REG; // num_reg_re
     58  sc_signal<Tcontrol_t        > **  in_PUSH_GPR_VAL    ; // gpr_free (cf stat_list)
     59  sc_signal<Tcontrol_t        > ** out_PUSH_GPR_ACK    ;
     60  sc_signal<Tgeneral_address_t> **  in_PUSH_GPR_NUM_REG;
     61  sc_signal<Tcontrol_t        > **  in_PUSH_SPR_VAL    ; // spr_free (cf stat_list)
     62  sc_signal<Tcontrol_t        > ** out_PUSH_SPR_ACK    ;
     63  sc_signal<Tspecial_address_t> **  in_PUSH_SPR_NUM_REG;
    5164
    5265  ALLOC1_SC_SIGNAL( in_POP_VAL         ," in_POP_VAL         ",Tcontrol_t        ,_param->_nb_pop );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Register_translation_unit
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Register_Address_Translation_unit
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Register_translation_unit_Glue
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Stat_List_unit
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/test.cpp

    r112 r113  
    6060  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
    6161  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
     62
     63  sc_signal<Tcontrol_t        >   **  in_INSERT_VAL               ;//[nb_inst_insert]
     64  sc_signal<Tcontrol_t        >   ** out_INSERT_ACK               ;//[nb_inst_insert]
     65  sc_signal<Tcontrol_t        >   **  in_INSERT_READ_RA           ;//[nb_inst_insert]
     66  sc_signal<Tgeneral_address_t>   **  in_INSERT_NUM_REG_RA_PHY    ;//[nb_inst_insert]
     67  sc_signal<Tcontrol_t        >   **  in_INSERT_READ_RB           ;//[nb_inst_insert]
     68  sc_signal<Tgeneral_address_t>   **  in_INSERT_NUM_REG_RB_PHY    ;//[nb_inst_insert]
     69  sc_signal<Tcontrol_t        >   **  in_INSERT_READ_RC           ;//[nb_inst_insert]
     70  sc_signal<Tspecial_address_t>   **  in_INSERT_NUM_REG_RC_PHY    ;//[nb_inst_insert]
     71  sc_signal<Tcontrol_t        >   **  in_INSERT_WRITE_RD          ;//[nb_inst_insert]
     72  sc_signal<Tgeneral_address_t>   **  in_INSERT_NUM_REG_RD_PHY_NEW;//[nb_inst_insert]
     73  sc_signal<Tcontrol_t        >   **  in_INSERT_WRITE_RE          ;//[nb_inst_insert]
     74  sc_signal<Tspecial_address_t>   **  in_INSERT_NUM_REG_RE_PHY_NEW;//[nb_inst_insert]
     75  sc_signal<Tcontrol_t        >   **  in_RETIRE_VAL               ;//[nb_inst_retire]
     76  sc_signal<Tcontrol_t        >   ** out_RETIRE_ACK               ;//[nb_inst_retire]
     77  sc_signal<Tcontrol_t        >   **  in_RETIRE_RESTORE           ;//[nb_inst_retire]
     78  sc_signal<Tcontrol_t        >   **  in_RETIRE_READ_RA           ;//[nb_inst_retire]
     79  sc_signal<Tgeneral_address_t>   **  in_RETIRE_NUM_REG_RA_PHY    ;//[nb_inst_retire]
     80  sc_signal<Tcontrol_t        >   **  in_RETIRE_READ_RB           ;//[nb_inst_retire]
     81  sc_signal<Tgeneral_address_t>   **  in_RETIRE_NUM_REG_RB_PHY    ;//[nb_inst_retire]
     82  sc_signal<Tcontrol_t        >   **  in_RETIRE_READ_RC           ;//[nb_inst_retire]
     83  sc_signal<Tspecial_address_t>   **  in_RETIRE_NUM_REG_RC_PHY    ;//[nb_inst_retire]
     84  sc_signal<Tcontrol_t        >   **  in_RETIRE_WRITE_RD          ;//[nb_inst_retire]
     85  sc_signal<Tcontrol_t        >   **  in_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire]
     86  sc_signal<Tgeneral_address_t>   **  in_RETIRE_NUM_REG_RD_PHY_OLD;//[nb_inst_retire]
     87  sc_signal<Tgeneral_address_t>   **  in_RETIRE_NUM_REG_RD_PHY_NEW;//[nb_inst_retire]
     88  sc_signal<Tcontrol_t        >   **  in_RETIRE_WRITE_RE          ;//[nb_inst_retire]
     89  sc_signal<Tcontrol_t        >   **  in_RETIRE_RESTORE_RE_PHY_OLD;//[nb_inst_retire]
     90  sc_signal<Tspecial_address_t>   **  in_RETIRE_NUM_REG_RE_PHY_OLD;//[nb_inst_retire]
     91  sc_signal<Tspecial_address_t>   **  in_RETIRE_NUM_REG_RE_PHY_NEW;//[nb_inst_retire]
     92  sc_signal<Tcontrol_t        >   ** out_PUSH_GPR_VAL             ;//[nb_reg_free]
     93  sc_signal<Tcontrol_t        >   **  in_PUSH_GPR_ACK             ;//[nb_reg_free]
     94  sc_signal<Tgeneral_address_t>   ** out_PUSH_GPR_NUM_REG         ;//[nb_reg_free]
     95  sc_signal<Tcontrol_t        >   ** out_PUSH_SPR_VAL             ;//[nb_reg_free]
     96  sc_signal<Tcontrol_t        >   **  in_PUSH_SPR_ACK             ;//[nb_reg_free]
     97  sc_signal<Tspecial_address_t>   ** out_PUSH_SPR_NUM_REG         ;//[nb_reg_free]
    6298
    6399  ALLOC1_SC_SIGNAL( in_INSERT_VAL               ," in_INSERT_VAL               ",Tcontrol_t        ,_param->_nb_inst_insert);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Rename_select
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/Makefile.defs

    r88 r113  
    77#
    88
     9ENTITY                          = Rename_unit_Glue
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/Makefile.defs

    r88 r113  
    77#
    88
     9ENTITY                          = Special_Register_unit
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../../..
Note: See TracChangeset for help on using the changeset viewer.