Ignore:
Timestamp:
Apr 14, 2009, 8:39:12 PM (16 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
Files:
53 added
1 deleted
235 edited
12 moved

Legend:

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

    r88 r113  
    77#
    88
     9ENTITY                          = Configuration
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../..
  • 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           = ../../../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Custom/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Custom
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/Makefile.defs

    r112 r113  
    77#
    88
     9ENTITY                          = Comparator
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/SelfTest/include/test.h

    r112 r113  
    1111#endif
    1212
    13 #define NB_ITERATION  1
     13#define NB_ITERATION  1024
    1414#define CYCLE_MAX     (1024*NB_ITERATION)
    1515
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/SelfTest/src/main.cpp

    r112 r113  
    1919  err (_(" * type      (Tcomparator_scheme_t)\n"));
    2020
    21 
    2221  exit (1);
    2322}
     
    3433  uint32_t x = 1;
    3534
     35  string name = argv[x++];
    3636  uint32_t             _size_data;
    3737  bool                 _is_signed;
     
    4141  SELFTEST0(_is_signed,bool                ,argv,x);
    4242  SELFTEST0(_type     ,Tcomparator_scheme_t,argv,x);
    43 
    44   string name = argv[x++];
    4543
    4644  int _return = EXIT_SUCCESS;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/SelfTest/src/test.cpp

    r112 r113  
    99#include "Behavioural/Generic/Comparator/SelfTest/include/test.h"
    1010#include "Behavioural/include/Allocation.h"
     11#include "Common/include/BitManipulation.h"
    1112
    1213void test (string name,
     
    5051  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
    5152  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
     53
     54  sc_signal<Tdata_t   > *  in_COMPARE_DATA_0;
     55  sc_signal<Tdata_t   > *  in_COMPARE_DATA_1;
     56  sc_signal<Tcontrol_t> * out_COMPARE_TEST  ;
     57
     58  ALLOC0_SC_SIGNAL( in_COMPARE_DATA_0," in_COMPARE_DATA_0",Tdata_t   );
     59  ALLOC0_SC_SIGNAL( in_COMPARE_DATA_1," in_COMPARE_DATA_1",Tdata_t   );
     60  ALLOC0_SC_SIGNAL(out_COMPARE_TEST  ,"out_COMPARE_TEST  ",Tcontrol_t);
    5261 
    5362  /********************************************************
     
    6069  (*(_Comparator->in_NRESET))       (*(in_NRESET));
    6170
    62 
     71  INSTANCE0_SC_SIGNAL(_Comparator, in_COMPARE_DATA_0);
     72  INSTANCE0_SC_SIGNAL(_Comparator, in_COMPARE_DATA_1);
     73  INSTANCE0_SC_SIGNAL(_Comparator,out_COMPARE_TEST  );
     74 
    6375  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
    6476   
     
    90102      LABEL("Iteration %d",iteration);
    91103
     104      uint64_t data0 = range<uint64_t>(rand(),_param->_size_data);
     105      uint64_t data1 = range<uint64_t>(rand(),_param->_size_data);
     106
     107      in_COMPARE_DATA_0->write(static_cast<Tdata_t>(data0));
     108      in_COMPARE_DATA_1->write(static_cast<Tdata_t>(data1));
     109     
     110      SC_START(0);
     111     
     112      Tcontrol_t test = false;
     113      switch (_param->_size_data)
     114        {
     115        case 8 :
     116          {
     117            if (_param->_is_signed)
     118              switch (_param->_type)
     119                {
     120                case COMPARATOR_EQUAL            : test = static_cast< int8_t>(data0) == static_cast< int8_t>(data1); break;
     121                case COMPARATOR_NOT_EQUAL        : test = static_cast< int8_t>(data0) != static_cast< int8_t>(data1); break;
     122                case COMPARATOR_GREATER          : test = static_cast< int8_t>(data0) >  static_cast< int8_t>(data1); break;
     123                case COMPARATOR_GREATER_OR_EQUAL : test = static_cast< int8_t>(data0) >= static_cast< int8_t>(data1); break;
     124                case COMPARATOR_LESS             : test = static_cast< int8_t>(data0) <  static_cast< int8_t>(data1); break;
     125                case COMPARATOR_LESS_OR_EQUAL    : test = static_cast< int8_t>(data0) <= static_cast< int8_t>(data1); break;
     126                }
     127            else
     128              switch (_param->_type)
     129                {
     130                case COMPARATOR_EQUAL            : test = static_cast<uint8_t>(data0) == static_cast<uint8_t>(data1); break;
     131                case COMPARATOR_NOT_EQUAL        : test = static_cast<uint8_t>(data0) != static_cast<uint8_t>(data1); break;
     132                case COMPARATOR_GREATER          : test = static_cast<uint8_t>(data0) >  static_cast<uint8_t>(data1); break;
     133                case COMPARATOR_GREATER_OR_EQUAL : test = static_cast<uint8_t>(data0) >= static_cast<uint8_t>(data1); break;
     134                case COMPARATOR_LESS             : test = static_cast<uint8_t>(data0) <  static_cast<uint8_t>(data1); break;
     135                case COMPARATOR_LESS_OR_EQUAL    : test = static_cast<uint8_t>(data0) <= static_cast<uint8_t>(data1); break;
     136                }
     137            break;
     138          }
     139        case 16 :
     140          {
     141            if (_param->_is_signed)
     142              switch (_param->_type)
     143                {
     144                case COMPARATOR_EQUAL            : test = static_cast< int16_t>(data0) == static_cast< int16_t>(data1); break;
     145                case COMPARATOR_NOT_EQUAL        : test = static_cast< int16_t>(data0) != static_cast< int16_t>(data1); break;
     146                case COMPARATOR_GREATER          : test = static_cast< int16_t>(data0) >  static_cast< int16_t>(data1); break;
     147                case COMPARATOR_GREATER_OR_EQUAL : test = static_cast< int16_t>(data0) >= static_cast< int16_t>(data1); break;
     148                case COMPARATOR_LESS             : test = static_cast< int16_t>(data0) <  static_cast< int16_t>(data1); break;
     149                case COMPARATOR_LESS_OR_EQUAL    : test = static_cast< int16_t>(data0) <= static_cast< int16_t>(data1); break;
     150                }
     151            else
     152              switch (_param->_type)
     153                {
     154                case COMPARATOR_EQUAL            : test = static_cast<uint16_t>(data0) == static_cast<uint16_t>(data1); break;
     155                case COMPARATOR_NOT_EQUAL        : test = static_cast<uint16_t>(data0) != static_cast<uint16_t>(data1); break;
     156                case COMPARATOR_GREATER          : test = static_cast<uint16_t>(data0) >  static_cast<uint16_t>(data1); break;
     157                case COMPARATOR_GREATER_OR_EQUAL : test = static_cast<uint16_t>(data0) >= static_cast<uint16_t>(data1); break;
     158                case COMPARATOR_LESS             : test = static_cast<uint16_t>(data0) <  static_cast<uint16_t>(data1); break;
     159                case COMPARATOR_LESS_OR_EQUAL    : test = static_cast<uint16_t>(data0) <= static_cast<uint16_t>(data1); break;
     160                }
     161            break;
     162          }
     163        case 32 :
     164          {
     165            if (_param->_is_signed)
     166              switch (_param->_type)
     167                {
     168                case COMPARATOR_EQUAL            : test = static_cast< int32_t>(data0) == static_cast< int32_t>(data1); break;
     169                case COMPARATOR_NOT_EQUAL        : test = static_cast< int32_t>(data0) != static_cast< int32_t>(data1); break;
     170                case COMPARATOR_GREATER          : test = static_cast< int32_t>(data0) >  static_cast< int32_t>(data1); break;
     171                case COMPARATOR_GREATER_OR_EQUAL : test = static_cast< int32_t>(data0) >= static_cast< int32_t>(data1); break;
     172                case COMPARATOR_LESS             : test = static_cast< int32_t>(data0) <  static_cast< int32_t>(data1); break;
     173                case COMPARATOR_LESS_OR_EQUAL    : test = static_cast< int32_t>(data0) <= static_cast< int32_t>(data1); break;
     174                }
     175            else
     176              switch (_param->_type)
     177                {
     178                case COMPARATOR_EQUAL            : test = static_cast<uint32_t>(data0) == static_cast<uint32_t>(data1); break;
     179                case COMPARATOR_NOT_EQUAL        : test = static_cast<uint32_t>(data0) != static_cast<uint32_t>(data1); break;
     180                case COMPARATOR_GREATER          : test = static_cast<uint32_t>(data0) >  static_cast<uint32_t>(data1); break;
     181                case COMPARATOR_GREATER_OR_EQUAL : test = static_cast<uint32_t>(data0) >= static_cast<uint32_t>(data1); break;
     182                case COMPARATOR_LESS             : test = static_cast<uint32_t>(data0) <  static_cast<uint32_t>(data1); break;
     183                case COMPARATOR_LESS_OR_EQUAL    : test = static_cast<uint32_t>(data0) <= static_cast<uint32_t>(data1); break;
     184                }
     185            break;
     186          }
     187        case 64 :
     188          {
     189            if (_param->_is_signed)
     190              switch (_param->_type)
     191                {
     192                case COMPARATOR_EQUAL            : test = static_cast< int64_t>(data0) == static_cast< int64_t>(data1); break;
     193                case COMPARATOR_NOT_EQUAL        : test = static_cast< int64_t>(data0) != static_cast< int64_t>(data1); break;
     194                case COMPARATOR_GREATER          : test = static_cast< int64_t>(data0) >  static_cast< int64_t>(data1); break;
     195                case COMPARATOR_GREATER_OR_EQUAL : test = static_cast< int64_t>(data0) >= static_cast< int64_t>(data1); break;
     196                case COMPARATOR_LESS             : test = static_cast< int64_t>(data0) <  static_cast< int64_t>(data1); break;
     197                case COMPARATOR_LESS_OR_EQUAL    : test = static_cast< int64_t>(data0) <= static_cast< int64_t>(data1); break;
     198                }
     199            else
     200              switch (_param->_type)
     201                {
     202                case COMPARATOR_EQUAL            : test = static_cast<uint64_t>(data0) == static_cast<uint64_t>(data1); break;
     203                case COMPARATOR_NOT_EQUAL        : test = static_cast<uint64_t>(data0) != static_cast<uint64_t>(data1); break;
     204                case COMPARATOR_GREATER          : test = static_cast<uint64_t>(data0) >  static_cast<uint64_t>(data1); break;
     205                case COMPARATOR_GREATER_OR_EQUAL : test = static_cast<uint64_t>(data0) >= static_cast<uint64_t>(data1); break;
     206                case COMPARATOR_LESS             : test = static_cast<uint64_t>(data0) <  static_cast<uint64_t>(data1); break;
     207                case COMPARATOR_LESS_OR_EQUAL    : test = static_cast<uint64_t>(data0) <= static_cast<uint64_t>(data1); break;
     208                }
     209            break;
     210          }
     211        default :
     212          {
     213            TEST_KO("Invalid size for the test.");
     214          }
     215        }
     216
     217      TEST(Tcontrol_t,out_COMPARE_TEST->read(),test);
     218
    92219      SC_START(1);
    93220    }
     
    104231  delete in_CLOCK;
    105232  delete in_NRESET;
     233  DELETE0_SC_SIGNAL( in_COMPARE_DATA_0);
     234  DELETE0_SC_SIGNAL( in_COMPARE_DATA_1);
     235  DELETE0_SC_SIGNAL(out_COMPARE_TEST  );
    106236    }
    107237#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/include/Comparator.h

    r112 r113  
    6464  public    : SC_IN (Tdata_t   )            *  in_COMPARE_DATA_0;
    6565  public    : SC_IN (Tdata_t   )            *  in_COMPARE_DATA_1;
    66   public    : SC_OUT(Tcontrol_t)            *  in_COMPARE_TEST  ;
    67    
     66  public    : SC_OUT(Tcontrol_t)            * out_COMPARE_TEST  ;
    6867
    6968    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     
    105104#ifdef SYSTEMC                                 
    106105  public  : void        transition                (void);
    107 //public  : void        genMoore                  (void);
     106  public  : void        genMealy                  (void);
    108107#endif                                         
    109108
     
    112111  private : void        vhdl_declaration          (Vhdl * & vhdl);
    113112  private : void        vhdl_body                 (Vhdl * & vhdl);
     113
     114  private : void        vhdl_xilinx_declaration   (Vhdl * & vhdl);
     115  private : void        vhdl_xilinx_body          (Vhdl * & vhdl);
    114116#endif                                         
    115117
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/include/Parameters.h

    r112 r113  
    2626  public : Tcomparator_scheme_t _type;
    2727
     28  public : int64_t              _extends;
     29  public : int64_t              _mask_sign;
     30
    2831    //-----[ methods ]-----------------------------------------------------------
    2932  public : Parameters  (uint32_t             size_data,
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator.cpp

    r112 r113  
    7777# endif   
    7878
    79 //      log_printf(INFO,Comparator,FUNCTION,_("<%s> : Method - genMoore"),_name.c_str());
     79        log_printf(INFO,Comparator,FUNCTION,_("<%s> : Method - genMealy"),_name.c_str());
    8080
    81 //      SC_METHOD (genMoore);
    82 //      dont_initialize ();
    83 //      sensitive << (*(in_CLOCK)).neg(); // need internal register
     81        SC_METHOD (genMealy);
     82        dont_initialize ();
     83//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
     84        sensitive << (*(in_COMPARE_DATA_0))
     85                  << (*(in_COMPARE_DATA_1));
    8486       
    85 // # ifdef SYSTEMCASS_SPECIFIC
    86 //      // List dependency information
    87 // # endif   
     87# ifdef SYSTEMCASS_SPECIFIC
     88        // List dependency information
     89# endif   
    8890       
    8991#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_allocation.cpp

    r112 r113  
    5353      in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
    5454    }
     55
     56    // ~~~~~[ Interface : "compare" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     57    {
     58      ALLOC0_INTERFACE_BEGIN("compare",IN,SOUTH,_("Compare interface"));
     59
     60      ALLOC0_SIGNAL_IN ( in_COMPARE_DATA_0,"DATA_0",Tdata_t   ,_param->_size_data);
     61      ALLOC0_SIGNAL_IN ( in_COMPARE_DATA_1,"DATA_1",Tdata_t   ,_param->_size_data);
     62      ALLOC0_SIGNAL_OUT(out_COMPARE_TEST  ,"TEST"  ,Tcontrol_t,1);
     63
     64      ALLOC0_INTERFACE_END();
     65    }
     66
    5567    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    5668
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_deallocation.cpp

    r112 r113  
    2525        delete    in_CLOCK ;
    2626        delete    in_NRESET;
     27
     28        DELETE0_SIGNAL( in_COMPARE_DATA_0,_param->_size_data);
     29        DELETE0_SIGNAL( in_COMPARE_DATA_1,_param->_size_data);
     30        DELETE0_SIGNAL(out_COMPARE_TEST  ,1);
    2731      }
    2832    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_vhdl.cpp

    r112 r113  
    2727    _component->vhdl_instance(vhdl);
    2828
     29    // default architecture
    2930    vhdl_declaration (vhdl);
    3031    vhdl_body        (vhdl);
     32
     33    // Xilinx architecture
     34    vhdl->set_architecture("xilinx");
     35    vhdl_xilinx_declaration (vhdl);
     36    vhdl_xilinx_body        (vhdl);
    3137
    3238    vhdl->generate_file();
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Parameters.cpp

    r112 r113  
    77
    88#include "Behavioural/Generic/Comparator/include/Parameters.h"
     9#include "Common/include/BitManipulation.h"
    910
    1011namespace morpheo {
     
    1213namespace generic {
    1314namespace comparator {
    14 
    1515
    1616#undef  FUNCTION
     
    2828
    2929    test();
     30
     31    _extends   = gen_mask_not<int64_t>(_size_data);
     32    _mask_sign = (1<<(_size_data-1));
    3033
    3134    if (is_toplevel)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Parameters_msg_error.cpp

    r112 r113  
    2424    Parameters_test test ("Comparator");
    2525
     26    if (_size_data > 64)
     27      test.error(_("Max size is 64 bits.\n"));
     28
    2629    log_end(Comparator,FUNCTION);
    2730
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/Makefile.defs

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

    r112 r113  
    22 * $Id$
    33 *
    4  * [ Description ]
     4 * [ Description ]
    55 *
    6  * Test "RegisterFile"
     6 * Test "Counter"
    77 */
    88
     
    1111#endif
    1212
    13 #include <string>
    14 #include <iostream>
     13#define NB_ITERATION  1024
     14#define CYCLE_MAX     (1024*NB_ITERATION)
    1515
     16#include "Common/include/Test.h"
    1617#include "Common/include/Time.h"
    1718#include "Behavioural/Generic/Counter/include/Counter.h"
     
    2122using namespace morpheo::behavioural;
    2223using namespace morpheo::behavioural::generic;
    23 
    2424using namespace morpheo::behavioural::generic::counter;
    2525
    26 void test   (string name,
    27              morpheo::behavioural::generic::counter::Parameters param);
     26SC_MODULE(top)
     27{
     28#ifdef SYSTEMC
     29 private: sc_clock               *  in_CLOCK ;
     30 private: sc_signal<Tcontrol_t>  *  in_NRESET;
     31 private: sc_signal<Tdata_t>    **  in_COUNTER_DATA  ;// [param->_nb_port]
     32 private: sc_signal<Tcontrol_t> **  in_COUNTER_ADDSUB;// [param->_nb_port]
     33 private: sc_signal<Tdata_t>    ** out_COUNTER_DATA  ;// [param->_nb_port]
     34#endif
     35
     36 private: std::string                                          name ;
     37 private: morpheo::behavioural::generic::counter::Parameters * param;
     38#ifdef STATISTICS
     39 private: morpheo::behavioural::Parameters_Statistics        * param_stat;
     40#endif
     41 private: Counter                                            * component;
     42
     43 private: void usage        (string exec);
     44 private: void allocation   (void);
     45 private: void deallocation (void);
     46 public : void test         (void);
     47
     48#ifdef MTI_SYSTEMC
     49  SC_CTOR(top::top);
     50#else
     51 public : top (sc_module_name module_name,int argc, char * argv[]);
     52#endif
     53 public : ~top(void);
     54};
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/main.cpp

    r81 r113  
    22 * $Id$
    33 *
    4  * [ Description ]
     4 * [ Description ]
    55 *
    66 */
    77
    8 #include "Behavioural/Generic/Counter/SelfTest/include/test.h"
     8#include "Behavioural/Generic/Counter/SelfTest/include/top.h"
    99
    10 #define NB_PARAMS 2
     10#ifndef MTI_SYSTEMC
     11# ifndef SYSTEMC
     12int main    (int argc, char * argv[])
     13# else
     14int sc_main (int argc, char * argv[])
     15# endif
     16{
     17  int _return = EXIT_SUCCESS;
    1118
    12 void usage (string exec)
    13 {
    14   cerr << "<Usage> " << exec << " name_instance list_params" << endl
    15        << "list_params is :" << endl
    16        << " - size_data     (unsigned int)" << endl
    17        << " - nb_port       (unsigned int)" << endl;
     19  try
     20    {
     21      top * my_top = new top ("my_top",argc,argv);
    1822
    19   exit (1);
     23      my_top->test();
     24
     25      delete my_top;
     26    }
     27  catch (morpheo::ErrorMorpheo & error)
     28    {
     29      msg (_("%s\n"),error.what ());
     30      _return = EXIT_FAILURE;
     31    }
     32 
     33  try
     34    {
     35      if (_return == EXIT_SUCCESS)
     36        TEST_OK("Counter : no error");
     37      else
     38        TEST_KO("Counter : a lot of error");
     39    }
     40  catch (morpheo::ErrorMorpheo & error)
     41    {
     42//       msg (_("<%s> :\n%s"),name.c_str(), error.what ());
     43      _return = EXIT_FAILURE;
     44    }
     45
     46  return _return;
    2047}
    21 
    22 #ifndef SYSTEMC
    23 int main    (int argc, char * argv[])
    24 #else
    25 int sc_main (int argc, char * argv[])
    2648#endif
    27 {
    28   if (argc != 2+NB_PARAMS)
    29     usage (argv[0]);
    30 
    31   cout << "<test0> : Classic usage" << endl;
    32   cout << "<test0> : Typical parameters" << endl;
    33   const string   name      = argv[1];
    34   const uint32_t size_data = atoi(argv[2]);
    35   const uint32_t nb_port   = atoi(argv[3]);
    36 
    37   morpheo::behavioural::generic::counter::Parameters param (size_data,
    38                                                             nb_port  );
    39 
    40   test (name,param);
    41 
    42   return (EXIT_SUCCESS);
    43 }
    44 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/top_test.cpp

    r112 r113  
    77 */
    88
    9 #define NB_ITERATION 1024
    10 #define CYCLE_MAX    1024*NB_ITERATION
     9#include "Behavioural/Generic/Counter/SelfTest/include/top.h"
    1110
    12 #include "Behavioural/Generic/Counter/SelfTest/include/test.h"
    13 #include "Common/include/Test.h"
    14 
    15 void test (string name,
    16            morpheo::behavioural::generic::counter::Parameters param)
     11void top::test (void)
    1712{
    18   cout << "<" << name << "> : Simulation SystemC" << endl;
    19 
    20   try
    21     {
    22       cout << param.print(1);
    23       param.test();
    24     }
    25   catch (morpheo::ErrorMorpheo & error)
    26     {
    27       cout << "<" << name << "> : " <<  error.what ();
    28       return;
    29     }
    30   catch (...)
    31     {
    32       cerr << "<" << name << "> : This test must generate a error" << endl;
    33       exit (EXIT_FAILURE);
    34     }
    35 #ifdef STATISTICS
    36   morpheo::behavioural::Parameters_Statistics * param_stat = new morpheo::behavioural::Parameters_Statistics (5,50);
    37 #endif
    38 
    39   Tusage_t _usage = USE_ALL;
    40 
    41 //   _usage = usage_unset(_usage,USE_SYSTEMC              );
    42 //   _usage = usage_unset(_usage,USE_VHDL                 );
    43 //   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
    44 //   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
    45 //   _usage = usage_unset(_usage,USE_POSITION             );
    46 //   _usage = usage_unset(_usage,USE_STATISTICS           );
    47 //   _usage = usage_unset(_usage,USE_INFORMATION          );
    48 
    49   Counter * _Counter = new Counter (name.c_str(),
    50 #ifdef STATISTICS
    51                                     param_stat,
    52 #endif
    53                                     param,
    54                                     _usage);
    55  
    5613#ifdef SYSTEMC
    57   /*********************************************************************
    58    * Déclarations des signaux
    59    *********************************************************************/
    60   sc_clock                                 CLOCK ("clock", 1.0, 0.5);
    61   sc_signal<Tcontrol_t>                    RESET;
    62   sc_signal<Tdata_t>                       DATA_IN  [param._nb_port];
    63   sc_signal<Tcontrol_t>                    ADDSUB   [param._nb_port];
    64   sc_signal<Tdata_t>                       DATA_OUT [param._nb_port];
    65 
    66   /********************************************************
    67    * Instanciation
    68    ********************************************************/
    69  
    70   cout << "<" << name << "> Instanciation of _Counter" << endl;
    71  
    72   (*(_Counter->in_CLOCK))        (CLOCK);
    73   (*(_Counter->in_NRESET))       (RESET);
    74 
    75   for (uint32_t i=0; i<param._nb_port; i++)
    76     {
    77       (*(_Counter-> in_COUNTER_DATA  [i]))        (DATA_IN  [i]);
    78       (*(_Counter-> in_COUNTER_ADDSUB[i]))        (ADDSUB   [i]);
    79       (*(_Counter->out_COUNTER_DATA  [i]))        (DATA_OUT [i]);
    80     }
    81 
    8214  Time * _time = new Time();
    8315
     
    9224  //srand(TIME(NULL));
    9325
    94   Tdata_t    data_in  [param._nb_port];
    95   Tdata_t    data_out [param._nb_port];
    96   Tcontrol_t addsub   [param._nb_port];
     26  Tdata_t    data_in  [param->_nb_port];
     27  Tdata_t    data_out [param->_nb_port];
     28  Tcontrol_t addsub   [param->_nb_port];
    9729
    98   sc_start(0);
     30  SC_CYCLE(0);
    9931
    100   RESET.write(1);
     32  in_NRESET->write(1);
    10133
    102   cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Initialisation" << endl;
     34  LABEL("Initialisation");
    10335
    104   cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Loop of Test" << endl;
     36  LABEL("Loop of Test");
    10537
    10638  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
    10739    {
    108       cout << "{" << static_cast<uint32_t>(sc_simulation_time()) << "} Itération " << iteration << endl;
    109       for (uint32_t i=0; i<param._nb_port; i++)
     40      LABEL("Iteration %d",iteration);
     41
     42      for (uint32_t i=0; i<param->_nb_port; i++)
    11043        {
    111           Tdata_t data = rand()%param._data_max;
     44          Tdata_t data = rand()%param->_data_max;
    11245          data_in  [i] = data;
    11346          addsub   [i] = (rand()%2)==1;
    11447         
    115           DATA_IN  [i].write(data      );
    116           ADDSUB   [i].write(addsub [i]);
     48          LABEL("in_COUNTER_DATA   [%d] = %d",i,data      );
     49          LABEL("in_COUNTER_ADDSUB [%d] = %d"  ,i,addsub [i]);
    11750
    118           data_out [i] = (addsub[i]==1)?((data<param._data_max)?data+1:data):((data>0)?data-1:data);
     51          in_COUNTER_DATA   [i]->write(data      );
     52          in_COUNTER_ADDSUB [i]->write(addsub [i]);
     53
     54          data_out [i] = (addsub[i]==1)?((data<param->_data_max)?data+1:data):((data>0)?data-1:data);
    11955        }
    12056
    121       sc_start(0);
    122      
    123       for (uint32_t i=0; i<param._nb_port; i++)
     57      SC_CYCLE(0);
     58
     59      for (uint32_t i=0; i<param->_nb_port; i++)
    12460        {
    125           cout << hex
    126                << "    [" << i << "] "
    127                << data_in [i];
     61          string op = (addsub[i] == 1)?"++":"--";
     62          LABEL("0x%d %s = 0x%d",i,op.c_str(),out_COUNTER_DATA [i]->read());
    12863
    129           if (addsub[i] == 1)
    130             cout << " ++";
    131           else
    132             cout << " --";
    133 
    134           cout << " = "
    135                << DATA_OUT [i].read();
    136 
    137           TEST(Tdata_t,DATA_OUT [i].read(),data_out [i]);
    138            
    139           cout << std::dec << endl;
     64          TEST(Tdata_t,out_COUNTER_DATA [i]->read(),data_out [i]);
    14065        }
    14166     
    142       sc_start(1);
     67      SC_CYCLE(1);
    14368    }
    14469
    145   sc_start(1);
     70  SC_CYCLE(1);
    14671
    14772  /********************************************************
     
    14974   ********************************************************/
    15075
     76  sc_stop();
     77
    15178  delete _time;
    15279
    15380  cout << "<" << name << "> ............ Stop Simulation" << endl;
    154 
    15581#endif
    156 
    157   delete _Counter;
    158 #ifdef STATISTICS
    159   delete param_stat;
    160 #endif
    161 
    16282}
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Counter.h

    r88 r113  
    4040    // -----[ fields ]----------------------------------------------------
    4141    // Parameters
    42   protected : const std::string _name;
    43   protected : const Parameters  _param;
    44   private   : const Tusage_t    _usage;
     42  protected : const std::string   _name;
     43  protected : const Parameters  * _param;
     44  private   : const Tusage_t      _usage;
    4545
    4646#ifdef STATISTICS
     
    7979                                           morpheo::behavioural::Parameters_Statistics * param_statistics,
    8080#endif
    81                                            Parameters param,
    82                                            Tusage_t   usage);
     81                                           Parameters * param,
     82                                           Tusage_t     usage);
    8383                                               
    84   public  :          Counter              (Parameters param );
     84// public  :          Counter              (Parameters param );
    8585  public  :          ~Counter             (void);
    8686                                               
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter.cpp

    r88 r113  
    1313namespace counter {
    1414
    15 
     15#undef FUNCTION
     16#define FUNCTION "Counter::Counter"
    1617  Counter::Counter
    1718  (
     
    2425  morpheo::behavioural::Parameters_Statistics * param_statistics,
    2526#endif
    26   morpheo::behavioural::generic::counter::Parameters param,
     27  morpheo::behavioural::generic::counter::Parameters * param,
    2728   Tusage_t usage):
    2829    _name  (name),
     
    3031    _usage (usage)
    3132  {
    32     log_printf(FUNC,Counter,"Counter","Begin");
     33    log_begin(Counter,FUNCTION);
    3334
    34 #if DEBUG_Counter == true
    35     log_printf(INFO,Counter,FUNCTION,_("<%s> Parameters"),_name.c_str());
     35// #if DEBUG_Counter == true
     36//     log_printf(INFO,Counter,FUNCTION,_("<%s> Parameters"),_name.c_str());
    3637
    37     std::cout << param << std::endl;
    38 #endif   
     38//     std::cout << *param << std::endl;
     39// #endif   
    3940
    4041    log_printf(INFO,Core,FUNCTION,_("<%s> Allocation"),_name.c_str());
     
    7677        SC_METHOD (genMealy);
    7778        dont_initialize ();
    78         for (uint32_t i=0; i<_param._nb_port; i++)
     79        for (uint32_t i=0; i<_param->_nb_port; i++)
    7980          sensitive << *(in_COUNTER_DATA   [i])
    8081                    << *(in_COUNTER_ADDSUB [i]);
     
    8283#ifdef SYSTEMCASS_SPECIFIC
    8384        // List dependency information
    84         for (uint32_t i=0; i<_param._nb_port; i++)
     85        for (uint32_t i=0; i<_param->_nb_port; i++)
    8586          {
    8687            (*(out_COUNTER_DATA [i])) (*(in_COUNTER_DATA   [i]));
     
    9192
    9293#endif
    93     log_printf(FUNC,Counter,"Counter","End");
     94    log_end(Counter,FUNCTION);
    9495  };
    9596 
     97#undef FUNCTION
     98#define FUNCTION "Counter::~Counter"
    9699  Counter::~Counter (void)
    97100  {
    98     log_printf(FUNC,Counter,"~Counter","Begin");
     101    log_begin(Counter,FUNCTION);
    99102
    100103#ifdef STATISTICS
     
    108111    deallocation ();
    109112
    110     log_printf(FUNC,Counter,"~Counter","End");
     113    log_end(Counter,FUNCTION);
    111114  };
    112115
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_allocation.cpp

    r112 r113  
    2121
    2222    Entity * entity = _component->set_entity (_name     
    23                                              ,"Counter" 
     23                                             ,_param->_type
    2424#ifdef POSITION
    2525                                             ,COMBINATORY
     
    4545    // ~~~~~[ Interface : "counter" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    4646    {
    47       ALLOC1_INTERFACE_BEGIN("counter", IN, SOUTH, _("Counter interface"), _param._nb_port);
     47      ALLOC1_INTERFACE_BEGIN("counter", IN, SOUTH, _("Counter interface"), _param->_nb_port);
    4848           
    49       ALLOC1_SIGNAL_IN ( in_COUNTER_DATA  ,"data"  ,Tdata_t   ,_param._size_data);
     49      ALLOC1_SIGNAL_IN ( in_COUNTER_DATA  ,"data"  ,Tdata_t   ,_param->_size_data);
    5050      ALLOC1_SIGNAL_IN ( in_COUNTER_ADDSUB,"addsub",Tcontrol_t,1                );
    51       ALLOC1_SIGNAL_OUT(out_COUNTER_DATA  ,"data"  ,Tdata_t   ,_param._size_data);
     51      ALLOC1_SIGNAL_OUT(out_COUNTER_DATA  ,"data"  ,Tdata_t   ,_param->_size_data);
    5252
    53       ALLOC1_INTERFACE_END(_param._nb_port);
     53      ALLOC1_INTERFACE_END(_param->_nb_port);
    5454    }
    5555   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_deallocation.cpp

    r112 r113  
    2424        delete     in_NRESET;
    2525       
    26         DELETE1_SIGNAL( in_COUNTER_DATA  , _param._nb_port,_param._size_data);
    27         DELETE1_SIGNAL( in_COUNTER_ADDSUB, _param._nb_port,1                );
    28         DELETE1_SIGNAL(out_COUNTER_DATA  , _param._nb_port,_param._size_data);
     26        DELETE1_SIGNAL( in_COUNTER_DATA  , _param->_nb_port,_param->_size_data);
     27        DELETE1_SIGNAL( in_COUNTER_ADDSUB, _param->_nb_port,1                );
     28        DELETE1_SIGNAL(out_COUNTER_DATA  , _param->_nb_port,_param->_size_data);
    2929      }
    3030
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_genMealy.cpp

    r81 r113  
    1818    log_printf(FUNC,Counter,"genMealy","Begin");
    1919
    20     for (uint32_t i=0; i<_param._nb_port; i++)
     20    for (uint32_t i=0; i<_param->_nb_port; i++)
    2121      {
    2222        Tcontrol_t addsub  = PORT_READ(in_COUNTER_ADDSUB [i]);
     
    2828        if (addsub == 1)
    2929          {
    30             if (data_out < _param._data_max)
     30            if (data_out < _param->_data_max)
    3131              data_out++;
    3232          }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_statistics_declaration.cpp

    r81 r113  
    2121
    2222    _stat = new Stat (static_cast<std::string>(_name),
    23                       "Counter",
     23                      _param->_type,
    2424                      param_statistics);
    2525   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_body.cpp

    r81 r113  
    1919    vhdl->set_body ("");
    2020   
    21     for (uint32_t i=0; i<_param._nb_port; i++)
     21    for (uint32_t i=0; i<_param->_nb_port; i++)
    2222      {
    2323        std::string counter_inc, counter_dec;
    2424
    25         if (_param._size_data > 1)
     25        if (_param->_size_data > 1)
    2626          {
    2727            counter_inc = "in_COUNTER_"+toString(i)+"_DATA+1";
     
    3535
    3636        vhdl->set_body ("out_COUNTER_"+toString(i)+"_DATA <=");
    37         if (_param._size_data > 1)
     37        if (_param->_size_data > 1)
    3838          {
    3939            vhdl->set_body ("\tin_COUNTER_"+toString(i)+"_DATA+1 when in_COUNTER_"+toString(i)+"_ADDSUB = '1' and in_COUNTER_"+toString(i)+"_DATA < cst_max else");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_vhdl_declaration.cpp

    r81 r113  
    1919    log_printf(FUNC,Counter,"vhdl_declaration","Begin");
    2020   
    21     if (_param._size_data > 1)
     21    if (_param->_size_data > 1)
    2222      {
    23         vhdl->set_constant ("cst_min",_param._size_data,std_logic_others(_param._size_data,0));
    24         vhdl->set_constant ("cst_max",_param._size_data,std_logic_others(_param._size_data,1));
     23        vhdl->set_constant ("cst_min",_param->_size_data,std_logic_others(_param->_size_data,0));
     24        vhdl->set_constant ("cst_max",_param->_size_data,std_logic_others(_param->_size_data,1));
    2525      }
    2626
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Parameters.cpp

    r88 r113  
    1616  Parameters::Parameters (uint32_t size_data,
    1717                          uint32_t nb_port  ):
     18    behavioural::Parameters("Counter"),
    1819    _size_data(size_data),
    1920    _nb_port  (nb_port  ),
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Divider/Makefile.defs

    r112 r113  
    77#
    88
     9ENTITY                          = Divider
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Multiplier/Makefile.defs

    r112 r113  
    77#
    88
     9ENTITY                          = Multiplier
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Priority/Makefile.defs

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

    r81 r113  
    22# $Id$
    33#
    4 # [ Description ]
     4# [ Description ]
    55#
    66# Makefile
    77#
    88
    9 #-----[ Directory ]----------------------------------------
     9ENTITY                          = Queue
     10
     11#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../..
    1113DIR_MORPHEO                     = $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/src/main.cpp

    r101 r113  
    22 * $Id$
    33 *
    4  * [ Description ]
     4 * [ Description ]
    55 *
    66 */
    77
    8 #include "Behavioural/Generic/Queue/SelfTest/include/test.h"
     8#include "Behavioural/Generic/Queue/SelfTest/include/top.h"
    99
    10 #define NB_PARAMS 5
     10#ifndef MTI_SYSTEMC
     11# ifndef SYSTEMC
     12int main    (int argc, char * argv[])
     13# else
     14int sc_main (int argc, char * argv[])
     15# endif
     16{
     17  int _return = EXIT_SUCCESS;
    1118
    12 void usage (int argc, char * argv[])
    13 {
    14   cerr << "<Usage> " << argv[0] << " name_instance list_params" << endl
    15        << "list_params is :" << endl
    16        << " - size_queue      (uint32_t)" << endl
    17        << " - size_data       (uint32_t)" << endl
    18        << " - nb_port_slot    (uint32_t)" << endl
    19        << " - have_port_write (bool    )" << endl
    20        << " - have_port_read  (bool    )" << endl
    21        << "" << endl;
    22 
    23   for (int i=0; i<argc; i++)
    24     cerr << argv[i] << " ";
    25   cerr << endl;
    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      = fromString<uint32_t>(argv[x++]);
    43   const uint32_t size_data       = fromString<uint32_t>(argv[x++]);
    44   const uint32_t nb_port_slot    = fromString<uint32_t>(argv[x++]);
    45   const bool     have_port_write = fromString<bool>(argv[x++]);
    46   const bool     have_port_read  = fromString<bool>(argv[x++]);
    4719  try
    4820    {
    49       morpheo::behavioural::generic::queue::Parameters * param = new morpheo::behavioural::generic::queue::Parameters
    50         (size_queue,
    51          size_data ,
    52          nb_port_slot,
    53          have_port_write,
    54          have_port_read
    55         );
    56      
    57       cout << param->print(1);
    58      
    59       test (name,param);
     21      top * my_top = new top ("my_top",argc,argv);
     22
     23      my_top->test();
     24
     25      delete my_top;
    6026    }
    6127  catch (morpheo::ErrorMorpheo & error)
    6228    {
    63       cout << "<" << name << "> : " <<  error.what ();
    64       exit (EXIT_FAILURE);
     29      msgError(_("%s\n"),error.what ());
     30      _return = EXIT_FAILURE;
    6531    }
    66   catch (...)
     32 
     33  try
    6734    {
    68       cerr << "<" << name << "> : This test must generate a error" << endl;
    69       exit (EXIT_FAILURE);
     35      if (_return == EXIT_SUCCESS)
     36        TEST_OK("Queue : no error");
     37      else
     38        TEST_KO("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;
    7044    }
    7145
    72   return (EXIT_SUCCESS);
     46  return _return;
    7347}
    74 
     48#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/src/top_test.cpp

    r111 r113  
    77 */
    88
    9 #define NB_ITERATION  1
    10 #define CYCLE_MAX     (2048*NB_ITERATION)
     9#include "Behavioural/Generic/Queue/SelfTest/include/top.h"
     10#include "Behavioural/include/Allocation.h"
    1111
    12 #include "Behavioural/Generic/Queue/SelfTest/include/test.h"
    13 #include "Behavioural/include/Allocation.h"
    14 #include "Common/include/Test.h"
    15 
    16 void test (string name,
    17            morpheo::behavioural::generic::queue::Parameters * _param)
     12void top::test (void)
    1813{
    19   cout << "<" << name << "> : Simulation SystemC" << endl;
    20 
    21 #ifdef STATISTICS
    22   morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,50);
    23 #endif
    24 
    25   Tusage_t _usage = USE_ALL;
    26 
    27 //   _usage = usage_unset(_usage,USE_SYSTEMC              );
    28 //   _usage = usage_unset(_usage,USE_VHDL                 );
    29 //   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
    30 //   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
    31 //   _usage = usage_unset(_usage,USE_POSITION             );
    32 //   _usage = usage_unset(_usage,USE_STATISTICS           );
    33 //   _usage = usage_unset(_usage,USE_INFORMATION          );
    34 
    35   Queue * _Queue = new Queue
    36     (name.c_str(),
    37 #ifdef STATISTICS
    38      _parameters_statistics,
    39 #endif
    40      _param,
    41      _usage);
    42  
    4314#ifdef SYSTEMC
    44   /*********************************************************************
    45    * Déclarations des signaux
    46    *********************************************************************/
    47   string rename;
    48 
    49   sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
    50   sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
    51 
    52   ALLOC0_SC_SIGNAL( in_INSERT_VAL , "in_INSERT_VAL" ,Tcontrol_t);
    53   ALLOC0_SC_SIGNAL(out_INSERT_ACK ,"out_INSERT_ACK" ,Tcontrol_t);
    54   ALLOC0_SC_SIGNAL( in_INSERT_DATA, "in_INSERT_DATA",Tdata_t   );
    55   ALLOC0_SC_SIGNAL(out_RETIRE_VAL ,"out_RETIRE_VAL" ,Tcontrol_t);
    56   ALLOC0_SC_SIGNAL( in_RETIRE_ACK , "in_RETIRE_ACK" ,Tcontrol_t);
    57   ALLOC0_SC_SIGNAL(out_RETIRE_DATA,"out_RETIRE_DATA",Tdata_t   );
    58   ALLOC1_SC_SIGNAL(out_SLOT_VAL   ,"out_SLOT_VAL"   ,Tcontrol_t,_param->_nb_port_slot);
    59   ALLOC1_SC_SIGNAL(out_SLOT_DATA  ,"out_SLOT_DATA"  ,Tdata_t   ,_param->_nb_port_slot);
    60   ALLOC0_SC_SIGNAL(out_PTR_WRITE  ,"out_PTR_WRITE"  ,Tptr_t    );
    61   ALLOC0_SC_SIGNAL(out_PTR_READ   ,"out_PTR_READ"   ,Tptr_t    );
    62  
    63   /********************************************************
    64    * Instanciation
    65    ********************************************************/
    66  
    67   cout << "<" << name << "> Instanciation of _Queue" << endl;
    68  
    69   (*(_Queue->in_CLOCK))        (*(in_CLOCK));
    70   (*(_Queue->in_NRESET))       (*(in_NRESET));
    71 
    72   INSTANCE0_SC_SIGNAL(_Queue, in_INSERT_VAL );
    73   INSTANCE0_SC_SIGNAL(_Queue,out_INSERT_ACK );
    74   INSTANCE0_SC_SIGNAL(_Queue, in_INSERT_DATA);
    75   INSTANCE0_SC_SIGNAL(_Queue,out_RETIRE_VAL );
    76   INSTANCE0_SC_SIGNAL(_Queue, in_RETIRE_ACK );
    77   INSTANCE0_SC_SIGNAL(_Queue,out_RETIRE_DATA);
    78   INSTANCE1_SC_SIGNAL(_Queue,out_SLOT_VAL   ,_param->_nb_port_slot);
    79   INSTANCE1_SC_SIGNAL(_Queue,out_SLOT_DATA  ,_param->_nb_port_slot);
    80   if (_param->_have_port_ptr_write)
    81   INSTANCE0_SC_SIGNAL(_Queue,out_PTR_WRITE  );
    82   if (_param->_have_port_ptr_read )
    83   INSTANCE0_SC_SIGNAL(_Queue,out_PTR_READ   );
    84 
    85   cout << "<" << name << "> Start Simulation ............" << endl;
    86   Time * _time = new Time();
    87 
    88   /********************************************************
    89    * Simulation - Begin
    90    ********************************************************/
    91 
    92   // Initialisation
    93   const  int32_t percent_insert_transaction = 75;
    94   const  int32_t percent_retire_transaction = 75;
    95   const uint32_t nb_request = 3*_param->_size_queue;
    96 
    97   const uint32_t seed = 0;
    98 //const uint32_t seed = static_cast<uint32_t>(time(NULL));
    99 
    100   srand(seed);
    101 
    102   SC_START(0);
    103   LABEL("Initialisation");
    104 
    105   in_INSERT_VAL -> write(0);
    106   in_RETIRE_ACK -> write(0);
    107 
    108   LABEL("Reset");
    109   in_NRESET->write(0);
    110   SC_START(5);
    111   in_NRESET->write(1); 
    112 
    113   LABEL("Loop of Test");
    114 
    115   uint32_t data_in  = 0;
    116   uint32_t data_out = 0;
    117   uint32_t nb_elt   = 0;
    118 
    119   for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
     15  if (usage_is_set(_usage,USE_SYSTEMC))
    12016    {
    121       LABEL("Iteration %d",iteration);
    122 
    123       while (data_out <= nb_request)
    124         {
    125           in_INSERT_VAL  -> write((rand()%100)<percent_insert_transaction);
    126           in_INSERT_DATA -> write(data_in);
    127           in_RETIRE_ACK  -> write((rand()%100)<percent_retire_transaction);
    128 
    129           SC_START(0); // genMoore
    130 
    131           for (uint32_t i=0; i<_param->_nb_port_slot; ++i)
     17      msgInformation(_("<%s> : Start Simulation ............\n"),name.c_str());
     18     
     19      Time * _time = new Time();
     20     
     21      /********************************************************
     22       * Simulation - Begin
     23       ********************************************************/
     24     
     25      // Initialisation
     26      const  int32_t percent_insert_transaction = 75;
     27      const  int32_t percent_retire_transaction = 75;
     28      const uint32_t nb_request = 3*_param->_size_queue;
     29     
     30      const uint32_t seed = 0;
     31      //const uint32_t seed = static_cast<uint32_t>(time(NULL));
     32     
     33      srand(seed);
     34     
     35      SC_CYCLE(0);
     36      LABEL("Initialisation");
     37     
     38      in_INSERT_VAL -> write(0);
     39      in_RETIRE_ACK -> write(0);
     40     
     41      LABEL("Reset");
     42      in_NRESET->write(0);
     43      SC_CYCLE(5);
     44      in_NRESET->write(1); 
     45     
     46      LABEL("Loop of Test");
     47     
     48      uint32_t data_in  = 0;
     49      uint32_t data_out = 0;
     50      uint32_t nb_elt   = 0;
     51     
     52      for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
     53        {
     54          LABEL("Iteration %d",iteration);
     55         
     56          while (data_out <= nb_request)
    13257            {
    133               TEST(Tcontrol_t, out_SLOT_VAL [i]->read(), (i<nb_elt));
    134               if (i<nb_elt)
    135               TEST(Tdata_t   , out_SLOT_DATA[i]->read(), data_out+i);
    136                
     58              in_INSERT_VAL  -> write((rand()%100)<percent_insert_transaction);
     59              in_INSERT_DATA -> write(data_in);
     60              in_RETIRE_ACK  -> write((rand()%100)<percent_retire_transaction);
     61             
     62              SC_CYCLE(0); // genMoore
     63             
     64              for (uint32_t i=0; i<_param->_nb_port_slot; ++i)
     65                {
     66                  TEST(Tcontrol_t, out_SLOT_VAL [i]->read(), (i<nb_elt));
     67                  if (i<nb_elt)
     68                    TEST(Tdata_t   , out_SLOT_DATA[i]->read(), data_out+i);
     69                 
     70                }
     71             
     72              if ( in_INSERT_VAL->read() and out_INSERT_ACK->read())
     73                {
     74                  LABEL ("Transaction with interface : INSERT");
     75                  data_in ++;
     76                  nb_elt ++;
     77                }
     78              if (out_RETIRE_VAL->read() and  in_RETIRE_ACK->read())
     79                {
     80                  LABEL ("Transaction with interface : RETIRE");
     81                  TEST(Tdata_t, out_RETIRE_DATA->read(), data_out);
     82                  data_out++;
     83                  nb_elt --;
     84                }
     85             
     86              SC_CYCLE(1);
    13787            }
    138 
    139           if ( in_INSERT_VAL->read() and out_INSERT_ACK->read())
    140             {
    141               LABEL ("Transaction with interface : INSERT");
    142               data_in ++;
    143               nb_elt ++;
    144             }
    145           if (out_RETIRE_VAL->read() and  in_RETIRE_ACK->read())
    146             {
    147               LABEL ("Transaction with interface : RETIRE");
    148               TEST(Tdata_t, out_RETIRE_DATA->read(), data_out);
    149               data_out++;
    150               nb_elt --;
    151             }
    152 
    153           SC_START(1);
    154         }
     88        }
     89     
     90      /********************************************************
     91       * Simulation - End
     92       ********************************************************/
     93     
     94      TEST_OK ("");
     95     
     96      sc_stop();
     97      delete _time;
     98     
     99      msgInformation(_("<%s> : ............ Stop Simulation\n"),name.c_str());
    155100    }
    156 
    157   /********************************************************
    158    * Simulation - End
    159    ********************************************************/
    160 
    161   TEST_OK ("End of Simulation");
    162   delete _time;
    163   cout << "<" << name << "> ............ Stop Simulation" << endl;
    164 
    165   delete in_CLOCK;
    166   delete in_NRESET;
    167 
    168   DELETE0_SC_SIGNAL( in_INSERT_VAL );
    169   DELETE0_SC_SIGNAL(out_INSERT_ACK );
    170   DELETE0_SC_SIGNAL( in_INSERT_DATA);
    171   DELETE0_SC_SIGNAL(out_RETIRE_VAL );
    172   DELETE0_SC_SIGNAL( in_RETIRE_ACK );
    173   DELETE0_SC_SIGNAL(out_RETIRE_DATA);
    174   DELETE1_SC_SIGNAL(out_SLOT_VAL   ,_param->_nb_port_slot);
    175   DELETE1_SC_SIGNAL(out_SLOT_DATA  ,_param->_nb_port_slot);
    176   DELETE0_SC_SIGNAL(out_PTR_WRITE  );
    177   DELETE0_SC_SIGNAL(out_PTR_READ   );
    178 #endif
    179 
    180   delete _Queue;
    181 #ifdef STATISTICS
    182   delete _parameters_statistics;
    183101#endif
    184102}
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Parameters.cpp

    r101 r113  
    2121                          bool     have_port_ptr_write,
    2222                          bool     have_port_ptr_read ):
     23    behavioural::Parameters("Queue"),
    2324    _size_queue          (size_queue),
    2425    _size_data           (size_data ),
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue.cpp

    r88 r113  
    3333    ,_usage            (usage)
    3434  {
    35     log_printf(FUNC,Queue,FUNCTION,"Begin");
     35    log_begin(Queue,FUNCTION);
     36   
     37// #if DEBUG_Core == true
     38//     log_printf(INFO,Core,FUNCTION,_("<%s> Parameters"),_name.c_str());
    3639
    37 #if DEBUG_Core == true
    38     log_printf(INFO,Core,FUNCTION,_("<%s> Parameters"),_name.c_str());
     40//     std::cout << *param << std::endl;
     41// #endif   
    3942
    40     std::cout << *param << std::endl;
    41 #endif   
    42 
    43     log_printf(INFO,Queue,FUNCTION,"Allocation");
     43    log_printf(INFO,Queue,FUNCTION,_("<%s> Allocation"),_name.c_str());
    4444    allocation ();
    4545
     
    4747    if (usage_is_set(_usage,USE_STATISTICS))
    4848      {
    49         log_printf(INFO,Queue,FUNCTION,"Allocation of statistics");
     49        log_printf(INFO,Queue,FUNCTION,_("<%s> Allocation of statistics"),_name.c_str());
    5050       
    5151        statistics_declaration(param_statistics);
     
    5757      {
    5858        // generate the vhdl
    59         log_printf(INFO,Queue,FUNCTION,"Generate the vhdl");
     59        log_printf(INFO,Queue,FUNCTION,_("<%s> Generate the vhdl"),_name.c_str());
    6060       
    6161        vhdl();
     
    6666    if (usage_is_set(_usage,USE_SYSTEMC))
    6767      {
    68         log_printf(INFO,Queue,FUNCTION,"Method - transition");
     68        log_printf(INFO,Queue,FUNCTION,_("<%s> Method - transition"),_name.c_str());
    6969       
    7070        SC_METHOD (transition);
     
    7676# endif   
    7777       
    78         log_printf(INFO,Queue,FUNCTION,"Method - genMoore");
     78        log_printf(INFO,Queue,FUNCTION,_("<%s> Method - genMoore"),_name.c_str());
    7979       
    8080        SC_METHOD (genMoore);
     
    8888#endif
    8989      }
    90     log_printf(FUNC,Queue,FUNCTION,"End");
     90    log_end(Queue,FUNCTION);
    9191  };
    9292 
     
    9595  Queue::~Queue (void)
    9696  {
    97     log_printf(FUNC,Queue,FUNCTION,"Begin");
     97    log_begin(Queue,FUNCTION);
    9898
    9999#ifdef STATISTICS
    100100    if (usage_is_set(_usage,USE_STATISTICS))
    101101      {
    102         log_printf(INFO,Queue,FUNCTION,"Generate Statistics file");
     102        log_printf(INFO,Queue,FUNCTION,_("<%s> Generate Statistics file"),_name.c_str());
    103103       
    104104        delete _stat;
     
    106106#endif
    107107
    108     log_printf(INFO,Queue,FUNCTION,"Deallocation");
     108    log_printf(INFO,Queue,FUNCTION,_("<%s> Deallocation"),_name.c_str());
    109109    deallocation ();
    110110
    111     log_printf(FUNC,Queue,FUNCTION,"End");
     111    log_end(Queue,FUNCTION);
    112112  };
    113113
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_allocation.cpp

    r112 r113  
    99#include "Behavioural/include/Allocation.h"
    1010
    11 namespace morpheo                    {
     11namespace morpheo {
    1212namespace behavioural {
    1313namespace generic {
    1414namespace queue {
    15 
    16 
    1715
    1816#undef  FUNCTION
     
    2523
    2624    Entity * entity = _component->set_entity (_name       
    27                                               ,"Queue"
     25                                              ,_param->_type
    2826#ifdef POSITION
    2927                                              ,COMBINATORY
     
    111109}; // end namespace queue
    112110}; // end namespace generic
    113 
    114111}; // end namespace behavioural
    115112}; // end namespace morpheo             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_deallocation.cpp

    r101 r113  
    2121    log_printf(FUNC,Queue,FUNCTION,"Begin");
    2222
    23     if (usage_is_set(_usage,USE_SYSTEMC))
     23//     if (usage_is_set(_usage,USE_SYSTEMC))
    2424      {
    25         delete    in_CLOCK ;
    26         delete    in_NRESET;
     25        DELETE0_SIGNAL( in_CLOCK ,1);
     26        DELETE0_SIGNAL( in_NRESET,1);
    2727
    2828        DELETE0_SIGNAL( in_INSERT_VAL                        ,1);
     
    4141        if (_param->_have_port_ptr_read )
    4242        DELETE0_SIGNAL(out_PTR_READ    ,_param->_size_ptr);
     43      }
    4344       
    44         // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     45      if (usage_is_set(_usage,USE_SYSTEMC))
     46      {
     47        // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    4548        delete _queue_control;
    4649        delete _queue_data;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_statistics_declaration.cpp

    r81 r113  
    2121
    2222    _stat = new Stat (static_cast<std::string>(_name),
    23                       "Queue",
     23                      _param->_type,
    2424                      param_statistics);
    2525   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/Makefile

    r81 r113  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_MORPHEO                     = ../../..
     10DIR_COMPONENT                   = ./
     11include                         $(DIR_COMPONENT)/Makefile.defs
    1112
    1213#-----[ Library ]------------------------------------------
    1314LIBRARY                         = $(DIR_LIB)/libQueue_Control.a
    1415
     16
    1517#-----[ include ]------------------------------------------
    1618
    17 all                             : $(LIBRARY_NEED)
     19all                             :
    1820                                @$(MAKE) all_component
    1921
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/Makefile.deps

    r81 r113  
    22# $Id$
    33#
    4 # [ Description ]
     4# [ Description ]
    55#
    66# Makefile
     
    88# DIR_MORPHEO must be defined
    99
    10 Queue_Control                   = yes
     10Queue_Control                   = yes
    1111
    12 #-----[ Library ]------------------------------------------
    13 Queue_Control_LIBRARY           = -lQueue_Control
     12ifndef Behavioural
     13include                         $(DIR_MORPHEO)/Behavioural/Makefile.deps
     14endif
    1415
    15 Queue_Control_DIR_LIBRARY       = -L$(DIR_MORPHEO)/Behavioural/Generic/Queue_Control/lib
     16#-----[ Library ]------------------------------------------
     17Queue_Control_LIBRARY           =       -lQueue_Control \
     18                                $(Behavioural_LIBRARY) 
    1619
    17 #-----[ Rules ]--------------------------------------------
     20Queue_Control_DIR_LIBRARY       =       -L$(DIR_MORPHEO)/Behavioural/Generic/Queue_Control/lib  \
     21                                $(Behavioural_DIR_LIBRARY)
     22
     23#-----[ Rules ]--------------------------------------------
     24
     25#.NOTPARALLEL                   : Queue_Control_library Queue_Control_library_clean
    1826
    1927Queue_Control_library           :
    2028                                @\
    21                                 $(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/Queue_Control --makefile=Makefile ;
    22        
     29                                $(MAKE) Behavioural_library;\
     30                                $(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/Queue_Control --makefile=Makefile;
     31
    2332Queue_Control_library_clean     :
    2433                                @\
     34                                $(MAKE) Behavioural_library_clean;\
    2535                                $(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/Queue_Control --makefile=Makefile clean;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/Makefile.defs

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

    r81 r113  
    22# $Id$
    33#
    4 # [ Description ]
     4# [ Description ]
    55#
    66# Makefile
    77#
    88
    9 #-----[ Directory ]----------------------------------------
     9ENTITY                          = RegisterFile_Monolithic
     10
     11#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../..
    1113DIR_MORPHEO                     = $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp

    r94 r113  
    159159      while (nb_ack < _param->_nb_word)
    160160        {
    161           cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
     161          cout << "cycle : " << static_cast<uint32_t> (simulation_cycle()) << endl;
    162162
    163163          for (uint32_t num_port=0; num_port < _param->_nb_port_write; num_port ++)
     
    232232      while (nb_ack < _param->_nb_word)
    233233        {
    234           cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
     234          cout << "cycle : " << static_cast<uint32_t> (simulation_cycle()) << endl;
    235235         
    236236          for (uint32_t num_port=0; num_port < _param->_nb_port_read; num_port ++)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile.defs

    r81 r113  
    22# $Id$
    33#
    4 # [ Description ]
     4# [ Description ]
    55#
    66# Makefile
    77#
    88
    9 #-----[ Directory ]----------------------------------------
     9ENTITY                          = RegisterFile_Multi_Banked
     10
     11#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../..
    1113DIR_MORPHEO                     = $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/test.cpp

    r88 r113  
    136136      while (nb_ack < nb_request)
    137137        {
    138           cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
     138          cout << "cycle : " << static_cast<uint32_t> (simulation_cycle()) << endl;
    139139
    140140          for (uint32_t num_port=0; num_port < _param->_nb_port_write; num_port ++)
     
    183183        while (nb_ack < nb_request)
    184184          {
    185             cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
     185            cout << "cycle : " << static_cast<uint32_t> (simulation_cycle()) << endl;
    186186           
    187187            for (uint32_t num_port=0; num_port < _param->_nb_port_read; num_port ++)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/src/test.cpp

    r88 r113  
    136136      while (nb_ack < nb_request)
    137137        {
    138           cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
     138          cout << "cycle : " << static_cast<uint32_t> (simulation_cycle()) << endl;
    139139
    140140          for (uint32_t num_port=0; num_port < _param->_nb_port_write; num_port ++)
     
    184184          while (nb_ack < nb_request)
    185185            {
    186               cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
     186              cout << "cycle : " << static_cast<uint32_t> (simulation_cycle()) << endl;
    187187             
    188188              for (uint32_t num_port=0; num_port < _param->_nb_port_read; num_port ++)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/Makefile.defs

    r81 r113  
    22# $Id$
    33#
    4 # [ Description ]
     4# [ Description ]
    55#
    66# Makefile
    77#
    88
    9 #-----[ Directory ]----------------------------------------
     9ENTITY                          = Select_Priority_Fixed
     10
     11#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../..
    1113DIR_MORPHEO                     = $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/test.cpp

    r97 r113  
    108108 
    109109  sc_start(0);
    110 //cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Initialisation" << endl;
     110//cout << "{"+toString(static_cast<uint32_t>(simulation_cycle()))+"} Initialisation" << endl;
    111111
    112   cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Loop of Test" << endl;
     112  cout << "{"+toString(static_cast<uint32_t>(simulation_cycle()))+"} Loop of Test" << endl;
    113113
    114114  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/Makefile.defs

    r81 r113  
    22# $Id$
    33#
    4 # [ Description ]
     4# [ Description ]
    55#
    66# Makefile
    77#
    88
    9 #-----[ Directory ]----------------------------------------
     9ENTITY                          = Shifter
     10
     11#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../..
    1113DIR_MORPHEO                     = $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/src/test.cpp

    r112 r113  
    147147          if (param._have_shift_logic_left)
    148148            {
    149               cout << "{" << static_cast<uint32_t>(sc_simulation_time()) << "} Test    Shift   Left  Logic" << endl;
     149              cout << "{" << static_cast<uint32_t>(simulation_cycle()) << "} Test    Shift   Left  Logic" << endl;
    150150              direction = _left ;
    151151              type      = _shift;
     
    156156          else
    157157            {
    158               cout << "{" << static_cast<uint32_t>(sc_simulation_time()) << "} No Test Shift   Left  Logic" << endl;
     158              cout << "{" << static_cast<uint32_t>(simulation_cycle()) << "} No Test Shift   Left  Logic" << endl;
    159159              continue;
    160160            }
     
    162162          if (param._have_shift_logic_right)
    163163            {
    164               cout << "{" << static_cast<uint32_t>(sc_simulation_time()) << "} Test    Shift   Right Logic" << endl;
     164              cout << "{" << static_cast<uint32_t>(simulation_cycle()) << "} Test    Shift   Right Logic" << endl;
    165165              direction = _right;
    166166              type      = _shift;
     
    171171          else
    172172            {
    173               cout << "{" << static_cast<uint32_t>(sc_simulation_time()) << "} No Test Shift   Right Logic" << endl;
     173              cout << "{" << static_cast<uint32_t>(simulation_cycle()) << "} No Test Shift   Right Logic" << endl;
    174174              continue;
    175175            }
     
    177177          if (param._have_shift_arithmetic_left)
    178178            {
    179               cout << "{" << static_cast<uint32_t>(sc_simulation_time()) << "} Test    Shift   Left  Arithmetic" << endl;
     179              cout << "{" << static_cast<uint32_t>(simulation_cycle()) << "} Test    Shift   Left  Arithmetic" << endl;
    180180              direction = _left      ;
    181181              type      = _shift     ;
     
    186186          else
    187187            {
    188               cout << "{" << static_cast<uint32_t>(sc_simulation_time()) << "} No Test Shift   Left  Arithmetic" << endl;
     188              cout << "{" << static_cast<uint32_t>(simulation_cycle()) << "} No Test Shift   Left  Arithmetic" << endl;
    189189              continue;
    190190            }
     
    192192          if (param._have_shift_arithmetic_right)
    193193            {
    194               cout << "{" << static_cast<uint32_t>(sc_simulation_time()) << "} Test    Shift   Right Arithmetic" << endl;
     194              cout << "{" << static_cast<uint32_t>(simulation_cycle()) << "} Test    Shift   Right Arithmetic" << endl;
    195195              direction = _right;
    196196              type      = _shift;
     
    201201          else
    202202            {
    203               cout << "{" << static_cast<uint32_t>(sc_simulation_time()) << "} No Test Shift   Right Arithmetic" << endl;
     203              cout << "{" << static_cast<uint32_t>(simulation_cycle()) << "} No Test Shift   Right Arithmetic" << endl;
    204204              continue;
    205205            }
     
    207207          if ( param._have_rotate_left)
    208208            {
    209               cout << "{" << static_cast<uint32_t>(sc_simulation_time()) << "} Test    Rotate  Left" << endl;
     209              cout << "{" << static_cast<uint32_t>(simulation_cycle()) << "} Test    Rotate  Left" << endl;
    210210              direction = _left  ;
    211211              type      = _rotate;
     
    216216          else
    217217            {
    218               cout << "{" << static_cast<uint32_t>(sc_simulation_time()) << "} No Test Rotate  Left" << endl;
     218              cout << "{" << static_cast<uint32_t>(simulation_cycle()) << "} No Test Rotate  Left" << endl;
    219219              continue;
    220220            }
     
    222222          if (param._have_rotate_right)
    223223            {
    224               cout << "{" << static_cast<uint32_t>(sc_simulation_time()) << "} Test    Rotate  Right" << endl;
     224              cout << "{" << static_cast<uint32_t>(simulation_cycle()) << "} Test    Rotate  Right" << endl;
    225225              direction = _right;
    226226              type      = _rotate;
     
    231231          else
    232232            {
    233               cout << "{" << static_cast<uint32_t>(sc_simulation_time()) << "} No Test Rotate  Right" << endl;
     233              cout << "{" << static_cast<uint32_t>(simulation_cycle()) << "} No Test Rotate  Right" << endl;
    234234              continue;
    235235            }
     
    283283              sc_start(0);
    284284             
    285               cout << "{" << static_cast<uint32_t>(sc_simulation_time()) << "}" << endl;
     285              cout << "{" << static_cast<uint32_t>(simulation_cycle()) << "}" << endl;
    286286             
    287287              for (uint32_t i=0; i<param._nb_port; i++)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Sort/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Sort
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Makefile.defs

    r81 r113  
    77#
    88
     9ENTITY                          = Victim
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../..
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/Makefile.defs

    r81 r113  
    22# $Id$
    33#
    4 # [ Description ]
     4# [ Description ]
    55#
    66# Makefile
    77#
    88
    9 #-----[ Directory ]----------------------------------------
     9ENTITY                          = Victim_Pseudo_LRU
     10
     11#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = ../../../..
    1113DIR_MORPHEO                     = $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/src/test.cpp

    r95 r113  
    119119    for (uint32_t k=0; k<param._nb_entity; k++)
    120120      {
    121         cout << "time : " << static_cast<uint32_t>(sc_simulation_time()) << endl;
     121        cout << "time : " << static_cast<uint32_t>(simulation_cycle()) << endl;
    122122        for (uint32_t i=0; i<param._nb_access; i++)
    123123          {
     
    165165        {
    166166         
    167           cout << "time : " << static_cast<uint32_t>(sc_simulation_time()) << endl;
     167          cout << "time : " << static_cast<uint32_t>(simulation_cycle()) << endl;
    168168          for (uint32_t i=0; i<param._nb_access; i++)
    169169            {
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Common

    r103 r113  
    2222endif
    2323
     24##-----[ Entity ]-------------------------------------------
     25#ENTITY                         = $$($(BASENAME) $$PWD)
     26
    2427#-----[ Directory ]----------------------------------------
    2528#DIR_TMP                         = .
     
    2730DIR_INC                         = include
    2831DIR_SRC                         = src
    29 DIR_OBJ                         = obj
     32DIR_OBJ                         = $(DIR_TMP)/obj
     33DIR_LIB                         = $(DIR_TMP)/lib
    3034DIR_SCRIPT                      = $(MORPHEO_SCRIPT)
    3135
     
    3539                                  -I$(DIR_MORPHEO)
    3640
    37 LIBDIR                          = $(DIR_LIBRARY)                        \
     41LIBDIR                          = -L$(DIR_LIB) \
    3842                                  $(SYSTEMC_LIBDIR_$(SIMULATOR))       
    3943#                                 $(OR1K_LIBDIR)                               
    40 
    41 LIBS                            = $(LIBRARY) -lm $(SYSTEMC_LIBNAME_$(SIMULATOR))
    42 
    43 #                                 $(OR1K_LIBNAME) -lbfd 
    4444
    4545FLAGS_COMMON                    = $(SYSTEMC_CFLAGS_$(SIMULATOR))        \
     
    5050
    5151#-----[ Variable ]-----------------------------------------
    52 ENTITY                          = $$($(BASENAME) $$PWD)
    53 
    54 OBJECTS_COMMON                  = $(patsubst $(DIR_SRC)/%.cpp,$(DIR_OBJ)/%.o,$(wildcard $(DIR_SRC)/*.cpp))
     52#OBJECTS_COMMON                 = $(patsubst $(DIR_SRC)/%.cpp,$(DIR_OBJ)/%.o,$(wildcard $(DIR_SRC)/*.cpp))
     53SOURCES                         = $(wildcard $(DIR_SRC)/*.cpp)
     54OBJECTS_COMMON                  = $(addprefix $(DIR_OBJ)/$(ENTITY)_, $(addsuffix .o, $(basename $(notdir $(SOURCES)))))
    5555
    5656HEADERS                         = $(wildcard $(DIR_INC)/*.h)
    5757
    5858#-----[ Rules ]--------------------------------------------
    59 .PRECIOUS                       : $(DIR_OBJ)/%.o
     59.PRECIOUS                       : $(DIR_OBJ)/$(ENTITY)_%.o
    6060
    6161test_env                        :
    6262                                @$(ECHO) "-------------------| $(ENTITY)"
    6363
     64test                            :
     65                                @echo $(DIR_LIBRARY);
    6466
    65 $(DIR_OBJ)/%.o                  : $(DIR_SRC)/%.cpp $(HEADERS)
     67$(DIR_OBJ)/$(ENTITY)_%.o        : $(DIR_SRC)/%.cpp $(HEADERS)
    6668                                @\
    6769                                $(ECHO) "Compilation        : $*";\
    68                                 $(CXX) $(CFLAGS) -c -o $@ $<;
     70                                $(SYSTEMC_CXX_$(SIMULATOR)) $(CFLAGS) -c -o $@ $<;
    6971
    7072$(DIR_OBJ)                      :
     
    7678                                @\
    7779                                $(ECHO) "Delete     temporary files in directory $(PWD)";\
    78                                 $(RM)   $(DIR_OBJ)      \
    79                                         $(DIR_BIN)      \
    80                                         *~              \
    81                                         $(DIR_SRC)/*~   \
     80                                $(RM)   $(OBJECTS_COMMON)     \
     81                                        *~                    \
     82                                        $(DIR_SRC)/*~         \
    8283                                        $(DIR_INC)/*~;
    8384
    8485common_clean_all                : common_clean
     86                                @\
     87                                $(RM)   $(DIR_OBJ)
    8588
    8689common_help                     :
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Component

    r88 r113  
    22DIR_DOC                         = doc
    33DIR_TEST                        = SelfTest
    4 DIR_LIB                         = lib
    54
    65#-----[ Variable ]-----------------------------------------
     
    1110#.NOTPARALLEL                   : clean help
    1211
    13 all_component                   : test_env $(DIR_OBJ) $(DIR_LIB) $(OBJECTS) $(HEADERS)
    14                                 @$(MAKE) $(LIBRARY)
     12all_component                   : test_env $(DIR_OBJ) $(DIR_LIB)
     13                                @\
     14                                $(MAKE) $(LIBRARY);
    1515
    16 $(DIR_LIB)/%.a                  : $(OBJECTS) $(HEADERS)
     16# if simulator is modelsim, libComponent.a is a directory, else is normal library generated by g++
     17
     18$(DIR_LIB)/%.a                  : $(SOURCES) $(HEADERS)
    1719                                @\
    18                                 $(ECHO) "Archive            : $*";\
    19                                 $(AR)  -r $@ $(OBJECTS);\
    20                                 $(RANLIB) $@;
     20                                case "${SIMULATOR}" in                                                          \
     21                                    "modelsim")                                                                 \
     22                                        $(MODELTECH_VLIB) $@;                                                   \
     23                                        $(MODELTECH_SCCOM) $(CFLAGS) $(SOURCES) -work $@;                       \
     24                                        ;;                                                                      \
     25                                    *)                                                                          \
     26                                        $(MAKE) $(OBJECTS);                                                     \
     27                                        $(ECHO) "Archive            : $*";                                      \
     28                                        $(AR)  -r $@ $(OBJECTS);                                                \
     29                                        $(RANLIB) $@;                                                           \
     30                                        ;;                                                                      \
     31                                esac;
    2132
    2233$(DIR_LIB)                      :
     
    2940
    3041component_clean                 :
    31                                 @$(RM) $(DIR_LIB)
    32 
     42                                @$(RM) $(LIBRARY)
    3343#                               if $(TEST) -d $(DIR_DOC); then $(MAKE) --directory=$(DIR_DOC) --makefile=Makefile clean; fi;
    3444
    3545component_clean_all             : component_clean
    36 
     46                                @$(RM) $(DIR_LIB)
    3747#                               if $(TEST) -d $(DIR_DOC); then $(MAKE) --directory=$(DIR_DOC) --makefile=Makefile clean_all; fi;
    3848                               
     
    4656                                $(ECHO) " * help                 : print this text";\
    4757                                $(ECHO) "";
    48                                
    4958
    5059help                            :
     
    5867                                $(MAKE) component_clean;
    5968
    60 clean_all                               :
     69clean_all                       :
    6170                                @\
    6271                                $(MAKE) common_clean_all ;\
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest

    r94 r113  
    99#-----[ Directory ]----------------------------------------
    1010DIR_BIN                         = $(DIR_TMP)/bin
    11 DIR_LIB                         = ../lib
    1211DIR_CFG_GEN                     = $(DIR_TMP)/configuration_generated
    1312DIR_CFG_USER                    = configuration
     
    1918
    2019OBJECTS                         = $(OBJECTS_COMMON)
     20
     21LIBS                            = -lm $(SYSTEMC_LIBNAME_$(SIMULATOR))
     22#                                 $(OR1K_LIBNAME) -lbfd 
     23
     24MODELTECH_LIBRARY               = $(addprefix -lib ,$(addsuffix .a, $(subst -l,$(DIR_LIB)/lib,$(LIBRARY))))
     25#MODELTECH_LIBRARY               = $(LIBRARY)
    2126
    2227EXEC_PREFIX                     =
     
    152157                                                x=$$i;                                                                                  \
    153158                                                for j in $${ENUM_PARAM[*]}; do                                                          \
    154                                                         declare -a RANGE_LOCAL=($${RANGE[$$j]});                                                        \
     159                                                        declare -a RANGE_LOCAL=($${RANGE[$$j]});                                        \
    155160                                                        DATA[$$j]="$${RANGE_LOCAL[$$((($$x % $${SIZE[$$j]})))]} ";                      \
    156161                                                        x=$$(($$x/$${SIZE[$$j]}));                                                      \
     
    195200                                fi;
    196201
    197 $(DIR_BIN)/%.x                  : $(OBJECTS) $(HEADERS) $(DIR_LIB)
     202$(DIR_BIN)/%.x                  : $(SOURCES) $(HEADERS) $(DIR_OBJ) $(DIR_BIN)
    198203                                @\
    199204                                $(ECHO) "Linkage            : $*";\
    200                                 $(CXX) $(LFLAGS) -o $@ $(OBJECTS) $(LIBS);
    201 
    202 $(DIR_LIB)                      :
    203                                 @\
    204                                 $(ECHO) "Create directory   : $@";\
    205                                 $(MKDIR) $@;
    206 
    207 $(DIR_BIN)                      :
    208                                 @\
    209                                 $(ECHO) "Create directory   : $@";\
    210                                 $(MKDIR) $@;
    211 
    212 $(DIR_LOG)                      :
    213                                 @\
    214                                 $(ECHO) "Create directory   : $@";\
    215                                 $(MKDIR) $@;
    216 
    217 $(DIR_CFG_GEN)                  :
     205                                case "${SIMULATOR}" in                                                          \
     206                                    "modelsim")                                                                 \
     207                                        $(MAKE) vhdl_package;                                                   \
     208                                        $(MAKE) vhdl_entity;                                                    \
     209                                        $(MODELTECH_SCCOM) -work $(DIR_WORK) $(CFLAGS) $(SOURCES);              \
     210                                        $(MODELTECH_SCCOM) -work $(DIR_WORK) $(MODELTECH_LIBRARY) $(LFLAGS) $(LIBS) -link;\
     211                                        $(ECHO) "#!$(SHELL)"                                              > $@; \
     212                                        $(ECHO) "cd $${PWD};"                                            >> $@; \
     213                                        $(ECHO) 'declare args;'                                          >> $@; \
     214                                        $(ECHO) 'for i in $${*}; do'                                     >> $@; \
     215                                        $(ECHO) '    args=$${args}" -sc_arg $${i}";'                     >> $@; \
     216                                        $(ECHO) 'done;'                                                  >> $@; \
     217                                        $(ECHO) "$(MODELTECH_VSIM) -novopt "'$${args}'" $(MODELTECH_LIBRARY) $(DIR_WORK).top;" >> $@; \
     218                                        $(ECHO) "cd -;"                                                  >> $@; \
     219                                        $(CHMOD) +x $@;                                                         \
     220                                        ;;                                                                      \
     221                                    *)                                                                          \
     222                                        $(MAKE) $(OBJECTS);                                                     \
     223                                        $(SYSTEMC_CXX_$(SIMULATOR)) $(LFLAGS) -o $@ $(OBJECTS) $(LIBRARY) $(LIBS);\
     224                                        ;;                                                                      \
     225                                esac;
     226
     227$(DIR_BIN) $(DIR_LOG) $(DIR_CFG_GEN) :
    218228                                @\
    219229                                $(ECHO) "Create directory   : $@";\
     
    223233                                @$(RM)  $(DIR_LOG)              \
    224234                                        $(DIR_CFG_USER)/*~      \
     235                                        $(DIR_BIN)/$(EXEC).x    \
    225236                                        *.vhdl                  \
    226237                                        *.pos                   \
     
    234245
    235246selftest_clean_all              : library_clean
    236                                
     247                                @\
     248                                $(RM) $(DIR_BIN)
    237249
    238250selftest_help                   :
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Synthesis

    r112 r113  
    1010
    1111DIR_VHDL                        = .
    12 DIR_WORK                        = work
     12WORK_NAME                       = work
     13DIR_WORK                        = $(MORPHEO_TMP)/$(WORK_NAME)
    1314
    1415FPGA_CFG_FILE_LOCAL             = mkf.info
     
    2122FPGA_LOG_FILES                  = $(patsubst $(DIR_CFG_GEN)/%.cfg,$(DIR_LOG)/%.fpga.log,$(wildcard $(DIR_CFG_GEN)/*.cfg))       \
    2223                                  $(patsubst $(DIR_CFG_USER)/%.cfg,$(DIR_LOG)/%.fpga.log,$(wildcard $(DIR_CFG_USER)/*.cfg))
     24
     25
    2326#-----[ Rules ]--------------------------------------------
    2427.PRECIOUS                       : $(DIR_LOG)/%.vhdl.log $(DIR_LOG)/%.sim.log
    2528
    26 vhdl                            : execute $(DIR_WORK)
     29vhdl                            : $(EXEC_LOG)
     30                                @\
     31                                $(MAKE) vhdl_package; \
     32                                $(MAKE) vhdl_entity; \
     33                                $(MAKE) vhdl_testbench
     34
     35vhdl_package                    : $(DIR_WORK)
    2736                                @\
    2837                                declare -a vhdl_files=($$($(LS) $(DIR_VHDL)/*_Pack.vhdl));                                              \
    2938                                declare -a log_files=($${vhdl_files[*]/%.vhdl/.vhdl.log});                                              \
    30                                 if $(TEST) $${#log_files[*]} -ne 0; then $(MAKE) $${log_files[*]/#$(DIR_VHDL)/$(DIR_LOG)}; fi;          \
     39                                if $(TEST) $${#log_files[*]} -ne 0; then $(MAKE) -k $${log_files[*]/#$(DIR_VHDL)/$(DIR_LOG)}; fi;
     40
     41vhdl_testbench                  : $(DIR_WORK)
     42                                @\
     43                                declare -a vhdl_files=($$($(LS) $(DIR_VHDL)/*_Testbench.vhdl));                                         \
     44                                declare -a log_files=($${vhdl_files[*]/%.vhdl/.vhdl.log});                                              \
     45                                if $(TEST) $${#log_files[*]} -ne 0; then $(MAKE) -k $${log_files[*]/#$(DIR_VHDL)/$(DIR_LOG)}; fi;
     46
     47vhdl_entity                     : $(DIR_WORK)
     48                                @\
    3149                                declare -a vhdl_files=($$($(LS) $(DIR_VHDL)/*.vhdl|$(GREP_NOT) "(_Pack\.|_Testbench\.)"));              \
    3250                                declare -a log_files=($${vhdl_files[*]/%.vhdl/.vhdl.log});                                              \
    33                                 if $(TEST) $${#log_files[*]} -ne 0; then $(MAKE) $${log_files[*]/#$(DIR_VHDL)/$(DIR_LOG)}; fi;          \
    34                                 declare -a vhdl_files=($$($(LS) $(DIR_VHDL)/*_Testbench.vhdl));                                         \
    35                                 declare -a log_files=($${vhdl_files[*]/%.vhdl/.vhdl.log});                                              \
    36                                 if $(TEST) $${#log_files[*]} -ne 0; then $(MAKE) $${log_files[*]/#$(DIR_VHDL)/$(DIR_LOG)}; fi;
     51                                if $(TEST) $${#log_files[*]} -ne 0; then $(MAKE) -k $${log_files[*]/#$(DIR_VHDL)/$(DIR_LOG)}; fi;       \
    3752
     53#list                           :
     54#                               @\
     55#                               declare -a vhdl_files=($$($(LS) $(DIR_VHDL)/*.vhdl|$(GREP_NOT) "(_Pack\.|_Testbench\.)"));              \
     56#                               for file1 in $${vhdl_files[*]}; do \
     57#                                   declare    x=$$(basename $${file1} .vhdl); \
     58#                                   declare -i count_x=$($(ECHO) $${x} | ${WC} -m); \
     59#                                    for file2 in $${vhdl_files[*]}; do \
     60#                                       if $(TEST) "$${file1}" != "$${file2}"; then\
     61#                                          declare    y=$$(basename $${file2} .vhdl); \
     62#                                          declare -i count_y=$($(ECHO) $${y} | ${WC} -m); \
     63#                                          if $(TEST) $${count_x} -gt $${count_y}; then \
     64#                                             break; \
     65#                                          fi; \
     66#                                          $(ECHO) $${x}; \
     67#                                       fi; \
     68#                                   done; \
     69#                               done;
    3870
    3971sim                             : vhdl
     
    4173                                declare -a vhdl_files=($$($(LS) $(DIR_VHDL)/*_Testbench.vhdl));                                         \
    4274                                declare -a log_files=($${vhdl_files[*]/%.vhdl/.sim.log});                                               \
    43                                 if $(TEST) $${#log_files[*]} -ne 0; then $(MAKE) $${log_files[*]/#$(DIR_VHDL)/$(DIR_LOG)}; fi;
     75                                if $(TEST) $${#log_files[*]} -ne 0; then $(MAKE) -k $${log_files[*]/#$(DIR_VHDL)/$(DIR_LOG)}; fi;
    4476
    4577fpga                            : sim
     
    5688                                done;                                   \
    5789                                ($(XILINX_ENV); cd $(FPGA_CFG_FILE_GLOBAL_DIR); ./$(FPGA_CFG_FILE_GLOBAL));                             \
    58                                 $(MAKE) $(FPGA_LOG_FILES);
     90                                $(MAKE) -k $(FPGA_LOG_FILES);
    5991
    6092$(DIR_LOG)/%.fpga.log           :
     
    6597$(DIR_WORK)                     :
    6698                                @\
    67                                 $(ECHO) "Create work-space  : $@"; \
    68                                 $(MODELTECH_VLIB) $@; \
    69                                 $(MODELTECH_VMAP) $(XILINX_CORELIB);
     99                                $(ECHO) "Create work-space  : $@";                                                      \
     100                                $(MODELTECH_VLIB) $@;                                                                   \
     101                                $(MODELTECH_VMAP) $(XILINX_LIBNAME) $(XILINX_LIBDIR);                                   \
     102                                if $(TEST) $${?} -ne 0; then                                                            \
     103                                   $(ECHO) "Xilinx corelib must be compiled to simulation tools";                       \
     104                                   $(ECHO) "Run manualy \"$(XILINX_COMPXLIB)\" with $(XILINX_CORELIB) directory";       \
     105                                fi;                                 
    70106
    71107$(DIR_LOG)/%.sim.log            : $(DIR_VHDL)/%.vhdl $(DIR_LOG)/%.vhdl.log
     
    82118                                @\
    83119                                $(ECHO) "VHDL's Compilation : $*"; \
    84                                 $(MODELTECH_VCOM) $< &> $@;
     120                                $(MODELTECH_VCOM) -work $(DIR_WORK) $< &> $@;
    85121
    86122synthesis_clean                 :
    87123                                @\
    88124                                if $(TEST) -f Makefile.mkf; then $(MAKE) -f Makefile.mkf clean; fi; \
    89                                 $(RM) $(DIR_WORK) transcript Makefile.mkf *.wlf;
     125                                $(RM) $(DIR_WORK) transcript Makefile.mkf *wlf* modelsim.ini;
    90126
    91127synthesis_clean_all             : synthesis_clean
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.defs

    r81 r113  
    22# $Id$
    33#
    4 # [ Description ]
     4# [ Description ]
    55#
    66
    7 #-----[ Directory ]----------------------------------------
     7ENTITY                          = Behavioural
     8
     9#-----[ Directory ]----------------------------------------
    810DIR_COMPONENT_MORPHEO           = ..
    911DIR_MORPHEO                     = $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component.sh

    r81 r113  
    1616{
    1717    echo "";
    18     echo "usage : $0 <directory> <name>";
     18    echo "usage : $0 <directory> <name> <type>";
    1919    echo " - <directory> : localisation of component";
    2020    echo " - <name>      : name of component";
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/Makefile.defs

    r82 r113  
    77#
    88
     9ENTITY                          = @COMPONENT
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = @DIR_MORPHEO
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/include/top.h

    r111 r113  
    44 * [ Description ]
    55 *
    6  * Test "RegisterFile"
     6 * Test "@COMPONENT"
    77 */
    88
     
    2424using namespace morpheo::behavioural::@NAMESPACE_USE;
    2525
    26 void test    (string name,
    27               morpheo::behavioural::@NAMESPACE_USE::Parameters * param);
     26SC_MODULE(top)
     27{
     28#ifdef SYSTEMC
     29 private: sc_clock               *  in_CLOCK ;
     30 private: sc_signal<Tcontrol_t>  *  in_NRESET;
     31#endif
     32
     33 private: std::string name;
     34 private: Tusage_t _usage;
     35 private: morpheo::behavioural::@NAMESPACE_USE::Parameters * _param;
     36#ifdef STATISTICS
     37 private: morpheo::behavioural::Parameters_Statistics * _param_stat;
     38#endif
     39 private: @COMPONENT * component;
     40
     41 private: void usage
     42    (
     43#ifdef MTI_SYSTEMC
     44     int argc, const char * const * argv
     45#else
     46     int argc, char * argv[]
     47#endif
     48     );
     49 private: void allocation   (void);
     50 private: void deallocation (void);
     51 public : void test         (void);
     52
     53#ifdef MTI_SYSTEMC
     54  SC_CTOR(top::top);
     55#else
     56 public : top (sc_module_name module_name,int argc, char * argv[]);
     57#endif
     58 public : ~top(void);
     59};
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/src/main.cpp

    r88 r113  
    66 */
    77
    8 #include "Behavioural/@DIRECTORY/SelfTest/include/test.h"
     8#include "Behavioural/@DIRECTORY/SelfTest/include/top.h"
    99
    10 #define NB_PARAMS 0
     10#ifndef MTI_SYSTEMC
     11# ifndef SYSTEMC
     12int main    (int argc, char * argv[])
     13# else
     14int sc_main (int argc, char * argv[])
     15# endif
     16{
     17  int _return = EXIT_SUCCESS;
    1118
    12 void usage (int argc, char * argv[])
    13 {
    14   err (_("<Usage> %s name_instance list_params.\n"),argv[0]);
    15   err (_("list_params is :\n"));
    16   err (_(" *  ()\n"));
    17 
    18   exit (1);
    19 }
    20 
    21 #ifndef SYSTEMC
    22 int main    (int argc, char * argv[])
    23 #else
    24 int sc_main (int argc, char * argv[])
    25 #endif
    26 {
    27   if (argc != static_cast<int>(2+NB_PARAMS))
    28     usage (argc, argv);
    29 
    30   uint32_t x = 1;
    31 
    32   string name = argv[x++];
    33 
    34   int _return = EXIT_SUCCESS;
    3519  try
    3620    {
    37       morpheo::behavioural::@NAMESPACE_USE::Parameters * param = new morpheo::behavioural::@NAMESPACE_USE::Parameters
    38         (
    39          true //is_toplevel
    40         );
    41      
    42       msg(_("%s"),param->print(0).c_str());
    43      
    44       test (name,param);
     21      top * my_top = new top ("my_top",argc,argv);
     22
     23      my_top->test();
     24
     25      delete my_top;
    4526    }
    4627  catch (morpheo::ErrorMorpheo & error)
    4728    {
    48       msg (_("<%s> :\n%s"),name.c_str(), error.what ());
     29      msgError(_("%s\n"),error.what ());
    4930      _return = EXIT_FAILURE;
    5031    }
     
    5940  catch (morpheo::ErrorMorpheo & error)
    6041    {
    61 //       msg (_("<%s> :\n%s"),name.c_str(), error.what ());
     42//    msgError(_("<%s> :\n%s"),name.c_str(), error.what ());
    6243      _return = EXIT_FAILURE;
    6344    }
    6445
    65   return (_return);
     46  return _return;
    6647}
     48#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/src/top_test.cpp

    r111 r113  
    77 */
    88
    9 #include "Behavioural/@DIRECTORY/SelfTest/include/test.h"
     9#include "Behavioural/@DIRECTORY/SelfTest/include/top.h"
    1010#include "Behavioural/include/Allocation.h"
    1111
    12 void test (string name,
    13            morpheo::behavioural::@NAMESPACE_USE::Parameters * _param)
     12void top::test (void)
    1413{
    15   msg(_("<%s> : Simulation SystemC.\n"),name.c_str());
    16 
    17   if (setlocale (LC_ALL, "") == NULL)
    18     msg(_("setlocale ko.\n"));
    19 
    20 #ifdef STATISTICS
    21   morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,CYCLE_MAX);
    22 #endif
    23 
    24   Tusage_t _usage = USE_ALL;
    25 
    26 //   _usage = usage_unset(_usage,USE_SYSTEMC              );
    27 //   _usage = usage_unset(_usage,USE_VHDL                 );
    28 //   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
    29 //   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
    30 //   _usage = usage_unset(_usage,USE_POSITION             );
    31 //   _usage = usage_unset(_usage,USE_STATISTICS           );
    32 //   _usage = usage_unset(_usage,USE_INFORMATION          );
    33 
    34   @COMPONENT * _@COMPONENT = new @COMPONENT
    35     (name.c_str(),
    36 #ifdef STATISTICS
    37      _parameters_statistics,
    38 #endif
    39      _param,
    40      _usage);
    41  
    4214#ifdef SYSTEMC
    4315  if (usage_is_set(_usage,USE_SYSTEMC))
    4416    {
    45   /*********************************************************************
    46    * Déclarations des signaux
    47    *********************************************************************/
    48   string rename;
    49 
    50   sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
    51   sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
    52  
    53   /********************************************************
    54    * Instanciation
    55    ********************************************************/
    56  
    57   msg(_("<%s> : Instanciation of _@COMPONENT.\n"),name.c_str());
    58 
    59   (*(_@COMPONENT->in_CLOCK))        (*(in_CLOCK));
    60   (*(_@COMPONENT->in_NRESET))       (*(in_NRESET));
    61 
    62 
    63   msg(_("<%s> : Start Simulation ............\n"),name.c_str());
    64    
    65   Time * _time = new Time();
    66 
    67   /********************************************************
    68    * Simulation - Begin
    69    ********************************************************/
    70 
    71   // Initialisation
    72 
    73   const uint32_t seed = 0;
    74 //const uint32_t seed = static_cast<uint32_t>(time(NULL));
    75 
    76   srand(seed);
    77 
    78   SC_START(0);
    79   LABEL("Initialisation");
    80 
    81   LABEL("Reset");
    82   in_NRESET->write(0);
    83   SC_START(5);
    84   in_NRESET->write(1); 
    85 
    86   LABEL("Loop of Test");
    87 
    88   for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
    89     {
    90       LABEL("Iteration %d",iteration);
    91 
    92       SC_START(1);
    93     }
    94 
    95   /********************************************************
    96    * Simulation - End
    97    ********************************************************/
    98 
    99   TEST_OK ("End of Simulation");
    100   delete _time;
    101 
    102   msg(_("<%s> : ............ Stop Simulation\n"),name.c_str());
    103 
    104   delete in_CLOCK;
    105   delete in_NRESET;
     17      msgInformation(_("<%s> : Start Simulation ............\n"),name.c_str());
     18     
     19      Time * _time = new Time();
     20     
     21      /********************************************************
     22       * Simulation - Begin
     23       ********************************************************/
     24     
     25      // Initialisation
     26     
     27      const uint32_t seed = 0;
     28    //const uint32_t seed = static_cast<uint32_t>(time(NULL));
     29     
     30      srand(seed);
     31     
     32      SC_CYCLE(0);
     33      LABEL("Initialisation");
     34     
     35      LABEL("Reset");
     36      in_NRESET->write(0);
     37      SC_CYCLE(5);
     38      in_NRESET->write(1); 
     39     
     40      LABEL("Loop of Test");
     41     
     42      for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
     43        {
     44          LABEL("Iteration %d",iteration);
     45         
     46          SC_CYCLE(1);
     47        }
     48     
     49      /********************************************************
     50       * Simulation - End
     51       ********************************************************/
     52     
     53      TEST_OK ("");
     54     
     55      sc_stop();
     56      delete _time;
     57     
     58      msgInformation(_("<%s> : ............ Stop Simulation\n"),name.c_str());
    10659    }
    10760#endif
    108 
    109   delete _@COMPONENT;
    110 #ifdef STATISTICS
    111   delete _parameters_statistics;
    112 #endif
    11361}
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/include/New_Component.h

    r82 r113  
    1313#endif
    1414
    15 
     15#include "Behavioural/@DIRECTORY/include/Wrapper_@COMPONENT.h"
    1616#include "Behavioural/@DIRECTORY/include/Parameters.h"
    1717#include "Behavioural/@DIRECTORY/include/Types.h"
     
    2424#endif
    2525#include "Behavioural/include/Usage.h"
     26#include "Behavioural/include/Simulation.h"
    2627
    2728#include "Common/include/ToString.h"
     
    4445  protected : const std::string  _name;
    4546  protected : const Parameters * _param;
    46   private   : const Tusage_t     _usage;
     47  public    :      Tusage_t     _usage;
    4748
    4849#ifdef STATISTICS
     
    5960  public    : SC_IN (Tcontrol_t)            *  in_NRESET       ;
    6061
    61     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     62    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6263
    63     // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     64    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6465
    6566    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     67#endif
     68
     69#ifdef MODELSIM_COSIMULATION
     70    // ~~~~~[ Wrapper ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     71  private : Wrapper_@COMPONENT * _wrapper;
    6672#endif
    6773
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/include/Parameters.h

    r88 r113  
    2929  public :        Parameters_test msg_error  (void);
    3030
     31  public :        std::string     id         (void);
     32
    3133  public :        std::string     print      (uint32_t depth);
    3234  public : friend std::ostream&   operator<< (std::ostream& output_stream,
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component.cpp

    r88 r113  
    2929    _name              (name)
    3030    ,_param            (param)
    31     ,_usage            (usage)
    3231  {
    3332    log_begin(@COMPONENT,FUNCTION);
    3433
    35     usage_environment(_usage);
     34    _usage = usage_environment(usage);
     35
     36#ifdef MODELSIM_COSIMULATION
     37    if (_model.get_type(_param->_type) == MODEL_VHDL)
     38      {
     39        _usage = usage_cosimulation(_usage);
     40      }
     41#endif
    3642
    3743    log_printf(INFO,@COMPONENT,FUNCTION,_("<%s> : Allocation"),_name.c_str());
     
    6369
    6470#ifdef SYSTEMC
    65     if (usage_is_set(_usage,USE_SYSTEMC))
     71    if (usage_is_set(_usage,USE_SYSTEMC_BODY))
    6672      {
    6773        log_printf(INFO,@COMPONENT,FUNCTION,_("<%s> : Method - transition"),_name.c_str());
     
    8591// # endif   
    8692       
     93      }
    8794#endif
    88       }
     95
    8996    log_end(@COMPONENT,FUNCTION);
    9097  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_allocation.cpp

    r82 r113  
    1010#include "Common/include/Max.h"
    1111
    12 namespace morpheo                    {
     12namespace morpheo {
    1313namespace behavioural {
    1414@NAMESPACE_BEGIN
     
    3030
    3131    Entity * entity = _component->set_entity (_name       
    32                                               ,"@COMPONENT"
     32                                              ,_param->_type
    3333#ifdef POSITION
    3434                                              ,COMBINATORY
     
    5858#endif
    5959
     60#ifdef MODELSIM_COSIMULATION
     61    if (usage_is_set(_usage,USE_COSIMULATION))
     62      {
     63        log_printf(INFO,Execute_queue,FUNCTION,_("<%s> : Create Wrapper"),_name.c_str());
     64
     65        _wrapper = new Wrapper_@COMPONENT (_name.c_str(),"morpheo_behavioural","work");
     66      }
     67#endif
     68
    6069    log_end(@COMPONENT,FUNCTION);
    6170  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_deallocation.cpp

    r82 r113  
    1919    log_begin(@COMPONENT,FUNCTION);
    2020
    21     if (usage_is_set(_usage,USE_SYSTEMC))
    22       {
    23         delete    in_CLOCK ;
    24         delete    in_NRESET;
     21//    if (usage_is_set(_usage,USE_SYSTEMC_INTERFACE))
     22      { 
     23        DELETE0_SIGNAL( in_CLOCK ,1);
     24        DELETE0_SIGNAL( in_NRESET,1);
    2525      }
    2626    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    2727
    2828    delete _component;
     29
     30#ifdef MODELSIM_COSIMULATION
     31    if (usage_is_set(_usage,USE_COSIMULATION))
     32      {
     33        delete _wrapper;
     34      }
     35#endif
    2936
    3037    log_end(@COMPONENT,FUNCTION);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_statistics_allocation.cpp

    r82 r113  
    2020
    2121    _stat = new Stat (static_cast<std::string>(_name),
    22                       "@COMPONENT",
     22                      _param->_type,
    2323                      param_statistics);
    2424   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/Parameters.cpp

    r88 r113  
    1414#undef  FUNCTION
    1515#define FUNCTION "@COMPONENT::Parameters"
    16   Parameters::Parameters (bool is_toplevel)
     16  Parameters::Parameters (bool is_toplevel):
     17    behavioural::Parameters ("@COMPONENT")
    1718  {
    1819    log_begin(@COMPONENT,FUNCTION);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/Parameters_msg_error.cpp

    r82 r113  
    2020    log_begin(@COMPONENT,FUNCTION);
    2121
    22     Parameters_test test ("@COMPONENT");
     22    Parameters_test test (_type);
    2323
    2424    log_end(@COMPONENT,FUNCTION);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/Makefile.defs

    r82 r113  
    77#
    88
     9ENTITY                          = @COMPONENT
     10
    911#-----[ Directory ]----------------------------------------
    1012DIR_COMPONENT_MORPHEO           = @DIR_MORPHEO
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/include/top.h

    r111 r113  
    44 * [ Description ]
    55 *
    6  * Test "RegisterFile"
     6 * Test "@COMPONENT"
    77 */
    88
     
    1818#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
    1919
    20 #include <string>
    21 #include <iostream>
    22 #include <sys/time.h>
    23 
    2420using namespace std;
    2521using namespace morpheo;
     
    2824using namespace morpheo::behavioural::@NAMESPACE_USE;
    2925
    30 void test    (string name,
    31               morpheo::behavioural::@NAMESPACE_USE::Parameters * param);
     26SC_MODULE(top)
     27{
     28#ifdef SYSTEMC
     29 private: sc_clock               *  in_CLOCK ;
     30 private: sc_signal<Tcontrol_t>  *  in_NRESET;
     31#endif
     32
     33 private: std::string name;
     34 private: Tusage_t _usage;
     35 private: morpheo::behavioural::@NAMESPACE_USE::Parameters * _param;
     36#ifdef STATISTICS
     37 private: morpheo::behavioural::Parameters_Statistics * _param_stat;
     38#endif
     39 private: @COMPONENT * component;
     40
     41 private: void usage
     42    (
     43#ifdef MTI_SYSTEMC
     44     int argc, const char * const * argv
     45#else
     46     int argc, char * argv[]
     47#endif
     48     );
     49 private: void allocation   (void);
     50 private: void deallocation (void);
     51 public : void test         (void);
     52
     53#ifdef MTI_SYSTEMC
     54  SC_CTOR(top::top);
     55#else
     56 public : top (sc_module_name module_name,int argc, char * argv[]);
     57#endif
     58 public : ~top(void);
     59};
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/src/main.cpp

    r88 r113  
    66 */
    77
    8 #include "Behavioural/@DIRECTORY/SelfTest/include/test.h"
     8#include "Behavioural/@DIRECTORY/SelfTest/include/top.h"
    99
    10 #define NB_PARAMS 0
     10#ifndef MTI_SYSTEMC
     11# ifndef SYSTEMC
     12int main    (int argc, char * argv[])
     13# else
     14int sc_main (int argc, char * argv[])
     15# endif
     16{
     17  int _return = EXIT_SUCCESS;
    1118
    12 void usage (int argc, char * argv[])
    13 {
    14   err (_("<Usage> %s name_instance list_params.\n"),argv[0]);
    15   err (_("list_params is :\n"));
    16   err (_(" *  ()\n"));
    17 
    18   exit (1);
    19 }
    20 
    21 #ifndef SYSTEMC
    22 int main    (int argc, char * argv[])
    23 #else
    24 int sc_main (int argc, char * argv[])
    25 #endif
    26 {
    27   if (argc != static_cast<int>(2+NB_PARAMS))
    28     usage (argc, argv);
    29 
    30   uint32_t x = 1;
    31 
    32   string name = argv[x++];
    33 
    34   int _return = EXIT_SUCCESS;
    3519  try
    3620    {
    37       morpheo::behavioural::@NAMESPACE_USE::Parameters * param = new morpheo::behavioural::@NAMESPACE_USE::Parameters
    38         (
    39          true // is_toplevel
    40         );
    41      
    42       msg(_("%s"),param->print(0).c_str());
    43      
    44       test (name,param);
     21      top * my_top = new top ("my_top",argc,argv);
     22
     23      my_top->test();
     24
     25      delete my_top;
    4526    }
    4627  catch (morpheo::ErrorMorpheo & error)
    4728    {
    48       msg (_("<%s> :\n%s"),name.c_str(), error.what ());
     29      msgError(_("%s\n"),error.what ());
    4930      _return = EXIT_FAILURE;
    5031    }
    51 
     32 
    5233  try
    5334    {
     
    5940  catch (morpheo::ErrorMorpheo & error)
    6041    {
    61 //       msg (_("<%s> :\n%s"),name.c_str(), error.what ());
     42//    msgError(_("<%s> :\n%s"),name.c_str(), error.what ());
    6243      _return = EXIT_FAILURE;
    6344    }
    6445
    65   return (_return);
     46  return _return;
    6647}
     48#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/src/top_test.cpp

    r111 r113  
    77 */
    88
    9 #include "Behavioural/@DIRECTORY/SelfTest/include/test.h"
     9#include "Behavioural/@DIRECTORY/SelfTest/include/top.h"
    1010#include "Behavioural/include/Allocation.h"
    1111
    12 void test (string name,
    13            morpheo::behavioural::@NAMESPACE_USE::Parameters * _param)
     12void top::test (void)
    1413{
    15   msg(_("<%s> : Simulation SystemC.\n"),name.c_str());
    16  
    17   if (setlocale (LC_ALL, "") == NULL)
    18     msg(_("setlocale ko.\n"));
    19 
    20 #ifdef STATISTICS
    21   morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,CYCLE_MAX);
    22 #endif
    23 
    24   Tusage_t _usage = USE_ALL;
    25 
    26 //   _usage = usage_unset(_usage,USE_SYSTEMC              );
    27 //   _usage = usage_unset(_usage,USE_VHDL                 );
    28 //   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
    29 //   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
    30 //   _usage = usage_unset(_usage,USE_POSITION             );
    31 //   _usage = usage_unset(_usage,USE_STATISTICS           );
    32 //   _usage = usage_unset(_usage,USE_INFORMATION          );
    33 
    34   @COMPONENT * _@COMPONENT = new @COMPONENT
    35     (name.c_str(),
    36 #ifdef STATISTICS
    37      _parameters_statistics,
    38 #endif
    39      _param,
    40      _usage);
    41  
    4214#ifdef SYSTEMC
    4315  if (usage_is_set(_usage,USE_SYSTEMC))
    4416    {
    45   /*********************************************************************
    46    * Déclarations des signaux
    47    *********************************************************************/
    48   string rename;
    49 
    50   sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
    51   sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
    52  
    53   /********************************************************
    54    * Instanciation
    55    ********************************************************/
    56  
    57   msg(_("<%s> : Instanciation of _@COMPONENT.\n"),name.c_str());
    58 
    59   (*(_@COMPONENT->in_CLOCK))        (*(in_CLOCK));
    60   (*(_@COMPONENT->in_NRESET))       (*(in_NRESET));
    61 
    62 
    63   msg(_("<%s> : Start Simulation ............\n"),name.c_str());
    64    
    65   Time * _time = new Time();
    66 
    67   /********************************************************
    68    * Simulation - Begin
    69    ********************************************************/
    70 
    71   // Initialisation
    72 
    73   const uint32_t seed = 0;
    74 //const uint32_t seed = static_cast<uint32_t>(time(NULL));
    75 
    76   srand(seed);
    77 
    78   SC_START(0);
    79   LABEL("Initialisation");
    80 
    81   LABEL("Reset");
    82   in_NRESET->write(0);
    83   SC_START(5);
    84   in_NRESET->write(1); 
    85 
    86   LABEL("Loop of Test");
    87 
    88   for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
    89     {
    90       LABEL("Iteration %d",iteration);
    91 
    92       SC_START(1);
    93     }
    94 
    95   /********************************************************
    96    * Simulation - End
    97    ********************************************************/
    98 
    99   TEST_OK ("End of Simulation");
    100   delete _time;
    101 
    102   msg(_("<%s> : ............ Stop Simulation\n"),name.c_str());
    103 
    104   delete in_CLOCK;
    105   delete in_NRESET;
     17      msgInformation(_("<%s> : Start Simulation ............\n"),name.c_str());
     18     
     19      Time * _time = new Time();
     20     
     21      /********************************************************
     22       * Simulation - Begin
     23       ********************************************************/
     24     
     25      // Initialisation
     26     
     27      const uint32_t seed = 0;
     28    //const uint32_t seed = static_cast<uint32_t>(time(NULL));
     29     
     30      srand(seed);
     31     
     32      SC_CYCLE(0);
     33      LABEL("Initialisation");
     34     
     35      LABEL("Reset");
     36      in_NRESET->write(0);
     37      SC_CYCLE(5);
     38      in_NRESET->write(1); 
     39     
     40      LABEL("Loop of Test");
     41     
     42      for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
     43        {
     44          LABEL("Iteration %d",iteration);
     45         
     46          SC_CYCLE(1);
     47        }
     48     
     49      /********************************************************
     50       * Simulation - End
     51       ********************************************************/
     52     
     53      TEST_OK ("");
     54     
     55      sc_stop();
     56      delete _time;
     57     
     58      msgInformation(_("<%s> : ............ Stop Simulation\n"),name.c_str());
    10659    }
    10760#endif
    108 
    109   delete _@COMPONENT;
    110 #ifdef STATISTICS
    111   delete _parameters_statistics;
    112 #endif
    11361}
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_allocation.cpp

    r83 r113  
    3030
    3131    Entity * entity = _component->set_entity (_name       
    32                                               ,"@COMPONENT"
     32                                              ,_param->_type
    3333#ifdef POSITION
    3434                                              ,COMBINATORY
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_statistics_allocation.cpp

    r82 r113  
    2020
    2121    _stat = new Stat (static_cast<std::string>(_name),
    22                       "@COMPONENT",
     22                      _param->_type,
    2323                      param_statistics);
    2424   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/Parameters.cpp

    r88 r113  
    1414#undef  FUNCTION
    1515#define FUNCTION "@COMPONENT::Parameters"
    16   Parameters::Parameters (bool is_toplevel)
     16  Parameters::Parameters (bool is_toplevel):
     17    behavioural::Parameters ("@COMPONENT")
    1718  {
    1819    log_begin(@COMPONENT,FUNCTION);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Allocation.h

    r112 r113  
    101101#define PRINT_SIZE_NUL(component,interface,signal) log_printf(TRACE,Allocation,FUNCTION,_("<%s> %s.%s.%s : size is nul."),_name.c_str(),component->get_name().c_str(),interface->get_name().c_str(),signal);
    102102#define TEST_SIGNAL(name,address) PRINT_SIGNAL_ADDRESS(name,address); TEST_PTR(address)
     103#define INSTANCE_FOREIGN_PRINT(name) log_printf(TRACE,Allocation,FUNCTION,"<%s> : %s (%s, %d)",_name.c_str(),name,__FILE__,__LINE__);
    103104
    104105// ----------------------------------------------------------------------
     
    106107// ----------------------------------------------------------------------
    107108
    108 
    109 #define __ALLOC0_SIGNAL(sig, name, type)         \
     109#define __ALLOC0_SIGNAL(sig, name, type)        \
    110110  {                                             \
    111111    sig = new type (name);                      \
     
    113113
    114114#ifdef POSITION
    115 #define ALLOC0_INTERFACE_BEGIN( name, direction, localisation, str)            \
     115#define ALLOC0_INTERFACE_BEGIN( name, direction, localisation, str)     \
    116116  INTERFACE_PRINT(name);                                                \
    117117  morpheo::behavioural::Interface_fifo * interface = _interfaces->set_interface( name, direction, localisation, str);
    118118#else
    119 #define ALLOC0_INTERFACE_BEGIN( name, direction, localisation, str)            \
     119#define ALLOC0_INTERFACE_BEGIN( name, direction, localisation, str)     \
    120120  INTERFACE_PRINT(name);                                                \
    121121  morpheo::behavioural::Interface_fifo * interface = _interfaces->set_interface( name);
     
    124124#define ALLOC0_INTERFACE_END()
    125125
    126 #define ALLOC0_VAL_ACK_IN(  sig, name, type)                             \
     126#define ALLOC0_VAL_ACK_IN(  sig, name, type)                            \
    127127  {                                                                     \
    128128    sig = interface->set_signal_valack_in (name, type);                 \
    129129  }                                                                     
    130 #define ALLOC0_VAL_ACK_OUT( sig, name, type)                             \
     130#define ALLOC0_VAL_ACK_OUT( sig, name, type)                            \
    131131  {                                                                     \
    132132    sig = interface->set_signal_valack_out(name, type);                 \
    133133  }                                                                     
    134 #define ALLOC0_VALACK_IN(     sig, type)                                 \
     134#define ALLOC0_VALACK_IN(     sig, type)                                \
    135135  {                                                                     \
    136136    sig = interface->set_signal_valack_in (type);                       \
     
    160160    }
    161161
    162 #define DELETE0_SIGNAL( sig, size)                                       \
     162#define DELETE0_SIGNAL( sig, size)                                      \
    163163  if (size > 0)                                                         \
    164164    {                                                                   \
     
    166166    }
    167167
    168 #define ALLOC0_SC_SIGNAL(  sig, name, type)                              \
    169   sc_signal<type> * sig = new sc_signal<type> (name);                   \
     168#define ALLOC0_FOREIGN_SIGNAL_IN(  sig, interface, name, type, size)    \
     169  if (size > 0)                                                         \
     170    {                                                                   \
     171      std::string str = (toString("in")+"_"+((interface!="")?(toString(interface)+"_"):toString(""))+toString(name)); \
     172      sig = new SC_IN    (type) (str.c_str());                          \
     173    }
     174
     175#define ALLOC0_FOREIGN_SIGNAL_OUT( sig, interface, name, type, size)    \
     176  if (size > 0)                                                         \
     177    {                                                                   \
     178      std::string str = (toString("out")+"_"+((interface!="")?(toString(interface)+"_"):toString(""))+toString(name)); \
     179      sig = new SC_OUT   (type) (str.c_str());                          \
     180    }
     181
     182#define DELETE0_FOREIGN_SIGNAL( sig, size) \
     183  {                                        \
     184    DELETE0_SIGNAL(sig,size);              \
     185  }
     186
     187#define INSTANCE0_FOREIGN_SIGNAL(component, sig, type, name, size)      \
     188  if (size > 0)                                                         \
     189    {                                                                   \
     190      INSTANCE_FOREIGN_PRINT(name);                                     \
     191      _component->set_sc_signal<type>(_name,name,static_cast<void*>(component->sig)); \
     192    }
     193
     194#define ALLOC0_SC_SIGNAL(  sig, name, type)                             \
     195  sig = new sc_signal<type> (name);                                     \
    170196  PRINT_SIGNAL_ADDRESS(name,sig);
    171197
    172 #define INSTANCE0_SC_SIGNAL(component, sig)                     \
     198#define INSTANCE0_SC_SIGNAL(component, sig)                    \
    173199  {                                                            \
    174200    TEST_SIGNAL(component->sig->name(),component->sig);        \
     
    177203  }
    178204
    179 #define _INSTANCE0_SC_SIGNAL(component, sig1,sig2)                       \
     205#define _INSTANCE0_SC_SIGNAL(component, sig1,sig2)                      \
    180206  {                                                                     \
    181207    TEST_SIGNAL(component->sig1->name(),component->sig1);               \
     
    185211
    186212#define DELETE0_SC_SIGNAL( sig)                  \
    187   {                                             \
    188     delete sig;                                 \
     213  {                                              \
     214    PRINT_SIGNAL_ADDRESS("",sig);                \
     215    delete sig;                                  \
    189216  }
    190217
     
    326353  }
    327354
     355#define ALLOC1_FOREIGN_SIGNAL_IN(sig, interface, name, type, size,x1)   \
     356  {                                                                     \
     357    sig = new SC_IN (type) * [x1];                                   \
     358    for (uint32_t it1=0; it1<x1; it1++)                                 \
     359      if (size > 0)                                                     \
     360        {                                                               \
     361          std::string str = (toString("in")+"_"+((interface!="")?(toString(interface)+"_"):toString(""))+toString(it1)+"_"+toString(name)); \
     362          sig [it1] = new SC_IN (type) (str.c_str());                   \
     363        }                                                               \
     364  }
     365
     366#define ALLOC1_FOREIGN_SIGNAL_OUT(sig, interface, name, type, size,x1)  \
     367  {                                                                     \
     368    sig = new SC_OUT (type) * [x1];                                     \
     369    for (uint32_t it1=0; it1<x1; it1++)                                 \
     370      if (size > 0)                                                     \
     371        {                                                               \
     372          std::string str = (toString("out")+"_"+((interface!="")?(toString(interface)+"_"):toString(""))+toString(it1)+"_"+toString(name)); \
     373          sig [it1] = new SC_OUT (type) (str.c_str());                  \
     374        }                                                               \
     375  }
     376
     377#define DELETE1_FOREIGN_SIGNAL( sig, size,x1)            \
     378  {                                                      \
     379    DELETE1_SIGNAL(sig,x1,size);                         \
     380  }
     381
    328382#define ALLOC1_SC_SIGNAL( sig, name, type, x1)                          \
    329   sc_signal<type> ** sig = new sc_signal<type> * [x1];                  \
     383  sig = new sc_signal<type> * [x1];                                     \
    330384  {                                                                     \
    331385    std::string separator="_";                                          \
     
    359413    for (uint32_t it1=0; it1<x1; it1++)                                 \
    360414      {                                                                 \
     415        PRINT_SIGNAL_ADDRESS("",sig[it1]);                         \
    361416        delete sig[it1];                                                \
    362417      }                                                                 \
     
    530585  }
    531586
     587
     588#define ALLOC2_FOREIGN_SIGNAL_IN( sig, interface, name, type, size, x1, x2) \
     589  {                                                                     \
     590    sig = new SC_IN (type) ** [x1];                                     \
     591    for (uint32_t it1=0; it1<x1; it1++)                                 \
     592      {                                                                 \
     593        sig [it1] = new SC_IN (type) * [x2];                            \
     594        for (uint32_t it2=0; it2<x2; it2++)                             \
     595          if (size > 0)                                                 \
     596            {                                                           \
     597              std::string str = (toString("in")+"_"+((interface!="")?(toString(interface)+"_"):toString(""))+toString(it1)+"_"+toString(it2)+"_"+toString(name)); \
     598              sig [it1][it2] = new SC_IN    (type) (str.c_str()); \
     599            }                                                           \
     600      }                                                                 \
     601  }
     602
     603#define ALLOC2_FOREIGN_SIGNAL_OUT( sig, interface, name, type, size, x1, x2) \
     604  {                                                                     \
     605    sig = new SC_OUT (type) ** [x1];                                    \
     606    for (uint32_t it1=0; it1<x1; it1++)                                 \
     607      {                                                                 \
     608        sig [it1] = new SC_OUT (type) * [x2];                           \
     609        for (uint32_t it2=0; it2<x2; it2++)                             \
     610          if (size > 0)                                                 \
     611            {                                                           \
     612              std::string str = (toString("out")+"_"+((interface!="")?(toString(interface)+"_"):toString(""))+toString(it1)+"_"+toString(it2)+"_"+toString(name)); \
     613              sig [it1][it2] = new SC_IN    (type) (str.c_str());       \
     614            }                                                           \
     615      }                                                                 \
     616  }
     617
     618#define DELETE2_FOREIGN_SIGNAL( sig, size,x1,x2)            \
     619  {                                                         \
     620    DELETE2_SIGNAL(sig,x1,x2,size);                         \
     621  }
     622
    532623#define ALLOC2_SC_SIGNAL( sig, name, type, x1, x2)                      \
    533   sc_signal<type> *** sig = new sc_signal<type> ** [x1];                \
     624  sig = new sc_signal<type> ** [x1];                                    \
    534625  {                                                                     \
    535626    std::string separator="_";                                          \
     
    571662        for (uint32_t it2=0; it2<x2; it2++)                             \
    572663          {                                                             \
     664            PRINT_SIGNAL_ADDRESS("",sig[it1][it2]);                     \
    573665            delete sig[it1][it2];                                       \
    574666          }                                                             \
     
    758850  }
    759851
     852#define ALLOC3_FOREIGN_SIGNAL_IN( sig, interface, name, type, size, x1, x2,x3)     \
     853  {                                                                     \
     854    sig = new SC_IN (type) *** [x1];                                    \
     855    for (uint32_t it1=0; it1<x1; it1++)                                 \
     856      {                                                                 \
     857        sig [it1] = new SC_IN (type) ** [x2];                           \
     858        for (uint32_t it2=0; it2<x2; it2++)                             \
     859          {                                                             \
     860            sig [it1][it2] = new SC_IN (type) * [x3];                   \
     861            for (uint32_t it3=0; it3<x3; it3++)                         \
     862              if (size > 0)                                             \
     863                {                                                       \
     864                  std::string str = (toString("in")+"_"+((interface!="")?(toString(interface)+"_"):toString(""))+toString(it1)+"_"+toString(it2)+"_"+toString(it3)+"_"+toString(name)); \
     865                  sig [it1][it2][it3] = new SC_IN (type) (str.c_str()); \
     866                }                                                       \
     867          }                                                             \
     868      }                                                                 \
     869  }
     870
     871#define ALLOC3_FOREIGN_SIGNAL_OUT( sig, interface, name, type, size, x1, x2,x3)    \
     872  {                                                                     \
     873    sig = new SC_OUT (type) *** [x1];                                   \
     874    for (uint32_t it1=0; it1<x1; it1++)                                 \
     875      {                                                                 \
     876        sig [it1] = new SC_OUT (type) ** [x2];                          \
     877        for (uint32_t it2=0; it2<x2; it2++)                             \
     878          {                                                             \
     879            sig [it1][it2] = new SC_OUT (type) * [x3];                  \
     880            for (uint32_t it3=0; it3<x3; it3++)                         \
     881              if (size > 0)                                             \
     882                {                                                       \
     883                  std::string str = (toString("out")+"_"+((interface!="")?(toString(interface)+"_"):toString(""))+toString(it1)+"_"+toString(it2)+"_"+toString(it3)+"_"+toString(name)); \
     884                  sig [it1][it2][it3] = new SC_OUT(type) (str.c_str()); \
     885                }                                                       \
     886          }                                                             \
     887      }                                                                 \
     888  }
     889
     890#define DELETE3_FOREIGN_SIGNAL( sig, size,x1,x2,x3)            \
     891  {                                                            \
     892    DELETE3_SIGNAL(sig,x1,x2,x3,size);                         \
     893  }
     894
    760895#define ALLOC3_SC_SIGNAL( sig, name, type, x1, x2, x3)                  \
    761   sc_signal<type> **** sig = new sc_signal<type> *** [x1];              \
     896  sig = new sc_signal<type> *** [x1];                                   \
    762897  {                                                                     \
    763898    std::string separator="_";                                          \
     
    807942            for (uint32_t it3=0; it3<x3; it3++)                         \
    808943              {                                                         \
     944                PRINT_SIGNAL_ADDRESS("",sig[it1][it2][it3]);            \
    809945                delete sig[it1][it2][it3];                              \
    810946              }                                                         \
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Component.h

    r82 r113  
    7272    public : Entity    * _entity   ;
    7373    public : Tinstance_t _instance ;
     74    public : std::string _architecture;
    7475    } Tcomponent_t;   
    7576 
     
    102103#endif
    103104                                                       ,Tinstance_t instance=INSTANCE_ALL
     105                                                       ,std::string architecture=""
    104106                                                       );
    105107
     
    116118
    117119  private   : Signal *              signal_internal   (Entity * entity_productor,
    118                                                        Signal * signal_productor);
     120                                                       Signal * signal_productor,
     121                                                       Entity * entity_consumer,
     122                                                       Signal * signal_consumer);
    119123
    120124  public    : void                  port_map          (std::string component_src ,
     
    125129  public    : bool                  test_map          (bool recursive=true);
    126130  private   : bool                  test_map          (uint32_t depth, bool recursive);
     131
     132  public    : void *                get_sc_signal     (std::string component,
     133                                                       std::string port     );
     134//   public    : void                  set_sc_signal     (std::string component,
     135//                                                     std::string port     ,
     136//                                                        void *      sc_signal);
    127137
    128138//   public    : bool                  test_equi         (bool recursive=true);
     
    141151  public    : friend std::ostream&  operator<<        (std::ostream& output_stream,
    142152                                                       morpheo::behavioural::Component & x);
     153
     154
     155#undef  FUNCTION
     156#define FUNCTION "Component::set_sc_signal"
     157  public    : template <typename T>
     158  void set_sc_signal (std::string component,
     159                      std::string port     ,
     160                      void *      sc_signal)
     161    {
     162      log_begin(Behavioural,FUNCTION);
     163     
     164      std::string name_entity = _entity->get_name();
     165     
     166      Entity * entity = find_entity(component);
     167     
     168      if (entity == NULL)
     169        throw (ERRORMORPHEO (FUNCTION,"In component \""+name_entity+"\", the component \""+component+"\" is unknow.\n"));
     170     
     171      Signal * signal = entity->find_signal (port);
     172     
     173      if (signal == NULL)
     174        throw (ERRORMORPHEO (FUNCTION,"In component \""+name_entity+"\", the component \""+component+"\" have not the signal \""+port+"\".\n"));
     175     
     176      signal->alloc<T>(sc_signal);
     177     
     178      log_end(Behavioural,FUNCTION);
     179    };
    143180  };
    144181
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Entity.h

    r82 r113  
    5858  public    : std::string           get_name          (void);
    5959  public    : std::string           get_type          (void);
     60  public    : Tusage_t              get_usage         (void);
    6061
    6162#ifdef POSITION
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface.h

    r88 r113  
    9191
    9292#ifdef SYSTEMC
     93
     94#undef  FUNCTION
     95#define FUNCTION "Interface::set_signal_clk"
    9396  public    : sc_in_clk *           set_signal_clk       (std::string     name     ,
    9497                                                          uint32_t        size     ,
    9598                                                          presence_port_t presence_port=CLOCK_VHDL_YES)
    9699    {
    97       log_printf(FUNC,Behavioural,"set_signal_clk","Begin");
     100      log_begin(Behavioural,FUNCTION);
    98101
    99102      if ((presence_port != CLOCK_VHDL_YES) and
     
    101104        throw ErrorMorpheo ("Signal \""+name+"\" is a clock, bad presence_port.");
    102105
     106      LowerCase(name);
     107
    103108      Signal    * sig  = set_signal (name, IN , size, presence_port);
    104109      sc_in_clk * port;
    105110
    106       if (_usage & USE_SYSTEMC)
     111      if (_usage & USE_SYSTEMC_INTERFACE)
    107112        {
    108113          port = new sc_in_clk (sig->_name.c_str());
     
    114119        }
    115120
    116       log_printf(FUNC,Behavioural,"set_signal_clk","End");
    117 
    118       return port;
    119     };
    120 
     121      log_end(Behavioural,FUNCTION);
     122
     123      return port;
     124    };
     125
     126#undef  FUNCTION
     127#define FUNCTION "Interface::set_signal_in"
    121128  public    : template <typename T>
    122129              sc_in <T> *           set_signal_in       (std::string     name     ,
     
    124131                                                         presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES)
    125132    {
    126       log_printf(FUNC,Behavioural,"set_signal_in","Begin");
     133      log_begin(Behavioural,FUNCTION);
    127134
    128135      if ((presence_port == CLOCK_VHDL_YES) or
     
    130137        throw ErrorMorpheo ("Signal \""+name+"\" is not a clock, bad presence_port.");
    131138
     139      LowerCase(name);
     140
    132141      Signal    * sig  = set_signal (name, IN , size, presence_port);
    133142      sc_in <T> * port;
    134143
    135       if (_usage & USE_SYSTEMC)
     144      if (_usage & USE_SYSTEMC_INTERFACE)
    136145        {
    137146          port = new sc_in <T> (sig->_name.c_str());
     
    143152        }
    144153
    145       log_printf(FUNC,Behavioural,"set_signal_in","End");
    146 
    147       return port;
    148     };
    149 
     154      log_end(Behavioural,FUNCTION);
     155
     156      return port;
     157    };
     158
     159#undef  FUNCTION
     160#define FUNCTION "Interface::set_signal_out"
    150161  public    : template <typename T>
    151162              sc_out <T> *          set_signal_out      (std::string     name     ,
     
    153164                                                         presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES)
    154165    {
    155       log_printf(FUNC,Behavioural,"set_signal_out","Begin");
     166      log_begin(Behavioural,FUNCTION);
     167
     168      LowerCase(name);
    156169
    157170      if ((presence_port == CLOCK_VHDL_YES) or
     
    162175      sc_out <T> * port;
    163176
    164       if (_usage & USE_SYSTEMC)
     177      if (_usage & USE_SYSTEMC_INTERFACE)
    165178        {
    166179          port = new sc_out <T> (sig->_name.c_str());
     
    172185        }
    173186
    174       log_printf(FUNC,Behavioural,"set_signal_out","End");
    175 
    176       return port;
    177     };
    178 
     187      log_end(Behavioural,FUNCTION);
     188
     189      return port;
     190    };
     191
     192#undef  FUNCTION
     193#define FUNCTION "Interface::set_signal_internal"
    179194  public    : template <typename T>
    180195              sc_signal <T> *       set_signal_internal (std::string   name,
    181196                                                         uint32_t size)
    182197    {
    183       log_printf(FUNC,Behavioural,"set_signal_internal","Begin");
     198      log_begin(Behavioural,FUNCTION);
     199
     200      LowerCase(name);
    184201
    185202      Signal * sig = set_signal (name, INTERNAL , size, PORT_VHDL_NO_TESTBENCH_NO);
    186203      sc_signal <T> * port;
    187204
    188       if (_usage & USE_SYSTEMC)
     205      if (_usage & USE_SYSTEMC_INTERFACE)
    189206        {
    190207          port = new sc_signal <T> (sig->_name.c_str());
     
    196213        }
    197214
    198       log_printf(FUNC,Behavioural,"set_signal_internal","End");
     215      log_end(Behavioural,FUNCTION);
    199216
    200217      return port;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Model.h

    r112 r113  
    4040  public  : model_type_t      get_type  (std::string component);
    4141  public  : debug_verbosity_t get_debug (std::string component);
     42  public  : void              print     (void);
    4243  };
    4344 
    4445}; // end namespace behavioural         
     46
     47  template<> inline std::string toString<morpheo::behavioural::model_type_t>(const morpheo::behavioural::model_type_t& x)
     48  {
     49    switch (x)
     50      {
     51      case morpheo::behavioural::MODEL_SYSTEMC : return "systemc" ; break;
     52      case morpheo::behavioural::MODEL_VHDL    : return "vhdl"    ; break;
     53      default : return ""; break;
     54      }
     55  };
    4556
    4657  template<> inline morpheo::behavioural::model_type_t fromString<morpheo::behavioural::model_type_t>(const std::string& x)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Parameters.h

    r88 r113  
    3333  class Parameters
    3434  {
     35  public   :        const std::string _type;
     36
    3537    // -----[ fields ]----------------------------------------------------
    3638  public   : static const uint32_t   _size_instruction              = 32;
     
    127129    // -----[ methods ]---------------------------------------------------
    128130  public   :                            Parameters (void);
     131  public   :                            Parameters (std::string type);
    129132  public   : virtual                   ~Parameters ();
    130133       
     
    132135  public   : virtual std::string        print       (uint32_t depth) = 0;
    133136  public   : virtual Parameters_test    msg_error   (void) = 0;
     137  public   : virtual std::string        id          (void) const {return "";}
    134138
    135139    // methods to copy depends parameters
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h

    r88 r113  
    55 * $Id$
    66 *
    7  * [ Description ]
     7 * [ Description ]
    88 *
    99 */
     
    9090  public    : type_info_t       get_type_info           (void);
    9191
     92  public    : void *            get_sc_signal           (void);
     93
    9294  public    : bool              presence_vhdl           (void);
    9395  public    : bool              presence_testbench      (void);
     
    174176      else
    175177        _type_info = UNKNOW;
    176 
     178     
    177179      log_printf(TRACE,Behavioural,FUNCTION, "Allocation of %s (%s, 0x%.8x)", _name.c_str(),toString(_type_info).c_str(), static_cast<uint32_t>(reinterpret_cast<uint64_t>(_sc_signal_map)));
    178180
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Usage.h

    r88 r113  
    22#define morpheo_behavioural_Usage_h
    33
     4#include "Common/include/Environment.h"
    45#include <stdint.h>
    56
     
    78namespace behavioural {
    89
    9   typedef uint8_t Tusage_t;
     10  typedef uint16_t Tusage_t;
    1011
    11 #  define USE_SYSTEMC               0x01
    12 #  define USE_VHDL                  0x02
    13 #  define USE_VHDL_TESTBENCH        0x04
    14 #  define USE_VHDL_TESTBENCH_ASSERT 0x08
    15 #  define USE_POSITION              0x10
    16 #  define USE_STATISTICS            0x20
    17 #  define USE_INFORMATION           0x40
    18 #  define USE_HEADER                0x80
    19 //#define USE_                      0x80
     12#  define USE_SYSTEMC               0x003
     13#  define USE_SYSTEMC_INTERFACE     0x001
     14#  define USE_SYSTEMC_BODY          0x002
     15#  define USE_VHDL                  0x004
     16#  define USE_VHDL_TESTBENCH        0x008
     17#  define USE_VHDL_TESTBENCH_ASSERT 0x010
     18#  define USE_POSITION              0x020
     19#  define USE_STATISTICS            0x040
     20//#define USE_INFORMATION           0x080
     21#  define USE_HEADER                0x100
     22#  define USE_COSIMULATION          0x200
     23//#define USE_                      0x400
    2024
    2125#  define USE_NONE                  0x00
    22 //#define USE_ALL                   0xff
    2326#  define USE_ALL                   usage_all()
    2427
    25 
     28#ifdef MODELSIM_COSIMULATION
     29  Tusage_t usage_cosimulation(Tusage_t usage);
     30#endif
    2631  Tusage_t usage_set         (Tusage_t usage, Tusage_t flag);
    2732  Tusage_t usage_unset       (Tusage_t usage, Tusage_t flag);
    2833  bool     usage_is_set      (Tusage_t usage, Tusage_t flag);
    29   void    usage_environment (Tusage_t usage);
     34  Tusage_t usage_environment (Tusage_t usage);
    3035  Tusage_t usage_all         (void);
    3136
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Version.h

    r112 r113  
    1010#define MORPHEO_MAJOR_VERSION "0"
    1111#define MORPHEO_MINOR_VERSION "2"
    12 #define MORPHEO_REVISION      "112"
     12#define MORPHEO_REVISION      "113"
    1313#define MORPHEO_CODENAME      "Castor"
    1414
    15 #define MORPHEO_DATE_DAY      "18
    16 #define MORPHEO_DATE_MONTH    "03"
     15#define MORPHEO_DATE_DAY      "14
     16#define MORPHEO_DATE_MONTH    "04"
    1717#define MORPHEO_DATE_YEAR     "2009"
    1818
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h

    r98 r113  
    77 * $Id$
    88 *
    9  * [ Description ]
     9 * [ Description ]
    1010 *
    1111 */
     
    1414#include <iostream>
    1515#include <list>
     16#include <map>
    1617#include "Common/include/Environment.h"
    1718#include "Behavioural/include/Direction.h"
     
    2324  namespace behavioural          {
    2425
     26#define VHDL_EXTENSION ".vhdl"
     27
     28    typedef enum
     29      {
     30        VHDL_SEVERITY_NOTE   ,
     31        VHDL_SEVERITY_WARNING,
     32        VHDL_SEVERITY_ERROR  ,
     33        VHDL_SEVERITY_FAILURE
     34      } vhdl_severity_t;
     35   
    2536    std::string  std_logic        (uint32_t size);
    2637    std::string  std_logic_conv   (uint32_t size, std::string   value);
     
    3748    class Vhdl
    3849    {
    39       // -----[ fields ]----------------------------------------------------
    40     private   : const std::string     _name                         ;
    41 
    42     private   : std::list<std::string>     _list_library_work            ;
    43     private   : std::list<std::string>     _list_signal                  ;
    44     private   : std::list<std::string>     _list_type                    ;
    45     private   : std::list<std::string>     _list_alias                   ;
    46     private   : std::list<std::string>     _list_port                    ;
    47     private   : std::list<std::string>     _list_body                    ;
    48 
    49       // -----[ methods ]---------------------------------------------------
    50     public    :                  Vhdl                        (std::string name);
     50      typedef struct
     51      {
     52        std::list<std::string> _list_signal;
     53        std::list<std::string> _list_type  ;
     54        std::list<std::string> _list_alias ;
     55        std::list<std::string> _list_body  ;
     56        std::list<std::string> _list_debug ;
     57      } vhdl_architecture_t;
     58
     59      // -----[ fields ]----------------------------------------------------
     60    private   : const std::string                         _name;
     61    private   : const std::string                         _id;
     62
     63    private   : std::list<std::string>                    _list_library;
     64      // Entity
     65//  private   : std::string                               _port_clock;
     66    private   : std::list<std::string>                    _list_port;
     67      // Architecture
     68    public    : const std::string                         _name_architecture_default;
     69    private   :       std::string                         _name_architecture;
     70    private   : std::map<std::string,vhdl_architecture_t> _architecture;
     71
     72      // -----[ methods ]---------------------------------------------------
     73    public    :                  Vhdl                        (std::string name,
     74                                                              std::string id="");
    5175    public    :                  ~Vhdl                       ();
    5276
     
    6488    private   : std::string      get_model                   (uint32_t    depth                 ,
    6589                                                              std::string filename              ,
    66                                                               std::string entity_name           ,
    67                                                               std::string architecture_name     );
     90                                                              std::string entity_name           );
    6891    private   : std::string      get_header                  (uint32_t    depth                 ,
    6992                                                              std::string filename              );
    7093    private   : std::string      get_entity                  (uint32_t    depth                 ,
    7194                                                              std::string name                  );
     95    private   : void             test_architecture           (void);
     96    private   : std::string      test_architecture           (std::string name                  );
     97    public    : std::string      set_architecture            (std::string name                  );
    7298    private   : std::string      get_architecture            (uint32_t    depth                 ,
    73                                                               std::string name                  ,
    7499                                                              std::string entity_name           );
     100    private   : std::string      get_configuration           (uint32_t    depth                 ,
     101                                                              std::string entity_name           ,
     102                                                              std::string configuration_name    );
    75103    private   : std::string      get_component               (uint32_t    depth                 ,
    76104                                                              std::string name                  );
     
    83111                                                              direction_t direction             ,
    84112                                                              uint32_t    size                  );
     113//  public    : void             set_port_clock              (std::string name                  );
    85114    private   : std::string      get_signal                  (uint32_t    depth                 );
    86115    public    : void             set_signal                  (std::string name                  ,
     
    136165    public    : void             set_body_component          (std::string  name_instance        ,
    137166                                                              std::string  name_component       ,
     167                                                              std::string  name_architecture    ,
     168                                                              std::string  name_package         ,
    138169                                                              std::list<std::string>   list_port_map);
    139170    public    : void             set_body_component_port_map (std::list<std::string> & list_port_map,
     
    147178                                                              std::string  text                 );
    148179
    149     private   : std::string      get_library_ieee            (uint32_t     depth                );
    150     private   : std::string      get_library_work            (uint32_t     depth                );
     180    public    : void             set_debug                   (std::string  condition            ,
     181                                                              std::string  text                 ,
     182                                                              vhdl_severity_t severity = VHDL_SEVERITY_NOTE);
     183    private   : std::string      get_debug                   (uint32_t     depth                );
     184
     185    private   : std::string      get_library                 (uint32_t     depth                );
     186    private   : std::string      get_library_default         (uint32_t     depth                );
     187    private   : void             set_library_default         (void                              );
     188    public    : void             set_library                 (std::string  library_name         ,
     189                                                              std::string  package_name         ,
     190                                                              std::string  declarative_unit="all");
    151191    public    : void             set_library_work            (std::string  package_name         );
    152192
     
    154194    };
    155195
     196    std::string vhdl_get_id (std::string model_name);
     197
    156198  }; // end namespace behavioural         
     199
     200  template<> inline std::string toString<morpheo::behavioural::vhdl_severity_t>(const morpheo::behavioural::vhdl_severity_t& x)
     201  {
     202    switch (x)
     203      {
     204      case morpheo::behavioural::VHDL_SEVERITY_NOTE    : return "note"   ; break;
     205      case morpheo::behavioural::VHDL_SEVERITY_WARNING : return "warning"; break;
     206      case morpheo::behavioural::VHDL_SEVERITY_ERROR   : return "error"  ; break;
     207      case morpheo::behavioural::VHDL_SEVERITY_FAILURE : return "failure"; break;
     208      default : return ""; break;
     209      }
     210  };
     211
    157212}; // end namespace morpheo             
    158213
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component.cpp

    r81 r113  
    1515  {
    1616    log_printf(FUNC,Behavioural,"Component::Component","Begin");
     17    _entity = NULL;
    1718    _list_component = new std::list<Tcomponent_t *>;
    1819    log_printf(FUNC,Behavioural,"Component::Component","End");
     
    3132  {
    3233    log_printf(FUNC,Behavioural,"Component::~Component","Begin");
    33     delete _entity;
     34    if (_entity != NULL)
     35      delete _entity;
     36    while (not _list_component->empty())
     37      {
     38        delete _list_component->front();
     39        _list_component->pop_front();
     40      }
    3441    delete _list_component;
    3542    log_printf(FUNC,Behavioural,"Component::~Component","End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_port_map.cpp

    r88 r113  
    8080        Signal * signal_productor;
    8181        Entity * entity_productor;
     82        Signal * signal_consumer ;
     83        Entity * entity_consumer ;
    8284
    8385        bool     src_is_productor = (signal_src->get_direction() == OUT);
     
    8587        if (src_is_productor == true)
    8688          {
    87             signal_productor = signal_src;
    88             entity_productor = entity_src;
     89            signal_productor = signal_src ;
     90            entity_productor = entity_src ;
     91            signal_consumer  = signal_dest;
     92            entity_consumer  = entity_dest;
    8993          }
    9094        else
     
    9296            signal_productor = signal_dest;
    9397            entity_productor = entity_dest;
     98            signal_consumer  = signal_src ;
     99            entity_consumer  = entity_src ;
    94100          }
    95101
    96102        // Create internal signal
    97         signal_dest= signal_internal (entity_productor, signal_productor);
     103        signal_dest= signal_internal (entity_productor,
     104                                      signal_productor,
     105                                      entity_consumer ,
     106                                      signal_consumer );
    98107        signal_dest->set_size_max(signal_src->get_size());
    99108      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_set_component.cpp

    r82 r113  
    22 * $Id$
    33 *
    4  * [ Description ]
     4 * [ Description ]
    55 *
    66 */
     
    2121#endif
    2222                                 ,Tinstance_t instance
     23                                 ,std::string architecture
    2324                                 )
    2425  {
     
    2930    Tcomponent_t * entry = new Tcomponent_t;
    3031   
    31     entry->_component= component;
    32     entry->_instance = instance;
    33     entry->_entity   = entity;
     32    entry->_component    = component;
     33    entry->_instance     = instance;
     34    entry->_architecture = architecture;
     35    entry->_entity       = entity;
    3436
    3537    _list_component->push_back(entry);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_set_entity.cpp

    r81 r113  
    1313#undef  FUNCTION
    1414#define FUNCTION "Component::set_entity"
    15   Entity * Component::set_entity (std::string        name   
    16                                   ,std::string        type   
     15  Entity * Component::set_entity (std::string  name
     16                                  ,std::string type
    1717#ifdef POSITION
    18                                   ,schema_t      schema
     18                                  ,schema_t    schema
    1919#endif
    2020                                  )
    2121  {
    2222    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     23
     24    if (_entity != NULL)
     25      throw ERRORMORPHEO(FUNCTION,_("Entity is already allocated.\n"));
    2326   
    2427    Entity * entity = new Entity (name   
     
    2932                                  ,_usage
    3033                                  );
     34
    3135    _entity = entity;
    3236   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_signal_internal.cpp

    r81 r113  
    22 * $Id$
    33 *
    4  * [ Description ]
     4 * [ Description ]
    55 *
    66 */
     
    1414#define FUNCTION "Component::signal_internal"
    1515  Signal * Component::signal_internal (Entity * entity_productor,
    16                                        Signal * signal_productor)
     16                                       Signal * signal_productor,
     17                                       Entity * entity_consumer,
     18                                       Signal * signal_consumer)
    1719  {
    1820    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    1921
     22    bool productor_is_cosimulation = usage_is_set(entity_productor->get_usage(),USE_COSIMULATION);
     23    bool consumer_is_cosimulation  = usage_is_set(entity_consumer ->get_usage(),USE_COSIMULATION);
     24    bool is_cosimulation           = consumer_is_cosimulation or productor_is_cosimulation;
     25    if (productor_is_cosimulation and consumer_is_cosimulation)
     26      throw ERRORMORPHEO (FUNCTION,toString(_("Entity \"%s\" and Entity \"%s\" use both cosimulation. It's not supported.\n"),entity_productor->get_name().c_str(),entity_consumer->get_name().c_str()));
     27   
    2028    // create name of internal's signal
    21     std::string str_entity = entity_productor->get_name();
    22     std::string str_signal = signal_productor->get_name();
     29    Entity * entity = (consumer_is_cosimulation)?entity_consumer:entity_productor;
     30    Signal * signal = (consumer_is_cosimulation)?signal_consumer:signal_productor;
     31
     32    std::string str_entity = entity->get_name();
     33    std::string str_signal = signal->get_name();
    2334   
    24     UpperCase (str_entity);
    25     UpperCase (str_signal);
     35//     UpperCase (str_entity);
     36//     UpperCase (str_signal);
    2637   
    27     std::string name_internal = "internal_"+str_entity+"_"+str_signal;
     38    std::string name_internal = (is_cosimulation)?str_signal:("internal_"+str_entity+"_"+str_signal);
    2839   
    2940    // test if internal's signal exist ... else, create
     
    3849       
    3950        if (interface == NULL)
    40           throw (ErrorMorpheo ("<Component::port_map> Component \""+_entity->get_name()+"\", doesn't have an interface \"\"."));
    41        
    42         std::string signame = entity_productor->get_name()+"_"+signal_productor->get_name();
    43        
     51          throw ERRORMORPHEO (FUNCTION,toString(_("Component \"%s\", doesn't have an interface \"\".\n"),_entity->get_name().c_str()));
     52
     53//      std::string signame   = entity->get_name()+"_"+signal->get_name();
     54        std::string signame   = name_internal;
     55        type_info_t type_info = signal->get_type_info();
     56
    4457        // Signal's creation
    45         switch (signal_productor->get_type_info())
     58        switch (type_info)
    4659          {
    47           case BOOL     :
    48             {
    49               interface->set_signal_internal<bool    >(signame, signal_productor->get_size());
    50               break;
    51             }
    52           case UINT8_T  :
    53             {
    54               interface->set_signal_internal<uint8_t >(signame, signal_productor->get_size());
    55               break;
    56             }
    57           case UINT16_T :
    58             {
    59               interface->set_signal_internal<uint16_t>(signame, signal_productor->get_size());
    60               break;
    61             }
    62           case UINT32_T :
    63             {
    64               interface->set_signal_internal<uint32_t>(signame, signal_productor->get_size());
    65               break;
    66             }
    67           case UINT64_T :
    68             {
    69               interface->set_signal_internal<uint64_t>(signame, signal_productor->get_size());
    70               break;
    71             }
    72           default       :
    73             throw (ErrorMorpheo ("Signal \""+name_internal+"\" : type unknow."));
     60          case BOOL     : interface->set_signal_internal<bool    >(signame, signal->get_size()); break;
     61          case UINT8_T  : interface->set_signal_internal<uint8_t >(signame, signal->get_size()); break;
     62          case UINT16_T : interface->set_signal_internal<uint16_t>(signame, signal->get_size()); break;
     63          case UINT32_T : interface->set_signal_internal<uint32_t>(signame, signal->get_size()); break;
     64          case UINT64_T : interface->set_signal_internal<uint64_t>(signame, signal->get_size()); break;
     65          default       :throw (ErrorMorpheo ("Signal \""+name_internal+"\" : type unknow."));
    7466          }
    7567       
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_vhdl_instance.cpp

    r95 r113  
    9292        while (i != list_component->end())
    9393          {
    94             Entity *    entity   = (*i)->_entity;
    95             Tinstance_t instance = (*i)->_instance;
     94            Entity *    entity       = (*i)->_entity;
     95            Tinstance_t instance     = (*i)->_instance;
     96            std::string architecture = (*i)->_architecture;
     97            std::string package      = "work";
    9698           
    9799            if (instance & INSTANCE_LIBRARY)
     
    176178                    }
    177179                }
    178               vhdl->set_body_component ("instance_"+entity->get_name(),entity->get_name(),list_port_map);
     180              vhdl->set_body_component ("instance_"+entity->get_name(),
     181                                        entity->get_name(),
     182                                        architecture,
     183                                        package,
     184                                        list_port_map);
    179185             
    180186            }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface.cpp

    r112 r113  
    7373         it != _list_signal->end();
    7474         ++it)
    75       delete (*it);
     75      {
     76        if ((_usage & USE_SYSTEMC) and
     77            ((*it)->get_direction() == INTERNAL))
     78          delete (*it)->get_sc_signal();
     79        delete (*it);
     80      }
    7681   
    7782    delete _list_signal;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_testbench_assert.cpp

    r94 r113  
    3434          while (i != _list_cycle->end())
    3535            {
    36               vhdl->set_body("assert not (("+counter_name+" = "+toString(*i)+" and "+test_name+" = '1')) report \"***** <"+_name+"> Test number "+toString(j)+" is OK     *****\" severity NOTE;");
    37               vhdl->set_body("assert not (("+counter_name+" = "+toString(*i)+" and "+test_name+" = '0')) report \"@@@@@ <"+_name+"> Test number "+toString(j)+" is KO !!! @@@@@\" severity NOTE;");
     36              vhdl->set_body("assert not (("+counter_name+" = "+toString(*i)+" and "+test_name+" = '1')) report \"***** <"+_name+"> Test number "+toString(j)+" is OK     *****\" severity "+toString(VHDL_SEVERITY_NOTE)+";");
     37              vhdl->set_body("assert not (("+counter_name+" = "+toString(*i)+" and "+test_name+" = '0')) report \"@@@@@ <"+_name+"> Test number "+toString(j)+" is KO !!! @@@@@\" severity "+toString(VHDL_SEVERITY_NOTE)+";");
    3838              j++;
    3939              ++i;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_testbench_cycle.cpp

    r81 r113  
    99#include "Behavioural/include/Interface_fifo.h"
    1010#include "Behavioural/include/Entity.h"
     11#include "Common/include/Systemc.h"
    1112
    1213namespace morpheo              {
     
    1819
    1920    // note : if defined(VHDL_TESTBENCH) then defined(SYSTEMC)
    20     _list_cycle->push_back(static_cast<uint32_t>(sc_simulation_time()));
     21    _list_cycle->push_back(static_cast<uint32_t>(simulation_cycle()));
    2122
    2223    log_printf(FUNC,Behavioural,"testbench_cycle","End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_find_signal.cpp

    r81 r113  
    1515  {
    1616    log_printf(FUNC,Behavioural,"find_signal","Begin");
     17
     18    LowerCase(name);
    1719
    1820    std::list<Signal*>::iterator i   = _list_signal->begin();
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_port.cpp

    r81 r113  
    2626          }
    2727      }
     28
    2829    log_printf(FUNC,Behavioural,"set_port (Vhdl)","End");
    2930  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_signal.cpp

    r112 r113  
    1111namespace behavioural          {
    1212
     13#undef  FUNCTION
     14#define FUNCTION "Interface::set_signal"
    1315  Signal * Interface::set_signal (std::string     name     ,
    1416                                  direction_t     direction,
     
    1618                                  presence_port_t presence_port)
    1719  {
    18     log_printf(FUNC,Behavioural,"set_signal","Begin");
     20    log_begin(Behavioural,FUNCTION);
    1921
    2022    std::string signame = signal_name(_name, name, direction);
     
    2426    _list_signal->push_back (sig);
    2527
    26     log_printf(FUNC,Behavioural,"set_signal","End");
     28    log_end(Behavioural,FUNCTION);
    2729
    2830    return sig;
     
    3638  void Interface::set_signal (Vhdl * & vhdl)
    3739  {
    38     log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     40    log_begin(Behavioural,FUNCTION);
    3941    if (not _list_signal->empty())
    4042      {
     
    4749          }
    4850      }
    49     log_printf(FUNC,Behavioural,FUNCTION,"End");
     51    log_end(Behavioural,FUNCTION);
    5052  };
    5153#  endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_signal_name.cpp

    r81 r113  
    1717    log_printf(FUNC,Behavioural,"signal_name","Begin");
    1818
    19     std::string str_direction = toString(direction);
     19    std::string str_direction = (direction==INTERNAL)?"":toString(direction);
    2020    std::string str_interface = name_interface;
    2121    std::string str_signal    = name_signal;
    2222
    23     LowerCase(str_direction);   
    24     UpperCase(str_interface);
    25     UpperCase(str_signal   );
     23//     LowerCase(str_direction);   
     24//     LowerCase(str_interface);
     25//     LowerCase(str_signal   );
    2626   
    27     std::string signame = str_direction;
     27    std::string signame = "";
     28    bool need_underscore = false;
     29
     30    if (str_direction != "")
     31      {
     32        signame +=                            str_direction;
     33        need_underscore = true;
     34      }
    2835    if (str_interface != "")
    29       signame += "_"+str_interface;
    30     if (str_signal    != "")
    31       signame += "_"+str_signal;
     36      {
     37        signame += ((need_underscore)?"_":"")+str_interface;
     38        need_underscore = true;
     39      }
     40    if (str_signal != "")
     41      {
     42        signame += ((need_underscore)?"_":"")+str_signal;
     43//      need_underscore = true;
     44      }
    3245
    3346    log_printf(FUNC,Behavioural,"signal_name","End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces.cpp

    r112 r113  
    1111namespace behavioural          {
    1212
    13   Interfaces::Interfaces  (std::string   name,
     13  Interfaces::Interfaces  (std::string name,
    1414                           Tusage_t usage):
    1515    _name  (name),
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_port.cpp

    r81 r113  
    2727            ++i;
    2828          }
     29
     30//         Signal * clock = get_clock();
     31//         if (clock != NULL)
     32//           vhdl->set_port_clock (clock->get_name());
    2933      }
     34
    3035    log_printf(FUNC,Behavioural,FUNCTION,"End");
    3136  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_testbench_generate_file.cpp

    r94 r113  
    6666    vhdl->set_body("");
    6767    vhdl->set_body("-- if the systemC simulate have multiple reset, we make the last");
    68     vhdl->set_body(reset_name+" <= '1' after 150 ns;");   
     68    vhdl->set_body(reset_name+" <= '1' after "+toString(2.*VHDL_TIME_PERIOD)+" "+toString(VHDL_TIME_UNIT)+";");   
    6969
    7070    vhdl->set_body("");
     
    7373    vhdl->set_body("------------------------------------------------------");
    7474    vhdl->set_body("");
    75     vhdl->set_body(clock_name+" <= not "+clock_name+" after 50 ns;");
     75    vhdl->set_body(clock_name+" <= not "+clock_name+" after "+toString(VHDL_TIME_PERIOD/2.)+" "+toString(VHDL_TIME_UNIT)+";");
    7676    vhdl->set_body("");
    7777    vhdl->set_body("process ("+clock_name+")");
     
    8989#ifdef VHDL_TESTBENCH_ASSERT
    9090    for (uint32_t cpt=0; cpt<=cycle; cpt++)
    91       vhdl->set_body("\t\t\tassert not ("+counter+" = "+toString(cpt)+") report \"===== Test number "+toString(cpt)+" =====\" severity NOTE;");
     91      vhdl->set_body("\t\t\tassert not ("+counter+" = "+toString(cpt)+") report \"===== Test number "+toString(cpt)+" =====\" severity "+toString(VHDL_SEVERITY_NOTE)+";");
    9292
    9393    for (std::list<Interface_fifo*>::iterator it=_list_interface->begin();
     
    106106
    107107    vhdl->set_body("");
    108     vhdl->set_body("\t\t\tassert not ("+counter+" >= "+toString(cycle)+") report \"Test OK\" severity FAILURE;");
    109     vhdl->set_body("\t\t\tassert not ("+test_name+" = '0') report \"Test KO\" severity FAILURE;");
     108    vhdl->set_body("\t\t\tassert not ("+counter+" >= "+toString(cycle)+") report \"Test OK\" severity "+toString(VHDL_SEVERITY_FAILURE)+";");
     109    vhdl->set_body("\t\t\tassert not ("+test_name+" = '0') report \"Test KO\" severity "+toString(VHDL_SEVERITY_FAILURE)+";");
    110110    vhdl->set_body("\t\tend if;");
    111111    vhdl->set_body("\tend if;");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Model_set_model.cpp

    r112 r113  
    1212
    1313#undef  FUNCTION
    14 #define FUNCTION "Model::get_type"
     14#define FUNCTION "Model::set_model"
    1515  void Model::set_model (std::string component, model_type_t type, debug_verbosity_t debug)
    1616  {
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Parameters.cpp

    r81 r113  
    1313#undef  FUNCTION
    1414#define FUNCTION "Parameters::Parameters"
    15   Parameters::Parameters  (void)
     15  Parameters::Parameters  (void) :
     16    _type ("")
     17  {
     18    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     19    log_printf(FUNC,Behavioural,FUNCTION,"End");
     20  };
     21
     22#undef  FUNCTION
     23#define FUNCTION "Parameters::Parameters"
     24  Parameters::Parameters  (std::string type) :
     25    _type (type)
    1626  {
    1727    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Parameters_test.cpp

    r88 r113  
    2020    Parameters_test x = msg_error();
    2121   
    22     std::cerr << x.print();
     22    msg("%s",x.print().c_str());
    2323
    2424    if (x.have_error())
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp

    r81 r113  
    1111namespace behavioural          {
    1212
    13   Signal::Signal  (std::string          name         ,
     13  Signal::Signal  (std::string     name         ,
    1414                   direction_t     direction    ,
    1515                   uint32_t        size         ,
     
    2020  {
    2121    log_printf(FUNC,Behavioural,"Signal","Begin");
    22     _size                     = size;
     22
    2323    _is_allocate              = false;
    2424    _is_map_as_component_src  = false;
     
    3333    _list_value          = new std::list<std::string>;
    3434#endif
     35    set_size(size);
    3536   
    3637    if (_size == 0)
    3738      throw ERRORMORPHEO(FUNCTION,"Size of signal '"+_name+"' is nul");
    38 
    3939
    4040    log_printf(FUNC,Behavioural,"Signal","End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_size.cpp

    r81 r113  
    77
    88#include "Behavioural/include/Signal.h"
    9 
     9#include "Common/include/Environment.h"
    1010
    1111namespace morpheo              {
     
    1818    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    1919    uint32_t _return = _size;
     20
     21#ifdef MODELSIM_COSIMULATION
     22    switch (_type_info)
     23      {
     24      case BOOL     : _return =  1; break;
     25      case UINT8_T  : _return =  8; break;
     26      case UINT16_T : _return = 16; break;
     27      case UINT32_T : _return = 32; break;
     28      case UINT64_T : _return = 64; break;
     29      default       : break;
     30      }
     31#endif
     32
    2033    log_printf(FUNC,Behavioural,FUNCTION,"End");
    2134
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_link.cpp

    r88 r113  
    22 * $Id$
    33 *
    4  * [ Description ]
     4 * [ Description ]
    55 *
    66 */
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_presence_testbench.cpp

    r81 r113  
    1313
    1414#undef  FUNCTION
    15 #define FUNCTION "Signal::presence_vhdl"
    16   bool Signal::presence_vhdl (void)
     15#define FUNCTION "Signal::presence_testbench"
     16  bool Signal::presence_testbench (void)
    1717  {
    1818    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_set_port.cpp

    r81 r113  
    2121        (_presence_port == CLOCK_VHDL_YES)              or
    2222        (_presence_port == RESET_VHDL_YES))
    23       vhdl->set_port (_name,_direction,_size);
     23      vhdl->set_port (_name,_direction,get_size());
    2424
    2525    log_printf(FUNC,Behavioural,"set_port (Vhdl)","End");
     
    3838//      or (_presence_port == RESET_VHDL_NO )
    3939        )
    40       vhdl->set_signal (_name        ,_size);
     40      vhdl->set_signal (_name        ,get_size());
    4141
    4242    if (_direction == OUT)
    43       vhdl->set_signal (_name+"_test",_size);
     43      vhdl->set_signal (_name+"_test",get_size());
    4444
    4545    log_printf(FUNC,Behavioural,"set_signal (Vhdl)","End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_set_size.cpp

    r81 r113  
    1818    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    1919    _size = size;
     20
    2021    log_printf(FUNC,Behavioural,FUNCTION,"End");
    2122  };
     
    2728    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    2829    if (size > _size)
    29       _size = size;
     30      set_size(size);
    3031    log_printf(FUNC,Behavioural,FUNCTION,"End");
    3132  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_testbench.cpp

    r81 r113  
    4444              switch (_direction)
    4545                {
    46                 case IN    : {str =             toBase2 (value,_size); break;}
    47                 case OUT   : {str =             toBase2 (value,_size); break;}
     46                case IN    : {str =             toBase2 (value,get_size()); break;}
     47                case OUT   : {str =             toBase2 (value,get_size()); break;}
    4848                default    : {break;}
    4949                }
     
    5656              switch (_direction)
    5757                {
    58                 case IN    : {str =             toBase2 (value,_size); break;}
    59                 case OUT   : {str =             toBase2 (value,_size); break;}
     58                case IN    : {str =             toBase2 (value,get_size()); break;}
     59                case OUT   : {str =             toBase2 (value,get_size()); break;}
    6060                default    : {break;}           
    6161                }
     
    6868              switch (_direction)
    6969                {
    70                 case IN    : {str =             toBase2 (value,_size); break;}
    71                 case OUT   : {str =             toBase2 (value,_size); break;}
     70                case IN    : {str =             toBase2 (value,get_size()); break;}
     71                case OUT   : {str =             toBase2 (value,get_size()); break;}
    7272                default    : {break;}
    7373                }
     
    8080              switch (_direction)
    8181                {
    82                 case IN    : {str =             toBase2 (value,_size); break;}
    83                 case OUT   : {str =             toBase2 (value,_size); break;}
     82                case IN    : {str =             toBase2 (value,get_size()); break;}
     83                case OUT   : {str =             toBase2 (value,get_size()); break;}
    8484                default    : {break;}
    8585                }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_testbench_body.cpp

    r81 r113  
    2525        {
    2626          std::string separator;
    27           if (_size == 1)
     27          if (get_size() == 1)
    2828            separator = "\'";
    2929          else
     
    4848            }
    4949         
    50           if (_size == 1)
     50          if (get_size() == 1)
    5151            vhdl->set_body ("\t'0' when others;");
    5252          else
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Simulation_test_end.cpp

    r110 r113  
    88
    99#include "Behavioural/include/Simulation.h"
     10#include "Common/include/Systemc.h"
    1011
    1112namespace morpheo              {
     
    1415  bool simulation_test_end (void)
    1516  {
    16     msg("##########[ cycle %d ]\n",static_cast<uint32_t>(sc_simulation_time()));
     17    msg("##########[ cycle %d ]\n",static_cast<uint32_t>(simulation_cycle()));
    1718
    1819    // Test if a stop condition is activate
     
    2627
    2728    if (_simulation_nb_cycle != 0)
    28       end_cycle = (_simulation_nb_cycle <= sc_simulation_time());
     29      end_cycle = (_simulation_nb_cycle <= simulation_cycle());
    2930    else
    3031      end_cycle = true;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Stat_end_cycle.cpp

    r81 r113  
    11#ifdef STATISTICS
    22#include "Behavioural/include/Stat.h"
     3#include "Common/include/Systemc.h"
    34
    45namespace morpheo {
     
    67  void Stat::end_cycle (void)
    78  {
    8     cycle_t _cycle_sum = sc_simulation_time();
     9    cycle_t _cycle_sum = simulation_cycle();
    910
    1011    if (_cycle_sum >= _nb_cycle_before_begin)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Stat_generate_file.cpp

    r88 r113  
    33#include "Behavioural/include/Version.h"
    44#include "Common/include/Environment.h"
     5#include "Common/include/Systemc.h"
    56
    67namespace morpheo {
     
    1314    std::string body = print(1);
    1415
    15     cycle_t _cycle_sum = sc_simulation_time();
     16    cycle_t _cycle_sum = simulation_cycle();
    1617
    1718    morpheo::behavioural::XML * xml = new morpheo::behavioural::XML (_name_instance);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Stat_print.cpp

    r88 r113  
    11#ifdef STATISTICS
    22#include "Behavioural/include/Stat.h"
     3#include "Common/include/Systemc.h"
    34
    45namespace morpheo {
     
    1213    end_simulation();
    1314
    14     cycle_t _cycle_sum = sc_simulation_time();
     15    cycle_t _cycle_sum = simulation_cycle();
    1516
    1617    morpheo::behavioural::XML xml (_name_instance);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Usage.cpp

    r88 r113  
    55namespace morpheo {
    66namespace behavioural {
     7
     8#ifdef MODELSIM_COSIMULATION
     9  Tusage_t usage_cosimulation(Tusage_t usage)
     10  {
     11    Tusage_t _return = usage;
     12//  _return = usage_unset(_return,USE_SYSTEMC              );
     13    _return = usage_unset(_return,USE_SYSTEMC_INTERFACE    );
     14    _return = usage_unset(_return,USE_SYSTEMC_BODY         );
     15    _return = usage_unset(_return,USE_VHDL                 );
     16    _return = usage_unset(_return,USE_VHDL_TESTBENCH       );
     17    _return = usage_unset(_return,USE_VHDL_TESTBENCH_ASSERT);
     18//  _return = usage_unset(_return,USE_POSITION             );
     19    _return = usage_unset(_return,USE_STATISTICS           );
     20//  _return = usage_unset(_return,USE_INFORMATION          );
     21//  _return = usage_unset(_return,USE_HEADER               );
     22    _return = usage_set  (_return,USE_COSIMULATION         );
     23   
     24    return _return;
     25  }
     26#endif
    727
    828  Tusage_t usage_set         (Tusage_t usage, Tusage_t flag)
     
    2242#undef  FUNCTION
    2343#define FUNCTION "usage_environment"
    24   void    usage_environment (Tusage_t usage)
     44  Tusage_t usage_environment (Tusage_t usage)
    2545  {
    2646#ifndef SYSTEMC
    27     if (usage_is_set(usage,USE_SYSTEMC))
    28       throw ERRORMORPHEO(FUNCTION,_("Component use the flag \"USE_SYSTEMC\", but the macro's compiler \"SYSTEMC\" is unset.\n"));
     47    if (usage_is_set(usage,USE_SYSTEMC_INTERFACE))
     48      throw ERRORMORPHEO(FUNCTION,_("Component use the flag \"USE_SYSTEMC_INTERFACE\", but the macro's compiler \"SYSTEMC\" is unset.\n"));
     49    if (usage_is_set(usage,USE_SYSTEMC_BODY))
     50      throw ERRORMORPHEO(FUNCTION,_("Component use the flag \"USE_SYSTEMC_BODY\", but the macro's compiler \"SYSTEMC\" is unset.\n"));
    2951#endif
    3052#ifndef VHDL
     
    4870      throw ERRORMORPHEO(FUNCTION,_("Component use the flag \"USE_STATISTICS\", but the macro's compiler \"STATISTICS\" is unset.\n"));
    4971#endif
    50 #ifndef INFORMATION
    51     if (usage_is_set(usage,USE_INFORMATION))
    52       throw ERRORMORPHEO(FUNCTION,_("Component use the flag \"USE_INFORMATION\", but the macro's compiler \"INFORMATION\" is unset.\n"));
    53 #endif
     72// #ifndef INFORMATION
     73//     if (usage_is_set(usage,USE_INFORMATION))
     74//       throw ERRORMORPHEO(FUNCTION,_("Component use the flag \"USE_INFORMATION\", but the macro's compiler \"INFORMATION\" is unset.\n"));
     75// #endif
    5476
    5577#ifndef DEBUG
    5678#endif
    5779
    58     if (usage_is_set(usage,USE_STATISTICS) and not usage_is_set(usage,USE_SYSTEMC))
    59       throw ERRORMORPHEO(FUNCTION,_("Usage flags conflit : to use the statistics, you must set flag USE_SYSTEMC\n"));
     80    if (usage_is_set(usage,USE_STATISTICS) and not usage_is_set(usage,USE_SYSTEMC_BODY))
     81      throw ERRORMORPHEO(FUNCTION,_("Usage flags conflit : to use the statistics, you must set flag USE_SYSTEMC_BODY\n"));
    6082   
    61     if (usage_is_set(usage,USE_INFORMATION) and not usage_is_set(usage,USE_STATISTICS))
    62       throw ERRORMORPHEO(FUNCTION,_("Usage flags conflit : to use the information, you must set flag USE_STATISTICS\n"));
     83//     if (usage_is_set(usage,USE_INFORMATION) and not usage_is_set(usage,USE_STATISTICS))
     84//       throw ERRORMORPHEO(FUNCTION,_("Usage flags conflit : to use the information, you must set flag USE_STATISTICS\n"));
    6385   
    64     if (usage_is_set(usage,USE_VHDL_TESTBENCH) and not usage_is_set(usage,USE_SYSTEMC))
    65       throw ERRORMORPHEO(FUNCTION,_("Usage flags conflit : to use the vhdl's test bench, you must set flag USE_SYSTEMC\n"));
     86    if (usage_is_set(usage,USE_VHDL_TESTBENCH) and not usage_is_set(usage,USE_SYSTEMC_BODY))
     87      throw ERRORMORPHEO(FUNCTION,_("Usage flags conflit : to use the vhdl's test bench, you must set flag USE_SYSTEMC_BODY\n"));
    6688   
    6789    if (usage_is_set(usage,USE_VHDL_TESTBENCH) and not usage_is_set(usage,USE_VHDL))
     
    7092    if (usage_is_set(usage,USE_VHDL_TESTBENCH_ASSERT) and not usage_is_set(usage,USE_VHDL_TESTBENCH))
    7193      throw ERRORMORPHEO(FUNCTION,_("Usage flags conflit : to use an assert in vhdl's test bench, you must set flag USE_VHDL_TESTBENCH\n"));
     94
     95    return usage;
    7296  }
    7397
     
    77101
    78102#ifdef SYSTEMC
    79     usage = usage_set(usage,USE_SYSTEMC);
     103    usage = usage_set(usage,USE_SYSTEMC_INTERFACE);
     104    usage = usage_set(usage,USE_SYSTEMC_BODY);
    80105#endif
    81106#ifdef VHDL
     
    94119    usage = usage_set(usage,USE_STATISTICS);
    95120#endif
    96 #ifdef INFORMATION
    97     usage = usage_set(usage,USE_INFORMATION);
    98 #endif
     121// #ifdef INFORMATION
     122//     usage = usage_set(usage,USE_INFORMATION);
     123// #endif
    99124    usage = usage_set(usage,USE_HEADER);
    100125#ifdef DEBUG
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl.cpp

    r81 r113  
    1515#undef  FUNCTION
    1616#define FUNCTION "Vhdl::Vhdl"
    17   Vhdl::Vhdl  (std::string name):
    18     _name   (name)
     17  Vhdl::Vhdl  (std::string name,
     18               std::string id):
     19    _name                      (name),
     20    _id                        (id),
     21    _name_architecture_default ("morpheo_behavioural")
    1922  {
    2023    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     24
     25    _name_architecture = _name_architecture_default;
     26//  _port_clock        = "";
     27
     28    set_library_default();
     29
    2130    log_printf(FUNC,Behavioural,FUNCTION,"End");
    2231  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_generate_file_model.cpp

    r98 r113  
    2222    directory();
    2323
    24     std::string filename = MORPHEO_VHDL + "/" + _name + ".vhdl";
     24    std::string filename = MORPHEO_VHDL + "/" + _name + VHDL_EXTENSION;
    2525   
    2626    msg_printf(INFORMATION,_("Generate file \"%s\"."),filename.c_str());
     
    3030    file.open(filename.c_str(),std::ios::out | std::ios::trunc);
    3131
    32     file << get_model (0,filename,_name,"behavioural");
     32    file << get_model (0,filename,_name);
    3333    file.close();
    3434
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_generate_file_package.cpp

    r88 r113  
    44 * $Id$
    55 *
    6  * [ Description ]
     6 * [ Description ]
    77 *
    88 */
     
    2323
    2424    std::string name     = _name + "_Pack";
    25     std::string filename = MORPHEO_VHDL + "/" + name + ".vhdl";
     25    std::string filename = MORPHEO_VHDL + "/" + name + VHDL_EXTENSION;
    2626
    2727    msg_printf(INFORMATION,_("Generate file \"%s\"."),filename.c_str());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_alias.cpp

    r81 r113  
    2020  {
    2121    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    22     std::string _return = get_list(_list_alias, depth, ";", true);
     22
     23    test_architecture();
     24   
     25    std::string _return = get_list(_architecture[_name_architecture]._list_alias, depth, ";", true);
    2326    log_printf(FUNC,Behavioural,FUNCTION,"End");
    2427
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_architecture.cpp

    r94 r113  
    1111#include "Common/include/Tabulation.h"
    1212
    13 #include <sstream>
    14 
    1513namespace morpheo              {
    1614namespace behavioural          {
     
    1816#undef  FUNCTION
    1917#define FUNCTION "Vhdl::get_architecture"
    20   std::string Vhdl::get_architecture (uint32_t depth      ,
    21                                  std::string   name       ,
    22                                  std::string   entity_name)
     18  std::string Vhdl::get_architecture (uint32_t    depth      ,
     19                                      std::string entity_name)
    2320  {
    2421    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    2522
    26     std::string        tab = morpheo::tab(depth);
    2723    std::ostringstream text;
     24    std::string name_architecture_old = _name_architecture;
     25    std::string tab=morpheo::tab(depth);
    2826
    29     text << tab << "architecture " << name << " of " << entity_name << " is" << std::endl
    30          << tab << get_type     (depth+1)                                    << std::endl
    31          << tab << get_signal   (depth+1)                                    << std::endl
    32          << tab << get_alias    (depth+1)                                    << std::endl
    33          << tab << "begin"                                                   << std::endl
    34          << tab << get_body     (depth+1)                                    << std::endl
    35          << tab << "end " << name << ";"                                     << std::endl;
     27    for (std::map<std::string,vhdl_architecture_t>::iterator it = _architecture.begin();
     28         it!=_architecture.end();
     29         ++it)
     30      {
     31        std::string name = it->first;
     32        set_architecture(name);
     33
     34        text << tab << "architecture " << name << " of " << entity_name << " is" << std::endl
     35             << tab << get_type     (depth+1)                                    << std::endl
     36             << tab << get_signal   (depth+1)                                    << std::endl
     37             << tab << get_alias    (depth+1)                                    << std::endl
     38             << tab << "begin"                                                   << std::endl
     39             << tab << get_body     (depth+1)                                    << std::endl
     40             << tab << "end " << name << ";"                                     << std::endl;
     41      }
     42
     43    set_architecture (name_architecture_old);
    3644
    3745    log_printf(FUNC,Behavioural,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_body.cpp

    r81 r113  
    2020  {
    2121    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    22     std::string _return = get_list(_list_body,depth,"",true);
     22
     23    test_architecture();
     24    std::string _return = get_list(_architecture[_name_architecture]._list_body,depth,"",true);
     25
     26    _return = _return + get_debug(depth);
     27   
    2328    log_printf(FUNC,Behavioural,FUNCTION,"End");
    2429
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_header.cpp

    r98 r113  
    1212#include <time.h>
    1313#include <sstream>
     14#include <fstream>
    1415
    1516namespace morpheo              {
     
    2122                               std::string   filename)
    2223  {
    23     log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     24    log_begin(Behavioural,FUNCTION);
    2425
    2526    std::string text;
     
    3233    text += "-- "+toString(_("Date    : ")) + ctime (&current_time );
    3334    text += "-- "+toString(_("Version : ")) + MORPHEO_HEADER +"\n";
     35    text += "-- "+toString(_("Id      : ")) + _id +"  \n";
    3436    text += "-- "+toString(_("Comment : ")) + _("it's a autogenerated file, don't modify") +"\n";
    3537    text += "-------------------------------------------------------------------------------\n";
    3638   
    37     log_printf(FUNC,Behavioural,FUNCTION,"End");
     39    log_end(Behavioural,FUNCTION);
    3840
    3941    return text;
     42  };
     43
     44#undef  FUNCTION
     45#define FUNCTION "vhdl_get_id"
     46  std::string vhdl_get_id(std::string model_name)
     47  {
     48    log_begin(Behavioural,FUNCTION);
     49
     50    std::string id="";
     51
     52    directory();
     53
     54    std::string filename = MORPHEO_VHDL + "/" + model_name + VHDL_EXTENSION;
     55    std::ifstream file;
     56
     57    file.open(filename.c_str(),std::ios::in);
     58
     59    // open file
     60    if (!file)
     61      {
     62        log_printf(INFO,Behavioural,FUNCTION,_("Can't open file : \"%s\""),filename.c_str());
     63      }
     64    else
     65      {
     66        // get line with Id
     67        do
     68          {
     69            std::getline(file,id,'\n'); // comment
     70          } while ((id.find("Id      :") == std::string::npos) and
     71                   (not file.eof()));
     72
     73        if (file.eof())
     74          log_printf(INFO,Behavioural,FUNCTION,_("\"Id\" not find in file : \"%s\""),filename.c_str());
     75        else
     76          {
     77            // get id
     78            id = id.substr(id.find_first_of(':',0)+1,std::string::npos);
     79
     80            // Erase all ' '
     81            size_t i=id.find_first_of(' ',0);
     82            while (i!=std::string::npos)
     83              {
     84                id.erase(i,i+1);
     85                i=id.find_first_of(' ',i);
     86              }
     87          }
     88      }
     89
     90    log_end(Behavioural,FUNCTION);
     91
     92    return id;
    4093  };
    4194 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_library.cpp

    r111 r113  
    1616 
    1717#undef  FUNCTION
    18 #define FUNCTION "Vhdl::get_library_work"
    19   std::string Vhdl::get_library_work (uint32_t depth)
     18#define FUNCTION "Vhdl::get_library"
     19  std::string Vhdl::get_library (uint32_t depth)
    2020  {
    2121    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    2222
    23     std::list<std::string>::iterator i   = _list_library_work.begin();
     23    std::list<std::string>::iterator i   = _list_library.begin();
    2424    std::string                 tab = morpheo::tab(depth);
    2525    std::ostringstream          text;
    2626
    27     if (i != _list_library_work.end())
    28       text << tab                    << std::endl
    29            << tab << "library work;" << std::endl
    30            << get_list(_list_library_work,depth,";",true);
     27    if (i != _list_library.end())
     28      text << get_list(_list_library,depth,";",true);
    3129
    3230    log_printf(FUNC,Behavioural,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_list.cpp

    r81 r113  
    1717#undef  FUNCTION
    1818#define FUNCTION "Vhdl::get_list"
    19   std::string Vhdl::get_list (std::list<std::string> liste                ,
    20                               uint32_t     depth                ,
    21                               std::string       separator            ,
    22                               bool         last_separator       )
     19  std::string Vhdl::get_list (std::list<std::string> liste         ,
     20                              uint32_t               depth         ,
     21                              std::string            separator     ,
     22                              bool                   last_separator)
    2323  {
    2424    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_model.cpp

    r94 r113  
    1515namespace behavioural          {
    1616 
    17   std::string Vhdl::get_model(uint32_t depth            ,
    18                          std::string   filename         ,
    19                          std::string   entity_name      ,
    20                          std::string   architecture_name)
     17  std::string Vhdl::get_model(uint32_t depth                 ,
     18                              std::string   filename         ,
     19                              std::string   entity_name      )
    2120  {
    2221    log_printf(FUNC,Behavioural,"get_model","Begin");
     
    2524    std::ostringstream text;
    2625
    27     text << tab << get_header       (depth,filename)                      << std::endl
    28          << tab << get_library_ieee (depth)                               << std::endl
    29          << tab << get_library_work (depth)                               << std::endl
    30          << tab << get_entity       (depth,entity_name)                   << std::endl
    31          << tab << get_architecture (depth,architecture_name,entity_name) << std::endl;
     26    std::string configuration_name = "configuration_"+entity_name;
     27
     28    text << tab << get_header       (depth,filename)    << std::endl
     29         << tab << get_library      (depth)             << std::endl
     30         << tab << get_entity       (depth,entity_name) << std::endl
     31         << tab << get_architecture (depth,entity_name) << std::endl
     32         << tab << get_configuration(depth,entity_name,configuration_name) << std::endl
     33      ;
    3234   
    3335    log_printf(FUNC,Behavioural,"get_model","End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_package.cpp

    r94 r113  
    2727    std::ostringstream text;
    2828
    29     text << tab << get_header       (depth,filename)                      << std::endl
    30          << tab << get_library_ieee (depth)                               << std::endl
    31          << tab << "package " << package_name << " is"                    << std::endl
    32          << tab << get_component    (depth+1,entity_name)                 << std::endl
    33          << tab << "end " << package_name << ";"                          << std::endl;
     29    text << tab << get_header          (depth,filename)     << std::endl
     30         << tab << get_library_default (depth)              << std::endl
     31         << tab << "package " << package_name << " is"      << std::endl
     32         << tab << get_component    (depth+1,entity_name)   << std::endl
     33         << tab << "end " << package_name << ";"            << std::endl;
    3434
    3535    log_printf(FUNC,Behavioural,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_signal.cpp

    r81 r113  
    2020  {
    2121    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    22     std::string _return = get_list (_list_signal, depth, ";", true);
     22
     23    test_architecture();
     24
     25    std::string _return = get_list (_architecture[_name_architecture]._list_signal, depth, ";", true);
     26
    2327    log_printf(FUNC,Behavioural,FUNCTION,"End");
    2428
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_type.cpp

    r81 r113  
    2020  {
    2121    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    22     std::string _return = get_list (_list_type, depth, ";", true);
     22
     23    test_architecture();
     24    std::string _return = get_list (_architecture[_name_architecture]._list_type, depth, ";", true);
     25
    2326    log_printf(FUNC,Behavioural,FUNCTION,"End");
    2427
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_alias.cpp

    r81 r113  
    2323  {
    2424    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    25     set_list(_list_alias, "alias "+ name1+"\t: "+type1+"\tis "+name2+"\t"+range2);
     25   
     26    test_architecture();
     27   
     28    set_list(_architecture[_name_architecture]._list_alias, "alias "+ name1+"\t: "+type1+"\tis "+name2+"\t"+range2);
     29
    2630    log_printf(FUNC,Behavioural,FUNCTION,"End");
    2731  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_body.cpp

    r94 r113  
    3030  {
    3131    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    32     set_list(_list_body, morpheo::tab(depth)+text);
     32
     33    test_architecture();
     34
     35    set_list(_architecture[_name_architecture]._list_body, morpheo::tab(depth)+text);
    3336    log_printf(FUNC,Behavioural,FUNCTION,"End");
    3437  };
     
    4043  {
    4144    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     45
     46    test_architecture();
    4247   
    4348    std::string tab=morpheo::tab(depth);
    4449
    45     for (std::list<std::string>::iterator it=vhdl->_list_body.begin();
    46          it!=vhdl->_list_body.end();
     50    for (std::list<std::string>::iterator it=vhdl->_architecture[_name_architecture]._list_body.begin();
     51         it!=vhdl->_architecture[_name_architecture]._list_body.end();
    4752         ++it)
    48       set_list(_list_body,tab+*it);
     53      set_list(_architecture[_name_architecture]._list_body,tab+*it);
    4954
    5055    log_printf(FUNC,Behavioural,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_body_component.cpp

    r81 r113  
    1717#undef  FUNCTION
    1818#define FUNCTION "Vhdl::set_body_component"
    19   void Vhdl::set_body_component (std::string         name_instance      ,
    20                                  std::string         name_component     ,
    21                                  std::list<std::string>   list_port_map      )
     19  void Vhdl::set_body_component (std::string            name_instance    ,
     20                                 std::string            name_component   ,
     21                                 std::string            name_architecture,
     22                                 std::string            name_package     ,
     23                                 std::list<std::string> list_port_map )
    2224  {
    2325    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    2426
    25     set_body(name_instance + " : " + name_component);
     27    name_architecture = test_architecture(name_architecture);
     28
     29    set_body(name_instance + " : entity " + name_package + "." + name_component + " (" + name_architecture + ")");
     30//  set_body(name_instance + " : " + name_component);
    2631    set_body("port map (");
    27     set_list(_list_body, get_list(list_port_map, 1, ",", false));
     32    set_list(_architecture[name_architecture]._list_body, get_list(list_port_map, 1, ",", false));
    2833    set_body(");");
    2934
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_constant.cpp

    r95 r113  
    2222  {
    2323    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    24     set_list(_list_type, "constant "+ name+"\t: "+type+"\t:= "+init);
     24
     25    test_architecture();
     26   
     27    set_list(_architecture[_name_architecture]._list_type, "constant "+ name+"\t: "+type+"\t:= "+init);
     28   
    2529    log_printf(FUNC,Behavioural,FUNCTION,"End");
    2630  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_library_default.cpp

    r111 r113  
    44 * $Id$
    55 *
    6  * [ Description ]
     6 * [ Description ]
    77 *
    88 */
     
    1717 
    1818#undef  FUNCTION
    19 #define FUNCTION "Vhdl::get_library_ieee"
    20   std::string Vhdl::get_library_ieee (uint32_t depth)
     19#define FUNCTION "Vhdl::set_library_default"
     20  void Vhdl::set_library_default (void)
    2121  {
    22     log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    23 
    24     std::string        tab = morpheo::tab(depth);
    25     std::ostringstream text;
    26 
    27     text << tab                                         << std::endl
    28          << tab << "library ieee;"                      << std::endl
    29          << tab << "  use ieee.numeric_bit.all;       " << std::endl
    30          << tab << "  use ieee.numeric_std.all;       " << std::endl
    31          << tab << "  use ieee.std_logic_1164.all;    " << std::endl
    32          << tab << "  use ieee.std_logic_arith.all;   " << std::endl
    33          << tab << "  use ieee.std_logic_misc.all;    " << std::endl
    34          << tab << "--use ieee.std_logic_signed.all;  " << std::endl
    35          << tab << "  use ieee.std_logic_unsigned.all;" << std::endl
    36          << tab << "--use ieee.std_logic_textio.all;  " << std::endl;
     22    log_begin(Behavioural,FUNCTION);
     23   
     24    set_library("ieee","numeric_bit"       ,"all");
     25    set_library("ieee","numeric_std"       ,"all");
     26    set_library("ieee","std_logic_1164"    ,"all");
     27    set_library("ieee","std_logic_arith"   ,"all");
     28    set_library("ieee","std_logic_misc"    ,"all");
     29//  set_library("ieee","std_logic_signed"  ,"all");
     30    set_library("ieee","std_logic_unsigned","all");
     31//  set_library("ieee","std_logic_textio"  ,"all");
    3732     
    38     log_printf(FUNC,Behavioural,FUNCTION,"End");
    39 
    40     return text.str();
     33    log_end(Behavioural,FUNCTION);
    4134  };
    4235 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_library_work.cpp

    r81 r113  
    1919  void Vhdl::set_library_work (std::string      package_name)
    2020  {
    21     log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    22     set_list(_list_library_work, "use work."+ package_name + ".all");
    23     log_printf(FUNC,Behavioural,FUNCTION,"End");
     21    log_begin(Behavioural,FUNCTION);
     22   
     23    set_library("work",package_name,"all");
     24
     25    log_end(Behavioural,FUNCTION);
    2426  };
    2527 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_port.cpp

    r81 r113  
    3434    log_printf(FUNC,Behavioural,FUNCTION,"End");
    3535  };
     36
     37// #undef  FUNCTION
     38// #define FUNCTION "Vhdl::set_port_clock"
     39//   void Vhdl::set_port_clock (std::string name)
     40//   {
     41//     log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     42
     43//     _port_clock = name;
     44
     45//     log_printf(FUNC,Behavioural,FUNCTION,"End");
     46//   };
    3647   
    3748}; // end namespace behavioural         
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_signal.cpp

    r95 r113  
    2222  {
    2323    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    24     set_list(_list_signal, "signal "+ name + "\t: " + type);
     24
     25    test_architecture();
     26
     27    set_list(_architecture[_name_architecture]._list_signal, "signal "+ name + "\t: " + type);
     28   
    2529    log_printf(FUNC,Behavioural,FUNCTION,"End");
    2630  };
     
    3943  {
    4044    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    41     _list_signal.push_back ("signal "+ name+"\t: "+type+"\t:= "+init);
     45
     46    test_architecture();
     47   
     48    _architecture[_name_architecture]._list_signal.push_back ("signal "+ name+"\t: "+type+"\t:= "+init);
     49
    4250    log_printf(FUNC,Behavioural,FUNCTION,"End");
    4351  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_type.cpp

    r81 r113  
    2121  {
    2222    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    23     set_list(_list_type, "type "+ name + "\tis " + type);
     23
     24    test_architecture();
     25
     26    set_list(_architecture[_name_architecture]._list_type, "type "+ name + "\tis " + type);
     27
    2428    log_printf(FUNC,Behavioural,FUNCTION,"End");
    2529  };
Note: See TracChangeset for help on using the changeset viewer.