Ignore:
Timestamp:
Apr 20, 2009, 11:29:17 PM (15 years ago)
Author:
rosiere
Message:

1) Write queue with mealy
2) Network : fix bug
3) leak memory

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop
Files:
1 added
29 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest/src/main.cpp

    r88 r115  
    8282     
    8383      test (name,param);
     84
     85      delete param;
    8486    }
    8587  catch (morpheo::ErrorMorpheo & error)
     
    9496    }
    9597
    96   delete timing;
     98  for (uint32_t i=0; i< MAX_TYPE; i++)
     99    delete timing [i];
     100  delete [] timing;
    97101 
    98102  return (EXIT_SUCCESS);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_deallocation.cpp

    r112 r115  
    7070        // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    7171       
    72         delete [] _execute_register;
    73         delete    _execute_param;
    74         delete    _execute_operation_in;
    75         delete    _execute_operation_out;
    76         delete [] _function_execute;
     72        for (uint32_t i=0; i<_param->_nb_context; i++)
     73          for (uint32_t j=0; j<_param->_nb_front_end; j++)
     74            for (uint32_t k=0; k<_param->_nb_ooo_engine; k++)
     75              delete _execute_register [i][j][k];
     76
     77        DELETE3(_execute_register,_param->_nb_context,_param->_nb_front_end,_param->_nb_ooo_engine);
     78        DELETE0(_execute_param);
     79        DELETE0(_execute_operation_in);
     80        DELETE0(_execute_operation_out);
     81        DELETE2(_function_execute,_param->_nb_type,_param->_nb_operation);
    7782      }
    7883
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/configuration.cfg

    r81 r115  
    111116      16      *2 # uint32_t nb_special_register
    12121       8       *2 # uint32_t nb_bypass_write 
     130       1       +1 #          write_queue_scheme
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/configuration_execute_queue_null.cfg

    r81 r115  
    111116      16      *2 # uint32_t nb_special_register
    12128       8       *2 # uint32_t nb_bypass_write 
     130       1       +1 #          write_queue_scheme
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/src/main.cpp

    r113 r115  
    88#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/include/top.h"
    99
     10<<<<<<< .mine
     11#define NB_PARAMS 12
     12
     13void usage (int argc, char * argv[])
     14{
     15  err (_("<Usage> %s name_instance list_params.\n"),argv[0]);
     16  err (_("list_params is :\n"));
     17  err (_(" * size_write_queue    (uint32_t)\n"));
     18  err (_(" * size_execute_queue  (uint32_t)\n"));
     19  err (_(" * nb_context          (uint32_t)\n"));
     20  err (_(" * nb_front_end        (uint32_t)\n"));
     21  err (_(" * nb_ooo_engine       (uint32_t)\n"));
     22  err (_(" * nb_packet           (uint32_t)\n"));
     23  err (_(" * size_general_data   (uint32_t)\n"));
     24  err (_(" * nb_general_register (uint32_t)\n"));
     25  err (_(" * size_special_data   (uint32_t)\n"));
     26  err (_(" * nb_special_register (uint32_t)\n"));
     27  err (_(" * nb_bypass_write     (uint32_t)\n"));
     28  err (_(" * write_queue_scheme  (Twrite_queue_scheme_t)\n"));
     29
     30  exit (1);
     31}
     32
     33#ifndef SYSTEMC
     34=======
    1035#ifndef MTI_SYSTEMC
    1136# ifndef SYSTEMC
     37>>>>>>> .r113
    1238int main    (int argc, char * argv[])
    1339# else
     
    1743  int _return = EXIT_SUCCESS;
    1844
     45<<<<<<< .mine
     46  uint32_t       x = 1;
     47
     48  const string   name                =      argv[x++];
     49  const uint32_t size_write_queue    = fromString<uint32_t>(argv[x++]);
     50  const uint32_t size_execute_queue  = fromString<uint32_t>(argv[x++]);
     51  const uint32_t nb_context          = fromString<uint32_t>(argv[x++]);
     52  const uint32_t nb_front_end        = fromString<uint32_t>(argv[x++]);
     53  const uint32_t nb_ooo_engine       = fromString<uint32_t>(argv[x++]);
     54  const uint32_t nb_packet           = fromString<uint32_t>(argv[x++]);
     55  const uint32_t size_general_data   = fromString<uint32_t>(argv[x++]);
     56  const uint32_t nb_general_register = fromString<uint32_t>(argv[x++]);
     57  const uint32_t size_special_data   = fromString<uint32_t>(argv[x++]);
     58  const uint32_t nb_special_register = fromString<uint32_t>(argv[x++]);
     59  const uint32_t nb_bypass_write     = fromString<uint32_t>(argv[x++]);
     60  const write_queue::Twrite_queue_scheme_t write_queue_scheme = fromString<write_queue::Twrite_queue_scheme_t>(argv[x++]);
     61=======
     62>>>>>>> .r113
    1963  try
    2064    {
     65<<<<<<< .mine
     66      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
     67        (size_write_queue   ,
     68         size_execute_queue ,
     69         nb_context         ,
     70         nb_front_end       ,
     71         nb_ooo_engine      ,
     72         nb_packet          ,
     73         size_general_data  ,
     74         nb_general_register,
     75         size_special_data  ,
     76         nb_special_register,
     77         nb_bypass_write    ,
     78         write_queue_scheme ,
     79         true // is_toplevel
     80         );
     81     
     82      msg(_("%s"),param->print(1).c_str());
     83     
     84      test (name,param);
     85=======
    2186      top * my_top = new top ("my_top",argc,argv);
    2287
     
    2489
    2590      delete my_top;
     91>>>>>>> .r113
    2692    }
    2793  catch (morpheo::ErrorMorpheo & error)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/configuration.cfg

    r88 r115  
    11Write_queue
    2 8       8       *2 # uint32_t size_queue         
    3 1       1       *2 # uint32_t nb_context         
    4 1       1       *2 # uint32_t nb_front_end       
    5 1       4       *2 # uint32_t nb_ooo_engine     
    6 32      32      *2 # uint32_t nb_packet         
    7 32      32      *2 # uint32_t size_general_data 
    8 64      64      *2 # uint32_t nb_general_register
    9 2       2       *2 # uint32_t size_special_data 
    10 16      16      *2 # uint32_t nb_special_register
    11 1       8       *4 # uint32_t nb_bypass_write 
     28       8       *2 # uint32_t              size_queue         
     31       1       *2 # uint32_t              nb_context         
     41       1       *2 # uint32_t              nb_front_end       
     51       4       *2 # uint32_t              nb_ooo_engine     
     632      32      *2 # uint32_t              nb_packet         
     732      32      *2 # uint32_t              size_general_data 
     864      64      *2 # uint32_t              nb_general_register
     92       2       *2 # uint32_t              size_special_data 
     1016      16      *2 # uint32_t              nb_special_register
     111       8       *4 # uint32_t              nb_bypass_write 
     120       1       +1 # Twrite_queue_scheme_t queue_scheme
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/src/main.cpp

    r113 r115  
    88#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/include/top.h"
    99
     10<<<<<<< .mine
     11#define NB_PARAMS 11
     12
     13void usage (int argc, char * argv[])
     14{
     15  err (_("<Usage> %s name_instance list_params.\n"),argv[0]);
     16  err (_("list_params is :\n"));
     17  err (_(" * size_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  err (_(" * queue_scheme        (Twrite_queue_scheme_t)\n"));
     28
     29  exit (1);
     30}
     31
     32#ifndef SYSTEMC
     33=======
    1034#ifndef MTI_SYSTEMC
    1135# ifndef SYSTEMC
     36>>>>>>> .r113
    1237int main    (int argc, char * argv[])
    1338# else
     
    1742  int _return = EXIT_SUCCESS;
    1843
     44<<<<<<< .mine
     45  uint32_t       x = 1;
     46
     47  const string                name                =      argv[x++];
     48  const uint32_t              size_queue          = fromString<uint32_t>(argv[x++]);
     49  const uint32_t              nb_context          = fromString<uint32_t>(argv[x++]);
     50  const uint32_t              nb_front_end        = fromString<uint32_t>(argv[x++]);
     51  const uint32_t              nb_ooo_engine       = fromString<uint32_t>(argv[x++]);
     52  const uint32_t              nb_packet           = fromString<uint32_t>(argv[x++]);
     53  const uint32_t              size_general_data   = fromString<uint32_t>(argv[x++]);
     54  const uint32_t              nb_general_register = fromString<uint32_t>(argv[x++]);
     55  const uint32_t              size_special_data   = fromString<uint32_t>(argv[x++]);
     56  const uint32_t              nb_special_register = fromString<uint32_t>(argv[x++]);
     57  const uint32_t              nb_bypass_write     = fromString<uint32_t>(argv[x++]);
     58  const Twrite_queue_scheme_t queue_scheme        = fromString<Twrite_queue_scheme_t>(argv[x++]);
     59
     60=======
     61>>>>>>> .r113
    1962  try
    2063    {
     64<<<<<<< .mine
     65      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
     66        (size_queue         ,
     67         nb_context         ,
     68         nb_front_end       ,
     69         nb_ooo_engine      ,
     70         nb_packet          ,
     71         size_general_data  ,
     72         nb_general_register,
     73         size_special_data  ,
     74         nb_special_register,
     75         nb_bypass_write    ,
     76         queue_scheme       ,
     77         true // is_toplevel
     78         );
     79     
     80      msg(_("%s"),param->print(1).c_str());
     81     
     82      test (name,param);
     83=======
    2184      top * my_top = new top ("my_top",argc,argv);
    2285
     
    2487
    2588      delete my_top;
     89>>>>>>> .r113
    2690    }
    2791  catch (morpheo::ErrorMorpheo & error)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Parameters.h

    r103 r115  
    1111#include "Common/include/Debug.h"
    1212#include "Behavioural/include/Parameters.h"
     13#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Types.h"
    1314#include <math.h>
    1415
     
    2627  {
    2728    //-----[ fields ]------------------------------------------------------------
    28   public : uint32_t            _size_queue                   ;
    29   public : uint32_t            _nb_context                   ;
    30   public : uint32_t            _nb_front_end                 ;
    31   public : uint32_t            _nb_ooo_engine                ;
    32   public : uint32_t            _nb_packet                    ;
    33 //public : uint32_t            _size_general_data            ;
    34   public : uint32_t            _nb_general_register          ;
    35 //public : uint32_t            _size_special_data            ;
    36   public : uint32_t            _nb_special_register          ;
    37   public : uint32_t            _nb_bypass_write              ;
     29  public : uint32_t              _size_queue                   ;
     30  public : uint32_t              _nb_context                   ;
     31  public : uint32_t              _nb_front_end                 ;
     32  public : uint32_t              _nb_ooo_engine                ;
     33  public : uint32_t              _nb_packet                    ;
     34//public : uint32_t              _size_general_data            ;
     35  public : uint32_t              _nb_general_register          ;
     36//public : uint32_t              _size_special_data            ;
     37  public : uint32_t              _nb_special_register          ;
     38  public : uint32_t              _nb_bypass_write              ;
     39  public : Twrite_queue_scheme_t _queue_scheme                 ;
    3840
    39   public : uint32_t            _nb_gpr_write                 ;
    40   public : uint32_t            _nb_spr_write                 ;
    41 
    42 //public : uint32_t            _size_context_id              ;
    43 //public : uint32_t            _size_front_end_id            ;
    44 //public : uint32_t            _size_ooo_engine_id           ;
    45 //public : uint32_t            _size_packet_id               ;
    46 //public : uint32_t            _size_general_register        ;
    47 //public : uint32_t            _size_special_register        ;
    48   public : uint32_t            _size_internal_queue          ;
    49 
    50 //public : bool                _have_port_context_id         ;
    51 //public : bool                _have_port_front_end_id       ;
    52 //public : bool                _have_port_ooo_engine_id      ;
    53 //public : bool                _have_port_packet_id          ;
     41  public : uint32_t              _nb_gpr_write                 ;
     42  public : uint32_t              _nb_spr_write                 ;
     43                               
     44//public : uint32_t              _size_context_id              ;
     45//public : uint32_t              _size_front_end_id            ;
     46//public : uint32_t              _size_ooo_engine_id           ;
     47//public : uint32_t              _size_packet_id               ;
     48//public : uint32_t              _size_general_register        ;
     49//public : uint32_t              _size_special_register        ;
     50  public : uint32_t              _size_internal_queue          ;
     51                               
     52//public : bool                  _have_port_context_id         ;
     53//public : bool                  _have_port_front_end_id       ;
     54//public : bool                  _have_port_ooo_engine_id      ;
     55//public : bool                  _have_port_packet_id          ;
    5456
    5557    //-----[ methods ]-----------------------------------------------------------
    56   public : Parameters  (uint32_t size_queue         ,
    57                         uint32_t nb_context         ,
    58                         uint32_t nb_front_end       ,
    59                         uint32_t nb_ooo_engine      ,
    60                         uint32_t nb_packet          ,
    61                         uint32_t size_general_data  ,
    62                         uint32_t nb_general_register,
    63                         uint32_t size_special_data  ,
    64                         uint32_t nb_special_register,
    65                         uint32_t nb_bypass_write    ,
    66                         bool     is_toplevel=false  );
     58  public : Parameters  (uint32_t              size_queue         ,
     59                        uint32_t              nb_context         ,
     60                        uint32_t              nb_front_end       ,
     61                        uint32_t              nb_ooo_engine      ,
     62                        uint32_t              nb_packet          ,
     63                        uint32_t              size_general_data  ,
     64                        uint32_t              nb_general_register,
     65                        uint32_t              size_special_data  ,
     66                        uint32_t              nb_special_register,
     67                        uint32_t              nb_bypass_write    ,
     68                        Twrite_queue_scheme_t queue_scheme       ,
     69                        bool                  is_toplevel=false  );
    6770//public : Parameters  (Parameters & param) ;
    6871  public : ~Parameters () ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Types.h

    r97 r115  
    1919namespace write_unit {
    2020namespace write_queue {
     21
     22  typedef enum
     23    {
     24       WRITE_QUEUE_SCHEME_MOORE // Write register and pop is not in same cycle
     25      ,WRITE_QUEUE_SCHEME_MEALY // Write register and pop can be in same cycle
     26    } Twrite_queue_scheme_t;
    2127
    2228  class write_queue_entry_t
     
    7884}; // end namespace multi_execute_loop
    7985}; // end namespace core
     86}; // end namespace behavioural
    8087
    81 }; // end namespace behavioural
     88  template<> inline std::string toString<morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t>(const morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t& x)
     89  {
     90    switch (x)
     91      {
     92      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::WRITE_QUEUE_SCHEME_MOORE : return "moore"; break;
     93      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::WRITE_QUEUE_SCHEME_MEALY : return "mealy"; break;
     94      default : return ""; break;
     95      }
     96  };
     97
     98  template<> inline morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t fromString<morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t>(const std::string& x)
     99  {
     100    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::WRITE_QUEUE_SCHEME_MOORE))) == 0) or
     101         (x.compare("moore") == 0))
     102      return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::WRITE_QUEUE_SCHEME_MOORE;
     103    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::WRITE_QUEUE_SCHEME_MEALY))) == 0) or
     104         (x.compare("mealy") == 0))
     105      return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::WRITE_QUEUE_SCHEME_MEALY;
     106   
     107    throw (ErrorMorpheo ("<fromString> : Unknow string : \""+x+"\""));
     108  };
     109
    82110}; // end namespace morpheo             
    83111
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Write_queue.h

    r113 r115  
    139139    Tcontrol_t     internal_GPR_WRITE_VAL;
    140140    Tcontrol_t     internal_SPR_WRITE_VAL;
     141
     142    // function pointer
     143//   public    : void (morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Write_queue::*function_transition) (void);
     144//   public    : void (morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Write_queue::*function_genMoore  ) (void);
     145//   public    : void (morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Write_queue::*function_genMealy  ) (void);
    141146#endif
    142147
     
    167172  public  : void     transition                (void);
    168173  public  : void     genMoore                  (void);
     174  public  : void     genMealy                  (void);
    169175#endif                                         
    170176#ifdef STATISTICS
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Parameters.cpp

    r113 r115  
    2020#undef  FUNCTION
    2121#define FUNCTION "Write_queue::Parameters"
    22   Parameters::Parameters (uint32_t size_queue         ,
    23                           uint32_t nb_context         ,
    24                           uint32_t nb_front_end       ,
    25                           uint32_t nb_ooo_engine      ,
    26                           uint32_t nb_packet          ,
    27                           uint32_t size_general_data  ,
    28                           uint32_t nb_general_register,
    29                           uint32_t size_special_data  ,
    30                           uint32_t nb_special_register,
    31                           uint32_t nb_bypass_write    ,
    32                           bool     is_toplevel):
     22  Parameters::Parameters (uint32_t              size_queue         ,
     23                          uint32_t              nb_context         ,
     24                          uint32_t              nb_front_end       ,
     25                          uint32_t              nb_ooo_engine      ,
     26                          uint32_t              nb_packet          ,
     27                          uint32_t              size_general_data  ,
     28                          uint32_t              nb_general_register,
     29                          uint32_t              size_special_data  ,
     30                          uint32_t              nb_special_register,
     31                          uint32_t              nb_bypass_write    ,
     32                          Twrite_queue_scheme_t queue_scheme       ,
     33                          bool                  is_toplevel        ):
    3334    behavioural::Parameters ("Write_queue")
    3435  {
     
    4344    _nb_special_register     = nb_special_register;
    4445    _nb_bypass_write         = nb_bypass_write    ;
     46    _queue_scheme            = queue_scheme       ;
    4547
    4648    _nb_gpr_write            = 1;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Parameters_print.cpp

    r81 r115  
    3838    xml.singleton_begin("nb_special_register"); xml.attribut("value",toString(_nb_special_register)); xml.singleton_end();
    3939    xml.singleton_begin("nb_bypass_write    "); xml.attribut("value",toString(_nb_bypass_write    )); xml.singleton_end();
     40    xml.singleton_begin("queue_scheme       "); xml.attribut("value",toString(_queue_scheme       )); xml.singleton_end();
    4041    xml.balise_close();
    4142
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue.cpp

    r113 r115  
    8484        SC_METHOD (genMoore);
    8585        dont_initialize ();
    86         sensitive << (*(in_CLOCK)).neg();
     86        sensitive << (*(in_CLOCK)).neg(); // need internal register
    8787       
    8888# ifdef SYSTEMCASS_SPECIFIC
    8989        // List dependency information
    9090# endif   
    91        
     91
     92        if (_param->_queue_scheme == WRITE_QUEUE_SCHEME_MEALY)
     93          {
     94        log_printf(INFO,Write_queue,FUNCTION,"Method - genMealy");
     95
     96        SC_METHOD (genMealy);
     97        dont_initialize ();
     98        sensitive << (*(in_CLOCK)).neg(); // need internal register
     99        for (uint32_t i=0; i<_param->_nb_gpr_write; ++i)
     100          sensitive << (*(in_GPR_WRITE_ACK [i]));
     101        for (uint32_t i=0; i<_param->_nb_spr_write; ++i)
     102          sensitive << (*(in_SPR_WRITE_ACK [i]));       
     103
     104# ifdef SYSTEMCASS_SPECIFIC
     105        // List dependency information
     106# endif   
     107          }
     108
    92109#endif
    93110      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_genMoore.cpp

    r103 r115  
    2626    log_function(Write_queue,FUNCTION,_name.c_str());
    2727   
    28     // -----[ Interface "Write_queue_in" ]--------------------------------
    29     {
    30       internal_WRITE_QUEUE_IN_ACK = _queue->size() < _param->_size_queue;
    31      
    32       PORT_WRITE(out_WRITE_QUEUE_IN_ACK, internal_WRITE_QUEUE_IN_ACK);
    33     }
    34 
    35     // -----[ Interface "Write_queue_out" ]--------------------------------
    36     {
    37       // TODO : make a genMealy version
    38       internal_WRITE_QUEUE_OUT_VAL = ((not _queue->empty()           ) and
    39                                       (not _queue->front()->_write_rd) and
    40                                       (not _queue->front()->_write_re));
    41      
    42       PORT_WRITE(out_WRITE_QUEUE_OUT_VAL, internal_WRITE_QUEUE_OUT_VAL);
    43 
    44       if (internal_WRITE_QUEUE_OUT_VAL)
    45         {
    46           if (_param->_have_port_context_id)
    47           PORT_WRITE(out_WRITE_QUEUE_OUT_CONTEXT_ID   , _queue->front()->_context_id   );
    48           if (_param->_have_port_front_end_id)
    49           PORT_WRITE(out_WRITE_QUEUE_OUT_FRONT_END_ID , _queue->front()->_front_end_id );
    50           if (_param->_have_port_ooo_engine_id)
    51           PORT_WRITE(out_WRITE_QUEUE_OUT_OOO_ENGINE_ID, _queue->front()->_ooo_engine_id);
    52           if (_param->_have_port_rob_ptr  )
    53           PORT_WRITE(out_WRITE_QUEUE_OUT_PACKET_ID    , _queue->front()->_packet_id    );
    54 //        PORT_WRITE(out_WRITE_QUEUE_OUT_OPERATION    , _queue->front()->_operation    );
    55 //        PORT_WRITE(out_WRITE_QUEUE_OUT_TYPE         , _queue->front()->_type         );
    56           PORT_WRITE(out_WRITE_QUEUE_OUT_FLAGS        , _queue->front()->_data_re      );
    57           PORT_WRITE(out_WRITE_QUEUE_OUT_EXCEPTION    , _queue->front()->_exception    );
    58           PORT_WRITE(out_WRITE_QUEUE_OUT_NO_SEQUENCE  , _queue->front()->_no_sequence  );
    59           PORT_WRITE(out_WRITE_QUEUE_OUT_ADDRESS      , _queue->front()->_address      );
    60           PORT_WRITE(out_WRITE_QUEUE_OUT_DATA         , _queue->front()->_data_rd      );
    61         }
    62     }
    63 
    64     // -----[ Interface "gpr_write" ]-------------------------------------
    65     // -----[ Interface "spr_write" ]-------------------------------------
    66     {
    67       bool val = not _queue->empty();
    68 
    69       internal_GPR_WRITE_VAL = val and _queue->front()->_write_rd;
    70       internal_SPR_WRITE_VAL = val and _queue->front()->_write_re;
    71      
    72       PORT_WRITE(out_GPR_WRITE_VAL [0], internal_GPR_WRITE_VAL);
    73       PORT_WRITE(out_SPR_WRITE_VAL [0], internal_SPR_WRITE_VAL);
    74 
    75       if (val)
    76         {
    77           if (_param->_have_port_ooo_engine_id)
    78           {
    79           PORT_WRITE(out_GPR_WRITE_OOO_ENGINE_ID [0], _queue->front()->_ooo_engine_id);
    80           PORT_WRITE(out_SPR_WRITE_OOO_ENGINE_ID [0], _queue->front()->_ooo_engine_id);
    81           }
    82           PORT_WRITE(out_GPR_WRITE_NUM_REG       [0], _queue->front()->_num_reg_rd);
    83           PORT_WRITE(out_GPR_WRITE_DATA          [0], _queue->front()->_data_rd   );
    84           PORT_WRITE(out_SPR_WRITE_NUM_REG       [0], _queue->front()->_num_reg_re);
    85           PORT_WRITE(out_SPR_WRITE_DATA          [0], _queue->front()->_data_re   );
    86         }
    87     }
    8828    // -----[ Interface "bypass_write" ]----------------------------------
    8929    {
     
    12161        }
    12262    }
     63
     64    // -----[ Interface "Write_queue_in" ]--------------------------------
     65    {
     66      internal_WRITE_QUEUE_IN_ACK = _queue->size() < _param->_size_queue;
     67     
     68      PORT_WRITE(out_WRITE_QUEUE_IN_ACK, internal_WRITE_QUEUE_IN_ACK);
     69    }
     70
     71    if (_param->_queue_scheme == WRITE_QUEUE_SCHEME_MOORE)
     72      {
     73    // -----[ Interface "gpr_write" ]-------------------------------------
     74    // -----[ Interface "spr_write" ]-------------------------------------
     75    {
     76      bool val = not _queue->empty();
     77
     78      internal_GPR_WRITE_VAL = val and _queue->front()->_write_rd;
     79      internal_SPR_WRITE_VAL = val and _queue->front()->_write_re;
     80     
     81      PORT_WRITE(out_GPR_WRITE_VAL [0], internal_GPR_WRITE_VAL);
     82      PORT_WRITE(out_SPR_WRITE_VAL [0], internal_SPR_WRITE_VAL);
     83
     84      if (val)
     85        {
     86          if (_param->_have_port_ooo_engine_id)
     87          {
     88          PORT_WRITE(out_GPR_WRITE_OOO_ENGINE_ID [0], _queue->front()->_ooo_engine_id);
     89          PORT_WRITE(out_SPR_WRITE_OOO_ENGINE_ID [0], _queue->front()->_ooo_engine_id);
     90          }
     91          PORT_WRITE(out_GPR_WRITE_NUM_REG       [0], _queue->front()->_num_reg_rd);
     92          PORT_WRITE(out_GPR_WRITE_DATA          [0], _queue->front()->_data_rd   );
     93          PORT_WRITE(out_SPR_WRITE_NUM_REG       [0], _queue->front()->_num_reg_re);
     94          PORT_WRITE(out_SPR_WRITE_DATA          [0], _queue->front()->_data_re   );
     95        }
     96    }
     97
     98    // -----[ Interface "Write_queue_out" ]--------------------------------
     99    {
     100      internal_WRITE_QUEUE_OUT_VAL = ((not _queue->empty()           ) and
     101                                      (not _queue->front()->_write_rd) and
     102                                      (not _queue->front()->_write_re));
     103     
     104      PORT_WRITE(out_WRITE_QUEUE_OUT_VAL, internal_WRITE_QUEUE_OUT_VAL);
     105
     106      if (internal_WRITE_QUEUE_OUT_VAL)
     107        {
     108          if (_param->_have_port_context_id)
     109          PORT_WRITE(out_WRITE_QUEUE_OUT_CONTEXT_ID   , _queue->front()->_context_id   );
     110          if (_param->_have_port_front_end_id)
     111          PORT_WRITE(out_WRITE_QUEUE_OUT_FRONT_END_ID , _queue->front()->_front_end_id );
     112          if (_param->_have_port_ooo_engine_id)
     113          PORT_WRITE(out_WRITE_QUEUE_OUT_OOO_ENGINE_ID, _queue->front()->_ooo_engine_id);
     114          if (_param->_have_port_rob_ptr  )
     115          PORT_WRITE(out_WRITE_QUEUE_OUT_PACKET_ID    , _queue->front()->_packet_id    );
     116//        PORT_WRITE(out_WRITE_QUEUE_OUT_OPERATION    , _queue->front()->_operation    );
     117//        PORT_WRITE(out_WRITE_QUEUE_OUT_TYPE         , _queue->front()->_type         );
     118          PORT_WRITE(out_WRITE_QUEUE_OUT_FLAGS        , _queue->front()->_data_re      );
     119          PORT_WRITE(out_WRITE_QUEUE_OUT_EXCEPTION    , _queue->front()->_exception    );
     120          PORT_WRITE(out_WRITE_QUEUE_OUT_NO_SEQUENCE  , _queue->front()->_no_sequence  );
     121          PORT_WRITE(out_WRITE_QUEUE_OUT_ADDRESS      , _queue->front()->_address      );
     122          PORT_WRITE(out_WRITE_QUEUE_OUT_DATA         , _queue->front()->_data_rd      );
     123        }
     124    }
     125
     126      } // end WRITE_QUEUE_SCHEME_MOORE
    123127    log_end(Write_queue,FUNCTION);
    124128  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Parameters.h

    r88 r115  
    2828  {
    2929    //-----[ fields ]------------------------------------------------------------
    30   public : uint32_t            _size_write_queue             ;
    31   public : uint32_t            _size_execute_queue           ;
    32   public : uint32_t            _nb_context                   ;
    33   public : uint32_t            _nb_front_end                 ;
    34   public : uint32_t            _nb_ooo_engine                ;
    35   public : uint32_t            _nb_packet                    ;
    36 //public : uint32_t            _size_general_data            ;
    37   public : uint32_t            _nb_general_register          ;
    38 //public : uint32_t            _size_special_data            ;
    39   public : uint32_t            _nb_special_register          ;
    40   public : uint32_t            _nb_bypass_write              ;
     30  public : uint32_t              _size_write_queue             ;
     31  public : uint32_t              _size_execute_queue           ;
     32  public : uint32_t              _nb_context                   ;
     33  public : uint32_t              _nb_front_end                 ;
     34  public : uint32_t              _nb_ooo_engine                ;
     35  public : uint32_t              _nb_packet                    ;
     36//public : uint32_t              _size_general_data            ;
     37  public : uint32_t              _nb_general_register          ;
     38//public : uint32_t              _size_special_data            ;
     39  public : uint32_t              _nb_special_register          ;
     40  public : uint32_t              _nb_bypass_write              ;
     41  public : write_queue::Twrite_queue_scheme_t _write_queue_scheme           ;
    4142
    42   public : uint32_t            _nb_gpr_write                 ;
    43   public : uint32_t            _nb_spr_write                 ;
    44 
    45 //public : uint32_t            _size_context_id              ;
    46 //public : uint32_t            _size_front_end_id            ;
    47 //public : uint32_t            _size_ooo_engine_id           ;
    48 //public : uint32_t            _size_packet_id               ;
    49 //public : uint32_t            _size_general_register        ;
    50 //public : uint32_t            _size_special_register        ;
    51 
    52   public : bool                _have_component_execute_queue ;
    53 //public : bool                _have_port_context_id         ;
    54 //public : bool                _have_port_front_end_id       ;
    55 //public : bool                _have_port_ooo_engine_id      ;
    56 //public : bool                _have_port_packet_id          ;
     43  public : uint32_t              _nb_gpr_write                 ;
     44  public : uint32_t              _nb_spr_write                 ;
     45                               
     46//public : uint32_t              _size_context_id              ;
     47//public : uint32_t              _size_front_end_id            ;
     48//public : uint32_t              _size_ooo_engine_id           ;
     49//public : uint32_t              _size_packet_id               ;
     50//public : uint32_t              _size_general_register        ;
     51//public : uint32_t              _size_special_register        ;
     52                               
     53  public : bool                  _have_component_execute_queue ;
     54//public : bool                  _have_port_context_id         ;
     55//public : bool                  _have_port_front_end_id       ;
     56//public : bool                  _have_port_ooo_engine_id      ;
     57//public : bool                  _have_port_packet_id          ;
    5758
    5859  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue  ::Parameters * _param_write_queue;
     
    6061
    6162    //-----[ methods ]-----------------------------------------------------------
    62   public : Parameters  (uint32_t size_write_queue   ,
    63                         uint32_t size_execute_queue ,
    64                         uint32_t nb_context         ,
    65                         uint32_t nb_front_end       ,
    66                         uint32_t nb_ooo_engine      ,
    67                         uint32_t nb_packet          ,
    68                         uint32_t size_general_data  ,
    69                         uint32_t nb_general_register,
    70                         uint32_t size_special_data  ,
    71                         uint32_t nb_special_register,
    72                         uint32_t nb_bypass_write    ,
    73                         bool     is_toplevel=false);
     63  public : Parameters  (uint32_t              size_write_queue   ,
     64                        uint32_t              size_execute_queue ,
     65                        uint32_t              nb_context         ,
     66                        uint32_t              nb_front_end       ,
     67                        uint32_t              nb_ooo_engine      ,
     68                        uint32_t              nb_packet          ,
     69                        uint32_t              size_general_data  ,
     70                        uint32_t              nb_general_register,
     71                        uint32_t              size_special_data  ,
     72                        uint32_t              nb_special_register,
     73                        uint32_t              nb_bypass_write    ,
     74                        write_queue::Twrite_queue_scheme_t write_queue_scheme ,
     75                        bool                  is_toplevel=false);
    7476//public : Parameters  (Parameters & param) ;
    7577  public : ~Parameters () ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Parameters.cpp

    r113 r115  
    1919#undef  FUNCTION
    2020#define FUNCTION "Write_unit::Parameters"
    21   Parameters::Parameters (uint32_t size_write_queue   ,
    22                           uint32_t size_execute_queue ,
    23                           uint32_t nb_context         ,
    24                           uint32_t nb_front_end       ,
    25                           uint32_t nb_ooo_engine      ,
    26                           uint32_t nb_packet          ,
    27                           uint32_t size_general_data  ,
    28                           uint32_t nb_general_register,
    29                           uint32_t size_special_data  ,
    30                           uint32_t nb_special_register,
    31                           uint32_t nb_bypass_write    ,
    32                           bool     is_toplevel        ):
     21  Parameters::Parameters (uint32_t              size_write_queue   ,
     22                          uint32_t              size_execute_queue ,
     23                          uint32_t              nb_context         ,
     24                          uint32_t              nb_front_end       ,
     25                          uint32_t              nb_ooo_engine      ,
     26                          uint32_t              nb_packet          ,
     27                          uint32_t              size_general_data  ,
     28                          uint32_t              nb_general_register,
     29                          uint32_t              size_special_data  ,
     30                          uint32_t              nb_special_register,
     31                          uint32_t              nb_bypass_write    ,
     32                          write_queue::Twrite_queue_scheme_t write_queue_scheme ,
     33                          bool                  is_toplevel):
    3334    behavioural::Parameters("Write_unit")
    3435  {
     
    4445    _nb_special_register          = nb_special_register;
    4546    _nb_bypass_write              = nb_bypass_write    ;
    46                                  
     47    _write_queue_scheme           = write_queue_scheme ;
     48
    4749    _nb_gpr_write                 = 1;
    4850    _nb_spr_write                 = 1;
     
    5052    _have_component_execute_queue = _size_execute_queue > 0;
    5153                                 
    52     _param_write_queue  = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue  ::Parameters(_size_write_queue   ,
    53                                                                                                                                                     _nb_context         ,
    54                                                                                                                                                     _nb_front_end       ,
    55                                                                                                                                                     _nb_ooo_engine      ,
    56                                                                                                                                                     _nb_packet          ,
    57                                                                                                                                                      size_general_data  ,
    58                                                                                                                                                     _nb_general_register,
    59                                                                                                                                                      size_special_data  ,
    60                                                                                                                                                     _nb_special_register,
    61                                                                                                                                                     _nb_bypass_write    );
     54    _param_write_queue  = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue  ::Parameters
     55      (_size_write_queue   ,
     56       _nb_context         ,
     57       _nb_front_end       ,
     58       _nb_ooo_engine      ,
     59       _nb_packet          ,
     60        size_general_data  ,
     61       _nb_general_register,
     62        size_special_data  ,
     63       _nb_special_register,
     64       _nb_bypass_write    ,
     65       _write_queue_scheme );
    6266   
    6367    if (_have_component_execute_queue)
    64       _param_execute_queue  = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_queue::Parameters(_size_execute_queue   ,
    65                                                                                                                                                         _nb_context         ,
    66                                                                                                                                                         _nb_front_end       ,
    67                                                                                                                                                         _nb_ooo_engine      ,
    68                                                                                                                                                         _nb_packet          ,
    69                                                                                                                                                          size_general_data  ,
    70                                                                                                                                                          size_special_data  );
    71 
     68      _param_execute_queue  = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::execute_queue::Parameters
     69        (_size_execute_queue ,
     70         _nb_context         ,
     71         _nb_front_end       ,
     72         _nb_ooo_engine      ,
     73         _nb_packet          ,
     74          size_general_data  ,
     75          size_special_data  );
     76   
    7277    test();
    7378
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_allocation.cpp

    r112 r115  
    111111     if (usage_is_set(_usage,USE_SYSTEMC))
    112112       {
    113          ALLOC3(_destination,std::list<destination_t>,_param->_nb_read_unit,_param->_nb_thread,_param->_nb_type);;
     113         ALLOC3(_destination,std::list<destination_t>,_param->_nb_read_unit,_param->_nb_thread,_param->_nb_type);
    114114       }
    115115
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_deallocation.cpp

    r112 r115  
    6969         DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RD           , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_general_register );
    7070
    71          DELETE3(_destination,_param->_nb_read_unit,_param->_nb_thread,_param->_nb_type);;
     71         DELETE3(_destination,_param->_nb_read_unit,_param->_nb_thread,_param->_nb_type);
    7272      }
    7373    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/config_min.cfg

    r88 r115  
    25251       1       +1      # size_execute_queue                         [0]       [nb_write_unit]
    26261       1       +1      # nb_bypass_write                            [0]       [nb_write_unit]
     270       1       +1      # write_queue_scheme                         [0]       [nb_write_unit]
    27281       1       +1      # nb_gpr_bank                                         
    28291       1       +1      # nb_gpr_port_read_by_bank                             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/config_thread_1_execute_2a.cfg

    r88 r115  
    25254       4       *4      # size_execute_queue                         [0]       [nb_write_unit]
    26262       2       +1      # nb_bypass_write                            [0]       [nb_write_unit]
     270       1       +1      # write_queue_scheme                         [0]       [nb_write_unit]
    27284       4       +1      # nb_gpr_bank                                         
    28291       1       +1      # nb_gpr_port_read_by_bank                             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/config_thread_1_execute_2b.cfg

    r88 r115  
    43431       1       +1      # nb_bypass_write                            [2]       [nb_write_unit]
    44444       4       +1      # nb_bypass_write                            [3]       [nb_write_unit]
     450       0       +1      # write_queue_scheme                         [0]       [nb_write_unit]
     460       1       +1      # write_queue_scheme                         [1]       [nb_write_unit]
     470       0       +1      # write_queue_scheme                         [2]       [nb_write_unit]
     480       1       +1      # write_queue_scheme                         [3]       [nb_write_unit]
    45494       4       +1      # nb_gpr_bank                                         
    46502       2       +1      # nb_gpr_port_read_by_bank                             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/config_thread_1_execute_3a.cfg

    r88 r115  
    44441       1       +1      # nb_bypass_write                            [2]       [nb_write_unit]
    45454       4       +1      # nb_bypass_write                            [3]       [nb_write_unit]
     460       0       +1      # write_queue_scheme                         [0]       [nb_write_unit]
     470       1       +1      # write_queue_scheme                         [1]       [nb_write_unit]
     480       0       +1      # write_queue_scheme                         [2]       [nb_write_unit]
     490       1       +1      # write_queue_scheme                         [3]       [nb_write_unit]
    46504       4       +1      # nb_gpr_bank                                         
    47512       2       +1      # nb_gpr_port_read_by_bank                             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/config_thread_1_execute_6a.cfg

    r88 r115  
    47471       1       +1      # nb_bypass_write                            [2]       [nb_write_unit]
    48484       4       +1      # nb_bypass_write                            [3]       [nb_write_unit]
     490       0       +1      # write_queue_scheme                         [0]       [nb_write_unit]
     500       1       +1      # write_queue_scheme                         [1]       [nb_write_unit]
     510       0       +1      # write_queue_scheme                         [2]       [nb_write_unit]
     520       1       +1      # write_queue_scheme                         [3]       [nb_write_unit]
    49534       4       +1      # nb_gpr_bank                                         
    50542       2       +1      # nb_gpr_port_read_by_bank                             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/config_thread_8_execute_2a.cfg

    r88 r115  
    25254       4       *4      # size_execute_queue                         [0]       [nb_write_unit]
    26262       2       +1      # nb_bypass_write                            [0]       [nb_write_unit]
     270       0       +1      # write_queue_scheme                         [0]       [nb_write_unit]
    27284       4       +1      # nb_gpr_bank                                         
    28291       1       +1      # nb_gpr_port_read_by_bank                             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/config_thread_8_execute_2b.cfg

    r88 r115  
    25254       4       *4      # size_execute_queue                         [0]       [nb_write_unit]
    26262       2       +1      # nb_bypass_write                            [0]       [nb_write_unit]
     270       1       +1      # write_queue_scheme                         [0]       [nb_write_unit]
    27284       4       +1      # nb_gpr_bank                                         
    28291       1       +1      # nb_gpr_port_read_by_bank                             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/config_thread_8_execute_2c.cfg

    r88 r115  
    25254       4       *4      # size_execute_queue                         [0]       [nb_write_unit]
    26262       2       +1      # nb_bypass_write                            [0]       [nb_write_unit]
     270       0       +1      # write_queue_scheme                         [0]       [nb_write_unit]
    27284       4       +1      # nb_gpr_bank                                         
    28291       1       +1      # nb_gpr_port_read_by_bank                             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/src/main.cpp

    r88 r115  
    3939  err (_(" * size_execute_queue                        [nb_write_unit]                                        (uint32_t           )\n"));
    4040  err (_(" * nb_bypass_write                           [nb_write_unit]                                        (uint32_t           )\n"));
     41  err (_(" * write_queue_scheme                        [nb_write_unit]                                        (Twrite_queue_scheme_t)\n"));
    4142  err (_(" * nb_gpr_bank                                                                                      (uint32_t           )\n"));
    4243  err (_(" * nb_gpr_port_read_by_bank                                                                         (uint32_t           )\n"));
     
    9798                       1*nb_functionnal_unit+
    9899                       8*nb_load_store_unit+
    99                        3*nb_write_unit+
     100                       4*nb_write_unit+
    100101                       4*nb_ooo_engine+
    101102//                     sum_execute_unit_port*nb_write_unit+
     
    167168               1*nb_functionnal_unit+
    168169               8*nb_load_store_unit+
    169                3*nb_write_unit+
     170               4*nb_write_unit+
    170171               4*nb_ooo_engine+
    171172               sum_execute_unit_port*nb_write_unit+
     
    196197  for (uint32_t i=0; i<nb_write_unit; i++)
    197198    nb_bypass_write    [i] = atoi(argv[x++]);
     199
     200  multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t * write_queue_scheme    = new multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t [nb_write_unit];
     201  for (uint32_t i=0; i<nb_write_unit; i++)
     202    write_queue_scheme    [i] = fromString<multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t>(argv[x++]);
    198203
    199204  uint32_t nb_gpr_bank                = atoi(argv[x++]);
     
    339344         size_execute_queue                            ,
    340345         nb_bypass_write                               ,
     346         write_queue_scheme                            ,
    341347         
    342348         nb_gpr_bank                                   ,
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/include/Parameters.h

    r88 r115  
    7373  public : uint32_t            * _size_execute_queue                            ; //[nb_write_unit]
    7474  public : uint32_t            * _nb_bypass_write                               ; //[nb_write_unit]
     75  public : multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t * _write_queue_scheme; //[nb_write_unit]
     76
    7577    //  * register_unit                                                               
    7678  public : uint32_t              _nb_gpr_read                                   ;
     
    172174                        uint32_t            * size_execute_queue                            ,//[nb_write_unit]
    173175                        uint32_t            * nb_bypass_write                               ,//[nb_write_unit]
    174                        
     176                        multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t * write_queue_scheme,//[nb_write_unit]
     177
    175178                        uint32_t              nb_gpr_bank                                   ,
    176179                        uint32_t              nb_gpr_port_read_by_bank                      ,
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Parameters.cpp

    r109 r115  
    5050                          uint32_t            * size_execute_queue                        ,//[nb_write_unit]
    5151                          uint32_t            * nb_bypass_write                           ,//[nb_write_unit]
     52                          multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t * write_queue_scheme,//[nb_write_unit]
    5253                         
    5354                          uint32_t              nb_gpr_bank                               ,
     
    108109    _size_execute_queue                         = size_execute_queue                   ;
    109110    _nb_bypass_write                            = nb_bypass_write                      ;
     111    _write_queue_scheme                         = write_queue_scheme                   ;
    110112                                               
    111113    _nb_gpr_bank                                = nb_gpr_bank                          ;
     
    456458          size_special_data          ,
    457459         _max_nb_special_register    ,
    458          _nb_bypass_write         [i]);
    459 
     460         _nb_bypass_write         [i],
     461         _write_queue_scheme      [i]);
    460462
    461463    log_printf(TRACE,Execute_loop,FUNCTION,"Parameters : read_unit_to_execution_unit");
Note: See TracChangeset for help on using the changeset viewer.