Changeset 117 for trunk/IPs


Ignore:
Timestamp:
May 16, 2009, 4:42:39 PM (16 years ago)
Author:
rosiere
Message:

1) Platforms : add new organization for test
2) Load_Store_Unit : add array to count nb_check in store_queue
3) Issue_queue and Core_Glue : rewrite the issue network
4) Special_Register_Unit : add reset value to register CID
5) Softwares : add multicontext test
6) Softwares : add SPECINT
7) Softwares : add MiBench?
7) Read_queue : inhib access for r0
8) Change Core_Glue (network) - dont yet support priority and load balancing scheme

Location:
trunk/IPs/systemC
Files:
11 added
1 deleted
113 edited
8 moved

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/Environment/Cache/src/Cache_latence.cpp

    r81 r117  
    2626    if (type_cache == INSTRUCTION_CACHE)
    2727      {
    28         _cout(CACHE,"Instruction");
     28        __cout(CACHE,"Instruction");
    2929        cache                 = icache_dedicated [num_entity];
    3030        param_cache_dedicated = param->param_icache_dedicated [num_entity];
     
    3232    else
    3333      {
    34         _cout(CACHE,"Data");
     34        __cout(CACHE,"Data");
    3535        cache                 = dcache_dedicated [num_entity];
    3636        param_cache_dedicated = param->param_dcache_dedicated [num_entity];
    3737      }
    38     _cout(CACHE," [%d] - entity : %d, address : 0x%.x\n",num_port,num_entity,address);
     38    __cout(CACHE," [%d] - entity : %d, address : 0x%.x\n",num_port,num_entity,address);
    3939
    4040    if (num_port >= cache->param->nb_port)
     
    4949    if (access_dedicated.hit == MISS)
    5050      {
    51         _cout(CACHE," * Access Cache_shared");
     51        _cout(CACHE," * Access Cache_shared\n");
    5252
    5353        // Make a access with this level "shared"
  • trunk/IPs/systemC/Environment/Common/include/Debug.h

    r114 r117  
    22#define ENVIRONMENT_COMMON_DEBUG_H
    33
     4#define DEBUG_true        true
    45#define DEBUG_ENVIRONMENT true
    56#define DEBUG_CACHE       true
     
    1112#define DEBUG_TTY         true
    1213
    13 # define _cout(component, str...)                                       \
     14#define MSG_ENVIRONMENT "[ENVIRONMENT]"
     15
     16#define __cout(component,str...)                                        \
    1417  do                                                                    \
    1518    {                                                                   \
    16       if ( DEBUG_ ## component == true )                                \
    17         {                                                               \
    18           fprintf(stdout,str);                                          \
    19         }                                                               \
     19      fprintf(stdout,str);                                              \
    2020    }                                                                   \
    2121  while(0)
    2222
    23 # define _cerr(str...)                                                   \
     23#define __cerr(str...)                                                  \
    2424  do                                                                    \
    2525    {                                                                   \
     
    2828  while(0)
    2929
     30#define cout(str...)                                                    \
     31  do                                                                    \
     32    {                                                                   \
     33      fprintf(stdout,"%s ",MSG_ENVIRONMENT);                            \
     34      __cout(true,str);                                                 \
     35      fflush (stdout);                                                  \
     36    }                                                                   \
     37  while(0)
     38
     39#define cerr(str...)                                                    \
     40  do                                                                    \
     41    {                                                                   \
     42      fprintf(stderr,"%s ",MSG_ENVIRONMENT);                            \
     43      __cerr(str);                                                      \
     44      fflush (stderr);                                                  \
     45    }                                                                   \
     46  while(0)
     47
     48#define _cout(component, str...)                                        \
     49  do                                                                    \
     50    {                                                                   \
     51      if (DEBUG_ ## component == true )                                 \
     52        {                                                               \
     53          cout(str);                                                    \
     54        }                                                               \
     55    }                                                                   \
     56  while(0)
     57
     58#define _cerr(str...) cerr(str)
     59
    3060#endif
  • trunk/IPs/systemC/Environment/Data/src/loadexec.c

    r81 r117  
    3333#include <string.h>
    3434#include <bfd.h>
     35#include "../../Common/include/Debug.h"
    3536
    3637#ifndef TRUE
     
    110111
    111112   if (!exec) {
    112       fprintf(stderr, "Cannot open File '%s'\n", file);
     113      cerr("Cannot open File '%s'\n", file);
    113114      exit(1);
    114115   }
    115116
    116117   if (bfd_check_format(exec, bfd_object) != TRUE && !(exec->flags & EXEC_P)) {
    117       fprintf(stderr, "File %s is not an executable file\n",
    118                        file); //bfd_get_filename(exec));
     118      cerr("File %s is not an executable file\n",
     119            file); //bfd_get_filename(exec));
    119120      exit(1);
    120121   }
    121122
    122 #if 1
    123    printf("Loading sections ");
     123#if 0
     124   cout("Loading sections ");
    124125   for (i = 0; sections[i]; i++)
    125       printf("%s%s", sections[i], sections[i+1] ? ", " : " ");
    126    printf("from \"%s\"\n",bfd_get_filename(exec));
    127    //printf("of executable '%s' for '%s' architecture in format '%s'\n",
     126     __cout("%s%s", sections[i], ((sections[i+1]!=NULL)?", ":" "));
     127   __cout("from \"%s\"\n",bfd_get_filename(exec));
     128   //cout("of executable '%s' for '%s' architecture in format '%s'\n",
    128129   //        bfd_get_filename(exec), bfd_printable_name(exec), exec->xvec->name);
    129130#endif
  • trunk/IPs/systemC/Environment/Makefile.Environment

    r114 r117  
    3737                                @\
    3838                                $(MAKE) $(EXE); \
    39                                 export SYSTEMC=$(SYSTEMC_$(SIMULATOR)) ; $(EXEC_PREFIX) $(EXE) $(SYSTEMC_EXEC_PARAMS_$(SIMULATOR))
     39                                export SYSTEMC=$(SYSTEMC_$(SIMULATOR_SYSTEMC)) ; $(EXEC_PREFIX) $(EXE) $(SYSTEMC_EXEC_PARAMS_$(SIMULATOR_SYSTEMC))
    4040
    4141
  • trunk/IPs/systemC/Environment/Makefile.defs

    r113 r117  
    1515
    1616#-----[ Compilation ]--------------------------------------
    17 INCDIR                          = $(SYSTEMC_INCDIR_$(SIMULATOR))        \
     17INCDIR                          = $(SYSTEMC_INCDIR_$(SIMULATOR_SYSTEMC))        \
    1818                                  -I$(DIR_INC)                          \
    1919                                  -I../processor/Morpheo
    2020
    21 LIBDIR                          = $(SYSTEMC_LIBDIR_$(SIMULATOR))
     21LIBDIR                          = $(SYSTEMC_LIBDIR_$(SIMULATOR_SYSTEMC))
    2222
    2323LIBNAME                         = -lbfd                                 \
    2424                                  -liberty                              \
    25                                   $(SYSTEMC_LIBNAME_$(SIMULATOR))
     25                                  $(SYSTEMC_LIBNAME_$(SIMULATOR_SYSTEMC))
    2626
    27 FLAGS                           = $(SYSTEMC_CFLAGS_$(SIMULATOR))
     27FLAGS                           = $(SYSTEMC_CFLAGS_$(SIMULATOR_SYSTEMC))
    2828
    2929MORPHEO_CC_FLAGS                = $(MORPHEO_FLAGS) $(CC_FLAGS)           $(INCDIR)
  • trunk/IPs/systemC/Environment/TTY/src/TTY_write.cpp

    r81 r117  
    1313   
    1414    fputc (data, xtty[num_tty].log_file);
     15    fflush(xtty[num_tty].log_file);
    1516
    1617    return true;
  • trunk/IPs/systemC/Environment/include/Environment.h

    r88 r117  
    22#define ENVIRONMENT_H
    33
     4#include "../Common/include/Debug.h"
    45#include "../Cache/include/Cache.h"
    56#include "../Data/include/Data.h"
     
    108109    {
    109110      _cout(ENVIRONMENT,"<itoa> : size : %d, ",size);
    110       _cout(ENVIRONMENT,"src : %.8x ",static_cast<uint32_t>(src));
    111       _cout(ENVIRONMENT,"dest : ");
     111      __cout(ENVIRONMENT,"src : %.8x ",static_cast<uint32_t>(src));
     112      __cout(ENVIRONMENT,"dest : ");
    112113
    113114      for (uint32_t i=0; i<size; i++)
     
    117118          src >>= 8; // shift byte
    118119
    119           _cout(ENVIRONMENT,"%.2x",0xff&static_cast<uint32_t>(dest [j]));
     120          __cout(ENVIRONMENT,"%.2x",0xff&static_cast<uint32_t>(dest [j]));
    120121
    121122        }
    122       _cout(ENVIRONMENT,".\n");
     123      __cout(ENVIRONMENT,".\n");
    123124    }
    124125   
     
    128129    {
    129130      dest = 0;
    130 
     131     
    131132      _cout(ENVIRONMENT,"<atoi> : size : %d, ",size);
    132       _cout(ENVIRONMENT,"src : ");
     133      __cout(ENVIRONMENT,"src : ");
    133134
    134135      for (uint32_t i=0; i<size; i++)
     
    138139          dest |= (static_cast<T>(src [j]) & 0xFF);
    139140
    140           _cout(ENVIRONMENT,"%.2x",0xff&static_cast<uint32_t>(src [j]));
     141          __cout(ENVIRONMENT,"%.2x",0xff&static_cast<uint32_t>(src [j]));
    141142        }
    142       _cout(ENVIRONMENT," dest : %.8x\n",static_cast<uint32_t>(dest));
     143      __cout(ENVIRONMENT," dest : %.8x\n",static_cast<uint32_t>(dest));
    143144    }
    144145  };
  • trunk/IPs/systemC/Environment/include/Environment_Parameters.h

    r88 r117  
    1414  class Parameters
    1515  {
     16  public : uint32_t                nb_thread               ;
    1617  public : uint32_t                nb_iport                ;
    1718  public : uint32_t                nb_dport                ;
     
    5354
    5455  public : Parameters (// General
     56                       uint32_t    nb_thread,
    5557                       uint32_t    nb_cache_dedicated,
    5658                       
     
    114116                       )
    115117    {
     118      this->nb_thread                = nb_thread;
    116119      this->nb_entity                = nb_cache_dedicated;
    117120
  • trunk/IPs/systemC/Environment/src/Environment_simulation_end.cpp

    r88 r117  
    55  bool Environment::simulation_end(void)
    66  {
    7     return (nb_context_stop >= param->nb_entity);
     7    return (nb_context_stop >= param->nb_thread);
    88  }
    99
  • trunk/IPs/systemC/Environment/src/Environment_stop.cpp

    r88 r117  
    55  void Environment::stop(uint32_t num_context)
    66  {
     7
     8    cout("<stop> : num_context     : %d\n",num_context);
     9    cout("<stop> : context_stop    : %d\n",context_stop [num_context]);
     10    cout("<stop> : nb_context_stop : %d\n",nb_context_stop);
     11
     12
    713    if (context_stop [num_context] == false)
    814      {
     
    1016        nb_context_stop ++;
    1117       
    12         if (nb_context_stop >= param->nb_entity)
    13           sc_stop();
     18        if (nb_context_stop >= param->nb_thread)
     19          {
     20            cout("<stop> : end simulation\n");
     21            sc_stop();
     22          }
    1423      }
    1524  }
  • trunk/IPs/systemC/Environment/src/Environment_transition.cpp

    r114 r117  
    5252                uint32_t          size      = (param->iaccess_size_address [i]+2)/8;
    5353
    54                 _cout(ENVIRONMENT," * information\n");
    55                 _cout(ENVIRONMENT,"   * context : %d\n" ,static_cast<uint32_t>(context));
    56                 _cout(ENVIRONMENT,"   * packet  : %d\n" ,static_cast<uint32_t>(packet ));
    57                 _cout(ENVIRONMENT,"   * address : %.x\n",static_cast<uint32_t>(address));
    58                 _cout(ENVIRONMENT,"   * type    : %d\n" ,static_cast<uint32_t>(type   ));
    59                 _cout(ENVIRONMENT,"   * size    : %d\n" ,static_cast<uint32_t>(size   ));
     54                _cout(ENVIRONMENT,"  * information\n");
     55                _cout(ENVIRONMENT,"    * context : %d\n" ,static_cast<uint32_t>(context));
     56                _cout(ENVIRONMENT,"    * packet  : %d\n" ,static_cast<uint32_t>(packet ));
     57                _cout(ENVIRONMENT,"    * address : %.x\n",static_cast<uint32_t>(address));
     58                _cout(ENVIRONMENT,"    * type    : %d\n" ,static_cast<uint32_t>(type   ));
     59                _cout(ENVIRONMENT,"    * size    : %d\n" ,static_cast<uint32_t>(size   ));
    6060
    6161                // search the entity
     
    7272                    (entity.segment->getType() == data::TYPE_TARGET_MEMORY))
    7373                  {
    74                     _cout(ENVIRONMENT," * OK !\n");
     74                    _cout(ENVIRONMENT,"  * OK !\n");
    7575                    bus_error = false;
    7676                    uncached  = entity.segment->getUncached();
     
    7878                    if (must_read == true) // Test if must read the ram
    7979                      {
    80                         _cout(ENVIRONMENT,"   * must read\n");
     80                        _cout(ENVIRONMENT,"    * must read\n");
    8181                        // Read all instruction
    8282                        for (unsigned int k=0; k<param->iaccess_nb_instruction[i]; k++)
    8383                          {
    8484                            uint32_t addr = address+k*(size);
    85                             _cout(ENVIRONMENT,"   * addr    : %.8x\n",addr);
     85                            _cout(ENVIRONMENT,"    * addr    : %.8x\n",addr);
    8686
    8787                            bus_error |= !component_data->read(addr,size,read_iram[k]);
     
    9393                              }
    9494
    95                             _cout(ENVIRONMENT,"   * inst    :");
    96                             for (int32_t cpt=(param->iaccess_size_instruction[context]/8)-1; cpt>=0; --cpt)
    97                               _cout(ENVIRONMENT, "%.2x",0xff&static_cast<uint32_t>(read_iram[k][cpt]));
    98                             _cout(ENVIRONMENT, "\n");
     95                            _cout(ENVIRONMENT,"    * inst    :");
     96                            for (int32_t cpt=(param->iaccess_size_instruction[i]/8)-1; cpt>=0; --cpt)
     97                              __cout(ENVIRONMENT, "%.2x",0xff&static_cast<uint32_t>(read_iram[k][cpt]));
     98                            __cout(ENVIRONMENT, "\n");
    9999                          }
    100100                      }
     
    102102                else
    103103                  {
    104                     _cout(ENVIRONMENT, " * KO !\n");
    105                     _cout(ENVIRONMENT, "   * present : %d\n",entity.present);
     104                    _cout(ENVIRONMENT, "  * KO !\n");
     105                    _cout(ENVIRONMENT, "    * present : %d\n",entity.present);
    106106                    if (entity.present)
    107                     _cout(ENVIRONMENT, "   * type    : %d must be data::TYPE_TARGET_MEMORY (%d)\n",entity.segment->getType(), data::TYPE_TARGET_MEMORY);
     107                    _cout(ENVIRONMENT, "    * type    : %d must be data::TYPE_TARGET_MEMORY (%d)\n",entity.segment->getType(), data::TYPE_TARGET_MEMORY);
    108108                     
    109109                    // entity is not present, or is present but is not a memory : have a bus error
     
    121121                                                            cache_type.direction);
    122122               
    123                 _cout(ENVIRONMENT, "   * latence : %d\n",latence);
     123                _cout(ENVIRONMENT, "    * latence : %d\n",latence);
    124124               
    125125                // If is a respons -> compute the latence and push in the write_buffer
    126126                if (must_ack or (must_ack_on_error and bus_error))
    127127                  {
    128                     _cout(ENVIRONMENT, " * must ack\n");
     128                    _cout(ENVIRONMENT, "  * must ack\n");
    129129                   
    130130                    if (bus_error == true)
    131131                      {
    132                         _cout(ENVIRONMENT,"  * Icache : have a bus error\n");
    133                         _cout(ENVIRONMENT,"    * entity     : %d\n",i);
    134                         _cout(ENVIRONMENT,"    * port       : %d\n",j);
    135                         _cout(ENVIRONMENT,"    * req_addr   : %x\n",address);
    136                         _cout(ENVIRONMENT,"    * req_trdid  : %d\n",context);
    137                         _cout(ENVIRONMENT,"    * req_pktid  : %d\n",packet );
     132                        _cout(ENVIRONMENT,"   * Icache : have a bus error\n");
     133                        _cout(ENVIRONMENT,"     * entity     : %d\n",i);
     134                        _cout(ENVIRONMENT,"     * port       : %d\n",j);
     135                        _cout(ENVIRONMENT,"     * req_addr   : %x\n",address);
     136                        _cout(ENVIRONMENT,"     * req_trdid  : %d\n",context);
     137                        _cout(ENVIRONMENT,"     * req_pktid  : %d\n",packet );
    138138
    139139                        // Write in instruction [0] the bad address (only 32bit ....)
     
    142142                           
    143143                    // Simplification : the size of a line is a multiple of size_iword (no test)
    144                     _cout(ENVIRONMENT, "   * push in buffer_irsp[%d]\n",i);
     144                    _cout(ENVIRONMENT, "    * push in buffer_irsp[%d]\n",i);
    145145
    146146                    irsp_t * rsp = new irsp_t(context,
     
    153153                  }
    154154
    155                 _cout(ENVIRONMENT, " * End request\n");
     155                _cout(ENVIRONMENT, "  * End request\n");
    156156              }
    157157
     
    172172                uint32_t          size      = param->daccess_size_data [i]/8;
    173173
    174                 _cout(ENVIRONMENT," * information\n");
    175                 _cout(ENVIRONMENT,"   * context : %d\n" ,static_cast<uint32_t>(context));
    176                 _cout(ENVIRONMENT,"   * packet  : %d\n" ,static_cast<uint32_t>(packet ));
    177                 _cout(ENVIRONMENT,"   * address : %.x\n",static_cast<uint32_t>(address));
    178                 _cout(ENVIRONMENT,"   * type    : %d\n" ,static_cast<uint32_t>(type   ));
    179                 _cout(ENVIRONMENT,"   * size    : %d\n" ,static_cast<uint32_t>(size   ));
     174                _cout(ENVIRONMENT,"  * information\n");
     175                _cout(ENVIRONMENT,"    * context : %d\n" ,static_cast<uint32_t>(context));
     176                _cout(ENVIRONMENT,"    * packet  : %d\n" ,static_cast<uint32_t>(packet ));
     177                _cout(ENVIRONMENT,"    * address : %.x\n",static_cast<uint32_t>(address));
     178                _cout(ENVIRONMENT,"    * type    : %d\n" ,static_cast<uint32_t>(type   ));
     179                _cout(ENVIRONMENT,"    * size    : %d\n" ,static_cast<uint32_t>(size   ));
    180180
    181181                bool              uncached  = false;
     
    230230                          uint32_t num_tty   = (address - entity.segment->getBase())>>4;
    231231                          uint32_t num_print = ((address>>2) & 0x3);
    232                           _cout(ENVIRONMENT," * TYPE_TARGET_TTY : num_tty : %d, num_print : %d\n",num_tty, num_print);
     232                          _cout(true," * TYPE_TARGET_TTY : num_tty : %d, num_print : %d\n",num_tty, num_print);
    233233                         
    234234                          switch (num_print)
     
    243243                            case 1 : // STOP
    244244                              {
    245                                 printf("\n\t***** [ stop    ] Time : %.10d - Address : %.8x - Wdata[31:0] : %.2x%.2x%.2x%.2x         *****\n"
     245                                _cout(true,"\n");
     246                                _cout(true,"***********************************************************************************************\n");
     247                                _cout(true,"***** [ STOP    ] Time : %.10d - Address : %.8x - Wdata[31:0] : %.2x%.2x%.2x%.2x         *****\n"
    246248                                       ,static_cast<uint32_t>(sc_simulation_time())
    247249                                       ,static_cast<uint32_t>(address             )
     
    251253                                       ,static_cast<uint32_t>((wdata>> 0)&0xff)
    252254                                       );
    253 
    254                                 if (wdata == 0)
    255                                   std::cout << STR_OK << std::endl;
    256                                 else
    257                                   std::cout << STR_KO << std::endl;
     255                                _cout(true,"***********************************************************************************************\n");
     256                                _cout(true,"\n");
     257                                _cout(true,"%s\n",(wdata == 0)?STR_OK:STR_KO);
     258                                _cout(true,"\n");
    258259
    259260                                stop (context);
     
    263264                            case 2 : // PRINT
    264265                              {
    265                                 printf("\n\t----- [ print   ] Time : %.10d - Address : %.8x - Wdata[31:0] : %.2x%.2x%.2x%.2x         -----\n"
     266                                _cout(true,"\n");
     267                                _cout(true,"-----------------------------------------------------------------------------------------------\n");
     268                                _cout(true,"----- [ PRINT   ] Time : %.10d - Address : %.8x - Wdata[31:0] : %.2x%.2x%.2x%.2x         -----\n"
    266269                                       ,static_cast<uint32_t>(sc_simulation_time())
    267270                                       ,static_cast<uint32_t>(address             )
     
    271274                                       ,static_cast<uint32_t>((wdata>> 0)&0xff)
    272275                                       );
     276                                _cout(true,"-----------------------------------------------------------------------------------------------\n");
     277                                _cout(true,"\n");
    273278                               
    274279                                break;
     
    276281                            default :
    277282                              {
    278                                 printf("[address : %.8x] tty %d, reg %d don't exist\n",static_cast<uint32_t>(address),num_tty,num_print);
     283                                _cout(true,"[address : %.8x] tty %d, reg %d don't exist\n",static_cast<uint32_t>(address),num_tty,num_print);
    279284                                bus_error = true;
    280285                              }
     
    288293                      case data::TYPE_TARGET_MEMORY  :
    289294                        {
    290                           _cout(ENVIRONMENT,"MEMORY\n");
    291                           _cout(ENVIRONMENT,"access : %x\n",address);
     295                          _cout(ENVIRONMENT,"  * TYPE_TARGET_MEMORY\n");
     296                          _cout(ENVIRONMENT,"    * access : %x\n",address);
    292297
    293298                          if (must_read == true)
    294299                            {
    295300                              // Read
    296                               _cout(ENVIRONMENT," * Read  (%d bytes)\n",size);
     301                              _cout(ENVIRONMENT,"    * Read  (%d bytes)\n",size);
    297302                              bus_error |= !component_data->read(address,nb_bytes,read_dram[0]); // always read a complete word
    298303
    299                               _cout(ENVIRONMENT," * Rdata : ");
    300                               for (uint32_t i=0; i<nb_bytes; i++)
    301                                 _cout(ENVIRONMENT,"%.2x",0xff&static_cast<uint32_t>(read_dram[0][i]));
    302                               _cout(ENVIRONMENT,".\n");
    303                              
    304304                              // Multiple copy
    305305                              for (unsigned int it_size_data = nb_bytes; it_size_data < size; it_size_data+=nb_bytes)
     
    314314                            {
    315315                              // Write
    316                               _cout(ENVIRONMENT," * Write (%d bytes)\n",size);
    317                               _cout(ENVIRONMENT," * Wdata : %x\n",wdata);
     316                              _cout(ENVIRONMENT,"    * Write (%d bytes)\n",size);
     317                              _cout(ENVIRONMENT,"    * Wdata : %x\n",wdata);
    318318                              itoa<Tdcache_data_t>(wdata,write_dram,nb_bytes);
    319319
     
    329329                      case data::TYPE_TARGET_RAMLOCK :
    330330                        {
     331                          _cout(ENVIRONMENT,"  * TYPE_TARGET_RAMLOCK\n");
     332
    331333                          // Access is on a byte, else error
    332334                          if (nb_bytes != 1)
     
    338340                          uint32_t num_ramlock           = (address - entity.segment->getBase()); // Char access
    339341                          uint32_t num_component_ramlock = entity.segment->getIndex();
     342
     343                          _cout(ENVIRONMENT,"    * num_ramlock           : %d\n",num_ramlock          );
     344                          _cout(ENVIRONMENT,"    * num_component_ramlock : %d\n",num_component_ramlock);
    340345
    341346                          // No test : because out of range
     
    361366                      case data::TYPE_TARGET_SIM2OS  :
    362367                        {
     368                          _cout(ENVIRONMENT,"  * TYPE_TARGET_SIM2OS\n");
     369
    363370                          // Mapping :
    364371                          // [0]  number of service - Wonly - A write in this register lunch the execution of service
     
    368375
    369376                          uint32_t num_reg = (address - entity.segment->getBase())>>2;
     377
     378                          _cout(ENVIRONMENT,"    * num_reg : %d\n",num_reg);
    370379                         
    371380                          switch (num_reg)
     
    380389                                else
    381390                                  {
    382                                     _cout(ENVIRONMENT,"<sim2os> service     : %x\n",wdata);
     391                                    _cout(ENVIRONMENT,"    * service     : %x\n",wdata);
    383392                                    component_sim2os->execute(sim2os::int2service(static_cast<uint32_t>(wdata)));
    384393                                  }
     
    396405                                    // Decomposition en groupe octect
    397406                                    Tdcache_data_t result = static_cast<Tdcache_data_t>(reinterpret_cast<uint64_t>(component_sim2os->result));
    398                                     _cout(ENVIRONMENT,"<sim2os> result      : %x\n",result);
     407                                    _cout(ENVIRONMENT,"    * result      : %x\n",result);
    399408                                   
    400409                                    itoa<Tdcache_data_t>(result,read_dram[0],size);
     
    413422                                    // Decomposition en groupe octect
    414423                                    Tdcache_data_t error = (Tdcache_data_t)component_sim2os->error;
    415                                     _cout(ENVIRONMENT,"<sim2os> error       : %x\n",error);
     424                                    _cout(ENVIRONMENT,"    * error       : %x\n",error);
    416425                                   
    417426                                    itoa<Tdcache_data_t>(error,read_dram[0],size);
     
    429438                                  else
    430439                                    {
    431                                       _cout(ENVIRONMENT,"<sim2os> argument[%d] : %x\n",num_reg-1,wdata);
     440                                      _cout(ENVIRONMENT,"    * argument[%d] : %x\n",num_reg-1,wdata);
    432441                                      component_sim2os->parameter(num_reg-2,(void *)wdata);
    433442                                    }
     
    480489                    if (bus_error == true)
    481490                      {
    482                         _cout(ENVIRONMENT,"  * Dcache : have a bus error\n");
    483                         _cout(ENVIRONMENT,"    * entity     : %d\n",i);
    484                         _cout(ENVIRONMENT,"    * port       : %d\n",j);
    485                         _cout(ENVIRONMENT,"    * req_addr   : 0x%x\n",address);
    486                         _cout(ENVIRONMENT,"    * req_trdid  : %d\n",context);
    487                         _cout(ENVIRONMENT,"    * req_pktid  : %d\n",packet );
     491                        _cout(ENVIRONMENT,"   * Dcache : have a bus error\n");
     492                        _cout(ENVIRONMENT,"     * entity     : %d\n",i);
     493                        _cout(ENVIRONMENT,"     * port       : %d\n",j);
     494                        _cout(ENVIRONMENT,"     * req_addr   : 0x%x\n",address);
     495                        _cout(ENVIRONMENT,"     * req_trdid  : %d\n",context);
     496                        _cout(ENVIRONMENT,"     * req_pktid  : %d\n",packet );
    488497
    489498                        // Write in data [0] the bad address (32bit or 64bits    )
    490499                        itoa<Tdcache_data_t>(address,read_dram[0],param->daccess_size_data[i]/8);
    491500                      }
     501
     502                    _cout(ENVIRONMENT,"     * Rdata : ");
     503                    for (uint32_t i=0; i<nb_bytes; i++)
     504                      __cout(ENVIRONMENT,"%.2x",0xff&static_cast<uint32_t>(read_dram[0][i]));
     505                    _cout(ENVIRONMENT,".\n");
    492506                   
    493507                    // Simplification : the size of a line is a multiple of size_iword (no test)
     
    501515                  }
    502516              }
     517
    503518        //=============================================================================
    504519        //===== [ OTHERS ]=============================================================
     
    523538//          {
    524539//            // Test if transaction
    525 // //         cout << "[" << i << "]"
    526 // //              << "[" << j   << "] "
    527 // //              << "dreq_val : " << DCACHE [i][j].REQ_VAL.read() << " "
    528 // //              << "dreq_ack : " << dreq_ack [i][j] << endl;
    529540
    530541//            if ( (DCACHE [i][j].REQ_VAL.read() && dreq_ack [i][j]) == false)
     
    600611//                      case 1 : // STOP
    601612//                        {
    602 //                          printf("\n\t***** [ stop    ] Time : %.10d - Address : %.8x - Wdata[31:0] : %.2x%.2x%.2x%.2x         *****\n"
     613//                          cout("\n\t***** [ stop    ] Time : %.10d - Address : %.8x - Wdata[31:0] : %.2x%.2x%.2x%.2x         *****\n"
    603614//                                 ,(unsigned int)sc_simulation_time()
    604615//                                 ,(unsigned int)addr
     
    624635//                      case 2 : // PRINT
    625636//                        {
    626 //                          printf("\n\t----- [ print   ] Time : %.10d - Address : %.8x - Wdata[31:0] : %.2x%.2x%.2x%.2x         -----\n"
     637//                          cout("\n\t----- [ print   ] Time : %.10d - Address : %.8x - Wdata[31:0] : %.2x%.2x%.2x%.2x         -----\n"
    627638//                                 ,(unsigned int)sc_simulation_time()
    628639//                                 ,(unsigned int)addr
     
    637648//                      default :
    638649//                        {
    639 //                          printf("<%s> : [address : %.8x] tty %d, reg %d don't exist\n",NAME,(unsigned int)addr,num_tty,num_print);
     650//                          cout("<%s> : [address : %.8x] tty %d, reg %d don't exist\n",NAME,(unsigned int)addr,num_tty,num_print);
    640651//                          exit(1);
    641652//                        }
     
    667678
    668679//                    /*
    669 //                    printf("Access ramlock   ( %d )\n" ,(uint32_t)sc_simulation_time());
    670 //                    printf(" * addr          : %.8x\n" ,(uint32_t)addr);
    671 //                    printf(" * trdid         : %d\n"   ,(uint32_t)DCACHE[i][j].REQ_TRDID.read());
    672 //                    printf(" * r/w           : %d/%d\n",must_read,must_write);
    673 //                    printf(" * val           : %d\n"   ,(uint32_t)read_dram[0]);
     680//                    cout("Access ramlock   ( %d )\n" ,(uint32_t)sc_simulation_time());
     681//                    cout(" * addr          : %.8x\n" ,(uint32_t)addr);
     682//                    cout(" * trdid         : %d\n"   ,(uint32_t)DCACHE[i][j].REQ_TRDID.read());
     683//                    cout(" * r/w           : %d/%d\n",must_read,must_write);
     684//                    cout(" * val           : %d\n"   ,(uint32_t)read_dram[0]);
    674685//                    */
    675686//                    break;
     
    696707//                          else
    697708//                            {
    698 //                              printf("<sim2os> service     : %.8x\n",(uint32_t)wdata);
     709//                              cout("<sim2os> service     : %.8x\n",(uint32_t)wdata);
    699710//                              component_sim2os->execute(int2service((uint32_t)wdata));
    700711//                            }
     
    712723//                              // Decomposition en groupe octect
    713724//                              uint32_t result = (uint32_t) component_sim2os->result;
    714 //                              printf("<sim2os> result      : %.8x (%d)\n",result,result);
     725//                              cout("<sim2os> result      : %.8x (%d)\n",result,result);
    715726                               
    716727//                              read_dram = itoa(result,read_dram,SIZE_DDATA/8);
     
    729740//                              // Decomposition en groupe octect
    730741//                              uint32_t error = (uint32_t) component_sim2os->error;
    731 //                              printf("<sim2os> error       : %.8x\n",error);
     742//                              cout("<sim2os> error       : %.8x\n",error);
    732743//                              read_dram = itoa(error ,read_dram,SIZE_DDATA/8);
    733744//                            }
     
    744755//                            {
    745756//                              uint32_t data = (uint32_t)wdata;
    746 //                              printf("<sim2os> argument[%d] : %.8x\n",num_reg-1,data);
     757//                              cout("<sim2os> argument[%d] : %.8x\n",num_reg-1,data);
    747758//                              component_sim2os->parameter(num_reg-2,(void *)data);
    748759//                            }
     
    793804//              {
    794805//                if (bus_error == true)
    795 //                  cout << "Dcache : have a bus error" << endl;
     806//                  cout("Dcache : have a bus error");
    796807//                component_buffer_drsp [i]->push(latence,
    797808//                                                         Entry((uint32_t)DCACHE [i][j].REQ_TRDID.read() ,
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/SelfTest/config-min.cfg

    r88 r117  
    11Core_Glue
    221       1       +1      # nb_front_end                                                                                     
    3 1       1       +1      # nb_context                            [0]          [nb_front_end]
    4 1       1       +1      # nb_ooo_engine                                                                                   
    5 1       1       +1      # nb_execute_loop                                                                                 
    6 1       1       +1      # ooo_engine_nb_front_end               [0]          [nb_ooo_engine]
    7 1       1       +1      # ooo_engine_nb_execute_loop            [0]          [nb_ooo_engine]
    8 1       1       +1      # execute_loop_nb_ooo_engine            [0]          [nb_execute_loop]
    9 1       1       +1      # nb_inst_decod                         [0]          [nb_front_end]   
    10 1       1       +1      # front_end_nb_inst_branch_complete     [0]          [nb_front_end]   
    11 1       1       +1      # ooo_engine_nb_inst_branch_complete    [0]          [nb_ooo_engine]
    12 1       1       +1      # nb_inst_insert                        [0]          [nb_ooo_engine] 
    13 1       1       +1      # nb_inst_issue                         [0]          [nb_ooo_engine] 
    14 1       1       +1      # nb_inst_execute                       [0][0]       [nb_ooo_engine][ooo_engine_nb_execute_loop]
    15 1       1       +1      # nb_read_unit                          [0]          [nb_execute_loop]
    16 1       1       +1      # nb_write_unit                         [0]          [nb_execute_loop]
     31       1       +1      # nb_context                            [0]                  [nb_front_end]
     41       1       +1      # nb_ooo_engine                                                                                           
     51       1       +1      # nb_execute_loop                                                                                         
     61       1       +1      # ooo_engine_nb_front_end               [0]                  [nb_ooo_engine]
     71       1       +1      # ooo_engine_nb_execute_loop            [0]                  [nb_ooo_engine]
     81       1       +1      # execute_loop_nb_ooo_engine            [0]                  [nb_execute_loop]
     91       1       +1      # nb_inst_decod                         [0]                  [nb_front_end]   
     101       1       +1      # front_end_nb_inst_branch_complete     [0]                  [nb_front_end]   
     111       1       +1      # ooo_engine_nb_inst_branch_complete    [0]                  [nb_ooo_engine]
     121       1       +1      # nb_inst_insert                        [0]                  [nb_ooo_engine] 
     131       1       +1      # nb_inst_issue                         [0]                  [nb_ooo_engine] 
     141       1       +1      # nb_inst_execute                       [0][0]               [nb_ooo_engine][ooo_engine_nb_execute_loop]
     151       1       +1      # nb_read_unit                          [0]                  [nb_execute_loop]
     161       1       +1      # nb_write_unit                         [0]                  [nb_execute_loop]
    17171       1       +1      # size_depth                                                                                       
    18181       1       +1      # size_rob_ptr                                                                                     
     
    25251       1       +1      # dispatch_priority                                                                               
    26261       1       +1      # dispatch_load_balancing                                                                         
    27 1       1       +1      # table_dispatch                        [0][0][0][0] [nb_ooo_engine][nb_inst_issue][execute_loop][nb_read_unit]
    28 0       0       +1      # translate_ooo_engine_num_front_end    [0][0]       [nb_ooo_engine][ooo_engine_nb_front_end]
    29 0       0       +1      # translate_ooo_engine_num_execute_loop [0][0]       [nb_ooo_engine][ooo_engine_nb_execute_loop]
    30 0       0       +1      # translate_execute_loop_num_ooo_engine [0][0]       [nb_execute_loop][execute_loop_nb_ooo_engine]
     271       1       +1      # table_dispatch                        [0][0][0][0]         [nb_ooo_engine][nb_inst_issue][execute_loop][nb_read_unit]
     280       0       +1      # translate_ooo_engine_num_front_end    [0][0]               [nb_ooo_engine][ooo_engine_nb_front_end]
     290       0       +1      # translate_ooo_engine_num_execute_loop [0][0]               [nb_ooo_engine][ooo_engine_nb_execute_loop]
     300       0       +1      # translate_execute_loop_num_ooo_engine [0][0]               [nb_execute_loop][execute_loop_nb_ooo_engine]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/SelfTest/src/main.cpp

    r88 r117  
    2525  err (_(" * ooo_engine_nb_inst_branch_complete    [nb_ooo_engine]                                            (uint32_t         )\n"));
    2626  err (_(" * nb_inst_insert                        [nb_ooo_engine]                                            (uint32_t         )\n"));
    27   err (_(" * nb_inst_issue                         [nb_ooo_engine]                                            (uint32_t         )\n"));
     27//err (_(" * nb_inst_issue_queue                   [nb_ooo_engine]                                            (uint32_t         )\n"));
     28  err (_(" * nb_inst_issue_slot                    [nb_ooo_engine]                                            (uint32_t         )\n"));
    2829  err (_(" * nb_inst_execute                       [nb_ooo_engine][ooo_engine_nb_execute_loop]                (uint32_t         )\n"));
    2930  err (_(" * nb_read_unit                          [nb_execute_loop]                                          (uint32_t         )\n"));
     
    4041  err (_(" * dispatch_load_balancing                                                                          (Tload_balancing_t)\n"));
    4142  err (_(" * table_dispatch                        [nb_ooo_engine][nb_inst_issue][execute_loop][nb_read_unit] (bool             )\n"));
     43//   err (_(" * table_issue_type                      [execute_loop][nb_read_unit][MAX_TYPE]                      (bool             )\n"));
     44//   err (_("   * TYPE_ALU    \n"));
     45//   err (_("   * TYPE_SHIFT  \n"));
     46//   err (_("   * TYPE_MOVE   \n"));
     47//   err (_("   * TYPE_TEST   \n"));
     48//   err (_("   * TYPE_MUL    \n"));
     49//   err (_("   * TYPE_DIV    \n"));
     50//   err (_("   * TYPE_EXTEND \n"));
     51//   err (_("   * TYPE_FIND   \n"));
     52//   err (_("   * TYPE_SPECIAL\n"));
     53//   err (_("   * TYPE_CUSTOM \n"));
     54//   err (_("   * TYPE_BRANCH \n"));
     55//   err (_("   * TYPE_MEMORY \n"));
    4256  err (_(" * translate_ooo_engine_num_front_end    [nb_ooo_engine][ooo_engine_nb_front_end]                   (uint32_t         )\n"));
    4357  err (_(" * translate_ooo_engine_num_execute_loop [nb_ooo_engine][ooo_engine_nb_execute_loop]                (uint32_t         )\n"));
     
    7286  uint32_t              * ooo_engine_nb_inst_branch_complete   ;//[nb_ooo_engine]
    7387  uint32_t              * nb_inst_insert                       ;//[nb_ooo_engine]
    74   uint32_t              * nb_inst_issue                        ;//[nb_ooo_engine]
     88  uint32_t              * nb_inst_issue_slot                   ;//[nb_ooo_engine]
    7589  uint32_t             ** nb_inst_execute                      ;//[nb_ooo_engine][ooo_engine_nb_execute_loop]
    7690  uint32_t              * nb_read_unit                         ;//[nb_execute_loop]
     
    86100  Tpriority_t             dispatch_priority                    ;
    87101  Tload_balancing_t       dispatch_load_balancing              ;
    88   bool               **** table_dispatch                       ;//[nb_ooo_engine][nb_inst_issue][execute_loop][nb_read_unit]
     102  bool               **** table_dispatch                       ;//[nb_ooo_engine][nb_inst_issue_slot][execute_loop][nb_read_unit]
     103  bool                *** table_issue_type                     ;//                                   [execute_loop][nb_read_unit][MAX_TYPE]
    89104  uint32_t             ** translate_ooo_engine_num_front_end   ;//[nb_ooo_engine][ooo_engine_nb_front_end]
    90105  uint32_t             ** translate_ooo_engine_num_execute_loop;//[nb_ooo_engine][ooo_engine_nb_execute_loop]
     
    119134  SELFTEST1(ooo_engine_nb_inst_branch_complete   ,uint32_t         ,argv,x,nb_ooo_engine);
    120135  SELFTEST1(nb_inst_insert                       ,uint32_t         ,argv,x,nb_ooo_engine);
    121   SELFTEST1(nb_inst_issue                        ,uint32_t         ,argv,x,nb_ooo_engine);
     136  SELFTEST1(nb_inst_issue_slot                   ,uint32_t         ,argv,x,nb_ooo_engine);
    122137
    123138  uint32_t sum_ooo_engine_nb_front_end    = 0;
     
    129144      sum_ooo_engine_nb_front_end    += ooo_engine_nb_front_end    [i];
    130145      sum_ooo_engine_nb_execute_loop += ooo_engine_nb_execute_loop [i];
    131       sum_nb_inst_issue              += nb_inst_issue              [i];
     146      sum_nb_inst_issue              += nb_inst_issue_slot         [i];
    132147    }
    133148
     
    177192  SELFTEST0(dispatch_load_balancing              ,Tload_balancing_t,argv,x);
    178193
    179   SELFTEST4(table_dispatch                       ,bool             ,argv,x,nb_ooo_engine,nb_inst_issue[it1],nb_execute_loop,nb_read_unit[it3]);
     194  SELFTEST4(table_dispatch                       ,bool             ,argv,x,nb_ooo_engine,nb_inst_issue_slot[it1],nb_execute_loop,nb_read_unit[it3]);
     195
     196  ALLOC3   (table_issue_type                     ,bool                                                     ,nb_execute_loop,nb_read_unit[it1],MAX_TYPE);
     197
     198  for (uint32_t i=0; i<nb_execute_loop; ++i)
     199    for (uint32_t j=0; j<nb_read_unit[i]; ++j)
     200      for (uint32_t k=0; k<MAX_TYPE; ++k)
     201//         table_issue_type [i][j][k] = false;
     202        table_issue_type [i][j][k] = true;
     203
     204//   for (uint32_t i=0; i<nb_execute_loop; ++i)
     205//     for (uint32_t j=0; j<nb_read_unit[i]; ++j)
     206//       {
     207//         table_issue_type [i][j][TYPE_ALU    ] = fromString<bool>(argv[x++]);
     208//         table_issue_type [i][j][TYPE_SHIFT  ] = fromString<bool>(argv[x++]);
     209//         table_issue_type [i][j][TYPE_MOVE   ] = fromString<bool>(argv[x++]);
     210//         table_issue_type [i][j][TYPE_TEST   ] = fromString<bool>(argv[x++]);
     211//         table_issue_type [i][j][TYPE_MUL    ] = fromString<bool>(argv[x++]);
     212//         table_issue_type [i][j][TYPE_DIV    ] = fromString<bool>(argv[x++]);
     213//         table_issue_type [i][j][TYPE_EXTEND ] = fromString<bool>(argv[x++]);
     214//         table_issue_type [i][j][TYPE_FIND   ] = fromString<bool>(argv[x++]);
     215//         table_issue_type [i][j][TYPE_SPECIAL] = fromString<bool>(argv[x++]);
     216//         table_issue_type [i][j][TYPE_CUSTOM ] = fromString<bool>(argv[x++]);
     217//         table_issue_type [i][j][TYPE_BRANCH ] = fromString<bool>(argv[x++]);
     218//         table_issue_type [i][j][TYPE_MEMORY ] = fromString<bool>(argv[x++]);
     219//       }
     220
    180221  SELFTEST2(translate_ooo_engine_num_front_end   ,uint32_t         ,argv,x,nb_ooo_engine,ooo_engine_nb_front_end[it1]);
    181222  SELFTEST2(translate_ooo_engine_num_execute_loop,uint32_t         ,argv,x,nb_ooo_engine,ooo_engine_nb_execute_loop[it1]);
     
    198239         ooo_engine_nb_inst_branch_complete   ,//[nb_ooo_engine]
    199240         nb_inst_insert                       ,//[nb_ooo_engine]
    200          nb_inst_issue                        ,//[nb_ooo_engine]
     241         nb_inst_issue_slot                   ,//[nb_ooo_engine]
     242         nb_inst_issue_slot                   ,//[nb_ooo_engine]
    201243         nb_inst_execute                      ,//[nb_ooo_engine][ooo_engine_nb_execute_loop]
    202244         nb_read_unit                         ,//[nb_execute_loop]
     
    212254         dispatch_priority                    ,
    213255         dispatch_load_balancing              ,
    214          table_dispatch                       ,//[nb_ooo_engine][nb_inst_issue][execute_loop][nb_read_unit]
     256         table_dispatch                       ,//[nb_ooo_engine][nb_inst_issue_slot][execute_loop][nb_read_unit]
     257         table_issue_type                     ,//                                   [execute_loop][nb_read_unit][MAX_TYPE]
    215258         translate_ooo_engine_num_front_end   ,//[nb_ooo_engine][ooo_engine_nb_front_end]
    216259         translate_ooo_engine_num_execute_loop,//[nb_ooo_engine][ooo_engine_nb_execute_loop]
     
    245288  DELETE2(translate_ooo_engine_num_execute_loop,nb_ooo_engine,ooo_engine_nb_execute_loop[it1]);
    246289  DELETE2(translate_ooo_engine_num_front_end   ,nb_ooo_engine,ooo_engine_nb_front_end[it1]);
    247   DELETE4(table_dispatch                       ,nb_ooo_engine,nb_inst_issue[it1],nb_execute_loop,nb_read_unit[it2]);
     290  DELETE3(table_issue_type                                                           ,nb_execute_loop,nb_read_unit[it1],MAX_TYPE);
     291  DELETE4(table_dispatch                       ,nb_ooo_engine,nb_inst_issue_slot[it1],nb_execute_loop,nb_read_unit[it2]);
    248292  DELETE1(nb_write_unit                        ,nb_execute_loop);
    249293  DELETE1(nb_read_unit                         ,nb_execute_loop);
    250294  DELETE2(nb_inst_execute                      ,nb_ooo_engine,ooo_engine_nb_execute_loop[it1]);
    251   DELETE1(nb_inst_issue                        ,nb_ooo_engine);
     295  DELETE1(nb_inst_issue_slot                   ,nb_ooo_engine);
    252296  DELETE1(ooo_engine_nb_inst_branch_complete   ,nb_ooo_engine);
    253297  DELETE1(front_end_nb_inst_branch_complete    ,nb_front_end);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/SelfTest/src/test.cpp

    r105 r117  
    4848  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
    4949  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
     50
     51  sc_signal<Tcontext_t        >  *** out_RENAME_FRONT_END_ID                       ;
     52  sc_signal<Tcontrol_t        >  *** out_BRANCH_COMPLETE_FRONT_END_VAL             ;
     53  sc_signal<Tcontrol_t        >  ***  in_BRANCH_COMPLETE_FRONT_END_ACK             ;
     54  sc_signal<Tcontext_t        >  *** out_BRANCH_COMPLETE_FRONT_END_CONTEXT_ID      ;
     55  sc_signal<Tdepth_t          >  *** out_BRANCH_COMPLETE_FRONT_END_DEPTH           ;
     56  sc_signal<Taddress_t        >  *** out_BRANCH_COMPLETE_FRONT_END_ADDRESS         ;
     57  sc_signal<Tcontrol_t        >  *** out_BRANCH_COMPLETE_FRONT_END_NO_SEQUENCE     ;
     58  sc_signal<Tcontrol_t        >  ***  in_BRANCH_COMPLETE_FRONT_END_MISS_PREDICTION ;
     59  sc_signal<Tcontrol_t        >  ***  in_BRANCH_COMPLETE_OOO_ENGINE_VAL            ;
     60  sc_signal<Tcontrol_t        >  *** out_BRANCH_COMPLETE_OOO_ENGINE_ACK            ;
     61  sc_signal<Tcontext_t        >  ***  in_BRANCH_COMPLETE_OOO_ENGINE_FRONT_END_ID   ;
     62  sc_signal<Tcontext_t        >  ***  in_BRANCH_COMPLETE_OOO_ENGINE_CONTEXT_ID     ;
     63  sc_signal<Tdepth_t          >  ***  in_BRANCH_COMPLETE_OOO_ENGINE_DEPTH          ;
     64  sc_signal<Taddress_t        >  ***  in_BRANCH_COMPLETE_OOO_ENGINE_ADDRESS        ;
     65  sc_signal<Tcontrol_t        >  ***  in_BRANCH_COMPLETE_OOO_ENGINE_NO_SEQUENCE    ;
     66  sc_signal<Tcontrol_t        >  *** out_BRANCH_COMPLETE_OOO_ENGINE_MISS_PREDICTION;
     67  sc_signal<Tcontrol_t        >   ** out_COMMIT_EVENT_FRONT_END_VAL                ;
     68  sc_signal<Tcontrol_t        >   **  in_COMMIT_EVENT_FRONT_END_ACK                ;
     69  sc_signal<Tcontext_t        >   ** out_COMMIT_EVENT_FRONT_END_CONTEXT_ID         ;
     70  sc_signal<Tdepth_t          >   ** out_COMMIT_EVENT_FRONT_END_DEPTH              ;
     71  sc_signal<Tevent_type_t     >   ** out_COMMIT_EVENT_FRONT_END_TYPE               ;
     72  sc_signal<Tcontrol_t        >   ** out_COMMIT_EVENT_FRONT_END_IS_DELAY_SLOT      ;
     73  sc_signal<Taddress_t        >   ** out_COMMIT_EVENT_FRONT_END_ADDRESS            ;
     74  sc_signal<Tcontrol_t        >   ** out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR_VAL   ;
     75  sc_signal<Taddress_t        >   ** out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR       ;
     76  sc_signal<Tcontrol_t        >   ** out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR_VAL   ;
     77  sc_signal<Tgeneral_data_t   >   ** out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR       ;
     78  sc_signal<Tcontrol_t        >   **  in_COMMIT_EVENT_OOO_ENGINE_VAL               ;
     79  sc_signal<Tcontrol_t        >   ** out_COMMIT_EVENT_OOO_ENGINE_ACK               ;
     80  sc_signal<Tcontext_t        >   **  in_COMMIT_EVENT_OOO_ENGINE_FRONT_END_ID      ;
     81  sc_signal<Tcontext_t        >   **  in_COMMIT_EVENT_OOO_ENGINE_CONTEXT_ID        ;
     82  sc_signal<Tdepth_t          >   **  in_COMMIT_EVENT_OOO_ENGINE_DEPTH             ;
     83  sc_signal<Tevent_type_t     >   **  in_COMMIT_EVENT_OOO_ENGINE_TYPE              ;
     84  sc_signal<Tcontrol_t        >   **  in_COMMIT_EVENT_OOO_ENGINE_IS_DELAY_SLOT     ;
     85  sc_signal<Taddress_t        >   **  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS           ;
     86  sc_signal<Tcontrol_t        >   **  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR_VAL  ;
     87  sc_signal<Taddress_t        >   **  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR      ;
     88  sc_signal<Tcontrol_t        >   **  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL  ;
     89  sc_signal<Tgeneral_data_t   >   **  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ;
     90  sc_signal<Tcontrol_t        >  ***  in_ISSUE_OOO_ENGINE_VAL                      ;
     91  sc_signal<Tcontrol_t        >  *** out_ISSUE_OOO_ENGINE_ACK                      ;
     92  sc_signal<Tcontext_t        >  ***  in_ISSUE_OOO_ENGINE_FRONT_END_ID             ;
     93  sc_signal<Tcontext_t        >  ***  in_ISSUE_OOO_ENGINE_CONTEXT_ID               ;
     94  sc_signal<Tpacket_t         >  ***  in_ISSUE_OOO_ENGINE_PACKET_ID                ;
     95  sc_signal<Ttype_t           >  ***  in_ISSUE_OOO_ENGINE_TYPE                     ;
     96  sc_signal<Toperation_t      >  ***  in_ISSUE_OOO_ENGINE_OPERATION                ;
     97  sc_signal<Tlsq_ptr_t        >  ***  in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    ;
     98  sc_signal<Tlsq_ptr_t        >  ***  in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     ;
     99  sc_signal<Tcontrol_t        >  ***  in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             ;
     100  sc_signal<Tgeneral_data_t   >  ***  in_ISSUE_OOO_ENGINE_IMMEDIAT                 ;
     101  sc_signal<Tcontrol_t        >  ***  in_ISSUE_OOO_ENGINE_READ_RA                  ;
     102  sc_signal<Tgeneral_address_t>  ***  in_ISSUE_OOO_ENGINE_NUM_REG_RA               ;
     103  sc_signal<Tcontrol_t        >  ***  in_ISSUE_OOO_ENGINE_READ_RB                  ;
     104  sc_signal<Tgeneral_address_t>  ***  in_ISSUE_OOO_ENGINE_NUM_REG_RB               ;
     105  sc_signal<Tcontrol_t        >  ***  in_ISSUE_OOO_ENGINE_READ_RC                  ;
     106  sc_signal<Tspecial_address_t>  ***  in_ISSUE_OOO_ENGINE_NUM_REG_RC               ;
     107  sc_signal<Tcontrol_t        >  ***  in_ISSUE_OOO_ENGINE_WRITE_RD                 ;
     108  sc_signal<Tgeneral_address_t>  ***  in_ISSUE_OOO_ENGINE_NUM_REG_RD               ;
     109  sc_signal<Tcontrol_t        >  ***  in_ISSUE_OOO_ENGINE_WRITE_RE                 ;
     110  sc_signal<Tspecial_address_t>  ***  in_ISSUE_OOO_ENGINE_NUM_REG_RE               ;
     111  sc_signal<Tcontrol_t        >  *** out_ISSUE_EXECUTE_LOOP_VAL                    ;
     112  sc_signal<Tcontrol_t        >  ***  in_ISSUE_EXECUTE_LOOP_ACK                    ;
     113  sc_signal<Tcontext_t        >  *** out_ISSUE_EXECUTE_LOOP_CONTEXT_ID             ;
     114  sc_signal<Tcontext_t        >  *** out_ISSUE_EXECUTE_LOOP_FRONT_END_ID           ;
     115  sc_signal<Tcontext_t        >  *** out_ISSUE_EXECUTE_LOOP_OOO_ENGINE_ID          ;
     116  sc_signal<Tpacket_t         >  *** out_ISSUE_EXECUTE_LOOP_PACKET_ID              ;
     117  sc_signal<Toperation_t      >  *** out_ISSUE_EXECUTE_LOOP_OPERATION              ;
     118  sc_signal<Ttype_t           >  *** out_ISSUE_EXECUTE_LOOP_TYPE                   ;
     119  sc_signal<Tlsq_ptr_t        >  *** out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_PTR_WRITE  ;
     120  sc_signal<Tlsq_ptr_t        >  *** out_ISSUE_EXECUTE_LOOP_LOAD_QUEUE_PTR_WRITE   ;
     121  sc_signal<Tcontrol_t        >  *** out_ISSUE_EXECUTE_LOOP_HAS_IMMEDIAT           ;
     122  sc_signal<Tgeneral_data_t   >  *** out_ISSUE_EXECUTE_LOOP_IMMEDIAT               ;
     123  sc_signal<Tcontrol_t        >  *** out_ISSUE_EXECUTE_LOOP_READ_RA                ;
     124  sc_signal<Tgeneral_address_t>  *** out_ISSUE_EXECUTE_LOOP_NUM_REG_RA             ;
     125  sc_signal<Tcontrol_t        >  *** out_ISSUE_EXECUTE_LOOP_READ_RB                ;
     126  sc_signal<Tgeneral_address_t>  *** out_ISSUE_EXECUTE_LOOP_NUM_REG_RB             ;
     127  sc_signal<Tcontrol_t        >  *** out_ISSUE_EXECUTE_LOOP_READ_RC                ;
     128  sc_signal<Tspecial_address_t>  *** out_ISSUE_EXECUTE_LOOP_NUM_REG_RC             ;
     129  sc_signal<Tcontrol_t        >  *** out_ISSUE_EXECUTE_LOOP_WRITE_RD               ;
     130  sc_signal<Tgeneral_address_t>  *** out_ISSUE_EXECUTE_LOOP_NUM_REG_RD             ;
     131  sc_signal<Tcontrol_t        >  *** out_ISSUE_EXECUTE_LOOP_WRITE_RE               ;
     132  sc_signal<Tspecial_address_t>  *** out_ISSUE_EXECUTE_LOOP_NUM_REG_RE             ;
     133  sc_signal<Tcontrol_t        > **** out_EXECUTE_OOO_ENGINE_VAL                    ;
     134  sc_signal<Tcontrol_t        > ****  in_EXECUTE_OOO_ENGINE_ACK                    ;
     135  sc_signal<Tcontext_t        > **** out_EXECUTE_OOO_ENGINE_FRONT_END_ID           ;
     136  sc_signal<Tcontext_t        > **** out_EXECUTE_OOO_ENGINE_CONTEXT_ID             ;
     137  sc_signal<Tpacket_t         > **** out_EXECUTE_OOO_ENGINE_PACKET_ID              ;
     138//sc_signal<Ttype_t           > **** out_EXECUTE_OOO_ENGINE_TYPE                   ;
     139//sc_signal<Toperation_t      > **** out_EXECUTE_OOO_ENGINE_OPERATION              ;
     140  sc_signal<Tspecial_data_t   > **** out_EXECUTE_OOO_ENGINE_FLAGS                  ;
     141  sc_signal<Texception_t      > **** out_EXECUTE_OOO_ENGINE_EXCEPTION              ;
     142  sc_signal<Tcontrol_t        > **** out_EXECUTE_OOO_ENGINE_NO_SEQUENCE            ;
     143  sc_signal<Taddress_t        > **** out_EXECUTE_OOO_ENGINE_ADDRESS                ;
     144  sc_signal<Tgeneral_data_t   > **** out_EXECUTE_OOO_ENGINE_DATA                   ;
     145  sc_signal<Tcontrol_t        >  ***  in_EXECUTE_EXECUTE_LOOP_VAL                  ;
     146  sc_signal<Tcontrol_t        >  *** out_EXECUTE_EXECUTE_LOOP_ACK                  ;
     147  sc_signal<Tcontext_t        >  ***  in_EXECUTE_EXECUTE_LOOP_CONTEXT_ID           ;
     148  sc_signal<Tcontext_t        >  ***  in_EXECUTE_EXECUTE_LOOP_FRONT_END_ID         ;
     149  sc_signal<Tcontext_t        >  ***  in_EXECUTE_EXECUTE_LOOP_OOO_ENGINE_ID        ;
     150  sc_signal<Tpacket_t         >  ***  in_EXECUTE_EXECUTE_LOOP_PACKET_ID            ;
     151//sc_signal<Toperation_t      >  ***  in_EXECUTE_EXECUTE_LOOP_OPERATION            ;
     152//sc_signal<Ttype_t           >  ***  in_EXECUTE_EXECUTE_LOOP_TYPE                 ;
     153  sc_signal<Tspecial_data_t   >  ***  in_EXECUTE_EXECUTE_LOOP_FLAGS                ;
     154  sc_signal<Texception_t      >  ***  in_EXECUTE_EXECUTE_LOOP_EXCEPTION            ;
     155  sc_signal<Tcontrol_t        >  ***  in_EXECUTE_EXECUTE_LOOP_NO_SEQUENCE          ;
     156  sc_signal<Taddress_t        >  ***  in_EXECUTE_EXECUTE_LOOP_ADDRESS              ;
     157  sc_signal<Tgeneral_data_t   >  ***  in_EXECUTE_EXECUTE_LOOP_DATA                 ;
     158  sc_signal<Tcontrol_t        >  ***  in_INSERT_OOO_ENGINE_VAL                     ;
     159  sc_signal<Tcontrol_t        >  *** out_INSERT_OOO_ENGINE_ACK                     ;
     160  sc_signal<Tcontrol_t        >  ***  in_INSERT_OOO_ENGINE_RD_USE                  ;
     161  sc_signal<Tgeneral_address_t>  ***  in_INSERT_OOO_ENGINE_RD_NUM_REG              ;
     162  sc_signal<Tcontrol_t        >  ***  in_INSERT_OOO_ENGINE_RE_USE                  ;
     163  sc_signal<Tspecial_address_t>  ***  in_INSERT_OOO_ENGINE_RE_NUM_REG              ;
     164  sc_signal<Tcontrol_t        > **** out_INSERT_EXECUTE_LOOP_VAL                   ;
     165  sc_signal<Tcontrol_t        > ****  in_INSERT_EXECUTE_LOOP_ACK                   ;
     166  sc_signal<Tcontrol_t        > **** out_INSERT_EXECUTE_LOOP_RD_USE                ;
     167  sc_signal<Tgeneral_address_t> **** out_INSERT_EXECUTE_LOOP_RD_NUM_REG            ;
     168  sc_signal<Tcontrol_t        > **** out_INSERT_EXECUTE_LOOP_RE_USE                ;
     169  sc_signal<Tspecial_address_t> **** out_INSERT_EXECUTE_LOOP_RE_NUM_REG            ;
    50170
    51171  ALLOC2_SC_SIGNAL(out_RENAME_FRONT_END_ID                       ,"out_RENAME_FRONT_END_ID                       ",Tcontext_t        ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     
    88208  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL  ," in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL  ",Tcontrol_t        ,_param->_nb_ooo_engine);
    89209  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ," in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ",Tgeneral_data_t   ,_param->_nb_ooo_engine);
    90   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_VAL                      ," in_ISSUE_OOO_ENGINE_VAL                      ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    91   ALLOC2_SC_SIGNAL(out_ISSUE_OOO_ENGINE_ACK                      ,"out_ISSUE_OOO_ENGINE_ACK                      ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    92   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_FRONT_END_ID             ," in_ISSUE_OOO_ENGINE_FRONT_END_ID             ",Tcontext_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    93   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_CONTEXT_ID               ," in_ISSUE_OOO_ENGINE_CONTEXT_ID               ",Tcontext_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    94   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_PACKET_ID                ," in_ISSUE_OOO_ENGINE_PACKET_ID                ",Tpacket_t         ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    95   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_TYPE                     ," in_ISSUE_OOO_ENGINE_TYPE                     ",Ttype_t           ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    96   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_OPERATION                ," in_ISSUE_OOO_ENGINE_OPERATION                ",Toperation_t      ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    97   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    ," in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    ",Tlsq_ptr_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    98   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     ," in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     ",Tlsq_ptr_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    99   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             ," in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    100   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_IMMEDIAT                 ," in_ISSUE_OOO_ENGINE_IMMEDIAT                 ",Tgeneral_data_t   ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    101   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RA                  ," in_ISSUE_OOO_ENGINE_READ_RA                  ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    102   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RA               ," in_ISSUE_OOO_ENGINE_NUM_REG_RA               ",Tgeneral_address_t,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    103   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RB                  ," in_ISSUE_OOO_ENGINE_READ_RB                  ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    104   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RB               ," in_ISSUE_OOO_ENGINE_NUM_REG_RB               ",Tgeneral_address_t,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    105   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RC                  ," in_ISSUE_OOO_ENGINE_READ_RC                  ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    106   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RC               ," in_ISSUE_OOO_ENGINE_NUM_REG_RC               ",Tspecial_address_t,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    107   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_WRITE_RD                 ," in_ISSUE_OOO_ENGINE_WRITE_RD                 ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    108   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RD               ," in_ISSUE_OOO_ENGINE_NUM_REG_RD               ",Tgeneral_address_t,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    109   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_WRITE_RE                 ," in_ISSUE_OOO_ENGINE_WRITE_RE                 ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    110   ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RE               ," in_ISSUE_OOO_ENGINE_NUM_REG_RE               ",Tspecial_address_t,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
     210  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_VAL                      ," in_ISSUE_OOO_ENGINE_VAL                      ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     211  ALLOC2_SC_SIGNAL(out_ISSUE_OOO_ENGINE_ACK                      ,"out_ISSUE_OOO_ENGINE_ACK                      ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     212  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_FRONT_END_ID             ," in_ISSUE_OOO_ENGINE_FRONT_END_ID             ",Tcontext_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     213  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_CONTEXT_ID               ," in_ISSUE_OOO_ENGINE_CONTEXT_ID               ",Tcontext_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     214  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_PACKET_ID                ," in_ISSUE_OOO_ENGINE_PACKET_ID                ",Tpacket_t         ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     215  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_TYPE                     ," in_ISSUE_OOO_ENGINE_TYPE                     ",Ttype_t           ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     216  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_OPERATION                ," in_ISSUE_OOO_ENGINE_OPERATION                ",Toperation_t      ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     217  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    ," in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    ",Tlsq_ptr_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     218  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     ," in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     ",Tlsq_ptr_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     219  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             ," in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     220  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_IMMEDIAT                 ," in_ISSUE_OOO_ENGINE_IMMEDIAT                 ",Tgeneral_data_t   ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     221  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RA                  ," in_ISSUE_OOO_ENGINE_READ_RA                  ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     222  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RA               ," in_ISSUE_OOO_ENGINE_NUM_REG_RA               ",Tgeneral_address_t,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     223  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RB                  ," in_ISSUE_OOO_ENGINE_READ_RB                  ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     224  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RB               ," in_ISSUE_OOO_ENGINE_NUM_REG_RB               ",Tgeneral_address_t,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     225  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RC                  ," in_ISSUE_OOO_ENGINE_READ_RC                  ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     226  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RC               ," in_ISSUE_OOO_ENGINE_NUM_REG_RC               ",Tspecial_address_t,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     227  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_WRITE_RD                 ," in_ISSUE_OOO_ENGINE_WRITE_RD                 ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     228  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RD               ," in_ISSUE_OOO_ENGINE_NUM_REG_RD               ",Tgeneral_address_t,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     229  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_WRITE_RE                 ," in_ISSUE_OOO_ENGINE_WRITE_RE                 ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     230  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RE               ," in_ISSUE_OOO_ENGINE_NUM_REG_RE               ",Tspecial_address_t,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
    111231  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_VAL                    ,"out_ISSUE_EXECUTE_LOOP_VAL                    ",Tcontrol_t        ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
    112232  ALLOC2_SC_SIGNAL( in_ISSUE_EXECUTE_LOOP_ACK                    ," in_ISSUE_EXECUTE_LOOP_ACK                    ",Tcontrol_t        ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
     
    168288  ALLOC3_SC_SIGNAL(out_INSERT_EXECUTE_LOOP_RE_USE                ,"out_INSERT_EXECUTE_LOOP_RE_USE                ",Tcontrol_t          ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
    169289  ALLOC3_SC_SIGNAL(out_INSERT_EXECUTE_LOOP_RE_NUM_REG            ,"out_INSERT_EXECUTE_LOOP_RE_NUM_REG            ",Tspecial_address_t  ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
    170 
    171290 
    172291  /********************************************************
     
    229348  INSTANCE1_SC_SIGNAL(_Core_Glue, in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL  ,_param->_nb_ooo_engine);
    230349  INSTANCE1_SC_SIGNAL(_Core_Glue, in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ,_param->_nb_ooo_engine);
    231   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_VAL                      ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    232   INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_OOO_ENGINE_ACK                      ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
     350  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_VAL                      ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     351  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_OOO_ENGINE_ACK                      ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
    233352  if (_param->_have_port_front_end_id)
    234   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_FRONT_END_ID             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
     353  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_FRONT_END_ID             ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
    235354  if (_param->_have_port_context_id)
    236   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_CONTEXT_ID               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
     355  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_CONTEXT_ID               ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
    237356  if (_param->_have_port_rob_ptr)
    238   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_PACKET_ID                ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    239   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_TYPE                     ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    240   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_OPERATION                ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    241   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
     357  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_PACKET_ID                ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     358  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_TYPE                     ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     359  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_OPERATION                ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     360  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
    242361  if (_param->_have_port_load_queue_ptr)
    243   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    244   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    245   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_IMMEDIAT                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    246   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_READ_RA                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    247   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_NUM_REG_RA               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    248   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_READ_RB                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    249   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_NUM_REG_RB               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    250   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_READ_RC                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    251   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_NUM_REG_RC               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    252   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_WRITE_RD                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    253   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_NUM_REG_RD               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    254   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_WRITE_RE                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    255   INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_NUM_REG_RE               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
     362  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     363  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     364  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_IMMEDIAT                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     365  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_READ_RA                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     366  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_NUM_REG_RA               ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     367  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_READ_RB                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     368  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_NUM_REG_RB               ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     369  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_READ_RC                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     370  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_NUM_REG_RC               ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     371  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_WRITE_RD                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     372  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_NUM_REG_RD               ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     373  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_WRITE_RE                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     374  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_NUM_REG_RE               ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
    256375  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_VAL                    ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
    257376  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_EXECUTE_LOOP_ACK                    ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
     
    476595
    477596      for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i)
    478         for (uint32_t j=0; j<_param->_nb_inst_issue[i]; ++j)
     597        for (uint32_t j=0; j<_param->_nb_inst_issue_queue[i]; ++j)
    479598          {
    480599            Tcontext_t front_end_id   = rand() % _param->_ooo_engine_nb_front_end [i];
     
    714833  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL  ,_param->_nb_ooo_engine);
    715834  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ,_param->_nb_ooo_engine);
    716   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_VAL                      ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    717   DELETE2_SC_SIGNAL(out_ISSUE_OOO_ENGINE_ACK                      ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    718   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_FRONT_END_ID             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    719   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_CONTEXT_ID               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    720   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_PACKET_ID                ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    721   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_TYPE                     ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    722   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_OPERATION                ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    723   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    724   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    725   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    726   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_IMMEDIAT                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    727   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RA                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    728   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RA               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    729   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RB                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    730   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RB               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    731   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RC                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    732   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RC               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    733   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_WRITE_RD                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    734   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RD               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    735   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_WRITE_RE                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    736   DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RE               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
     835  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_VAL                      ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     836  DELETE2_SC_SIGNAL(out_ISSUE_OOO_ENGINE_ACK                      ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     837  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_FRONT_END_ID             ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     838  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_CONTEXT_ID               ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     839  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_PACKET_ID                ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     840  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_TYPE                     ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     841  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_OPERATION                ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     842  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     843  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     844  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     845  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_IMMEDIAT                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     846  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RA                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     847  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RA               ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     848  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RB                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     849  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RB               ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     850  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RC                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     851  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RC               ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     852  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_WRITE_RD                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     853  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RD               ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     854  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_WRITE_RE                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     855  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RE               ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
    737856  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_VAL                    ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
    738857  DELETE2_SC_SIGNAL( in_ISSUE_EXECUTE_LOOP_ACK                    ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/include/Core_Glue.h

    r111 r117  
    204204
    205205    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    206   private   : generic::priority::Priority  ** _priority_ooo_engine;                         //[nb_execute_loop]
     206//private   : generic::priority::Priority  ** _priority_ooo_engine;                         //[nb_execute_loop]
     207  private   : generic::priority::Priority   * _priority_ooo_engine;
    207208  private   : generic::priority::Priority  ** _priority_read_unit ;                         //[nb_execute_loop]
    208209
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/include/Parameters.h

    r88 r117  
    1818namespace core_glue {
    1919
    20 
    2120  class Parameters : public morpheo::behavioural::Parameters
    2221  {
     
    3332  public : uint32_t              * _ooo_engine_nb_inst_branch_complete   ;//[nb_ooo_engine]
    3433  public : uint32_t              * _nb_inst_insert                       ;//[nb_ooo_engine]
    35   public : uint32_t              * _nb_inst_issue                        ;//[nb_ooo_engine]
     34  public : uint32_t              * _nb_inst_reexecute                    ;//[nb_ooo_engine]
     35  public : uint32_t              * _nb_inst_issue_queue                  ;//[nb_ooo_engine]
     36  public : uint32_t              * _nb_inst_issue_slot                   ;//[nb_ooo_engine]
    3637  public : uint32_t             ** _nb_inst_execute                      ;//[nb_ooo_engine][ooo_engine_nb_execute_loop]
     38  public : bool                  * _issue_queue_in_order                 ;//[nb_ooo_engine]
    3739  public : uint32_t              * _nb_read_unit                         ;//[nb_execute_loop]
    3840  public : uint32_t              * _nb_write_unit                        ;//[nb_execute_loop]
     
    5052  public : Tpriority_t             _dispatch_priority                    ;
    5153  public : Tload_balancing_t       _dispatch_load_balancing              ;
    52   public : bool               **** _table_dispatch                       ;//[nb_ooo_engine][nb_inst_issue][execute_loop][nb_read_unit]
     54  public : bool               **** _table_dispatch                       ;//[nb_ooo_engine][nb_inst_issue_slot][execute_loop][nb_read_unit]
     55  public : bool                *** _table_issue_type                     ;//                                   [execute_loop][nb_read_unit][nb_type]
    5356  public : uint32_t             ** _translate_ooo_engine_num_front_end   ;//[nb_ooo_engine][ooo_engine_nb_front_end]
    5457  public : uint32_t             ** _translate_ooo_engine_num_execute_loop;//[nb_ooo_engine][ooo_engine_nb_execute_loop]
     
    6164
    6265  public : uint32_t             ** _execute_loop_nb_inst_insert                             ;//[nb_execute_loop][execute_loop_nb_ooo_engine]
    63   public : uint32_t             ** _execute_loop_nb_inst_issue                              ;//[nb_execute_loop][execute_loop_nb_ooo_engine]
     66  public : uint32_t             ** _execute_loop_nb_inst_issue_slot                         ;//[nb_execute_loop][execute_loop_nb_ooo_engine]
    6467//public : uint32_t              * _link_execute_loop_with_ooo_engine                       ;//[nb_ooo_engine]
    6568
     
    7073  public : uint32_t                _max_nb_write_unit                     ;
    7174  public : uint32_t                _max_nb_inst_insert                    ;
    72   public : uint32_t                _max_nb_inst_issue                     ;
     75  public : uint32_t                _max_nb_inst_issue_queue               ;
     76  public : uint32_t                _max_nb_inst_issue_slot                ;
    7377  public : uint32_t                _max_nb_read_unit                      ;
    7478
     
    8690   uint32_t              * ooo_engine_nb_inst_branch_complete   ,//[nb_ooo_engine]
    8791   uint32_t              * nb_inst_insert                       ,//[nb_ooo_engine]
    88    uint32_t              * nb_inst_issue                        ,//[nb_ooo_engine]
     92   uint32_t              * nb_inst_reexecute                    ,//[nb_ooo_engine]
     93   uint32_t              * nb_inst_issue_queue                  ,//[nb_ooo_engine]
     94   uint32_t              * nb_inst_issue_slot                   ,//[nb_ooo_engine]
    8995   uint32_t             ** nb_inst_execute                      ,//[nb_ooo_engine][ooo_engine_nb_execute_loop]
     96   bool                  * issue_queue_in_order                 ,//[nb_ooo_engine]
    9097   uint32_t              * nb_read_unit                         ,//[nb_execute_loop]
    9198   uint32_t              * nb_write_unit                        ,//[nb_execute_loop]
     
    100107   Tpriority_t             dispatch_priority                    ,
    101108   Tload_balancing_t       dispatch_load_balancing              ,
    102    bool               **** table_dispatch                       ,//[nb_ooo_engine][nb_inst_issue][execute_loop][nb_read_unit]
     109   bool               **** table_dispatch                       ,//[nb_ooo_engine][nb_inst_issue_slot][execute_loop][nb_read_unit]
     110   bool                *** table_issue_type                     ,//                                   [execute_loop][nb_read_unit][nb_type]
     111// bool                *** table_issue_thread                   ,//                                   [execute_loop][nb_read_unit][nb_thread]
    103112   uint32_t             ** translate_ooo_engine_num_front_end   ,//[nb_ooo_engine][ooo_engine_nb_front_end]
    104113   uint32_t             ** translate_ooo_engine_num_execute_loop,//[nb_ooo_engine][ooo_engine_nb_execute_loop]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue.cpp

    r105 r117  
    160160
    161161        for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i)
    162           for (uint32_t j=0; j<_param->_nb_inst_issue [i]; ++j)
     162          for (uint32_t j=0; j<_param->_nb_inst_issue_queue [i]; ++j)
    163163            {
    164164              sensitive << (*(in_ISSUE_OOO_ENGINE_VAL                   [i][j]))
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_allocation.cpp

    r112 r117  
    133133    // ~~~~~[ Interface : "issue" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    134134    {
    135       ALLOC2_INTERFACE_BEGIN("issue_ooo_engine",SOUTH,IN ,_("Issue : request between rename unit and execute loop"),_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    136 
    137       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_VAL                      ,"VAL"                  ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    138       _ALLOC2_SIGNAL_OUT(out_ISSUE_OOO_ENGINE_ACK                      ,"ACK"                  ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    139       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_FRONT_END_ID             ,"FRONT_END_ID"         ,Tcontext_t        ,_param->_size_front_end_id    ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    140       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_CONTEXT_ID               ,"CONTEXT_ID"           ,Tcontext_t        ,_param->_size_context_id      ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    141       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_PACKET_ID                ,"PACKET_ID"            ,Tpacket_t         ,_param->_size_rob_ptr         ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    142       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_TYPE                     ,"TYPE"                 ,Ttype_t           ,_param->_size_type            ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    143       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_OPERATION                ,"OPERATION"            ,Toperation_t      ,_param->_size_operation       ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    144       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    ,"STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t        ,_param->_size_store_queue_ptr ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    145       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     ,"LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr  ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    146       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             ,"HAS_IMMEDIAT"         ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    147       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_IMMEDIAT                 ,"IMMEDIAT"             ,Tgeneral_data_t   ,_param->_size_general_data    ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    148       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_READ_RA                  ,"READ_RA"              ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    149       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_NUM_REG_RA               ,"NUM_REG_RA"           ,Tgeneral_address_t,_param->_size_general_register,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    150       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_READ_RB                  ,"READ_RB"              ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    151       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_NUM_REG_RB               ,"NUM_REG_RB"           ,Tgeneral_address_t,_param->_size_general_register,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    152       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_READ_RC                  ,"READ_RC"              ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    153       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_NUM_REG_RC               ,"NUM_REG_RC"           ,Tspecial_address_t,_param->_size_special_register,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    154       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_WRITE_RD                 ,"WRITE_RD"             ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    155       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_NUM_REG_RD               ,"NUM_REG_RD"           ,Tgeneral_address_t,_param->_size_general_register,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    156       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_WRITE_RE                 ,"WRITE_RE"             ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    157       _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_NUM_REG_RE               ,"NUM_REG_RE"           ,Tspecial_address_t,_param->_size_special_register,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    158 
    159       ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
     135      ALLOC2_INTERFACE_BEGIN("issue_ooo_engine",SOUTH,IN ,_("Issue : request between rename unit and execute loop"),_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     136
     137      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_VAL                      ,"VAL"                  ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     138      _ALLOC2_SIGNAL_OUT(out_ISSUE_OOO_ENGINE_ACK                      ,"ACK"                  ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     139      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_FRONT_END_ID             ,"FRONT_END_ID"         ,Tcontext_t        ,_param->_size_front_end_id    ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     140      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_CONTEXT_ID               ,"CONTEXT_ID"           ,Tcontext_t        ,_param->_size_context_id      ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     141      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_PACKET_ID                ,"PACKET_ID"            ,Tpacket_t         ,_param->_size_rob_ptr         ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     142      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_TYPE                     ,"TYPE"                 ,Ttype_t           ,_param->_size_type            ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     143      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_OPERATION                ,"OPERATION"            ,Toperation_t      ,_param->_size_operation       ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     144      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    ,"STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t        ,_param->_size_store_queue_ptr ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     145      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     ,"LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr  ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     146      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             ,"HAS_IMMEDIAT"         ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     147      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_IMMEDIAT                 ,"IMMEDIAT"             ,Tgeneral_data_t   ,_param->_size_general_data    ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     148      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_READ_RA                  ,"READ_RA"              ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     149      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_NUM_REG_RA               ,"NUM_REG_RA"           ,Tgeneral_address_t,_param->_size_general_register,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     150      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_READ_RB                  ,"READ_RB"              ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     151      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_NUM_REG_RB               ,"NUM_REG_RB"           ,Tgeneral_address_t,_param->_size_general_register,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     152      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_READ_RC                  ,"READ_RC"              ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     153      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_NUM_REG_RC               ,"NUM_REG_RC"           ,Tspecial_address_t,_param->_size_special_register,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     154      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_WRITE_RD                 ,"WRITE_RD"             ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     155      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_NUM_REG_RD               ,"NUM_REG_RD"           ,Tgeneral_address_t,_param->_size_general_register,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     156      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_WRITE_RE                 ,"WRITE_RE"             ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     157      _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_NUM_REG_RE               ,"NUM_REG_RE"           ,Tspecial_address_t,_param->_size_special_register,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
     158
     159      ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1]);
    160160    }
    161161
     
    257257
    258258    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    259     _priority_ooo_engine  = new generic::priority::Priority * [_param->_nb_execute_loop];
     259    _priority_ooo_engine = new generic::priority::Priority (_name+"_priority_ooo_engine",
     260                                                            _param->_dispatch_priority      ,
     261                                                            _param->_dispatch_load_balancing,
     262                                                            _param->_nb_ooo_engine          ,
     263                                                            _param->_nb_inst_issue_slot     ,
     264                                                            _param->_nb_ooo_engine         
     265                                                            );
     266
     267//  _priority_ooo_engine  = new generic::priority::Priority * [_param->_nb_execute_loop];
    260268    _priority_read_unit   = new generic::priority::Priority * [_param->_nb_execute_loop];
    261269
    262270    for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
    263271      {
    264         _priority_ooo_engine [i] = new generic::priority::Priority (_name+"_priority_ooo_engine_"+toString(i),
    265                                                                     _param->_dispatch_priority      ,
    266                                                                     _param->_dispatch_load_balancing,
    267                                                                     _param->_execute_loop_nb_ooo_engine [i],
    268                                                                     _param->_execute_loop_nb_inst_issue [i],
    269                                                                     _param->_execute_loop_nb_ooo_engine [i]
    270                                                                     );
     272//         _priority_ooo_engine [i] = new generic::priority::Priority (_name+"_priority_ooo_engine_"+toString(i),
     273//                                                                     _param->_dispatch_priority      ,
     274//                                                                     _param->_dispatch_load_balancing,
     275//                                                                     _param->_execute_loop_nb_ooo_engine      [i],
     276//                                                                     _param->_execute_loop_nb_inst_issue_slot [i],
     277//                                                                     _param->_execute_loop_nb_ooo_engine      [i]
     278//                                                                     );
    271279
    272280        _priority_read_unit  [i] = new generic::priority::Priority (_name+"_priority_read_unit_"+toString(i),
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_deallocation.cpp

    r111 r117  
    7070        DELETE1_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ,_param->_nb_ooo_engine,_param->_size_spr);
    7171
    72         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_VAL                      ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],1);
    73         DELETE2_SIGNAL(out_ISSUE_OOO_ENGINE_ACK                      ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],1);
    74         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_FRONT_END_ID             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],_param->_size_front_end_id);
    75         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_CONTEXT_ID               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],_param->_size_context_id);
    76         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_PACKET_ID                ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],_param->_size_rob_ptr);
    77         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_TYPE                     ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],_param->_size_type);
    78         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_OPERATION                ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],_param->_size_operation);
    79         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],_param->_size_store_queue_ptr);
    80         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],_param->_size_load_queue_ptr);
    81         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],1);
    82         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_IMMEDIAT                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],_param->_size_general_data);
    83         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RA                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],1);
    84         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RA               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],_param->_size_general_register);
    85         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RB                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],1);
    86         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RB               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],_param->_size_general_register);
    87         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RC                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],1);
    88         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RC               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],_param->_size_special_register);
    89         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_WRITE_RD                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],1);
    90         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RD               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],_param->_size_general_register);
    91         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_WRITE_RE                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],1);
    92         DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RE               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1],_param->_size_special_register);
     72        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_VAL                      ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],1);
     73        DELETE2_SIGNAL(out_ISSUE_OOO_ENGINE_ACK                      ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],1);
     74        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_FRONT_END_ID             ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],_param->_size_front_end_id);
     75        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_CONTEXT_ID               ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],_param->_size_context_id);
     76        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_PACKET_ID                ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],_param->_size_rob_ptr);
     77        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_TYPE                     ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],_param->_size_type);
     78        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_OPERATION                ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],_param->_size_operation);
     79        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],_param->_size_store_queue_ptr);
     80        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],_param->_size_load_queue_ptr);
     81        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],1);
     82        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_IMMEDIAT                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],_param->_size_general_data);
     83        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RA                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],1);
     84        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RA               ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],_param->_size_general_register);
     85        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RB                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],1);
     86        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RB               ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],_param->_size_general_register);
     87        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RC                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],1);
     88        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RC               ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],_param->_size_special_register);
     89        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_WRITE_RD                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],1);
     90        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RD               ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],_param->_size_general_register);
     91        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_WRITE_RE                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],1);
     92        DELETE2_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RE               ,_param->_nb_ooo_engine,_param->_nb_inst_issue_queue[it1],_param->_size_special_register);
    9393
    9494        DELETE2_SIGNAL(out_ISSUE_EXECUTE_LOOP_VAL                    ,_param->_nb_execute_loop,_param->_nb_read_unit[it1],1);
     
    160160    for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
    161161      {
    162         delete _priority_ooo_engine [i];
     162//      delete _priority_ooo_engine [i];
    163163        delete _priority_read_unit  [i];
    164164      }
    165     delete [] _priority_ooo_engine;
     165//  delete [] _priority_ooo_engine;
    166166    delete [] _priority_read_unit ;
     167    delete    _priority_ooo_engine;
    167168
    168169    delete _component;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_genMealy_issue.cpp

    r115 r117  
    1515namespace core_glue {
    1616
     17  /*
     18      OOO        SLOT     Execute Loop                                 
     19    ---+                      +-----
     20       |  +-----+     +-----+ |     
     21      -+->|     |     |     |-+->   
     22       |  |     |-()->|     | |     
     23      -+->| _ _ |     |     |-+->   
     24       |  | _X_ |-()->|     | |     
     25      -+->|     |     |     | +-----
     26       |  |     |-()->|     |       
     27      -+->|     |     |     | +-----
     28       |  +-----+     |     | |     
     29    ---+  crossbar    | _ _ |-+->   
     30                      | _X_ | |     
     31    ---+              |     |-+->   
     32       |  +-----+     |     | |     
     33      -+->|     |     |     | +-----
     34       |  |     |-()->|     |       
     35      -+->| _ _ |     |     | +-----
     36       |  | _X_ |-()->|     | |     
     37      -+->|     |     |     |-+->   
     38       |  |     |-()->|     | |     
     39      -+->|     |     |     |-+->   
     40       |  +-----+     +-----+ |     
     41    ---+  crossbar   dispatch +-----
     42  */
     43
     44
     45// class num_read_unit_t
     46//   {
     47//   public : const uint32_t num_execute_loop;
     48//   public : const uint32_t num_read_unit;
     49   
     50//   public : num_read_unit_t (uint32_t num_execute_loop,
     51//                             uint32_t num_read_unit) :
     52//     this->num_execute_loop (num_execute_loop),
     53//     this->num_read_unit    (num_read_unit   )
     54//     {};
     55//   }
    1756
    1857#undef  FUNCTION
     
    2362    log_function(Core_Glue,FUNCTION,_name.c_str());
    2463
    25     Tcontrol_t ISSUE_OOO_ENGINE_ACK   [_param->_nb_ooo_engine  ][_param->_max_nb_inst_issue];
    26     Tcontrol_t ISSUE_EXECUTE_LOOP_VAL [_param->_nb_execute_loop][_param->_max_nb_read_unit ];
    27     bool       READ_UNIT_ENABLE       [_param->_nb_execute_loop][_param->_max_nb_read_unit ];
    28 
     64    Tcontrol_t ISSUE_OOO_ENGINE_ACK   [_param->_nb_ooo_engine  ][_param->_max_nb_inst_issue_queue];
     65    Tcontrol_t ISSUE_EXECUTE_LOOP_VAL [_param->_nb_execute_loop][_param->_max_nb_read_unit];
     66    Tcontrol_t READ_UNIT_ENABLE       [_param->_nb_execute_loop][_param->_max_nb_read_unit];
     67    Tcontrol_t SLOT_ENABLE            [_param->_nb_ooo_engine  ][_param->_max_nb_inst_issue_slot];
     68   
    2969    // Init -> all at 0
    3070    for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i)
    31       for (uint32_t j=0; j<_param->_nb_inst_issue[i]; ++j)
    32         ISSUE_OOO_ENGINE_ACK [i][j] = 0;
     71      {
     72        for (uint32_t j=0; j<_param->_nb_inst_issue_queue[i]; ++j)
     73          ISSUE_OOO_ENGINE_ACK [i][j] = 0;
     74        for (uint32_t j=0; j<_param->_nb_inst_issue_slot[i]; ++j)
     75          SLOT_ENABLE [i][j] = 1;         
     76      }
     77
    3378    for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
    3479      for (uint32_t j=0; j<_param->_nb_read_unit[i]; ++j)
    3580        {
    3681          ISSUE_EXECUTE_LOOP_VAL [i][j] = 0;
     82
    3783          // Read unit is enable is signal ack is set
    3884          READ_UNIT_ENABLE       [i][j] = (PORT_READ(in_ISSUE_EXECUTE_LOOP_ACK [i][j]) == 1);
    39           log_printf(TRACE,Core_Glue,FUNCTION,"  * Read_unit [%d][%d] : %d",i,j,READ_UNIT_ENABLE[i][j]);
     85          log_printf(TRACE,Core_Glue,FUNCTION,"  * Read_unit [%d][%d].enable : %d",i,j,READ_UNIT_ENABLE[i][j]);
    4086        }
    4187
     88//     std::list<num_read_unit_t> SLOT_TYPE [_param->_nb_ooo_engine][_param->_max_nb_inst_issue_slot][_param->_nb_type];
     89
     90//     // for each read_unit
     91//     for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
     92//       for (uint32_t j=0; j<_param->_nb_read_unit[i]; ++j)
     93//         // test if this read_unit can receive an instruction
     94//         if (PORT_READ(in_ISSUE_EXECUTE_LOOP_ACK [i][j]) == 1)
     95//           for (uint32_t x=0; x<_nb_ooo_engine; ++x)
     96//             for (uint32_t y=0; y<_nb_inst_issue_slot[y]; ++y)
     97//               // test if can dispatch
     98//               if (_param->_table_dispatch [x][y][i][j])
     99//                 for (uint32_t k=0;k<_param->_nb_type; ++k)
     100//                   // Can receive this type
     101//                   if (_param->_table_dispatch [i][j][k])
     102//                     SLOT_TYPE[x][y][k].push_back(num_read_unit_t(i,j));
     103
     104//     // Select an issue_slot of an ooo_engine
     105//     std::list<generic::priority::select_t> * select_ooo_engine = _priority_ooo_engine->select();
     106//     for (std::list<generic::priority::select_t>::iterator it_ooo_engine=select_ooo_engine->begin();
     107//          it_ooo_engine!=select_ooo_engine->end();
     108//          ++it_ooo_engine)
     109//       {
     110//         // ... get id of the most priotary
     111//         const uint32_t num_ooo_engine      = it_ooo_engine->grp;
     112//         const uint32_t num_inst_issue_slot = it_ooo_engine->elt;
     113
     114//         // Test if this ooo_engine is enable (can be desable if issue in_order)
     115//         if (OOO_ENGINE_ENABLE[num_ooo_engine])
     116//           {
     117
     118//           }
     119//       }
     120
     121    for (uint32_t num_ooo_engine=0; num_ooo_engine<_param->_nb_ooo_engine; ++num_ooo_engine)
     122      for (uint32_t num_inst_issue_queue=0; num_inst_issue_queue<_param->_nb_inst_issue_queue[num_ooo_engine]; ++num_inst_issue_queue)
     123        {
     124          bool find = false;
     125
     126          Tcontrol_t val  = PORT_READ(in_ISSUE_OOO_ENGINE_VAL  [num_ooo_engine][num_inst_issue_queue]);
     127          Ttype_t    type = PORT_READ(in_ISSUE_OOO_ENGINE_TYPE [num_ooo_engine][num_inst_issue_queue]);
     128
     129          log_printf(TRACE,Core_Glue,FUNCTION,"  * num_ooo_engine                : %d",num_ooo_engine      );
     130          log_printf(TRACE,Core_Glue,FUNCTION,"  * num_inst_issue_queue          : %d",num_inst_issue_queue);
     131          log_printf(TRACE,Core_Glue,FUNCTION,"    * val                         : %d",val);
     132          log_printf(TRACE,Core_Glue,FUNCTION,"    * type                        : %d",type);
     133
     134          if (val)
     135            for (uint32_t num_inst_issue_slot=0; num_inst_issue_slot<_param->_nb_inst_issue_slot[num_ooo_engine]; ++num_inst_issue_slot)
     136              {
     137                log_printf(TRACE,Core_Glue,FUNCTION,"    * num_inst_issue_slot         : %d",num_inst_issue_slot);
     138               
     139                // scan all read_unit
     140               
     141                if (SLOT_ENABLE [num_ooo_engine][num_inst_issue_slot])
     142                  for (uint32_t num_execute_loop=0; num_execute_loop<_param->_nb_execute_loop; ++num_execute_loop)
     143                    {
     144                      for (uint32_t num_read_unit=0; num_read_unit<_param->_nb_read_unit[num_execute_loop]; ++num_read_unit)
     145                        {
     146                          Tcontrol_t ack = READ_UNIT_ENABLE [num_execute_loop][num_read_unit];
     147                         
     148                          log_printf(TRACE,Core_Glue,FUNCTION,"      * num_execute_loop          : %d",num_execute_loop);
     149                          log_printf(TRACE,Core_Glue,FUNCTION,"      * num_read_unit             : %d",num_read_unit   );
     150                          log_printf(TRACE,Core_Glue,FUNCTION,"        * read_unit_enable        : %d",ack             );
     151                         
     152                          // test if :
     153                          //  * read_unit can accept an instruction (valid and no previous instruction)
     154                          //  * slot can issue an instruction at this read_unit
     155                          //  * read_unit can accept this type
     156                          if (ack and
     157                              _param->_table_dispatch [num_ooo_engine][num_inst_issue_slot][num_execute_loop][num_read_unit] and
     158                              _param->_table_issue_type [num_execute_loop][num_read_unit][type])
     159                            {
     160                              log_printf(TRACE,Core_Glue,FUNCTION,"  * find !!!");
     161
     162                              // find !
     163                              // Transaction
     164                              READ_UNIT_ENABLE       [num_execute_loop][num_read_unit] = false; // now, this read_unit is busy
     165                              ISSUE_EXECUTE_LOOP_VAL [num_execute_loop][num_read_unit] = 1; // = val
     166                              ISSUE_OOO_ENGINE_ACK   [num_ooo_engine][num_inst_issue_queue] = 1; // = ack
     167                              SLOT_ENABLE            [num_ooo_engine][num_inst_issue_slot]  = false; // now this slot is used
     168                                     
     169                              if (_param->_have_port_context_id)
     170                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_CONTEXT_ID            [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_CONTEXT_ID            [num_ooo_engine][num_inst_issue_queue]));
     171                              if (_param->_have_port_front_end_id)
     172                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_FRONT_END_ID          [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_FRONT_END_ID          [num_ooo_engine][num_inst_issue_queue]));
     173                              if (_param->_have_port_ooo_engine_id)
     174                                {
     175                              Tcontext_t ooo_engine_id = 0;
     176                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_OOO_ENGINE_ID         [num_execute_loop][num_read_unit],ooo_engine_id);
     177                                }
     178                              if (_param->_have_port_rob_ptr)
     179                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_PACKET_ID             [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_PACKET_ID             [num_ooo_engine][num_inst_issue_queue]));
     180                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_OPERATION             [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_OPERATION             [num_ooo_engine][num_inst_issue_queue]));
     181                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_TYPE                  [num_execute_loop][num_read_unit],type);
     182                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_PTR_WRITE [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE [num_ooo_engine][num_inst_issue_queue]));
     183                              if (_param->_have_port_load_queue_ptr)
     184                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_LOAD_QUEUE_PTR_WRITE  [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE  [num_ooo_engine][num_inst_issue_queue]));
     185                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_HAS_IMMEDIAT          [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT          [num_ooo_engine][num_inst_issue_queue]));
     186                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_IMMEDIAT              [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_IMMEDIAT              [num_ooo_engine][num_inst_issue_queue]));
     187                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RA               [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RA               [num_ooo_engine][num_inst_issue_queue]));
     188                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RA            [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RA            [num_ooo_engine][num_inst_issue_queue]));
     189                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RB               [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RB               [num_ooo_engine][num_inst_issue_queue]));
     190                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RB            [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RB            [num_ooo_engine][num_inst_issue_queue]));
     191                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RC               [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RC               [num_ooo_engine][num_inst_issue_queue]));
     192                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RC            [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RC            [num_ooo_engine][num_inst_issue_queue]));
     193                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_WRITE_RD              [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_WRITE_RD              [num_ooo_engine][num_inst_issue_queue]));
     194                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RD            [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RD            [num_ooo_engine][num_inst_issue_queue]));
     195                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_WRITE_RE              [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_WRITE_RE              [num_ooo_engine][num_inst_issue_queue]));
     196                              PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RE            [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RE            [num_ooo_engine][num_inst_issue_queue]));
     197                             
     198                             
     199                              find = true;
     200                              break;
     201                            }
     202                          //if (find)
     203                          //  break;
     204                        }
     205                      if (find)
     206                        break;
     207                    }
     208                if (find)
     209                  break;
     210              }
     211         
     212          if (_param->_issue_queue_in_order [num_ooo_engine] and
     213              not find and
     214              (num_inst_issue_queue >= _param->_nb_inst_reexecute [num_ooo_engine]))
     215            {
     216              log_printf(TRACE,Core_Glue,FUNCTION,"  * stop scan !!!");
     217             
     218              break; // stop scan
     219            }
     220        }
     221
     222    // Write output
     223    for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i)
     224      for (uint32_t j=0; j<_param->_nb_inst_issue_queue[i]; ++j)
     225        PORT_WRITE(out_ISSUE_OOO_ENGINE_ACK [i][j], ISSUE_OOO_ENGINE_ACK [i][j]);
     226    for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
     227      for (uint32_t j=0; j<_param->_nb_read_unit[i]; ++j)
     228        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_VAL [i][j], ISSUE_EXECUTE_LOOP_VAL [i][j]);
     229
     230    log_end(Core_Glue,FUNCTION);
     231  };
     232
     233}; // end namespace core_glue
     234}; // end namespace core
     235
     236}; // end namespace behavioural
     237}; // end namespace morpheo             
     238#endif
     239
     240    /*
     241    bool       OOO_ENGINE_ENABLE      [_param->_nb_ooo_engine  ];
     242    Tcontrol_t SLOT_ENABLE            [_param->_nb_ooo_engine  ][_param->_max_nb_inst_issue_slot];
     243    bool       READ_UNIT_ENABLE       [_param->_nb_execute_loop][_param->_max_nb_read_unit];
     244
     245    // Init -> all at 0
     246    for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i)
     247      {
     248        OOO_ENGINE_ENABLE [i] = true;
     249
     250        for (uint32_t j=0; j<_param->_nb_inst_issue_slot[i]; ++j)
     251          SLOT_ENABLE [i][j] = 1;         
     252      }
     253
     254    for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
     255      for (uint32_t j=0; j<_param->_nb_read_unit[i]; ++j)
     256        {
     257          // Read unit is enable is signal ack is set
     258          READ_UNIT_ENABLE       [i][j] = (PORT_READ(in_ISSUE_EXECUTE_LOOP_ACK [i][j]) == 1);
     259          log_printf(TRACE,Core_Glue,FUNCTION,"  * Read_unit [%d][%d].enable : %d",i,j,READ_UNIT_ENABLE[i][j]);
     260        }
     261
     262
     263    // for each execute_loop
    42264    for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
    43265      {
    44         log_printf(TRACE,Core_Glue,FUNCTION,"  * execute_loop [%d]",i);
    45 
    46         // for each issue of each ooo_engine ...
    47         std::list<generic::priority::select_t> * select_ooo_engine = _priority_ooo_engine[i]->select();
    48         for (std::list<generic::priority::select_t>::iterator it_ooo_engine=select_ooo_engine->begin();
    49              it_ooo_engine!=select_ooo_engine->end();
    50              ++it_ooo_engine)
     266        // Scan all read_unit
     267        std::list<generic::priority::select_t> * select_read_unit = _priority_read_unit[i]->select();
     268        for (std::list<generic::priority::select_t>::iterator it_read_unit=select_read_unit->begin();
     269             it_read_unit!=select_read_unit->end();
     270             ++it_read_unit)
    51271          {
    52             // get id
    53             const uint32_t ooo_engine_id  = it_ooo_engine->grp;
    54             const uint32_t num_ooo_engine = _param->_translate_execute_loop_num_ooo_engine [i][ooo_engine_id];
    55             const uint32_t num_inst_issue = it_ooo_engine->elt;
    56 
    57             log_printf(TRACE,Core_Glue,FUNCTION,"    * num_ooo_engine [%d] (id -> %d)",num_ooo_engine, ooo_engine_id);
    58             log_printf(TRACE,Core_Glue,FUNCTION,"    * num_inst_issue          : %d",num_inst_issue);
    59 
    60             Tcontrol_t ooo_engine_val = PORT_READ(in_ISSUE_OOO_ENGINE_VAL [num_ooo_engine][num_inst_issue]);
    61 
    62             log_printf(TRACE,Core_Glue,FUNCTION,"    * ISSUE_OOO_ENGINE_VAL    : %d",ooo_engine_val);
    63 
    64             // test if have a request ?
    65 //          if (ooo_engine_val)
     272            // get the most priotary ...
     273            uint32_t num_read_unit = it_read_unit->grp;
     274           
     275            log_printf(TRACE,Core_Glue,FUNCTION,"  * read_unit [%d][%d]",i,num_read_unit);
     276
     277            // ... and test if this read_unit is valid
     278            if (READ_UNIT_ENABLE [i][num_read_unit])
    66279              {
    67 //              // If ooo_engine can issue instruction on multiple execute_loop
    68 //              if (not ISSUE_OOO_ENGINE_ACK [num_ooo_engine][num_inst_issue])
    69 
    70                 // Scan all read_unit
    71                 std::list<generic::priority::select_t> * select_read_unit = _priority_read_unit[i]->select();
    72                 for (std::list<generic::priority::select_t>::iterator it_read_unit=select_read_unit->begin();
    73                      it_read_unit!=select_read_unit->end();
    74                      ++it_read_unit)
    75                   {
    76                     uint32_t num_read_unit = it_read_unit->grp;
    77                    
    78                     // Test if have an link and read unit is enable
    79                     log_printf(TRACE,Core_Glue,FUNCTION,"      * read_unit             : %d",num_read_unit);
    80                     log_printf(TRACE,Core_Glue,FUNCTION,"        * READ_UNIT_ENABLE    : %d",READ_UNIT_ENABLE [i][num_read_unit]);
    81                     log_printf(TRACE,Core_Glue,FUNCTION,"        * table_dispatch      : %d",_param->_table_dispatch [num_ooo_engine][num_inst_issue][i][num_read_unit]);
    82                    
    83                     Tcontrol_t read_unit_enable = READ_UNIT_ENABLE [i][num_read_unit];
    84 
    85                     // Test if the read_unit is not busy and if an link is between the issue slot and read_unit
    86                     if (read_unit_enable and
    87                         _param->_table_dispatch [num_ooo_engine][num_inst_issue][i][num_read_unit])
    88                       {
    89                         log_printf(TRACE,Core_Glue,FUNCTION,"        * find !!!");
    90                        
    91                         // Transaction
    92                         READ_UNIT_ENABLE       [i][num_read_unit] = false; // now, this read_unit is busy
    93                         ISSUE_EXECUTE_LOOP_VAL [i][num_read_unit] = ooo_engine_val; // = 1
    94                         ISSUE_OOO_ENGINE_ACK   [num_ooo_engine][num_inst_issue] = read_unit_enable; // = 1
    95                        
    96                         if (_param->_have_port_context_id)
    97                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_CONTEXT_ID            [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_CONTEXT_ID            [num_ooo_engine][num_inst_issue]));
    98                         if (_param->_have_port_front_end_id)
    99                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_FRONT_END_ID          [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_FRONT_END_ID          [num_ooo_engine][num_inst_issue]));
    100                         if (_param->_have_port_ooo_engine_id)
    101                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_OOO_ENGINE_ID         [i][num_read_unit],ooo_engine_id);
    102                         if (_param->_have_port_rob_ptr)
    103                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_PACKET_ID             [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_PACKET_ID             [num_ooo_engine][num_inst_issue]));
    104                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_OPERATION             [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_OPERATION             [num_ooo_engine][num_inst_issue]));
    105                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_TYPE                  [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_TYPE                  [num_ooo_engine][num_inst_issue]));
    106                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_PTR_WRITE [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE [num_ooo_engine][num_inst_issue]));
    107                         if (_param->_have_port_load_queue_ptr)
    108                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_LOAD_QUEUE_PTR_WRITE  [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE  [num_ooo_engine][num_inst_issue]));
    109                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_HAS_IMMEDIAT          [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT          [num_ooo_engine][num_inst_issue]));
    110                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_IMMEDIAT              [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_IMMEDIAT              [num_ooo_engine][num_inst_issue]));
    111                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RA               [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RA               [num_ooo_engine][num_inst_issue]));
    112                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RA            [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RA            [num_ooo_engine][num_inst_issue]));
    113                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RB               [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RB               [num_ooo_engine][num_inst_issue]));
    114                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RB            [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RB            [num_ooo_engine][num_inst_issue]));
    115                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RC               [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RC               [num_ooo_engine][num_inst_issue]));
    116                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RC            [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RC            [num_ooo_engine][num_inst_issue]));
    117                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_WRITE_RD              [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_WRITE_RD              [num_ooo_engine][num_inst_issue]));
    118                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RD            [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RD            [num_ooo_engine][num_inst_issue]));
    119                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_WRITE_RE              [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_WRITE_RE              [num_ooo_engine][num_inst_issue]));
    120                         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RE            [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RE            [num_ooo_engine][num_inst_issue]));
    121 
    122                         break; // find : stop scan read_unit
    123                       }
     280                bool find = false;
     281               
     282                // This read_unit is valid, now find an valid instruction
     283                // for each issue of each ooo_engine ...
     284                std::list<generic::priority::select_t> * select_ooo_engine = _priority_ooo_engine[i]->select();
     285                for (std::list<generic::priority::select_t>::iterator it_ooo_engine=select_ooo_engine->begin();
     286                     it_ooo_engine!=select_ooo_engine->end();
     287                     ++it_ooo_engine)
     288                  {
     289                    // ... get id of the most priotary
     290                    const uint32_t ooo_engine_id       = it_ooo_engine->grp;
     291                    const uint32_t num_ooo_engine      = _param->_translate_execute_loop_num_ooo_engine [i][ooo_engine_id];
     292                    const uint32_t num_inst_issue_slot = it_ooo_engine->elt;
     293                   
     294                    log_printf(TRACE,Core_Glue,FUNCTION,"    * num_ooo_engine [%d (%d)][%d]",num_ooo_engine, ooo_engine_id,num_inst_issue_slot);
     295                   
     296                    if (OOO_ENGINE_ENABLE [num_ooo_engine] and SLOT_ENABLE [num_ooo_engine][num_inst_issue_slot])
     297                      {
     298                        uint32_t num_inst_issue_queue = 0;
     299                        for (; num_inst_issue_queue < _param->_nb_inst_issue_queue [num_ooo_engine]; num_inst_issue_queue ++)
     300                          {
     301                            // Test if this instruction is not previously send at a read_unit
     302                            if (not ISSUE_OOO_ENGINE_ACK [num_ooo_engine][num_inst_issue_queue])
     303                              {
     304                                Tcontrol_t ooo_engine_val = PORT_READ(in_ISSUE_OOO_ENGINE_VAL  [num_ooo_engine][num_inst_issue_queue]);
     305                                Ttype_t    type           = PORT_READ(in_ISSUE_OOO_ENGINE_TYPE [num_ooo_engine][num_inst_issue_queue]);
     306                                // Test if have an link and read unit is enable
     307                                bool can_dispatch   = _param->_table_dispatch [num_ooo_engine][num_inst_issue_slot][i][num_read_unit];
     308                                bool can_issue_type = _param->_table_issue_type [i][num_read_unit][type];
     309                               
     310                                log_printf(TRACE,Core_Glue,FUNCTION,"      * num_ooo_engine_queue  : %d",num_inst_issue_queue);
     311                                log_printf(TRACE,Core_Glue,FUNCTION,"      * type                  : %s",toString(type).c_str());
     312                                log_printf(TRACE,Core_Glue,FUNCTION,"      * ISSUE_OOO_ENGINE_VAL  : %d",ooo_engine_val);
     313                                log_printf(TRACE,Core_Glue,FUNCTION,"      * table_dispatch        : %d",can_dispatch);
     314                                log_printf(TRACE,Core_Glue,FUNCTION,"      * table_issue_type      : %d",can_issue_type);
     315                               
     316                               
     317                                // test if have a request ?
     318                                // and test if have a link between the issue slot and read_unit
     319                                // and if the read_unit accept this instruction's type
     320                                if (ooo_engine_val and
     321                                    can_dispatch   and
     322                                    can_issue_type)
     323                                  {
     324//                                     log_printf(TRACE,Core_Glue,FUNCTION,"          * find !!!");
     325                                   
     326                                    // Transaction
     327                                    READ_UNIT_ENABLE       [i][num_read_unit] = false; // now, this read_unit is busy
     328                                    ISSUE_EXECUTE_LOOP_VAL [i][num_read_unit] = ooo_engine_val;
     329                                    ISSUE_OOO_ENGINE_ACK   [num_ooo_engine][num_inst_issue_queue] = 1;
     330                                    SLOT_ENABLE            [num_ooo_engine][num_inst_issue_slot]  = 0; // now this slot is used
     331                                     
     332                                    if (_param->_have_port_context_id)
     333                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_CONTEXT_ID            [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_CONTEXT_ID            [num_ooo_engine][num_inst_issue_queue]));
     334                                    if (_param->_have_port_front_end_id)
     335                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_FRONT_END_ID          [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_FRONT_END_ID          [num_ooo_engine][num_inst_issue_queue]));
     336                                    if (_param->_have_port_ooo_engine_id)
     337                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_OOO_ENGINE_ID         [i][num_read_unit],ooo_engine_id);
     338                                    if (_param->_have_port_rob_ptr)
     339                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_PACKET_ID             [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_PACKET_ID             [num_ooo_engine][num_inst_issue_queue]));
     340                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_OPERATION             [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_OPERATION             [num_ooo_engine][num_inst_issue_queue]));
     341                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_TYPE                  [i][num_read_unit],type);
     342                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_PTR_WRITE [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE [num_ooo_engine][num_inst_issue_queue]));
     343                                    if (_param->_have_port_load_queue_ptr)
     344                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_LOAD_QUEUE_PTR_WRITE  [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE  [num_ooo_engine][num_inst_issue_queue]));
     345                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_HAS_IMMEDIAT          [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT          [num_ooo_engine][num_inst_issue_queue]));
     346                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_IMMEDIAT              [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_IMMEDIAT              [num_ooo_engine][num_inst_issue_queue]));
     347                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RA               [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RA               [num_ooo_engine][num_inst_issue_queue]));
     348                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RA            [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RA            [num_ooo_engine][num_inst_issue_queue]));
     349                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RB               [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RB               [num_ooo_engine][num_inst_issue_queue]));
     350                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RB            [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RB            [num_ooo_engine][num_inst_issue_queue]));
     351                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RC               [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RC               [num_ooo_engine][num_inst_issue_queue]));
     352                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RC            [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RC            [num_ooo_engine][num_inst_issue_queue]));
     353                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_WRITE_RD              [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_WRITE_RD              [num_ooo_engine][num_inst_issue_queue]));
     354                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RD            [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RD            [num_ooo_engine][num_inst_issue_queue]));
     355                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_WRITE_RE              [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_WRITE_RE              [num_ooo_engine][num_inst_issue_queue]));
     356                                    PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RE            [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RE            [num_ooo_engine][num_inst_issue_queue]));
     357                                   
     358                                    find = true;// find : stop scan read_unit
     359                                  }
     360                              }
     361                            if (find)
     362                              break;
     363                          }
     364
     365                        if (find)
     366                          {
     367                            log_printf(TRACE,Core_Glue,FUNCTION,"    * find !!!");
     368                            break;
     369                          }
     370                        else
     371                          {
     372                            log_printf(TRACE,Core_Glue,FUNCTION,"    * not find !!!");
     373                            log_printf(TRACE,Core_Glue,FUNCTION,"      * issue_queue_in_order: %d",_param->_issue_queue_in_order [num_ooo_engine]);
     374                            log_printf(TRACE,Core_Glue,FUNCTION,"      * num_inst_issue_queue: %d",num_inst_issue_queue);
     375                            log_printf(TRACE,Core_Glue,FUNCTION,"      * nb_inst_reexecute   : %d",_param->_nb_inst_reexecute [num_ooo_engine]);
     376
     377                            if (_param->_issue_queue_in_order [num_ooo_engine] and
     378                                (num_inst_issue_queue >= _param->_nb_inst_reexecute [num_ooo_engine]))
     379                                OOO_ENGINE_ENABLE [num_ooo_engine] = false;
     380                          }
     381                      }
    124382                  }
    125383              }
    126384          }
    127385      }
    128 
    129     // Write output
    130     for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i)
    131       for (uint32_t j=0; j<_param->_nb_inst_issue[i]; ++j)
    132         PORT_WRITE(out_ISSUE_OOO_ENGINE_ACK [i][j], ISSUE_OOO_ENGINE_ACK [i][j]);
    133     for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
    134       for (uint32_t j=0; j<_param->_nb_read_unit[i]; ++j)
    135         PORT_WRITE(out_ISSUE_EXECUTE_LOOP_VAL [i][j], ISSUE_EXECUTE_LOOP_VAL [i][j]);
    136 
    137     log_end(Core_Glue,FUNCTION);
    138   };
    139 
    140 }; // end namespace core_glue
    141 }; // end namespace core
    142 
    143 }; // end namespace behavioural
    144 }; // end namespace morpheo             
    145 #endif
     386    */
     387
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_transition.cpp

    r111 r117  
    2525        for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
    2626          {
    27             _priority_ooo_engine [i]->reset();
     27//          _priority_ooo_engine [i]->reset();
    2828            _priority_read_unit  [i]->reset();
    2929          }
     30        _priority_ooo_engine->reset();
     31 
    3032      }
    3133    else
     
    3436        for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
    3537          {
    36             _priority_ooo_engine [i]->transition();
     38//          _priority_ooo_engine [i]->transition();
    3739            _priority_read_unit  [i]->transition();
    3840          }
     41        _priority_ooo_engine->transition();
    3942      }
    4043
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Parameters.cpp

    r88 r117  
    3030   uint32_t              * ooo_engine_nb_inst_branch_complete   ,//[nb_ooo_engine]
    3131   uint32_t              * nb_inst_insert                       ,//[nb_ooo_engine]
    32    uint32_t              * nb_inst_issue                        ,//[nb_ooo_engine]
     32   uint32_t              * nb_inst_reexecute                    ,//[nb_ooo_engine]
     33   uint32_t              * nb_inst_issue_queue                  ,//[nb_ooo_engine]
     34   uint32_t              * nb_inst_issue_slot                   ,//[nb_ooo_engine]
    3335   uint32_t             ** nb_inst_execute                      ,//[nb_ooo_engine][ooo_engine_nb_execute_loop]
     36   bool                  * issue_queue_in_order                 ,//[nb_ooo_engine]
    3437   uint32_t              * nb_read_unit                         ,//[nb_execute_loop]
    3538   uint32_t              * nb_write_unit                        ,//[nb_execute_loop]
     
    4447   Tpriority_t             dispatch_priority                    ,
    4548   Tload_balancing_t       dispatch_load_balancing              ,
    46    bool               **** table_dispatch                       ,//[nb_ooo_engine][nb_inst_issue][execute_loop][nb_read_unit]
     49   bool               **** table_dispatch                       ,//[nb_ooo_engine][nb_inst_issue_slot][execute_loop][nb_read_unit]
     50   bool                *** table_issue_type                     ,//                                   [execute_loop][nb_read_unit][nb_type]
    4751   uint32_t             ** translate_ooo_engine_num_front_end   ,//[nb_ooo_engine][ooo_engine_nb_front_end]
    4852   uint32_t             ** translate_ooo_engine_num_execute_loop,//[nb_ooo_engine][ooo_engine_nb_execute_loop]
     
    6367    _ooo_engine_nb_inst_branch_complete    = ooo_engine_nb_inst_branch_complete   ;
    6468    _nb_inst_insert                        = nb_inst_insert                       ;
    65     _nb_inst_issue                         = nb_inst_issue                        ;
     69    _nb_inst_reexecute                     = nb_inst_reexecute                    ;
     70    _nb_inst_issue_queue                   = nb_inst_issue_queue                  ;
     71    _nb_inst_issue_slot                    = nb_inst_issue_slot                   ;
    6672    _nb_inst_execute                       = nb_inst_execute                      ;
     73    _issue_queue_in_order                  = issue_queue_in_order                 ;
    6774    _nb_read_unit                          = nb_read_unit                         ;
    6875    _nb_write_unit                         = nb_write_unit                        ;
     
    7077    _dispatch_load_balancing               = dispatch_load_balancing              ;
    7178    _table_dispatch                        = table_dispatch                       ;
     79    _table_issue_type                      = table_issue_type                     ;
    7280    _translate_ooo_engine_num_front_end    = translate_ooo_engine_num_front_end   ;
    7381    _translate_ooo_engine_num_execute_loop = translate_ooo_engine_num_execute_loop;
     
    7886    ALLOC1(_link_ooo_engine_with_front_end,uint32_t,_nb_front_end);
    7987    ALLOC1(_translate_num_front_end_to_ooo_engine_front_end_id,uint32_t,_nb_front_end);
    80 
    8188    for (uint32_t i=0; i<_nb_ooo_engine; ++i)
    8289      for (uint32_t j=0; j<_ooo_engine_nb_front_end[i]; ++j)
     
    102109
    103110    ALLOC2(_execute_loop_nb_inst_insert,uint32_t,_nb_execute_loop,_execute_loop_nb_ooo_engine[it1]);
    104     ALLOC2(_execute_loop_nb_inst_issue ,uint32_t,_nb_execute_loop,_execute_loop_nb_ooo_engine[it1]);
     111    ALLOC2(_execute_loop_nb_inst_issue_slot ,uint32_t,_nb_execute_loop,_execute_loop_nb_ooo_engine[it1]);
    105112
    106113    for (uint32_t i=0; i<_nb_execute_loop; ++i)
     
    108115        {
    109116          uint32_t num_ooo_engine = _translate_execute_loop_num_ooo_engine [i][j];
    110           _execute_loop_nb_inst_issue  [i][j] = _nb_inst_issue [num_ooo_engine];
    111           _execute_loop_nb_inst_insert [i][j] = _nb_inst_insert [num_ooo_engine];
     117          _execute_loop_nb_inst_issue_slot [i][j] = _nb_inst_issue_slot [num_ooo_engine];
     118          _execute_loop_nb_inst_insert     [i][j] = _nb_inst_insert    [num_ooo_engine];
    112119        }
    113120
     
    118125    _max_nb_write_unit                      = max<uint32_t>(_nb_write_unit             ,_nb_execute_loop);
    119126    _max_nb_inst_insert                     = max<uint32_t>(_nb_inst_insert            ,_nb_ooo_engine);
    120     _max_nb_inst_issue                      = max<uint32_t>(_nb_inst_issue             ,_nb_ooo_engine);
     127    _max_nb_inst_issue_queue                = max<uint32_t>(_nb_inst_issue_queue       ,_nb_ooo_engine);
     128    _max_nb_inst_issue_slot                 = max<uint32_t>(_nb_inst_issue_slot        ,_nb_ooo_engine);
    121129    _max_nb_read_unit                       = max<uint32_t>(_nb_read_unit              ,_nb_execute_loop);
    122130
     
    171179    log_begin(Core_Glue,FUNCTION);
    172180
    173     DELETE2(_execute_loop_nb_inst_issue,_nb_execute_loop,_execute_loop_nb_ooo_engine[it1]);
     181    DELETE2(_execute_loop_nb_inst_issue_slot,_nb_execute_loop,_execute_loop_nb_ooo_engine[it1]);
    174182    DELETE2(_execute_loop_nb_inst_insert,_nb_execute_loop,_execute_loop_nb_ooo_engine[it1]);
    175183    DELETE2(_translate_num_execute_loop_to_ooo_engine_execute_loop_id, _nb_execute_loop,_execute_loop_nb_ooo_engine[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Dcache_Access/src/Dcache_Access_genMealy_req.cpp

    r88 r117  
    5252                uint32_t   num_port       = _param->_table_routing[num_execute_loop][num_load_store_unit][num_cache_access];
    5353                Tcontrol_t dcache_req_ack = PORT_READ(in_DCACHE_REQ_ACK [num_port]);
     54
     55                log_printf(TRACE,Dcache_Access,FUNCTION,"  * num_port      : %d",num_port);
    5456               
    5557#ifdef STATISTICS
     
    6668                    lsq_req_ack [num_execute_loop][num_load_store_unit][num_cache_access] = dcache_req_ack;
    6769                   
     70                    log_printf(TRACE,Dcache_Access,FUNCTION,"    * kane - dcache");
     71
    6872                    if (_param->_have_port_dcache_thread_id)
    6973                      {
    7074                    Tcontext_t num_context = (_param->_have_port_lsq_thread_id [num_execute_loop][num_load_store_unit])?PORT_READ(in_LSQ_REQ_THREAD_ID [num_execute_loop][num_load_store_unit][num_cache_access]):0;
    71                     PORT_WRITE(out_DCACHE_REQ_THREAD_ID [num_port], _param->_translate_load_store_unit_to_thread[num_execute_loop][num_load_store_unit][num_context]);
     75                    Tcontext_t num_thread  = _param->_translate_load_store_unit_to_thread[num_execute_loop][num_load_store_unit][num_context];
     76                    log_printf(TRACE,Dcache_Access,FUNCTION,"    * num_context : %d",num_context);
     77                    log_printf(TRACE,Dcache_Access,FUNCTION,"    * num_thread  : %d",num_thread );
     78
     79
     80                    PORT_WRITE(out_DCACHE_REQ_THREAD_ID [num_port], num_thread);
    7281                      }
    7382//                  PORT_WRITE(out_DCACHE_REQ_THREAD_ID [num_port], ((num_execute_loop    << _param->_shift_num_execute_loop   )+
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Icache_Access/src/Icache_Access_genMealy_req.cpp

    r88 r117  
    5050            Tcontrol_t icache_req_ack = PORT_READ(in_ICACHE_REQ_ACK [num_port]);
    5151
     52            log_printf(TRACE,Dcache_Access,FUNCTION,"  * num_port      : %d",num_port);
     53
    5254#ifdef STATISTICS
    5355            if (icache_req_ack)
     
    6365                context_req_ack [num_front_end][num_context] = icache_req_ack;
    6466
     67                log_printf(TRACE,Dcache_Access,FUNCTION,"    * kane - icache");
     68
    6569                if (_param->_have_port_icache_thread_id)
    66                 PORT_WRITE(out_ICACHE_REQ_THREAD_ID [num_port], _param->_translate_context_to_thread[num_front_end][num_context]);
     70                  {
     71                Tcontext_t num_thread = _param->_translate_context_to_thread[num_front_end][num_context];
     72                log_printf(TRACE,Dcache_Access,FUNCTION,"    * num_context : %d",num_context);
     73                log_printf(TRACE,Dcache_Access,FUNCTION,"    * num_thread  : %d",num_thread );
     74
     75                PORT_WRITE(out_ICACHE_REQ_THREAD_ID [num_port], num_thread);
     76                  }
    6777//              if (_param->_have_port_icache_packet_id)
    6878                if (_param->_have_port_packet_id [num_front_end][num_context])
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Icache_Access/src/Parameters_msg_error.cpp

    r88 r117  
    4444   
    4545    for (uint32_t i=0; i<_nb_front_end; i++)
    46       for (uint32_t j=0; j<_nb_context [i]; j++)
    47         {
    48           uint32_t num_thread = _translate_context_to_thread [i][j];
    49           if (num_thread >= _nb_thread)
    50             test.error(toString(_("Context [%d][%d] is linked with an invalid thread id.\n"),i,j));
    51           else
    52             if (thread_link [num_thread] == true)
    53               test.error(toString(_("Context [%d][%d] is linked with an already used thread id.\n"),i,j));
     46      {
     47        for (uint32_t j=0; j<_nb_context [i]; j++)
     48          {
     49            uint32_t num_thread = _translate_context_to_thread [i][j];
     50
     51            if (num_thread >= _nb_thread)
     52              test.error(toString(_("Context [%d][%d] is linked with an invalid thread id.\n"),i,j));
    5453            else
    55               thread_link [num_thread] = true;
    56         }
     54              if (thread_link [num_thread] == true)
     55                test.error(toString(_("Context [%d][%d] is linked with an already used thread id.\n"),i,j));
     56              else
     57                thread_link [num_thread] = true;
     58          }
     59      }
    5760
    5861    for (uint32_t i=0; i<_nb_thread; ++i)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_genMealy.cpp

    r116 r117  
    2626    log_function(Functionnal_unit,FUNCTION,_name.c_str());
    2727
    28     {
    29       internal_EXECUTE_OUT_VAL = (reg_BUSY_OUT and (_execute_operation_out->_timing._latence == 0));
    30      
    31       PORT_WRITE(out_EXECUTE_OUT_VAL          , internal_EXECUTE_OUT_VAL);
    32     }
    33 
    34     {
    35       internal_EXECUTE_IN_ACK = (not reg_BUSY_IN or
    36                                  (reg_BUSY_IN and (not reg_BUSY_OUT or
    37                                                    (internal_EXECUTE_OUT_VAL and PORT_READ(in_EXECUTE_OUT_ACK)))));
    38      
    39       PORT_WRITE(out_EXECUTE_IN_ACK           , internal_EXECUTE_IN_ACK);
    40     }
     28    if (PORT_READ(in_NRESET) != 0)
     29      {
     30        {
     31          internal_EXECUTE_OUT_VAL = (reg_BUSY_OUT and (_execute_operation_out->_timing._latence == 0));
     32         
     33          PORT_WRITE(out_EXECUTE_OUT_VAL          , internal_EXECUTE_OUT_VAL);
     34        }
     35       
     36        {
     37          internal_EXECUTE_IN_ACK = (not reg_BUSY_IN or
     38                                     (reg_BUSY_IN and (not reg_BUSY_OUT or
     39                                                       (internal_EXECUTE_OUT_VAL and PORT_READ(in_EXECUTE_OUT_ACK)))));
     40         
     41          PORT_WRITE(out_EXECUTE_IN_ACK           , internal_EXECUTE_IN_ACK);
     42        }
     43      }
    4144
    4245    log_end(Functionnal_unit,FUNCTION);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_transition.cpp

    r116 r117  
    6060
    6161        if (reg_BUSY_IN and not reg_BUSY_OUT)
    62 //      if (not reg_BUSY_OUT_old or)
    6362          {
    6463            reg_BUSY_OUT = reg_BUSY_IN;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/src/test2.cpp

    r113 r117  
    7070  sc_signal<Tcontrol_t>                  * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
    7171
    72     // ~~~~~[ Interface "memory_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     72  sc_signal<Tcontrol_t        > **  in_MEMORY_IN_VAL                  ;
     73  sc_signal<Tcontrol_t        > ** out_MEMORY_IN_ACK                  ;
     74  sc_signal<Tcontext_t        > **  in_MEMORY_IN_CONTEXT_ID           ;
     75  sc_signal<Tcontext_t        > **  in_MEMORY_IN_FRONT_END_ID         ;
     76  sc_signal<Tcontext_t        > **  in_MEMORY_IN_OOO_ENGINE_ID        ;
     77  sc_signal<Tpacket_t         > **  in_MEMORY_IN_PACKET_ID            ;
     78  sc_signal<Toperation_t      > **  in_MEMORY_IN_OPERATION            ;
     79  sc_signal<Ttype_t           > **  in_MEMORY_IN_TYPE                 ;
     80  sc_signal<Tlsq_ptr_t        > **  in_MEMORY_IN_STORE_QUEUE_PTR_WRITE;
     81  sc_signal<Tlsq_ptr_t        > **  in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE ;
     82  sc_signal<Tcontrol_t        > **  in_MEMORY_IN_HAS_IMMEDIAT         ;
     83  sc_signal<Tgeneral_data_t   > **  in_MEMORY_IN_IMMEDIAT             ;
     84  sc_signal<Tgeneral_data_t   > **  in_MEMORY_IN_DATA_RA              ;
     85  sc_signal<Tgeneral_data_t   > **  in_MEMORY_IN_DATA_RB              ;
     86  sc_signal<Tspecial_data_t   > **  in_MEMORY_IN_DATA_RC              ;
     87  sc_signal<Tcontrol_t        > **  in_MEMORY_IN_WRITE_RD             ;
     88  sc_signal<Tgeneral_address_t> **  in_MEMORY_IN_NUM_REG_RD           ;
     89  sc_signal<Tcontrol_t        > **  in_MEMORY_IN_WRITE_RE             ;
     90  sc_signal<Tspecial_address_t> **  in_MEMORY_IN_NUM_REG_RE           ;
     91  sc_signal<Tcontrol_t        > ** out_MEMORY_OUT_VAL                 ;
     92  sc_signal<Tcontrol_t        > **  in_MEMORY_OUT_ACK                 ;
     93  sc_signal<Tcontext_t        > ** out_MEMORY_OUT_CONTEXT_ID          ;
     94  sc_signal<Tcontext_t        > ** out_MEMORY_OUT_FRONT_END_ID        ;
     95  sc_signal<Tcontext_t        > ** out_MEMORY_OUT_OOO_ENGINE_ID       ;
     96  sc_signal<Tpacket_t         > ** out_MEMORY_OUT_PACKET_ID           ;
     97//sc_signal<Toperation_t      > ** out_MEMORY_OUT_OPERATION           ;
     98//sc_signal<Ttype_t           > ** out_MEMORY_OUT_TYPE                ;
     99  sc_signal<Tcontrol_t        > ** out_MEMORY_OUT_WRITE_RD            ;
     100  sc_signal<Tgeneral_address_t> ** out_MEMORY_OUT_NUM_REG_RD          ;
     101  sc_signal<Tgeneral_data_t   > ** out_MEMORY_OUT_DATA_RD             ;
     102  sc_signal<Tcontrol_t        > ** out_MEMORY_OUT_WRITE_RE            ;
     103  sc_signal<Tspecial_address_t> ** out_MEMORY_OUT_NUM_REG_RE          ;
     104  sc_signal<Tspecial_data_t   > ** out_MEMORY_OUT_DATA_RE             ;
     105  sc_signal<Texception_t      > ** out_MEMORY_OUT_EXCEPTION           ;
     106  sc_signal<Tcontrol_t        > ** out_MEMORY_OUT_NO_SEQUENCE         ;
     107  sc_signal<Taddress_t        > ** out_MEMORY_OUT_ADDRESS             ;
     108  sc_signal<Tcontrol_t        > ** out_DCACHE_REQ_VAL                 ;
     109  sc_signal<Tcontrol_t        > **  in_DCACHE_REQ_ACK                 ;
     110  sc_signal<Tcontext_t        > ** out_DCACHE_REQ_CONTEXT_ID          ;
     111  sc_signal<Tpacket_t         > ** out_DCACHE_REQ_PACKET_ID           ;
     112  sc_signal<Tdcache_address_t > ** out_DCACHE_REQ_ADDRESS             ;
     113  sc_signal<Tdcache_type_t    > ** out_DCACHE_REQ_TYPE                ;
     114  sc_signal<Tdcache_data_t    > ** out_DCACHE_REQ_WDATA               ;
     115  sc_signal<Tcontrol_t        > **  in_DCACHE_RSP_VAL                 ;
     116  sc_signal<Tcontrol_t        > ** out_DCACHE_RSP_ACK                 ;
     117  sc_signal<Tcontext_t        > **  in_DCACHE_RSP_CONTEXT_ID          ;
     118  sc_signal<Tpacket_t         > **  in_DCACHE_RSP_PACKET_ID           ;
     119  sc_signal<Tdcache_data_t    > **  in_DCACHE_RSP_RDATA               ;
     120  sc_signal<Tdcache_error_t   > **  in_DCACHE_RSP_ERROR               ;
     121  sc_signal<Tcontrol_t        > ** out_BYPASS_MEMORY_VAL              ;
     122  sc_signal<Tcontext_t        > ** out_BYPASS_MEMORY_OOO_ENGINE_ID    ;
     123  sc_signal<Tgeneral_address_t> ** out_BYPASS_MEMORY_NUM_REG          ;
     124  sc_signal<Tgeneral_data_t   > ** out_BYPASS_MEMORY_DATA             ;
     125
    73126  ALLOC1_SC_SIGNAL( in_MEMORY_IN_VAL                  ," in_MEMORY_IN_VAL                  ",Tcontrol_t        ,_param->_nb_inst_memory);
    74127  ALLOC1_SC_SIGNAL(out_MEMORY_IN_ACK                  ,"out_MEMORY_IN_ACK                  ",Tcontrol_t        ,_param->_nb_inst_memory);
     
    379432          tab_request[66].modif(550,0,0,0,65,OPERATION_MEMORY_LOAD_32_Z    ,TYPE_MEMORY,1,0,0x0  ,0x0          ,0x0       ,1,0,0,0x55508570); // just to wait the dcache_rsp
    380433
    381           const uint32_t nb_request = 64;//_param->_nb_packet;
     434          const uint32_t nb_request = 66;//_param->_nb_packet;
     435//        const uint32_t nb_request = 64;//_param->_nb_packet;
    382436       
    383437          for (uint32_t i=0; i<nb_request; i++)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h

    r110 r117  
    157157
    158158    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    159   protected : Tstore_queue_entry_t                                        * _store_queue;
    160   protected : Tload_queue_entry_t                                         * _load_queue;
    161   protected : Tspeculative_access_queue_entry_t                           * _speculative_access_queue;
     159  protected : Tstore_queue_entry_t                                        * _store_queue                     ;//[size_store_queue]
     160  protected : Tload_queue_entry_t                                         * _load_queue                      ;//[size_load_queue]
     161  protected : Tspeculative_access_queue_entry_t                           * _speculative_access_queue        ;//[size_speculative_access_queue]
    162162  protected : morpheo::behavioural::generic::queue_control::Queue_Control * _speculative_access_queue_control;
    163163
     
    174174
    175175    // Registers
    176   public    : Tlsq_ptr_t                      reg_STORE_QUEUE_PTR_READ;
    177 //public    : Tlsq_ptr_t                      reg_LOAD_QUEUE_PTR_READ ;
    178   public    : Tlsq_ptr_t                      reg_LOAD_QUEUE_CHECK_PRIORITY ;
     176  public    : Tlsq_ptr_t                    * reg_STORE_QUEUE_NB_CHECK     ;//[size_store_queue]
     177  public    : Tlsq_ptr_t                      reg_STORE_QUEUE_PTR_READ     ;
     178//public    : Tlsq_ptr_t                      reg_LOAD_QUEUE_PTR_READ      ;
     179  public    : Tlsq_ptr_t                      reg_LOAD_QUEUE_CHECK_PRIORITY;
    179180
    180181    // signal
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_allocation.cpp

    r112 r117  
    146146
    147147    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     148    if (usage_is_set(_usage,USE_SYSTEMC))
     149      {
     150        _speculative_access_queue_control = new morpheo::behavioural::generic::queue_control::Queue_Control (_param->_size_speculative_access_queue);
    148151
    149 //     internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ = new Tlsq_ptr_t [_param->_nb_cache_port];
     152        ALLOC1(_store_queue             ,Tstore_queue_entry_t             ,_param->_size_store_queue);
     153        ALLOC1(_load_queue              ,Tload_queue_entry_t              ,_param->_size_load_queue);
     154        ALLOC1(_speculative_access_queue,Tspeculative_access_queue_entry_t,_param->_size_speculative_access_queue);
    150155
    151 //     internal_MEMORY_IN_ACK           = new Tcontrol_t      [_param->_nb_inst_memory];
    152 //     internal_MEMORY_OUT_VAL          = new Tcontrol_t      [_param->_nb_inst_memory];
    153 //     internal_MEMORY_OUT_SELECT_QUEUE = new Tselect_queue_t [_param->_nb_inst_memory];
    154 //     internal_MEMORY_OUT_PTR          = new Tlsq_ptr_t      [_param->_nb_inst_memory];
    155    
    156 //     internal_DCACHE_RSP_ACK          = new Tcontrol_t      [_param->_nb_cache_port];
    157 //     internal_DCACHE_REQ_VAL          = new Tcontrol_t      [_param->_nb_cache_port];
    158 //     internal_DCACHE_REQ_SELECT_QUEUE = new Tselect_queue_t [_param->_nb_cache_port];
     156        ALLOC1(reg_STORE_QUEUE_NB_CHECK                  ,Tlsq_ptr_t     ,_param->_size_store_queue);
     157
     158//      ALLOC1(internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ,Tlsq_ptr_t     ,_param->_nb_cache_port);
     159
     160//      ALLOC1(internal_MEMORY_IN_ACK                    ,Tcontrol_t     ,_param->_nb_inst_memory);
     161//      ALLOC1(internal_MEMORY_OUT_VAL                   ,Tcontrol_t     ,_param->_nb_inst_memory);
     162//      ALLOC1(internal_MEMORY_OUT_SELECT_QUEUE          ,Tselect_queue_t,_param->_nb_inst_memory);
     163//      ALLOC1(internal_MEMORY_OUT_PTR                   ,Tlsq_ptr_t     ,_param->_nb_inst_memory);
     164                                                         
     165//      ALLOC1(internal_DCACHE_RSP_ACK                   ,Tcontrol_t     ,_param->_nb_cache_port );
     166//      ALLOC1(internal_DCACHE_REQ_VAL                   ,Tcontrol_t     ,_param->_nb_cache_port );
     167//      ALLOC1(internal_DCACHE_REQ_SELECT_QUEUE          ,Tselect_queue_t,_param->_nb_cache_port );
     168      }
    159169
    160170    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     
    164174      _component->generate_file();
    165175#endif
    166 
    167     _store_queue                      = new Tstore_queue_entry_t              [_param->_size_store_queue];
    168     _load_queue                       = new Tload_queue_entry_t               [_param->_size_load_queue];
    169     _speculative_access_queue         = new Tspeculative_access_queue_entry_t [_param->_size_speculative_access_queue];
    170     _speculative_access_queue_control = new morpheo::behavioural::generic::queue_control::Queue_Control (_param->_size_speculative_access_queue);
    171176
    172177    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_deallocation.cpp

    r97 r117  
    9595
    9696    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     97    delete    _speculative_access_queue_control ;
    9798   
    98 //     delete [] internal_MEMORY_IN_ACK          ;
    99 //     delete [] internal_MEMORY_OUT_VAL         ;
    100 //     delete [] internal_MEMORY_OUT_SELECT_QUEUE;
    101 //     delete [] internal_MEMORY_OUT_PTR         ;
    102    
    103 //     delete [] internal_DCACHE_RSP_ACK         ;
    104 //     delete [] internal_DCACHE_REQ_VAL         ;
    105 //     delete [] internal_DCACHE_REQ_SELECT_QUEUE;
     99    DELETE1(_store_queue             ,_param->_size_store_queue);
     100    DELETE1(_load_queue              ,_param->_size_load_queue);
     101    DELETE1(_speculative_access_queue,_param->_size_speculative_access_queue);
    106102
    107 //     delete [] internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ;
     103    DELETE1(reg_STORE_QUEUE_NB_CHECK                  ,_param->_size_store_queue);
     104
     105//  DELETE1(internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ,_param->_nb_cache_port);
     106
     107//  DELETE1(internal_MEMORY_IN_ACK                    ,_param->_nb_inst_memory);
     108//  DELETE1(internal_MEMORY_OUT_VAL                   ,_param->_nb_inst_memory);
     109//  DELETE1(internal_MEMORY_OUT_SELECT_QUEUE          ,_param->_nb_inst_memory);
     110//  DELETE1(internal_MEMORY_OUT_PTR                   ,_param->_nb_inst_memory);
     111                                                     
     112//  DELETE1(internal_DCACHE_RSP_ACK                   ,_param->_nb_cache_port );
     113//  DELETE1(internal_DCACHE_REQ_VAL                   ,_param->_nb_cache_port );
     114//  DELETE1(internal_DCACHE_REQ_SELECT_QUEUE          ,_param->_nb_cache_port );
    108115      }
    109116
     
    112119    delete    _component;
    113120
    114     delete [] _store_queue                      ;
    115     delete [] _load_queue                       ;
    116     delete    _speculative_access_queue_control ;
    117     delete [] _speculative_access_queue         ;
    118121
    119122    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMoore.cpp

    r104 r117  
    9898      {
    9999        log_printf(TRACE,Load_store_unit,FUNCTION,"    * Store queue");
    100         if (_store_queue [reg_STORE_QUEUE_PTR_READ]._state == STORE_QUEUE_COMMIT)
     100        // Can retire an store instruction if :
     101        //  * state is commit
     102        //  * none load must check this store
     103        if ((_store_queue [reg_STORE_QUEUE_PTR_READ]._state == STORE_QUEUE_COMMIT) and
     104            (reg_STORE_QUEUE_NB_CHECK [reg_STORE_QUEUE_PTR_READ] == 0))
    101105          {
    102106            log_printf(TRACE,Load_store_unit,FUNCTION,"    * find : %d",reg_STORE_QUEUE_PTR_READ);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_transition.cpp

    r112 r117  
    242242
    243243        for (uint32_t i=0; i< _param->_size_store_queue             ; i++)
     244          {
     245          reg_STORE_QUEUE_NB_CHECK  [i] = 0;
    244246          _store_queue              [i]._state = STORE_QUEUE_EMPTY;
     247          }
    245248
    246249        for (uint32_t i=0; i< _param->_size_load_queue              ; i++)
     
    252255    else
    253256      {
     257        //================================================================
     258        // Interface "MEMORY_OUT"
     259        //================================================================
     260
     261        if ((    internal_MEMORY_OUT_VAL  == 1) and
     262            (PORT_READ(in_MEMORY_OUT_ACK[0]) == 1))
     263          {
     264            log_printf(TRACE,Load_store_unit,FUNCTION,"  * MEMORY_OUT[0] transaction");
     265
     266            switch (internal_MEMORY_OUT_SELECT_QUEUE)
     267              {
     268              case SELECT_STORE_QUEUE :
     269                {
     270                  // =======================
     271                  // ===== STORE_QUEUE =====
     272                  // =======================
     273                 
     274                  log_printf(TRACE,Load_store_unit,FUNCTION,"    * store_queue [%d]",reg_STORE_QUEUE_PTR_READ);
     275           
     276                  // Entry flush and increase the read pointer
     277                  _store_queue [reg_STORE_QUEUE_PTR_READ]._state = STORE_QUEUE_EMPTY;
     278                 
     279                  reg_STORE_QUEUE_PTR_READ = (reg_STORE_QUEUE_PTR_READ+1)%_param->_size_store_queue;
     280
     281                  break;
     282                }
     283              case SELECT_LOAD_QUEUE :
     284                {
     285                  // ======================
     286                  // ===== LOAD_QUEUE =====
     287                  // ======================
     288                 
     289                  log_printf(TRACE,Load_store_unit,FUNCTION,"    * load_queue  [%d]",internal_MEMORY_OUT_PTR);
     290                 
     291                  // Entry flush and increase the read pointer
     292                 
     293                  _load_queue [internal_MEMORY_OUT_PTR]._state = LOAD_QUEUE_EMPTY;
     294                 
     295                  // reg_LOAD_QUEUE_PTR_READ = (reg_LOAD_QUEUE_PTR_READ+1)%_param->_size_load_queue;
     296
     297                  break;
     298                }
     299              case SELECT_LOAD_QUEUE_SPECULATIVE :
     300                {
     301                  log_printf(TRACE,Load_store_unit,FUNCTION,"    * load_queue  [%d] (speculative)",internal_MEMORY_OUT_PTR);
     302                 
     303                  // !!! WARNING !!!
     304                  // !!! Test special case :
     305                  // !!! in a cycle an instruction can check the last store AND commit instruction
     306                  // !!! also the memory_out is before the port_check
     307
     308                  _load_queue [internal_MEMORY_OUT_PTR]._state    = LOAD_QUEUE_CHECK;
     309                  // NOTE : a speculative load write in the register file.
     310                  // if the speculation is a miss, write_rd is re set at 1.
     311                  _load_queue [internal_MEMORY_OUT_PTR]._write_rd = 0;
     312
     313#ifdef STATISTICS
     314                  if (usage_is_set(_usage,USE_STATISTICS))
     315                    (*_stat_nb_inst_load_commit_speculative) ++;
     316#endif
     317
     318                  break;
     319                }
     320
     321                break;
     322              }
     323          }
     324
    254325        //================================================================
    255326        // Interface "PORT_CHECK"
     
    278349
    279350                // find a entry that it need a check
    280                 Tlsq_ptr_t index_store  = _load_queue[index_load]._store_queue_ptr_write;
     351                Tlsq_ptr_t index_store     = _load_queue[index_load]._store_queue_ptr_write;
     352                Tlsq_ptr_t index_store_old = index_store;
     353
    281354                // Init variable
    282355                bool       end_check    = false;
     
    534607                                  // The check is finish if all bit is set
    535608                                  end_check = (_load_queue[index_load]._check_hit_byte == _param->_mask_check_hit_byte);
     609
    536610                                }
    537611                            }
     
    553627                    log_printf(TRACE,Load_store_unit,FUNCTION,"              * next");
    554628                    log_printf(TRACE,Load_store_unit,FUNCTION,"                * new store_queue_ptr_write : %d",index_store);
     629
     630                    log_printf(TRACE,Load_store_unit,FUNCTION,"              * update reg_STORE_QUEUE_NB_CHECK");
     631#ifdef DEBUG
     632                    if (reg_STORE_QUEUE_NB_CHECK [index_store] == 0)
     633                      throw ERRORMORPHEO(FUNCTION,_("reg_STORE_QUEUE_NB_CHECK must be > 0\n"));
     634#endif
     635                    reg_STORE_QUEUE_NB_CHECK [index_store] --;
     636
    555637//                  if (_load_queue[index_load]._store_queue_ptr_write == 0)
    556638//                    _load_queue[index_load]._store_queue_ptr_write = _param->_size_store_queue-1;
     
    615697                    log_printf(TRACE,Load_store_unit,FUNCTION,"                * state new : %s",toString(_load_queue[index_load]._state).c_str());
    616698                    log_printf(TRACE,Load_store_unit,FUNCTION,"                * exception : %d",_load_queue[index_load]._exception);
     699
     700                    if (end_check)
     701                      {
     702                        log_printf(TRACE,Load_store_unit,FUNCTION,"                * end check, decrease all nb_check");
     703                       
     704                        uint32_t i=index_store;
     705                        while (i!=reg_STORE_QUEUE_PTR_READ)
     706                          {
     707                            i=((i==0)?_param->_size_store_queue:i)-1;
     708                           
     709#ifdef DEBUG
     710                            if (reg_STORE_QUEUE_NB_CHECK [i] == 0)
     711                              throw ERRORMORPHEO(FUNCTION,_("reg_STORE_QUEUE_NB_CHECK must be > 0\n"));
     712#endif
     713                           
     714                            reg_STORE_QUEUE_NB_CHECK [i] --;
     715                            //i=(i+1)%_param->_size_store_queue;
     716                          }
     717                      }
    617718                  }
    618719              }
     
    803904
    804905        //================================================================
    805         // Interface "MEMORY_OUT"
    806         //================================================================
    807 
    808         if ((    internal_MEMORY_OUT_VAL  == 1) and
    809             (PORT_READ(in_MEMORY_OUT_ACK[0]) == 1))
    810           {
    811             log_printf(TRACE,Load_store_unit,FUNCTION,"  * MEMORY_OUT[0] transaction");
    812 
    813             switch (internal_MEMORY_OUT_SELECT_QUEUE)
    814               {
    815               case SELECT_STORE_QUEUE :
    816                 {
    817                   // =======================
    818                   // ===== STORE_QUEUE =====
    819                   // =======================
    820                  
    821                   log_printf(TRACE,Load_store_unit,FUNCTION,"    * store_queue [%d]",reg_STORE_QUEUE_PTR_READ);
    822            
    823                   // Entry flush and increase the read pointer
    824                   _store_queue [reg_STORE_QUEUE_PTR_READ]._state = STORE_QUEUE_EMPTY;
    825                  
    826                   reg_STORE_QUEUE_PTR_READ = (reg_STORE_QUEUE_PTR_READ+1)%_param->_size_store_queue;
    827 
    828                   break;
    829                 }
    830               case SELECT_LOAD_QUEUE :
    831                 {
    832                   // ======================
    833                   // ===== LOAD_QUEUE =====
    834                   // ======================
    835                  
    836                   log_printf(TRACE,Load_store_unit,FUNCTION,"    * load_queue  [%d]",internal_MEMORY_OUT_PTR);
    837                  
    838                   // Entry flush and increase the read pointer
    839                  
    840                   _load_queue [internal_MEMORY_OUT_PTR]._state = LOAD_QUEUE_EMPTY;
    841                  
    842                   // reg_LOAD_QUEUE_PTR_READ = (reg_LOAD_QUEUE_PTR_READ+1)%_param->_size_load_queue;
    843 
    844                   break;
    845                 }
    846               case SELECT_LOAD_QUEUE_SPECULATIVE :
    847                 {
    848                   log_printf(TRACE,Load_store_unit,FUNCTION,"    * load_queue  [%d] (speculative)",internal_MEMORY_OUT_PTR);
    849                  
    850                   _load_queue [internal_MEMORY_OUT_PTR]._state    = LOAD_QUEUE_CHECK;
    851                   // NOTE : a speculative load write in the register file.
    852                   // if the speculation is a miss, write_rd is re set at 1.
    853                   _load_queue [internal_MEMORY_OUT_PTR]._write_rd = 0;
    854 
    855 #ifdef STATISTICS
    856                   if (usage_is_set(_usage,USE_STATISTICS))
    857                     (*_stat_nb_inst_load_commit_speculative) ++;
    858 #endif
    859 
    860                   break;
    861                 }
    862 
    863                 break;
    864               }
    865           }
    866 
    867         //================================================================
    868906        // Interface "DCACHE_REQ"
    869907        //================================================================
     
    943981            Tdcache_address_t address_lsb    = (address & _param->_mask_address_lsb);
    944982            Tdcache_address_t check_hit_byte = gen_mask_not<Tdcache_address_t>(address_lsb+(memory_size(operation)>>3)-1,address_lsb) & _param->_mask_check_hit_byte;
     983            Tlsq_ptr_t        store_queue_ptr_write = _speculative_access_queue [internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._store_queue_ptr_write;
    945984
    946985            log_printf(TRACE,Load_store_unit,FUNCTION,"    * address                 : 0x%.8x", address);
     
    955994            _load_queue [ptr_write]._packet_id             = _speculative_access_queue [internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._packet_id;
    956995            _load_queue [ptr_write]._operation             = operation;
    957             _load_queue [ptr_write]._store_queue_ptr_write = _speculative_access_queue [internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._store_queue_ptr_write;
     996            _load_queue [ptr_write]._store_queue_ptr_write = store_queue_ptr_write;
    958997            _load_queue [ptr_write]._address               = address;
    959998            _load_queue [ptr_write]._check_hit_byte        = check_hit_byte;
     
    9641003            // NOTE : if have an exception, must write in register, because a depend instruction wait the load data.
    9651004            _load_queue [ptr_write]._write_rd              = _speculative_access_queue [internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._write_rd             ;
    966            
    9671005            _load_queue [ptr_write]._num_reg_rd            = _speculative_access_queue [internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._num_reg_rd           ;
    9681006            _load_queue [ptr_write]._exception             = exception;
     
    9801018              (*_stat_nb_inst_load) ++;
    9811019#endif
     1020
     1021            // Only load need check
     1022            if (is_operation_memory_load(_load_queue [ptr_write]._operation))
     1023              {
     1024                log_printf(TRACE,Load_store_unit,FUNCTION,"    * update nb_check");
     1025                log_printf(TRACE,Load_store_unit,FUNCTION,"      *     store_queue_ptr_write : %d",store_queue_ptr_write);
     1026                log_printf(TRACE,Load_store_unit,FUNCTION,"      * reg_STORE_QUEUE_PTR_READ  : %d",reg_STORE_QUEUE_PTR_READ);
     1027               
     1028                uint32_t i=store_queue_ptr_write;
     1029                while (i!=reg_STORE_QUEUE_PTR_READ)
     1030                  {
     1031                    i=((i==0)?_param->_size_store_queue:i)-1;
     1032                   
     1033                    log_printf(TRACE,Load_store_unit,FUNCTION,"      * i                         : %d",i);
     1034                   
     1035                    reg_STORE_QUEUE_NB_CHECK [i] ++;
     1036                  }
     1037              }
    9821038          }
    9831039
     
    10751131            uint32_t j = (reg_STORE_QUEUE_PTR_READ+i)%_param->_size_store_queue;
    10761132
    1077             log_printf(TRACE,Load_store_unit,FUNCTION,"    [%.4d] %.4d %.4d %.4d, %.4d, %.4d, %.4d, %.8x %.8x, %.2d, %s",
     1133            log_printf(TRACE,Load_store_unit,FUNCTION,"    [%.4d] %.4d %.4d %.4d, %.4d, %.4d, %.4d, %.8x %.8x, %.2d, %.2d %s",
    10781134                       j,
    10791135                       _store_queue[j]._context_id          ,
     
    10881144                     //_store_queue[j]._num_reg_rd          ,
    10891145                       _store_queue[j]._exception           ,
     1146                       reg_STORE_QUEUE_NB_CHECK  [j]        ,
    10901147                       toString(_store_queue[j]._state).c_str());
    10911148          }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters.cpp

    r104 r117  
    5858
    5959    _size_dcache_context_id                = log2(nb_context) + log2(nb_front_end) + log2(nb_ooo_engine);
    60     _size_dcache_packet_id                 = (log2((size_store_queue>size_load_queue)?size_store_queue:size_load_queue))+1;
    61 
     60    _size_dcache_packet_id                 = log2((size_store_queue>size_load_queue)?size_store_queue:size_load_queue)+1;
    6261    _have_port_dcache_context_id           = _size_dcache_context_id>0;
    6362
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Types.h

    r98 r117  
    121121      _immediat              = x._immediat     ;
    122122      _read_ra               = x._read_ra      ;
    123       _read_ra_val           = x._read_ra == 1 ; //if not must read, the registerFile is already access
     123      _read_ra_val           = ((x._read_ra == 1) and (x._num_reg_ra != 0)); //if not must read, the registerFile is already access
    124124      _num_reg_ra            = x._num_reg_ra   ;
    125       _data_ra_val           = ((x._read_ra == 0) or (x._num_reg_ra == 0)); //if not must read, the data is already valid
     125//    _data_ra_val           = ((x._read_ra == 0) or  (x._num_reg_ra == 0)); //if not must read, the data is already valid
     126      _data_ra_val           = not _read_ra_val;
    126127      _data_ra               = 0               ;
    127128      _read_rb               = x._read_rb      ;
    128       _read_rb_val           = x._read_rb == 1 ;
     129      _read_rb_val           = ((x._read_rb == 1) and (x._num_reg_rb != 0));
    129130      _num_reg_rb            = x._num_reg_rb   ;
    130       _data_rb_val           = ((x._read_rb == 0) or (x._num_reg_rb == 0));
     131//    _data_rb_val           = ((x._read_rb == 0) or  (x._num_reg_rb == 0));
     132      _data_rb_val           = not _read_rb_val;
    131133      _data_rb               = 0               ;
    132134      _read_rc               = x._read_rc      ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp

    r112 r117  
    6565
    6666            if(_param->_have_port_context_id   )
    67               entry->_context_id   = PORT_READ(in_READ_QUEUE_IN_CONTEXT_ID  );
     67            entry->_context_id   = PORT_READ(in_READ_QUEUE_IN_CONTEXT_ID  );
    6868            if(_param->_have_port_front_end_id )
    69               entry->_front_end_id = PORT_READ(in_READ_QUEUE_IN_FRONT_END_ID);
     69            entry->_front_end_id = PORT_READ(in_READ_QUEUE_IN_FRONT_END_ID);
    7070            if(_param->_have_port_ooo_engine_id)
    71               entry->_ooo_engine_id= PORT_READ(in_READ_QUEUE_IN_OOO_ENGINE_ID);
     71            entry->_ooo_engine_id= PORT_READ(in_READ_QUEUE_IN_OOO_ENGINE_ID);
    7272            if(_param->_have_port_rob_ptr      )
    73               entry->_rob_id       = PORT_READ(in_READ_QUEUE_IN_ROB_ID      );
     73            entry->_rob_id       = PORT_READ(in_READ_QUEUE_IN_ROB_ID      );
    7474            entry->_operation    = PORT_READ(in_READ_QUEUE_IN_OPERATION   );
    7575            entry->_type         = PORT_READ(in_READ_QUEUE_IN_TYPE        );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_genMoore.cpp

    r115 r117  
    100100      internal_WRITE_QUEUE_OUT_VAL = ((not _queue->empty()           ) and
    101101                                      (not _queue->front()->_write_rd) and
    102                                       (not _queue->front()->_write_re));
     102                                      (not _queue->front()->_write_re) and
     103                                      (_queue->front()->_exception != EXCEPTION_MEMORY_LOAD_SPECULATIVE)
     104                                      );
    103105     
    104106      PORT_WRITE(out_WRITE_QUEUE_OUT_VAL, internal_WRITE_QUEUE_OUT_VAL);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_genMealy.cpp

    r97 r117  
    2222  void Read_unit_to_Execution_unit::genMealy (void)
    2323  {
    24     log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
     24    log_begin(Read_unit_to_Execution_unit,FUNCTION);
     25    log_function(Read_unit_to_Execution_unit,FUNCTION,_name.c_str());
    2526
    2627    bool execute_unit_use [_param->_nb_execute_unit][_param->_max_nb_execute_unit_port];
     
    3536          bool       ack = false;
    3637         
    37           log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"Test Read_unit[%d][%d]",i,j);
     38          log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"  * Test Read_unit[%d][%d]",i,j);
    3839         
    3940          if (PORT_READ(in_READ_UNIT_OUT_VAL [i][j]) == true)
    4041            {
    41               log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION," * have a valid entry.");
     42              log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"    * have a valid entry.");
    4243             
    4344              Tcontext_t context_id    = (_param->_have_port_context_id   )?PORT_READ(in_READ_UNIT_OUT_CONTEXT_ID    [i][j]):0;
     
    5152#ifdef DEBUG_TEST
    5253              if (_destination[i][num_thread][type].empty())
    53                 throw ERRORMORPHEO(FUNCTION,"Invalid Operation : They have no execute_unit to receive a operation from the read_unit ["+toString(i)+"], thread ["+toString(num_thread)+"] and a operation's type ["+toString(type)+"].");
     54                throw ERRORMORPHEO(FUNCTION,toString(_("Invalid Operation : They have no execute_unit to receive a operation from the read_unit [%d], thread [%d] and a operation's type [%s]."),i,num_thread,toString(type).c_str()));
    5455#endif
    5556             
     
    6263                  uint32_t port = (*it).elt;
    6364                 
    64                   log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"   * Test destination [%d][%d].",dest,port);
     65                  log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"      * Test destination [%d][%d].",dest,port);
    6566                 
    6667                  if (execute_unit_use [dest][port] == false)
    6768                    {
    68                       log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"     * Is ok! Link.");
     69                      log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"        * Is ok! Link.");
    6970                     
    7071                      // have find !!!
     
    104105        PORT_WRITE(out_EXECUTE_UNIT_IN_VAL[i][j], execute_unit_use[i][j]);
    105106
    106     log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
     107    log_end(Read_unit_to_Execution_unit,FUNCTION);
    107108  };
    108109
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Parameters.cpp

    r115 r117  
    531531      }
    532532
    533     _have_port_dcache_context_id = (_max_size_dcache_context_id>1);
    534 
     533//     log_printf(TRACE,Load_store_unit,FUNCTION,"kane : size_dcache_context_id      : %d",_max_size_dcache_context_id     );
     534//     log_printf(TRACE,Load_store_unit,FUNCTION,"kane : size_dcache_packet_id       : %d",_max_size_dcache_packet_id      );
     535
     536    _have_port_dcache_context_id = (_max_size_dcache_context_id>0);
     537
     538//     log_printf(TRACE,Load_store_unit,FUNCTION,"kane : have_port_dcache_context_id : %d",_have_port_dcache_context_id);
    535539
    536540    if (is_toplevel)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Types.h

    r111 r117  
    4141      CONTEXT_STATE_KO_MSYNC_EXEC                      , // wait completion of     msync  operation
    4242//    CONTEXT_STATE_KO_PSYNC                           , // wait completion of all        operation and after flush pipeline
    43       CONTEXT_STATE_KO_PSYNC_FLUSH                     , // wait completion of all 
     43      CONTEXT_STATE_KO_PSYNC_FLUSH                     , // wait completion of all
    4444      CONTEXT_STATE_KO_PSYNC_ADDR                      , // wait completion of all
    4545//    CONTEXT_STATE_KO_CSYNC                           , // wait completion of all        operation and after flush pipeline and flush ALL units (MMU, cache ...)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_transition.cpp

    r111 r117  
    352352              log_printf(TRACE,Context_State,FUNCTION,"  * BRANCH_COMPLETE [%d]",i);
    353353
    354               context_state_t state = reg_STATE [i];
     354              Tcontext_t context_id = (_param->_have_port_context_id)?PORT_READ(in_BRANCH_COMPLETE_CONTEXT_ID [i]):0;
     355
     356              context_state_t state = reg_STATE [context_id];
    355357
    356358              Tdepth_t   depth      = (_param->_have_port_depth)?PORT_READ(in_BRANCH_COMPLETE_DEPTH [i]):0;
    357               Tdepth_t   depth_cur  = reg_EVENT_DEPTH [i];
    358               Tdepth_t   depth_min  = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MIN [i]):0;
    359               Tdepth_t   depth_max  = _param->_nb_inst_branch_speculated [i];
     359              Tdepth_t   depth_cur  = reg_EVENT_DEPTH [context_id];
     360              Tdepth_t   depth_min  = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MIN [context_id]):0;
     361              Tdepth_t   depth_max  = _param->_nb_inst_branch_speculated [context_id];
    360362             
    361363              Tdepth_t   depth0     = (depth_cur>=depth_min)?(depth_cur-depth_min):((depth_cur+depth_max-depth_min));
     
    375377                                       ((depth1==depth0) and (priority1>=priority0))); // >= because another branch can be a miss prediction with same depth
    376378
     379              log_printf(TRACE,Context_State,FUNCTION,"    * context_id: %d",context_id);
    377380              log_printf(TRACE,Context_State,FUNCTION,"    * depth     : %d",depth     );
    378381              log_printf(TRACE,Context_State,FUNCTION,"    * depth_cur : %d",depth_cur );
     
    387390              if (is_valid)
    388391                {
    389 //                reg_STATE                  [i] =  CONTEXT_STATE_KO_MISS_BRANCH_ADDR;
    390                   reg_STATE                  [i] =  CONTEXT_STATE_KO_MISS_BRANCH_WAIT_UPDATE;
    391                   reg_EVENT_DEPTH            [i] =  depth;
     392//                reg_STATE                  [context_id] =  CONTEXT_STATE_KO_MISS_BRANCH_ADDR;
     393                  reg_STATE                  [context_id] =  CONTEXT_STATE_KO_MISS_BRANCH_WAIT_UPDATE;
     394                  reg_EVENT_DEPTH            [context_id] =  depth;
    392395                }
    393396            }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/Instruction/src/Instruction.cpp

    r101 r117  
    2424namespace decod {
    2525
    26 #define EXTENDS(x,nb_bits) extend<Tgeneral_data_t>(32, x,true ,nb_bits)
    27 #define EXTENDZ(x,nb_bits) extend<Tgeneral_data_t>(32, x,false,nb_bits)
     26#define EXTENDS(x,nb_bits) extend<Tgeneral_data_t>(param->_size_data, x,true ,nb_bits)
     27#define EXTENDZ(x,nb_bits) extend<Tgeneral_data_t>(param->_size_data, x,false,nb_bits)
    2828
    2929  void instruction_decod               (decod_instruction_t * inst, decod_param_t * param)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/SelfTest/src/test.cpp

    r112 r117  
    5252  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
    5353  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
     54
     55  sc_signal<Tcontrol_t         > ***  in_IFETCH_VAL                         ;
     56  sc_signal<Tcontrol_t         > *** out_IFETCH_ACK                         ;
     57  sc_signal<Tinstruction_t     > ***  in_IFETCH_INSTRUCTION                 ;
     58
     59  sc_signal<Tcontext_t         >  **  in_IFETCH_CONTEXT_ID                  ;
     60  sc_signal<Tgeneral_address_t >  **  in_IFETCH_ADDRESS                     ;
     61//sc_signal<Tgeneral_address_t >  **  in_IFETCH_ADDRESS_NEXT                ;
     62  sc_signal<Tinst_ifetch_ptr_t >  **  in_IFETCH_INST_IFETCH_PTR             ;
     63  sc_signal<Tbranch_state_t    >  **  in_IFETCH_BRANCH_STATE                ;
     64  sc_signal<Tprediction_ptr_t  >  **  in_IFETCH_BRANCH_UPDATE_PREDICTION_ID ;
     65  sc_signal<Texception_t       >  **  in_IFETCH_EXCEPTION                   ;
     66
     67  sc_signal<Tcontrol_t         >  ** out_DECOD_VAL                          ;
     68  sc_signal<Tcontrol_t         >  **  in_DECOD_ACK                          ;
     69  sc_signal<Tcontext_t         >  ** out_DECOD_CONTEXT_ID                   ;
     70  sc_signal<Tdepth_t           >  ** out_DECOD_DEPTH                        ;
     71  sc_signal<Ttype_t            >  ** out_DECOD_TYPE                         ;
     72  sc_signal<Toperation_t       >  ** out_DECOD_OPERATION                    ;
     73  sc_signal<Tcontrol_t         >  ** out_DECOD_NO_EXECUTE                   ;
     74  sc_signal<Tcontrol_t         >  ** out_DECOD_IS_DELAY_SLOT                ;
     75  sc_signal<Tgeneral_data_t    >  ** out_DECOD_ADDRESS                      ;
     76
     77  sc_signal<Tgeneral_data_t    >  ** out_DECOD_ADDRESS_NEXT                 ;
     78  sc_signal<Tcontrol_t         >  ** out_DECOD_HAS_IMMEDIAT                 ;
     79  sc_signal<Tgeneral_data_t    >  ** out_DECOD_IMMEDIAT                     ;
     80  sc_signal<Tcontrol_t         >  ** out_DECOD_READ_RA                      ;
     81  sc_signal<Tgeneral_address_t >  ** out_DECOD_NUM_REG_RA                   ;
     82  sc_signal<Tcontrol_t         >  ** out_DECOD_READ_RB                      ;
     83  sc_signal<Tgeneral_address_t >  ** out_DECOD_NUM_REG_RB                   ;
     84  sc_signal<Tcontrol_t         >  ** out_DECOD_READ_RC                      ;
     85  sc_signal<Tspecial_address_t >  ** out_DECOD_NUM_REG_RC                   ;
     86  sc_signal<Tcontrol_t         >  ** out_DECOD_WRITE_RD                     ;
     87  sc_signal<Tgeneral_address_t >  ** out_DECOD_NUM_REG_RD                   ;
     88  sc_signal<Tcontrol_t         >  ** out_DECOD_WRITE_RE                     ;
     89  sc_signal<Tspecial_address_t >  ** out_DECOD_NUM_REG_RE                   ;
     90  sc_signal<Texception_t       >  ** out_DECOD_EXCEPTION_USE                ;
     91  sc_signal<Texception_t       >  ** out_DECOD_EXCEPTION                    ;
     92
     93  sc_signal<Tcontrol_t         >  ** out_PREDICT_VAL                        ;
     94  sc_signal<Tcontrol_t         >  **  in_PREDICT_ACK                        ;
     95  sc_signal<Tcontext_t         >  ** out_PREDICT_CONTEXT_ID                 ;
     96  sc_signal<Tcontrol_t         >  ** out_PREDICT_MATCH_INST_IFETCH_PTR      ;
     97  sc_signal<Tbranch_state_t    >  ** out_PREDICT_BRANCH_STATE               ;
     98  sc_signal<Tprediction_ptr_t  >  ** out_PREDICT_BRANCH_UPDATE_PREDICTION_ID;
     99  sc_signal<Tbranch_condition_t>  ** out_PREDICT_BRANCH_CONDITION           ;
     100//sc_signal<Tcontrol_t         >  ** out_PREDICT_BRANCH_STACK_WRITE         ;
     101  sc_signal<Tcontrol_t         >  ** out_PREDICT_BRANCH_DIRECTION           ;
     102  sc_signal<Tgeneral_data_t    >  ** out_PREDICT_ADDRESS_SRC                ;
     103  sc_signal<Tgeneral_data_t    >  ** out_PREDICT_ADDRESS_DEST               ;
     104  sc_signal<Tcontrol_t         >  **  in_PREDICT_CAN_CONTINUE               ;
     105
     106  sc_signal<Tdepth_t           >  **  in_DEPTH_MIN                          ;
     107  sc_signal<Tdepth_t           >  **  in_DEPTH_MAX                          ;
     108  sc_signal<Tcontrol_t         >  **  in_DEPTH_FULL                         ;
     109
     110  sc_signal<Tcounter_t         >  ** out_NB_INST_DECOD_ALL                  ;
     111
     112  sc_signal<Tcontrol_t         >  **  in_CONTEXT_DECOD_ENABLE               ;
     113  sc_signal<Tcontrol_t         >  **  in_CONTEXT_DEPTH_VAL                  ;
     114  sc_signal<Tdepth_t           >  **  in_CONTEXT_DEPTH                      ;
     115
     116  sc_signal<Tcontrol_t         >   * out_CONTEXT_EVENT_VAL                  ;
     117  sc_signal<Tcontrol_t         >   *  in_CONTEXT_EVENT_ACK                  ;
     118  sc_signal<Tcontext_t         >   * out_CONTEXT_EVENT_CONTEXT_ID           ;
     119  sc_signal<Tdepth_t           >   * out_CONTEXT_EVENT_DEPTH                ;
     120  sc_signal<Tevent_type_t      >   * out_CONTEXT_EVENT_TYPE                 ;
     121  sc_signal<Tcontrol_t         >   * out_CONTEXT_EVENT_IS_DELAY_SLOT        ;
     122  sc_signal<Tgeneral_data_t    >   * out_CONTEXT_EVENT_ADDRESS              ;
     123  sc_signal<Tgeneral_data_t    >   * out_CONTEXT_EVENT_ADDRESS_EPCR         ;
     124
     125
    54126
    55127  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/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_allocation.cpp

    r112 r117  
    242242
    243243#if defined(DEBUG) and defined(DEBUG_Update_Prediction_Table) and (DEBUG_Update_Prediction_Table == true)
     244    directory_init ();
     245
    244246    branchement_log_file = new std::ofstream [_param->_nb_thread];
    245247    for (uint32_t i=0; i<_param->_nb_thread; ++i)
    246248      if (_param->_have_thread [i])
    247249        {
    248           std::string filename = "Branchement_prediction-thread_" + toString(i) + ".log";
     250          std::string filename = MORPHEO_LOG+"/"+toString(getpid())+"-Branchement_prediction-thread_"+toString(i)+".log";
    249251         
    250252          branchement_log_file [i] .open(filename.c_str() ,std::ios::out | std::ios::trunc);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Parameters.h

    r110 r117  
    6060  public : uint32_t         ** _array_size_depth        ;//[nb_front_end][nb_context]
    6161//public : uint32_t            _max_size_depth          ;
    62   public : Tpacket_t           _shift_num_bank          ;
    63   public : Tpacket_t           _mask_size_bank          ;
     62
     63//public : Tpacket_t           _shift_num_bank          ;
     64  public : Tpacket_t           _mask_num_bank           ;
     65  public : Tpacket_t           _shift_num_slot          ;
     66//public : Tpacket_t           _mask_num_slot           ;
     67   
    6468
    6569//public : bool                _have_port_front_end_id  ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_allocation.cpp

    r112 r117  
    336336
    337337#if defined(DEBUG) and defined(DEBUG_Commit_unit) and (DEBUG_Commit_unit == true)
     338    directory_init ();
     339
    338340    instruction_log_file = new std::ofstream [_param->_nb_thread];
    339341    for (uint32_t i=0; i<_param->_nb_thread; ++i)
    340342      if (_param->_have_thread [i])
    341343        {
    342           std::string filename = "Instruction_flow-thread_" + toString(i) + ".log";
     344          std::string filename = MORPHEO_LOG+"/"+toString(getpid())+"-Instruction_flow-thread_"+toString(i)+"-"+toString(getpid())+".log";
    343345         
    344346          instruction_log_file [i] .open(filename.c_str() ,std::ios::out | std::ios::trunc);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMealy_commit.cpp

    r100 r117  
    4949            // packet_id number can
    5050            Tpacket_t packet_id       = (_param->_have_port_rob_ptr  )?PORT_READ(in_COMMIT_PACKET_ID [i]):0;
    51             uint32_t  num_bank        = packet_id >> _param->_shift_num_bank;
     51            uint32_t  num_bank        = packet_id & _param->_mask_num_bank;
    5252            uint32_t  num_bank_access = bank_nb_access [num_bank];
    5353           
     
    6262                internal_BANK_COMMIT_NUM_INST [num_bank][num_bank_access] = i;
    6363               
    64                 Tpacket_t num_packet = packet_id & _param->_mask_size_bank;
     64                Tpacket_t num_packet = packet_id >> _param->_shift_num_slot;
    6565               
    6666                // find the good entry !!!
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMealy_insert.cpp

    r112 r117  
    9999                        insert_ack       [num_rename_unit][num_inst_insert] = true;
    100100                       
    101                         Tpacket_t packet_id = ((num_bank << _param->_shift_num_bank) | reg_BANK_PTR [num_bank]);
     101                        Tpacket_t packet_id = ((reg_BANK_PTR [num_bank] << _param->_shift_num_slot) | num_bank);
    102102                       
    103103#ifdef SYSTEMC_VHDL_COMPATIBILITY
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp

    r115 r117  
    392392                log_printf(TRACE,Commit_unit,FUNCTION,"    * front_end_id : %d",front_end_id );
    393393                log_printf(TRACE,Commit_unit,FUNCTION,"    * context_id   : %d",context_id   );
    394                 log_printf(TRACE,Commit_unit,FUNCTION,"    * rob_ptr      : %d",((num_bank << _param->_shift_num_bank) | entry->ptr));
     394                log_printf(TRACE,Commit_unit,FUNCTION,"    * rob_ptr      : %d",((entry->ptr << _param->_shift_num_slot) | num_bank));
    395395                log_printf(TRACE,Commit_unit,FUNCTION,"    * num_thread   : %d",num_thread   );
    396396                log_printf(TRACE,Commit_unit,FUNCTION,"    * type         : %s",toString(type).c_str());
     
    740740                         num_bank                       ,
    741741                         (*it)->ptr                     ,
    742                          ((num_bank << _param->_shift_num_bank) | (*it)->ptr),
     742                         (((*it)->ptr << _param->_shift_num_slot) | num_bank),
    743743                         (*it)->front_end_id            ,
    744744                         (*it)->context_id              ,
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Parameters.cpp

    r110 r117  
    7171    _max_nb_inst_retire       = max<uint32_t>(_nb_inst_retire,_nb_rename_unit);
    7272    _size_bank                = _size_queue/_nb_bank;
    73     _shift_num_bank           = log2(_size_bank);
    74     _mask_size_bank           = gen_mask<Tpacket_t>(log2(_size_bank));
     73
     74//  _shift_num_bank           = 0;
     75    _mask_num_bank            = gen_mask<Tpacket_t>(log2(_nb_bank));
     76    _shift_num_slot           = log2(_nb_bank);
     77//  _mask_num_slot            = gen_mask<Tpacket_t>(log2(_size_bank));
    7578
    7679    _have_port_rename_unit_id = _size_rename_unit_id > 0;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/SelfTest/config_min.cfg

    r111 r117  
    13131       1       *2      # size_store_queue_ptr   
    14140       0       *2      # size_load_queue_ptr     
    15 1       1       *2      # nb_inst_issue           
    16151       1       *2      # nb_inst_rename         [0]               [nb_rename_unit]
    17161       1       *2      # nb_inst_reexecute       
     
    19181       1       *2      # priority               
    20191       1       *2      # load_balancing         
    21 1       1       +1      # table_routing          [0][0]            [nb_rename_unit][nb_inst_issue]
    22 1       1       +1      # table_issue_type       [0][TYPE_ALU    ] [nb_inst_issue][nb_type]
    23 1       1       +1      # table_issue_type       [0][TYPE_SHIFT  ] [nb_inst_issue][nb_type]
    24 1       1       +1      # table_issue_type       [0][TYPE_MOVE   ] [nb_inst_issue][nb_type]
    25 1       1       +1      # table_issue_type       [0][TYPE_TEST   ] [nb_inst_issue][nb_type]
    26 1       1       +1      # table_issue_type       [0][TYPE_MUL    ] [nb_inst_issue][nb_type]
    27 1       1       +1      # table_issue_type       [0][TYPE_DIV    ] [nb_inst_issue][nb_type]
    28 1       1       +1      # table_issue_type       [0][TYPE_EXTEND ] [nb_inst_issue][nb_type]
    29 1       1       +1      # table_issue_type       [0][TYPE_FIND   ] [nb_inst_issue][nb_type]
    30 1       1       +1      # table_issue_type       [0][TYPE_SPECIAL] [nb_inst_issue][nb_type]
    31 1       1       +1      # table_issue_type       [0][TYPE_CUSTOM ] [nb_inst_issue][nb_type]
    32 1       1       +1      # table_issue_type       [0][TYPE_BRANCH ] [nb_inst_issue][nb_type]
    33 1       1       +1      # table_issue_type       [0][TYPE_MEMORY ] [nb_inst_issue][nb_type]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/SelfTest/config_mono_rename_unit.cfg

    r111 r117  
    13131       1       *2      # size_store_queue_ptr   
    14140       0       *2      # size_load_queue_ptr     
    15 2       2       *4      # nb_inst_issue           
    16151       4       *4      # nb_inst_rename         [0]               [nb_rename_unit]
    17161       4       *4      # nb_inst_reexecute       
     
    19181       1       *2      # priority               
    20191       1       *2      # load_balancing         
    21 1       1       +1      # table_routing          [0][0]            [nb_rename_unit][nb_inst_issue]
    22 1       1       +1      # table_routing          [0][1]            [nb_rename_unit][nb_inst_issue]
    23 1       1       +1      # table_issue_type       [0][TYPE_ALU    ] [nb_inst_issue][nb_type]
    24 1       1       +1      # table_issue_type       [0][TYPE_SHIFT  ] [nb_inst_issue][nb_type]
    25 1       1       +1      # table_issue_type       [0][TYPE_MOVE   ] [nb_inst_issue][nb_type]
    26 1       1       +1      # table_issue_type       [0][TYPE_TEST   ] [nb_inst_issue][nb_type]
    27 0       0       +1      # table_issue_type       [0][TYPE_MUL    ] [nb_inst_issue][nb_type]
    28 0       0       +1      # table_issue_type       [0][TYPE_DIV    ] [nb_inst_issue][nb_type]
    29 1       1       +1      # table_issue_type       [0][TYPE_EXTEND ] [nb_inst_issue][nb_type]
    30 1       1       +1      # table_issue_type       [0][TYPE_FIND   ] [nb_inst_issue][nb_type]
    31 0       0       +1      # table_issue_type       [0][TYPE_SPECIAL] [nb_inst_issue][nb_type]
    32 0       0       +1      # table_issue_type       [0][TYPE_CUSTOM ] [nb_inst_issue][nb_type]
    33 0       0       +1      # table_issue_type       [0][TYPE_BRANCH ] [nb_inst_issue][nb_type]
    34 1       1       +1      # table_issue_type       [0][TYPE_MEMORY ] [nb_inst_issue][nb_type]
    35 1       1       +1      # table_issue_type       [1][TYPE_ALU    ] [nb_inst_issue][nb_type]
    36 1       1       +1      # table_issue_type       [1][TYPE_SHIFT  ] [nb_inst_issue][nb_type]
    37 1       1       +1      # table_issue_type       [1][TYPE_MOVE   ] [nb_inst_issue][nb_type]
    38 1       1       +1      # table_issue_type       [1][TYPE_TEST   ] [nb_inst_issue][nb_type]
    39 1       1       +1      # table_issue_type       [1][TYPE_MUL    ] [nb_inst_issue][nb_type]
    40 1       1       +1      # table_issue_type       [1][TYPE_DIV    ] [nb_inst_issue][nb_type]
    41 0       0       +1      # table_issue_type       [1][TYPE_EXTEND ] [nb_inst_issue][nb_type]
    42 0       0       +1      # table_issue_type       [1][TYPE_FIND   ] [nb_inst_issue][nb_type]
    43 1       1       +1      # table_issue_type       [1][TYPE_SPECIAL] [nb_inst_issue][nb_type]
    44 1       1       +1      # table_issue_type       [1][TYPE_CUSTOM ] [nb_inst_issue][nb_type]
    45 1       1       +1      # table_issue_type       [1][TYPE_BRANCH ] [nb_inst_issue][nb_type]
    46 0       0       +1      # table_issue_type       [1][TYPE_MEMORY ] [nb_inst_issue][nb_type]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/SelfTest/config_multi_rename_unit.cfg

    r111 r117  
    13131       1       *2      # size_store_queue_ptr   
    14140       0       *2      # size_load_queue_ptr     
    15 4       4       *4      # nb_inst_issue           
    16154       4       *4      # nb_inst_rename         [0]               [nb_rename_unit]
    17161       1       *4      # nb_inst_rename         [1]               [nb_rename_unit]
     
    22211       1       *2      # priority               
    23221       1       *2      # load_balancing         
    24 1       1       +1      # table_routing          [0][0]            [nb_rename_unit][nb_inst_issue]
    25 1       1       +1      # table_routing          [0][1]            [nb_rename_unit][nb_inst_issue]
    26 0       0       +1      # table_routing          [0][2]            [nb_rename_unit][nb_inst_issue]
    27 0       0       +1      # table_routing          [0][3]            [nb_rename_unit][nb_inst_issue]
    28 1       1       +1      # table_routing          [1][0]            [nb_rename_unit][nb_inst_issue]
    29 1       1       +1      # table_routing          [1][1]            [nb_rename_unit][nb_inst_issue]
    30 0       0       +1      # table_routing          [1][2]            [nb_rename_unit][nb_inst_issue]
    31 0       0       +1      # table_routing          [1][3]            [nb_rename_unit][nb_inst_issue]
    32 0       0       +1      # table_routing          [2][0]            [nb_rename_unit][nb_inst_issue]
    33 0       0       +1      # table_routing          [2][1]            [nb_rename_unit][nb_inst_issue]
    34 1       1       +1      # table_routing          [2][2]            [nb_rename_unit][nb_inst_issue]
    35 1       1       +1      # table_routing          [2][3]            [nb_rename_unit][nb_inst_issue]
    36 0       0       +1      # table_routing          [3][0]            [nb_rename_unit][nb_inst_issue]
    37 0       0       +1      # table_routing          [3][1]            [nb_rename_unit][nb_inst_issue]
    38 1       1       +1      # table_routing          [3][2]            [nb_rename_unit][nb_inst_issue]
    39 1       1       +1      # table_routing          [3][3]            [nb_rename_unit][nb_inst_issue]
    40 1       1       +1      # table_issue_type       [0][TYPE_ALU    ] [nb_inst_issue][nb_type]
    41 1       1       +1      # table_issue_type       [0][TYPE_SHIFT  ] [nb_inst_issue][nb_type]
    42 1       1       +1      # table_issue_type       [0][TYPE_MOVE   ] [nb_inst_issue][nb_type]
    43 1       1       +1      # table_issue_type       [0][TYPE_TEST   ] [nb_inst_issue][nb_type]
    44 1       1       +1      # table_issue_type       [0][TYPE_MUL    ] [nb_inst_issue][nb_type]
    45 1       1       +1      # table_issue_type       [0][TYPE_DIV    ] [nb_inst_issue][nb_type]
    46 1       1       +1      # table_issue_type       [0][TYPE_EXTEND ] [nb_inst_issue][nb_type]
    47 1       1       +1      # table_issue_type       [0][TYPE_FIND   ] [nb_inst_issue][nb_type]
    48 1       1       +1      # table_issue_type       [0][TYPE_SPECIAL] [nb_inst_issue][nb_type]
    49 1       1       +1      # table_issue_type       [0][TYPE_CUSTOM ] [nb_inst_issue][nb_type]
    50 1       1       +1      # table_issue_type       [0][TYPE_BRANCH ] [nb_inst_issue][nb_type]
    51 1       1       +1      # table_issue_type       [0][TYPE_MEMORY ] [nb_inst_issue][nb_type]
    52 1       1       +1      # table_issue_type       [1][TYPE_ALU    ] [nb_inst_issue][nb_type]
    53 1       1       +1      # table_issue_type       [1][TYPE_SHIFT  ] [nb_inst_issue][nb_type]
    54 1       1       +1      # table_issue_type       [1][TYPE_MOVE   ] [nb_inst_issue][nb_type]
    55 1       1       +1      # table_issue_type       [1][TYPE_TEST   ] [nb_inst_issue][nb_type]
    56 1       1       +1      # table_issue_type       [1][TYPE_MUL    ] [nb_inst_issue][nb_type]
    57 1       1       +1      # table_issue_type       [1][TYPE_DIV    ] [nb_inst_issue][nb_type]
    58 1       1       +1      # table_issue_type       [1][TYPE_EXTEND ] [nb_inst_issue][nb_type]
    59 1       1       +1      # table_issue_type       [1][TYPE_FIND   ] [nb_inst_issue][nb_type]
    60 1       1       +1      # table_issue_type       [1][TYPE_SPECIAL] [nb_inst_issue][nb_type]
    61 1       1       +1      # table_issue_type       [1][TYPE_CUSTOM ] [nb_inst_issue][nb_type]
    62 1       1       +1      # table_issue_type       [1][TYPE_BRANCH ] [nb_inst_issue][nb_type]
    63 1       1       +1      # table_issue_type       [1][TYPE_MEMORY ] [nb_inst_issue][nb_type]
    64 1       1       +1      # table_issue_type       [2][TYPE_ALU    ] [nb_inst_issue][nb_type]
    65 1       1       +1      # table_issue_type       [2][TYPE_SHIFT  ] [nb_inst_issue][nb_type]
    66 1       1       +1      # table_issue_type       [2][TYPE_MOVE   ] [nb_inst_issue][nb_type]
    67 1       1       +1      # table_issue_type       [2][TYPE_TEST   ] [nb_inst_issue][nb_type]
    68 1       1       +1      # table_issue_type       [2][TYPE_MUL    ] [nb_inst_issue][nb_type]
    69 1       1       +1      # table_issue_type       [2][TYPE_DIV    ] [nb_inst_issue][nb_type]
    70 1       1       +1      # table_issue_type       [2][TYPE_EXTEND ] [nb_inst_issue][nb_type]
    71 1       1       +1      # table_issue_type       [2][TYPE_FIND   ] [nb_inst_issue][nb_type]
    72 1       1       +1      # table_issue_type       [2][TYPE_SPECIAL] [nb_inst_issue][nb_type]
    73 1       1       +1      # table_issue_type       [2][TYPE_CUSTOM ] [nb_inst_issue][nb_type]
    74 1       1       +1      # table_issue_type       [2][TYPE_BRANCH ] [nb_inst_issue][nb_type]
    75 1       1       +1      # table_issue_type       [2][TYPE_MEMORY ] [nb_inst_issue][nb_type]
    76 1       1       +1      # table_issue_type       [3][TYPE_ALU    ] [nb_inst_issue][nb_type]
    77 1       1       +1      # table_issue_type       [3][TYPE_SHIFT  ] [nb_inst_issue][nb_type]
    78 1       1       +1      # table_issue_type       [3][TYPE_MOVE   ] [nb_inst_issue][nb_type]
    79 1       1       +1      # table_issue_type       [3][TYPE_TEST   ] [nb_inst_issue][nb_type]
    80 1       1       +1      # table_issue_type       [3][TYPE_MUL    ] [nb_inst_issue][nb_type]
    81 1       1       +1      # table_issue_type       [3][TYPE_DIV    ] [nb_inst_issue][nb_type]
    82 1       1       +1      # table_issue_type       [3][TYPE_EXTEND ] [nb_inst_issue][nb_type]
    83 1       1       +1      # table_issue_type       [3][TYPE_FIND   ] [nb_inst_issue][nb_type]
    84 1       1       +1      # table_issue_type       [3][TYPE_SPECIAL] [nb_inst_issue][nb_type]
    85 1       1       +1      # table_issue_type       [3][TYPE_CUSTOM ] [nb_inst_issue][nb_type]
    86 1       1       +1      # table_issue_type       [3][TYPE_BRANCH ] [nb_inst_issue][nb_type]
    87 1       1       +1      # table_issue_type       [3][TYPE_MEMORY ] [nb_inst_issue][nb_type]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/SelfTest/src/main.cpp

    r111 r117  
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/SelfTest/include/test.h"
    99
    10 #define NB_PARAMS 18
     10#define NB_PARAMS 17
    1111
    1212void usage (int argc, char * argv[])
     
    2727  err (_(" * size_store_queue_ptr                                  (uint32_t             )\n"));
    2828  err (_(" * size_load_queue_ptr                                   (uint32_t             )\n"));
    29   err (_(" * nb_inst_issue                                         (uint32_t             )\n"));
    3029  err (_(" * nb_inst_rename        [nb_rename_unit]                (uint32_t             )\n"));
    3130  err (_(" * nb_inst_reexecute                                     (uint32_t             )\n"));
     
    3332  err (_(" * priority                                              (Tpriority_t          )\n"));
    3433  err (_(" * load_balancing                                        (Tload_balancing_t    )\n"));
    35   err (_(" * table_routing         [nb_rename_unit][nb_inst_issue] (bool                 )\n"));
    36   err (_(" * table_routing         [nb_inst_issue][nb_type]        (bool                 )\n"));
    37   err (_("   * TYPE_ALU    \n"));
    38   err (_("   * TYPE_SHIFT  \n"));
    39   err (_("   * TYPE_MOVE   \n"));
    40   err (_("   * TYPE_TEST   \n"));
    41   err (_("   * TYPE_MUL    \n"));
    42   err (_("   * TYPE_DIV    \n"));
    43   err (_("   * TYPE_EXTEND \n"));
    44   err (_("   * TYPE_FIND   \n"));
    45   err (_("   * TYPE_SPECIAL\n"));
    46   err (_("   * TYPE_CUSTOM \n"));
    47   err (_("   * TYPE_BRANCH \n"));
    48   err (_("   * TYPE_MEMORY \n"));
     34//   err (_(" * table_routing         [nb_rename_unit][nb_inst_issue] (bool                 )\n"));
     35//   err (_(" * table_issue_type      [nb_inst_issue][nb_type]        (bool                 )\n"));
     36//   err (_("   * TYPE_ALU    \n"));
     37//   err (_("   * TYPE_SHIFT  \n"));
     38//   err (_("   * TYPE_MOVE   \n"));
     39//   err (_("   * TYPE_TEST   \n"));
     40//   err (_("   * TYPE_MUL    \n"));
     41//   err (_("   * TYPE_DIV    \n"));
     42//   err (_("   * TYPE_EXTEND \n"));
     43//   err (_("   * TYPE_FIND   \n"));
     44//   err (_("   * TYPE_SPECIAL\n"));
     45//   err (_("   * TYPE_CUSTOM \n"));
     46//   err (_("   * TYPE_BRANCH \n"));
     47//   err (_("   * TYPE_MEMORY \n"));
    4948
    5049  exit (1);
     
    6867  uint32_t          _nb_rename_unit         = fromString<uint32_t         >(argv[x++]);
    6968
    70   if (argc <= static_cast<int>(2+NB_PARAMS+_nb_rename_unit))
     69  if (argc != static_cast<int>(2+NB_PARAMS+_nb_rename_unit))
    7170    usage (argc, argv);
    7271
     
    8180  uint32_t          _size_store_queue_ptr   = fromString<uint32_t         >(argv[x++]);
    8281  uint32_t          _size_load_queue_ptr    = fromString<uint32_t         >(argv[x++]);
    83   uint32_t          _nb_inst_issue          = fromString<uint32_t         >(argv[x++]);
     82//uint32_t          _nb_inst_issue          = fromString<uint32_t         >(argv[x++]);
    8483  uint32_t        * _nb_inst_rename         = new uint32_t [_nb_rename_unit];
    8584  for (uint32_t i=0; i<_nb_rename_unit; i++)
     
    9089  Tload_balancing_t _load_balancing         = fromString<Tload_balancing_t>(argv[x++]);
    9190
    92   if (argc != static_cast<int>(2+NB_PARAMS+_nb_rename_unit+(_nb_rename_unit+12)*_nb_inst_issue))
    93     usage (argc, argv);
     91//   if (argc != static_cast<int>(2+NB_PARAMS+_nb_rename_unit+(_nb_rename_unit+12)*_nb_inst_issue))
     92//     usage (argc, argv);
    9493
    95   bool           ** _table_routing          = new bool * [_nb_rename_unit];
    96   for (uint32_t i=0; i<_nb_rename_unit; i++)
    97     {
    98       _table_routing [i] = new bool [_nb_inst_issue];
    99       for (uint32_t j=0; j<_nb_inst_issue; j++)
    100         _table_routing [i][j] = fromString<bool>(argv[x++]);
    101     }
     94//   bool           ** _table_routing          = new bool * [_nb_rename_unit];
     95//   for (uint32_t i=0; i<_nb_rename_unit; i++)
     96//     {
     97//       _table_routing [i] = new bool [_nb_inst_issue];
     98//       for (uint32_t j=0; j<_nb_inst_issue; j++)
     99//      _table_routing [i][j] = fromString<bool>(argv[x++]);
     100//     }
    102101
    103   bool           ** _table_issue_type          = new bool * [_nb_inst_issue];
    104   for (uint32_t i=0; i<_nb_inst_issue; i++)
    105     {
    106       _table_issue_type [i] = new bool [_nb_inst_issue];
     102//   bool           ** _table_issue_type          = new bool * [_nb_inst_issue];
     103//   for (uint32_t i=0; i<_nb_inst_issue; i++)
     104//     {
     105//       _table_issue_type [i] = new bool [_nb_inst_issue];
    107106
    108       _table_issue_type [i][TYPE_ALU    ] = fromString<bool>(argv[x++]);
    109       _table_issue_type [i][TYPE_SHIFT  ] = fromString<bool>(argv[x++]);
    110       _table_issue_type [i][TYPE_MOVE   ] = fromString<bool>(argv[x++]);
    111       _table_issue_type [i][TYPE_TEST   ] = fromString<bool>(argv[x++]);
    112       _table_issue_type [i][TYPE_MUL    ] = fromString<bool>(argv[x++]);
    113       _table_issue_type [i][TYPE_DIV    ] = fromString<bool>(argv[x++]);
    114       _table_issue_type [i][TYPE_EXTEND ] = fromString<bool>(argv[x++]);
    115       _table_issue_type [i][TYPE_FIND   ] = fromString<bool>(argv[x++]);
    116       _table_issue_type [i][TYPE_SPECIAL] = fromString<bool>(argv[x++]);
    117       _table_issue_type [i][TYPE_CUSTOM ] = fromString<bool>(argv[x++]);
    118       _table_issue_type [i][TYPE_BRANCH ] = fromString<bool>(argv[x++]);
    119       _table_issue_type [i][TYPE_MEMORY ] = fromString<bool>(argv[x++]);
    120     }
     107//       _table_issue_type [i][TYPE_ALU    ] = fromString<bool>(argv[x++]);
     108//       _table_issue_type [i][TYPE_SHIFT  ] = fromString<bool>(argv[x++]);
     109//       _table_issue_type [i][TYPE_MOVE   ] = fromString<bool>(argv[x++]);
     110//       _table_issue_type [i][TYPE_TEST   ] = fromString<bool>(argv[x++]);
     111//       _table_issue_type [i][TYPE_MUL    ] = fromString<bool>(argv[x++]);
     112//       _table_issue_type [i][TYPE_DIV    ] = fromString<bool>(argv[x++]);
     113//       _table_issue_type [i][TYPE_EXTEND ] = fromString<bool>(argv[x++]);
     114//       _table_issue_type [i][TYPE_FIND   ] = fromString<bool>(argv[x++]);
     115//       _table_issue_type [i][TYPE_SPECIAL] = fromString<bool>(argv[x++]);
     116//       _table_issue_type [i][TYPE_CUSTOM ] = fromString<bool>(argv[x++]);
     117//       _table_issue_type [i][TYPE_BRANCH ] = fromString<bool>(argv[x++]);
     118//       _table_issue_type [i][TYPE_MEMORY ] = fromString<bool>(argv[x++]);
     119//     }
    121120
    122121  int _return = EXIT_SUCCESS;
     
    137136         _size_store_queue_ptr  ,
    138137         _size_load_queue_ptr   ,
    139          _nb_inst_issue         ,
     138//       _nb_inst_issue         ,
    140139         _nb_inst_rename        ,
    141140         _nb_inst_reexecute     ,
     
    143142         _priority              ,
    144143         _load_balancing        ,
    145          _table_routing         ,
    146          _table_issue_type      ,
     144//       _table_routing         ,
     145//       _table_issue_type      ,
    147146         true // is_toplevel
    148147         );
     
    173172  delete [] _nb_inst_rename;
    174173
    175   for (uint32_t i=0; i<_nb_rename_unit; i++)
    176     delete [] _table_routing [i];
    177   delete [] _table_routing   ;
    178   for (uint32_t i=0; i<_nb_inst_issue; i++)
    179     delete [] _table_issue_type [i];
    180   delete [] _table_issue_type;
     174//   for (uint32_t i=0; i<_nb_rename_unit; i++)
     175//     delete [] _table_routing [i];
     176//   delete [] _table_routing   ;
     177//   for (uint32_t i=0; i<_nb_inst_issue; i++)
     178//     delete [] _table_issue_type [i];
     179//   delete [] _table_issue_type;
    181180
    182181  return (_return);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/SelfTest/src/test.cpp

    r110 r117  
    4848  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
    4949  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
     50
     51  sc_signal<Tcontrol_t        > ***  in_ISSUE_IN_VAL                   ;
     52  sc_signal<Tcontrol_t        > *** out_ISSUE_IN_ACK                   ;
     53  sc_signal<Tcontext_t        > ***  in_ISSUE_IN_CONTEXT_ID            ;
     54  sc_signal<Tcontext_t        > ***  in_ISSUE_IN_FRONT_END_ID          ;
     55  sc_signal<Tpacket_t         > ***  in_ISSUE_IN_PACKET_ID             ;
     56  sc_signal<Toperation_t      > ***  in_ISSUE_IN_OPERATION             ;
     57  sc_signal<Ttype_t           > ***  in_ISSUE_IN_TYPE                  ;
     58  sc_signal<Tlsq_ptr_t        > ***  in_ISSUE_IN_STORE_QUEUE_PTR_WRITE ;
     59  sc_signal<Tlsq_ptr_t        > ***  in_ISSUE_IN_LOAD_QUEUE_PTR_WRITE  ;
     60  sc_signal<Tcontrol_t        > ***  in_ISSUE_IN_HAS_IMMEDIAT          ;
     61  sc_signal<Tgeneral_data_t   > ***  in_ISSUE_IN_IMMEDIAT              ;
     62  sc_signal<Tcontrol_t        > ***  in_ISSUE_IN_READ_RA               ;
     63  sc_signal<Tgeneral_address_t> ***  in_ISSUE_IN_NUM_REG_RA            ;
     64  sc_signal<Tcontrol_t        > ***  in_ISSUE_IN_READ_RB               ;
     65  sc_signal<Tgeneral_address_t> ***  in_ISSUE_IN_NUM_REG_RB            ;
     66  sc_signal<Tcontrol_t        > ***  in_ISSUE_IN_READ_RC               ;
     67  sc_signal<Tspecial_address_t> ***  in_ISSUE_IN_NUM_REG_RC            ;
     68  sc_signal<Tcontrol_t        > ***  in_ISSUE_IN_WRITE_RD              ;
     69  sc_signal<Tgeneral_address_t> ***  in_ISSUE_IN_NUM_REG_RD            ;
     70  sc_signal<Tcontrol_t        > ***  in_ISSUE_IN_WRITE_RE              ;
     71  sc_signal<Tspecial_address_t> ***  in_ISSUE_IN_NUM_REG_RE            ;
     72  sc_signal<Tcontrol_t        >  **  in_REEXECUTE_VAL                  ;
     73  sc_signal<Tcontrol_t        >  ** out_REEXECUTE_ACK                  ;
     74  sc_signal<Tcontext_t        >  **  in_REEXECUTE_CONTEXT_ID           ;
     75  sc_signal<Tcontext_t        >  **  in_REEXECUTE_FRONT_END_ID         ;
     76  sc_signal<Tpacket_t         >  **  in_REEXECUTE_PACKET_ID            ;
     77  sc_signal<Toperation_t      >  **  in_REEXECUTE_OPERATION            ;
     78  sc_signal<Ttype_t           >  **  in_REEXECUTE_TYPE                 ;
     79  sc_signal<Tlsq_ptr_t        >  **  in_REEXECUTE_STORE_QUEUE_PTR_WRITE;
     80  sc_signal<Tlsq_ptr_t        >  **  in_REEXECUTE_LOAD_QUEUE_PTR_WRITE ;
     81  sc_signal<Tcontrol_t        >  **  in_REEXECUTE_HAS_IMMEDIAT         ;
     82  sc_signal<Tgeneral_data_t   >  **  in_REEXECUTE_IMMEDIAT             ;
     83  sc_signal<Tcontrol_t        >  **  in_REEXECUTE_READ_RA              ;
     84  sc_signal<Tgeneral_address_t>  **  in_REEXECUTE_NUM_REG_RA           ;
     85  sc_signal<Tcontrol_t        >  **  in_REEXECUTE_READ_RB              ;
     86  sc_signal<Tgeneral_address_t>  **  in_REEXECUTE_NUM_REG_RB           ;
     87  sc_signal<Tcontrol_t        >  **  in_REEXECUTE_READ_RC              ;
     88  sc_signal<Tspecial_address_t>  **  in_REEXECUTE_NUM_REG_RC           ;
     89  sc_signal<Tcontrol_t        >  **  in_REEXECUTE_WRITE_RD             ;
     90  sc_signal<Tgeneral_address_t>  **  in_REEXECUTE_NUM_REG_RD           ;
     91  sc_signal<Tcontrol_t        >  **  in_REEXECUTE_WRITE_RE             ;
     92  sc_signal<Tspecial_address_t>  **  in_REEXECUTE_NUM_REG_RE           ;
     93  sc_signal<Tcontrol_t        >  ** out_ISSUE_OUT_VAL                  ;
     94  sc_signal<Tcontrol_t        >  **  in_ISSUE_OUT_ACK                  ;
     95  sc_signal<Tcontext_t        >  ** out_ISSUE_OUT_CONTEXT_ID           ;
     96  sc_signal<Tcontext_t        >  ** out_ISSUE_OUT_FRONT_END_ID         ;
     97  sc_signal<Tpacket_t         >  ** out_ISSUE_OUT_PACKET_ID            ;
     98  sc_signal<Toperation_t      >  ** out_ISSUE_OUT_OPERATION            ;
     99  sc_signal<Ttype_t           >  ** out_ISSUE_OUT_TYPE                 ;
     100  sc_signal<Tlsq_ptr_t        >  ** out_ISSUE_OUT_STORE_QUEUE_PTR_WRITE;
     101  sc_signal<Tlsq_ptr_t        >  ** out_ISSUE_OUT_LOAD_QUEUE_PTR_WRITE ;
     102  sc_signal<Tcontrol_t        >  ** out_ISSUE_OUT_HAS_IMMEDIAT         ;
     103  sc_signal<Tgeneral_data_t   >  ** out_ISSUE_OUT_IMMEDIAT             ;
     104  sc_signal<Tcontrol_t        >  ** out_ISSUE_OUT_READ_RA              ;
     105  sc_signal<Tgeneral_address_t>  ** out_ISSUE_OUT_NUM_REG_RA           ;
     106  sc_signal<Tcontrol_t        >  ** out_ISSUE_OUT_READ_RB              ;
     107  sc_signal<Tgeneral_address_t>  ** out_ISSUE_OUT_NUM_REG_RB           ;
     108  sc_signal<Tcontrol_t        >  ** out_ISSUE_OUT_READ_RC              ;
     109  sc_signal<Tspecial_address_t>  ** out_ISSUE_OUT_NUM_REG_RC           ;
     110  sc_signal<Tcontrol_t        >  ** out_ISSUE_OUT_WRITE_RD             ;
     111  sc_signal<Tgeneral_address_t>  ** out_ISSUE_OUT_NUM_REG_RD           ;
     112  sc_signal<Tcontrol_t        >  ** out_ISSUE_OUT_WRITE_RE             ;
     113  sc_signal<Tspecial_address_t>  ** out_ISSUE_OUT_NUM_REG_RE           ;
    50114
    51115  ALLOC2_SC_SIGNAL( in_ISSUE_IN_VAL                   ," in_ISSUE_IN_VAL                   ",Tcontrol_t        ,_param->_nb_rename_unit,_param->_nb_inst_rename[it1]);
     
    309373            Ttype_t type = out_ISSUE_OUT_TYPE[i]->read();
    310374            TEST(Ttype_t,type, tab_type[imm%NB_TYPE]);
    311             TEST(bool   ,_param->_table_issue_type[i][type],true);
     375//          TEST(bool   ,_param->_table_issue_type[i][type],true);
    312376          }
    313377
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/include/Parameters.h

    r111 r117  
    3838//public : uint32_t              _size_store_queue_ptr    ;
    3939//public : uint32_t              _size_load_queue_ptr     ;
    40   public : uint32_t              _nb_inst_issue           ;
    4140  public : uint32_t            * _nb_inst_rename          ;//[nb_rename_unit]
    4241  public : uint32_t              _nb_inst_reexecute       ;
     
    4443  public : Tpriority_t           _priority                ;
    4544  public : Tload_balancing_t     _load_balancing          ;
    46   public : bool               ** _table_routing           ;//[nb_rename_unit][nb_inst_issue]
    47   public : bool               ** _table_issue_type        ;//[nb_inst_issue][nb_type]
     45//public : bool               ** _table_routing           ;//[nb_rename_unit][nb_inst_issue]
     46//public : bool               ** _table_issue_type        ;//[nb_inst_issue][nb_type]
    4847  public : uint32_t              _size_reexecute_queue    ;
    4948                             
     49  public : uint32_t              _nb_inst_issue           ;
    5050//public : uint32_t              _nb_bank_select_out      ;
    5151  public : uint32_t              _max_nb_inst_rename      ;
     
    7474                        uint32_t              size_store_queue_ptr    ,
    7575                        uint32_t              size_load_queue_ptr     ,
    76                         uint32_t              nb_inst_issue           ,
     76//                      uint32_t              nb_inst_issue           ,
    7777                        uint32_t            * nb_inst_rename          ,
    7878                        uint32_t              nb_inst_reexecute       ,
     
    8080                        Tpriority_t           priority                ,
    8181                        Tload_balancing_t     load_balancing          ,
    82                         bool               ** table_routing           ,
    83                         bool               ** table_issue_type        ,
     82//                      bool               ** table_routing           ,
     83//                      bool               ** table_issue_type        ,
    8484                        bool                  is_toplevel=false);
    8585
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_function_in_order_genMealy_issue_out.cpp

    r115 r117  
    3030      Tcontrol_t val [_param->_nb_inst_issue];
    3131
     32      uint32_t index=0;
    3233      for (uint32_t i=0; i<_param->_nb_inst_issue; i++)
    3334        val [i] = 0;
    3435
     36      //--------------------------------------
    3537      // From Reexecute_queue
     38      //--------------------------------------
    3639
     40      // scan all reexecute_queue slot ...
    3741//       uint32_t num_reexecute_entry = 0;
    3842      for (std::list<entry_t*>::iterator it=_reexecute_queue.begin();
     
    4246          entry_t* entry = (*it);
    4347
    44           for (uint32_t i=0; i<_param->_nb_inst_issue; i++)
    45             // test if no previous transaction and can accept this type
    46             if ((val[i] == 0) and _param->_table_issue_type [i][entry->_type])
    47               {
    48                 // find a issue port
    49                 val [i] = 1;
    50            
    51                 if (_param->_have_port_context_id)
    52                 PORT_WRITE(out_ISSUE_OUT_CONTEXT_ID            [i], entry->_context_id           );
    53                 if (_param->_have_port_front_end_id)
    54                 PORT_WRITE(out_ISSUE_OUT_FRONT_END_ID          [i], entry->_front_end_id         );
    55                 if (_param->_have_port_rob_ptr  )
    56                 PORT_WRITE(out_ISSUE_OUT_PACKET_ID             [i], entry->_packet_id            );
    57                 PORT_WRITE(out_ISSUE_OUT_OPERATION             [i], entry->_operation            );
    58                 PORT_WRITE(out_ISSUE_OUT_TYPE                  [i], entry->_type                 );
    59                 PORT_WRITE(out_ISSUE_OUT_STORE_QUEUE_PTR_WRITE [i], entry->_store_queue_ptr_write);
    60                 if (_param->_have_port_load_queue_ptr)
    61                 PORT_WRITE(out_ISSUE_OUT_LOAD_QUEUE_PTR_WRITE  [i], entry->_load_queue_ptr_write );
    62                 PORT_WRITE(out_ISSUE_OUT_HAS_IMMEDIAT          [i], entry->_has_immediat         );
    63                 PORT_WRITE(out_ISSUE_OUT_IMMEDIAT              [i], entry->_immediat             );
    64                 PORT_WRITE(out_ISSUE_OUT_READ_RA               [i], entry->_read_ra              );
    65                 PORT_WRITE(out_ISSUE_OUT_NUM_REG_RA            [i], entry->_num_reg_ra           );
    66                 PORT_WRITE(out_ISSUE_OUT_READ_RB               [i], entry->_read_rb              );
    67                 PORT_WRITE(out_ISSUE_OUT_NUM_REG_RB            [i], entry->_num_reg_rb           );
    68                 PORT_WRITE(out_ISSUE_OUT_READ_RC               [i], entry->_read_rc              );
    69                 PORT_WRITE(out_ISSUE_OUT_NUM_REG_RC            [i], entry->_num_reg_rc           );
    70                 PORT_WRITE(out_ISSUE_OUT_WRITE_RD              [i], entry->_write_rd             );
    71                 PORT_WRITE(out_ISSUE_OUT_NUM_REG_RD            [i], entry->_num_reg_rd           );
    72                 PORT_WRITE(out_ISSUE_OUT_WRITE_RE              [i], entry->_write_re             );
    73                 PORT_WRITE(out_ISSUE_OUT_NUM_REG_RE            [i], entry->_num_reg_re           );
     48          val [index] = 1;
     49             
     50          if (_param->_have_port_context_id)
     51          PORT_WRITE(out_ISSUE_OUT_CONTEXT_ID            [index], entry->_context_id           );
     52          if (_param->_have_port_front_end_id)
     53          PORT_WRITE(out_ISSUE_OUT_FRONT_END_ID          [index], entry->_front_end_id         );
     54          if (_param->_have_port_rob_ptr  )
     55          PORT_WRITE(out_ISSUE_OUT_PACKET_ID             [index], entry->_packet_id            );
     56          PORT_WRITE(out_ISSUE_OUT_OPERATION             [index], entry->_operation            );
     57          PORT_WRITE(out_ISSUE_OUT_TYPE                  [index], entry->_type                 );
     58          PORT_WRITE(out_ISSUE_OUT_STORE_QUEUE_PTR_WRITE [index], entry->_store_queue_ptr_write);
     59          if (_param->_have_port_load_queue_ptr)
     60          PORT_WRITE(out_ISSUE_OUT_LOAD_QUEUE_PTR_WRITE  [index], entry->_load_queue_ptr_write );
     61          PORT_WRITE(out_ISSUE_OUT_HAS_IMMEDIAT          [index], entry->_has_immediat         );
     62          PORT_WRITE(out_ISSUE_OUT_IMMEDIAT              [index], entry->_immediat             );
     63          PORT_WRITE(out_ISSUE_OUT_READ_RA               [index], entry->_read_ra              );
     64          PORT_WRITE(out_ISSUE_OUT_NUM_REG_RA            [index], entry->_num_reg_ra           );
     65          PORT_WRITE(out_ISSUE_OUT_READ_RB               [index], entry->_read_rb              );
     66          PORT_WRITE(out_ISSUE_OUT_NUM_REG_RB            [index], entry->_num_reg_rb           );
     67          PORT_WRITE(out_ISSUE_OUT_READ_RC               [index], entry->_read_rc              );
     68          PORT_WRITE(out_ISSUE_OUT_NUM_REG_RC            [index], entry->_num_reg_rc           );
     69          PORT_WRITE(out_ISSUE_OUT_WRITE_RD              [index], entry->_write_rd             );
     70          PORT_WRITE(out_ISSUE_OUT_NUM_REG_RD            [index], entry->_num_reg_rd           );
     71          PORT_WRITE(out_ISSUE_OUT_WRITE_RE              [index], entry->_write_re             );
     72          PORT_WRITE(out_ISSUE_OUT_NUM_REG_RE            [index], entry->_num_reg_re           );
    7473
    75                 internal_ISSUE_OUT_FROM_REEXECUTE [i] = true;
    76 //              internal_ISSUE_OUT_NUM_BANK       [i] = num_reexecute_entry;
    77                 internal_ISSUE_OUT_ENTRY          [i] = entry;
     74          internal_ISSUE_OUT_FROM_REEXECUTE [index] = true;
     75//        internal_ISSUE_OUT_NUM_BANK       [index] = num_reexecute_entry;
     76          internal_ISSUE_OUT_ENTRY          [index] = entry;
    7877
    79                 break; // stop scan
    80               }
    81 //           num_reexecute_entry ++;
     78          index ++; // next slot
    8279        }
     80     
     81      //--------------------------------------
     82      // From Issue_queue
     83      //--------------------------------------
     84      index = _param->_nb_inst_reexecute;
    8385
    84       // From Issue_queue
     86      log_printf(TRACE,Issue_queue,FUNCTION,"  * From Issue_queue");
     87
     88      // for all instruction in issue_queue head ...
    8589      for (uint32_t i=0; i<_param->_nb_bank; ++i)
    8690        {
     
    8993          log_printf(TRACE,Issue_queue,FUNCTION,"    * Bank [%d]",num_bank);
    9094         
    91           bool find = false;
     95//           bool find = false;
    9296         
    93           // Have instruction ?
     97          // ... test if have an instruction
    9498          if (not _issue_queue [num_bank].empty())
    9599            {
    96100              log_printf(TRACE,Issue_queue,FUNCTION,"      * Not Empty !!!");
    97101
     102              // read instruction
    98103              entry_t* entry = _issue_queue [num_bank].front();
    99104             
    100               // have valid instruction, search a valid issue slot.
    101               for (uint32_t j=0; j<_param->_nb_inst_issue; j++)
    102                 {
    103                   Tcontrol_t issue_ack = PORT_READ(in_ISSUE_OUT_ACK [j]);
     105//               Tcontrol_t issue_ack = PORT_READ(in_ISSUE_OUT_ACK [index]);
     106             
     107              log_printf(TRACE,Issue_queue,FUNCTION,"      * Issue [%d]",index);
     108//               log_printf(TRACE,Issue_queue,FUNCTION,"        * issue_ack            : %d",issue_ack);
     109//            log_printf(TRACE,Issue_queue,FUNCTION,"        * previous transaction : %d",val[index]);
     110//            log_printf(TRACE,Issue_queue,FUNCTION,"        * can issue type       : %d",_param->_table_issue_type [index][entry->_type]);
    104111
    105                   log_printf(TRACE,Issue_queue,FUNCTION,"      * Issue [%d]",j);
    106                   log_printf(TRACE,Issue_queue,FUNCTION,"        * issue_ack            : %d",issue_ack);
    107                   log_printf(TRACE,Issue_queue,FUNCTION,"        * previous transaction : %d",val[j]);
    108                   log_printf(TRACE,Issue_queue,FUNCTION,"        * can issue type       : %d",_param->_table_issue_type [j][entry->_type]);
     112              // in_order : test if find a valid read_unit
     113//               if (issue_ack)
     114//                 {
     115//                log_printf(TRACE,Issue_queue,FUNCTION,"        * find !!!");
     116                 
     117//                   find = true;
     118//                 }
    109119
    110                   // test if no previous transaction and can accept this type
    111                   if (not val[j] and
    112                       _param->_table_issue_type [j][entry->_type] and
    113                       issue_ack)
    114                     {
    115                       log_printf(TRACE,Issue_queue,FUNCTION,"        * find !!!");
    116                      
    117                       // find a issue port
    118                       val [j] = 1;
    119                      
    120                       if (_param->_have_port_context_id)
    121                       PORT_WRITE(out_ISSUE_OUT_CONTEXT_ID            [j], entry->_context_id           );
    122                       if (_param->_have_port_front_end_id)
    123                       PORT_WRITE(out_ISSUE_OUT_FRONT_END_ID          [j], entry->_front_end_id         );
    124                       if (_param->_have_port_rob_ptr  )
    125                       PORT_WRITE(out_ISSUE_OUT_PACKET_ID             [j], entry->_packet_id            );
    126                       PORT_WRITE(out_ISSUE_OUT_OPERATION             [j], entry->_operation            );
    127                       PORT_WRITE(out_ISSUE_OUT_TYPE                  [j], entry->_type                 );
    128                       PORT_WRITE(out_ISSUE_OUT_STORE_QUEUE_PTR_WRITE [j], entry->_store_queue_ptr_write);
    129                       if (_param->_have_port_load_queue_ptr)
    130                       PORT_WRITE(out_ISSUE_OUT_LOAD_QUEUE_PTR_WRITE  [j], entry->_load_queue_ptr_write );
    131                       PORT_WRITE(out_ISSUE_OUT_HAS_IMMEDIAT          [j], entry->_has_immediat         );
    132                       PORT_WRITE(out_ISSUE_OUT_IMMEDIAT              [j], entry->_immediat             );
    133                       PORT_WRITE(out_ISSUE_OUT_READ_RA               [j], entry->_read_ra              );
    134                       PORT_WRITE(out_ISSUE_OUT_NUM_REG_RA            [j], entry->_num_reg_ra           );
    135                       PORT_WRITE(out_ISSUE_OUT_READ_RB               [j], entry->_read_rb              );
    136                       PORT_WRITE(out_ISSUE_OUT_NUM_REG_RB            [j], entry->_num_reg_rb           );
    137                       PORT_WRITE(out_ISSUE_OUT_READ_RC               [j], entry->_read_rc              );
    138                       PORT_WRITE(out_ISSUE_OUT_NUM_REG_RC            [j], entry->_num_reg_rc           );
    139                       PORT_WRITE(out_ISSUE_OUT_WRITE_RD              [j], entry->_write_rd             );
    140                       PORT_WRITE(out_ISSUE_OUT_NUM_REG_RD            [j], entry->_num_reg_rd           );
    141                       PORT_WRITE(out_ISSUE_OUT_WRITE_RE              [j], entry->_write_re             );
    142                       PORT_WRITE(out_ISSUE_OUT_NUM_REG_RE            [j], entry->_num_reg_re           );
    143                      
    144                       internal_ISSUE_OUT_FROM_REEXECUTE [j] = false;
    145                       internal_ISSUE_OUT_NUM_BANK       [j] = num_bank;
    146                       internal_ISSUE_OUT_ENTRY          [j] = entry;
    147                      
    148                       find = true;
    149                       break; // find : stop scan
    150                     }
    151                 }
     120              // find a issue port
     121              val [index] = true; // instruction is valid
     122             
     123              if (_param->_have_port_context_id)
     124              PORT_WRITE(out_ISSUE_OUT_CONTEXT_ID            [index], entry->_context_id           );
     125              if (_param->_have_port_front_end_id)
     126              PORT_WRITE(out_ISSUE_OUT_FRONT_END_ID          [index], entry->_front_end_id         );
     127              if (_param->_have_port_rob_ptr  )
     128              PORT_WRITE(out_ISSUE_OUT_PACKET_ID             [index], entry->_packet_id            );
     129              PORT_WRITE(out_ISSUE_OUT_OPERATION             [index], entry->_operation            );
     130              PORT_WRITE(out_ISSUE_OUT_TYPE                  [index], entry->_type                 );
     131              PORT_WRITE(out_ISSUE_OUT_STORE_QUEUE_PTR_WRITE [index], entry->_store_queue_ptr_write);
     132              if (_param->_have_port_load_queue_ptr)
     133              PORT_WRITE(out_ISSUE_OUT_LOAD_QUEUE_PTR_WRITE  [index], entry->_load_queue_ptr_write );
     134              PORT_WRITE(out_ISSUE_OUT_HAS_IMMEDIAT          [index], entry->_has_immediat         );
     135              PORT_WRITE(out_ISSUE_OUT_IMMEDIAT              [index], entry->_immediat             );
     136              PORT_WRITE(out_ISSUE_OUT_READ_RA               [index], entry->_read_ra              );
     137              PORT_WRITE(out_ISSUE_OUT_NUM_REG_RA            [index], entry->_num_reg_ra           );
     138              PORT_WRITE(out_ISSUE_OUT_READ_RB               [index], entry->_read_rb              );
     139              PORT_WRITE(out_ISSUE_OUT_NUM_REG_RB            [index], entry->_num_reg_rb           );
     140              PORT_WRITE(out_ISSUE_OUT_READ_RC               [index], entry->_read_rc              );
     141              PORT_WRITE(out_ISSUE_OUT_NUM_REG_RC            [index], entry->_num_reg_rc           );
     142              PORT_WRITE(out_ISSUE_OUT_WRITE_RD              [index], entry->_write_rd             );
     143              PORT_WRITE(out_ISSUE_OUT_NUM_REG_RD            [index], entry->_num_reg_rd           );
     144              PORT_WRITE(out_ISSUE_OUT_WRITE_RE              [index], entry->_write_re             );
     145              PORT_WRITE(out_ISSUE_OUT_NUM_REG_RE            [index], entry->_num_reg_re           );
     146             
     147              internal_ISSUE_OUT_FROM_REEXECUTE [index] = false;
     148              internal_ISSUE_OUT_NUM_BANK       [index] = num_bank;
     149              internal_ISSUE_OUT_ENTRY          [index] = entry;
     150
     151              index ++; // next slot
    152152            }
    153153
    154           if (not find)
    155             break; // stop scan (in order)
     154//           if (not find)
     155//             {
     156//            log_printf(TRACE,Issue_queue,FUNCTION,"      * Not find. Stop Scan (in order)");
     157             
     158//               break; // stop scan (in order)
     159//             }
    156160        }
    157 
     161     
     162      // Output
    158163      for (uint32_t i=0; i<_param->_nb_inst_issue; i++)
    159164        {
    160165          internal_ISSUE_OUT_VAL [i] = val [i];
    161166          PORT_WRITE(out_ISSUE_OUT_VAL [i], internal_ISSUE_OUT_VAL [i]);
     167
     168//           // Type invalid to the Core_Glue network
     169//           if (not val [i]) // == empty
     170//             PORT_WRITE(out_ISSUE_OUT_TYPE [i], TYPE_INVALID);
    162171        }
    163172    }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_function_out_of_order_genMoore.cpp

    r111 r117  
    109109          for (uint32_t i=0; i<_param->_nb_inst_issue; i++)
    110110            // test if no previous transaction and can accept this type
    111             if ((val[i] == 0) and _param->_table_issue_type [i][entry->_type])
     111            if ((val[i] == 0)
     112//                 and _param->_table_issue_type [i][entry->_type]
     113                )
    112114              {
    113115                // find a issue port
     
    168170              for (uint32_t i=0; i<_param->_nb_inst_issue; i++)
    169171                // test if no previous transaction and can accept this type
    170                 if ((val[i] == 0) and _param->_table_issue_type [i][entry->_type])
     172                if ((val[i] == 0)
     173//                     and _param->_table_issue_type [i][entry->_type]
     174                    )
    171175                  {
    172176                    // find a issue port
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_transition.cpp

    r111 r117  
    106106    log_printf(TRACE,Issue_queue,FUNCTION,"  * Dump Issue_queue");
    107107
     108    if (_param->_queue_scheme == ISSUE_QUEUE_SCHEME_IN_ORDER)
     109      {
     110    log_printf(TRACE,Issue_queue,FUNCTION,"    * reg_NUM_BANK_HEAD : %d",reg_NUM_BANK_HEAD);
     111    log_printf(TRACE,Issue_queue,FUNCTION,"    * reg_NUM_BANK_TAIL : %d",reg_NUM_BANK_TAIL);
     112      }
     113
    108114    for (uint32_t i=0; i<_param->_nb_bank; i++)
    109115      {
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Parameters.cpp

    r111 r117  
    3232                          uint32_t              size_store_queue_ptr    ,
    3333                          uint32_t              size_load_queue_ptr     ,
    34                           uint32_t              nb_inst_issue           ,
     34//                        uint32_t              nb_inst_issue           ,
    3535                          uint32_t            * nb_inst_rename          ,
    3636                          uint32_t              nb_inst_reexecute       ,
     
    3838                          Tpriority_t           priority                ,
    3939                          Tload_balancing_t     load_balancing          ,
    40                           bool               ** table_routing           ,
    41                           bool               ** table_issue_type        ,
     40//                        bool               ** table_routing           ,
     41//                        bool               ** table_issue_type        ,
    4242                          bool                  is_toplevel             )
    4343  {
     
    5050    _queue_scheme             = queue_scheme         ;
    5151    _nb_bank                  = nb_bank              ;   
    52     _nb_inst_issue            = nb_inst_issue        ;
     52//  _nb_inst_issue            = nb_inst_issue        ;
    5353    _nb_inst_rename           = nb_inst_rename       ;
    5454    _nb_inst_reexecute        = nb_inst_reexecute    ;
     
    5656    _priority                 = priority             ;
    5757    _load_balancing           = load_balancing       ;
    58     _table_routing            = table_routing        ;
    59     _table_issue_type         = table_issue_type     ;
     58//  _table_routing            = table_routing        ;
     59//  _table_issue_type         = table_issue_type     ;
    6060    _size_reexecute_queue     = nb_inst_reexecute    ;
    6161
    62     log_printf(TRACE,Issue_queue,FUNCTION,"  * table_routing [nb_rename_unit][nb_inst_issue]");
    63     for (uint32_t i=0; i<_nb_rename_unit; ++i)
    64       for (uint32_t j=0; j<_nb_inst_issue; ++j)
    65         if (_table_routing [i][j])
    66           log_printf(TRACE,Issue_queue,FUNCTION,"    [%d][%d] -> true",i,j);
     62    _nb_inst_issue            = _nb_inst_reexecute+_nb_bank;
     63
     64//     log_printf(TRACE,Issue_queue,FUNCTION,"  * table_routing [nb_rename_unit][nb_inst_issue]");
     65//     for (uint32_t i=0; i<_nb_rename_unit; ++i)
     66//       for (uint32_t j=0; j<_nb_inst_issue; ++j)
     67//         if (_table_routing [i][j])
     68//           log_printf(TRACE,Issue_queue,FUNCTION,"    [%d][%d] -> true",i,j);
    6769       
    68     log_printf(TRACE,Issue_queue,FUNCTION,"  * table_issue_type [nb_inst_issue][nb_type]");
    69     for (uint32_t i=0; i<_nb_inst_issue; ++i)
    70       for (uint32_t j=0; j<_nb_type; ++j)
    71         if (_table_issue_type [i][j])
    72           log_printf(TRACE,Issue_queue,FUNCTION,"    [%d][%d] -> true",i,j);
     70//     log_printf(TRACE,Issue_queue,FUNCTION,"  * table_issue_type [nb_inst_issue][nb_type]");
     71//     for (uint32_t i=0; i<_nb_inst_issue; ++i)
     72//       for (uint32_t j=0; j<_nb_type; ++j)
     73//         if (_table_issue_type [i][j])
     74//           log_printf(TRACE,Issue_queue,FUNCTION,"    [%d][%d] -> true",i,j);
    7375   
    7476    _max_nb_inst_rename       = max<uint32_t>(_nb_inst_rename,_nb_rename_unit);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Parameters_msg_error.cpp

    r111 r117  
    4848      test.error(toString(_("nb_bank (%d) must be a multiple of size_queue (%d).\n"),_nb_bank,_size_queue));
    4949   
    50     if (not is_multiple(_nb_bank, _nb_inst_issue))
    51       test.error(toString(_("nb_inst_issue (%d) must be a multiple of nb_bank (%d) .\n"),_nb_inst_issue,_nb_bank));
     50//     if (not is_multiple(_nb_bank, _nb_inst_issue))
     51//       test.error(toString(_("nb_inst_issue (%d) must be a multiple of nb_bank (%d) .\n"),_nb_inst_issue,_nb_bank));
    5252
    5353    if (_nb_rename_unit_select > _nb_rename_unit)
     
    5757      test.warning(_("For better performance, the bank's size (size_queue/nb_bank) must be > 1.\n"));
    5858
    59     for (uint32_t i=0; i<_nb_rename_unit; i++)
    60       {
    61         bool type_present [_nb_type];
     59//     for (uint32_t i=0; i<_nb_rename_unit; i++)
     60//       {
     61//      bool type_present [_nb_type];
    6262       
    63         for (uint32_t j=0; j<_nb_type; j++)
    64           type_present [j] = not is_type_valid(j);
     63//      for (uint32_t j=0; j<_nb_type; j++)
     64//        type_present [j] = not is_type_valid(j);
    6565
    66         bool find = false;
    67         for (uint32_t j=0; j<_nb_inst_issue; j++)
    68           if (_table_routing [i][j])
    69           {
    70             find = true;
     66//      bool find = false;
     67//      for (uint32_t j=0; j<_nb_inst_issue; j++)
     68//        if (_table_routing [i][j])
     69//        {
     70//          find = true;
    7171
    72             for (uint32_t k=0; k<_nb_type; k++)
    73               type_present [k] |= _table_issue_type [j][k];
    74           }
     72//          for (uint32_t k=0; k<_nb_type; k++)
     73//            type_present [k] |= _table_issue_type [j][k];
     74//        }
    7575
    76         if (not find)
    77           test.error(toString(_("Rename_unit [%d] is not connected with a issue slot.\n"),i));
    78         else
    79           for (uint32_t j=0; j<_nb_type; j++)
    80             if (not type_present [j] and not is_type_optionnal(j))
    81               test.error(toString(_("Rename_unit [%d] can't issue instruction's type \"%s\".\n"),i,toString(j).c_str()));
    82       }
     76//      if (not find)
     77//        test.error(toString(_("Rename_unit [%d] is not connected with a issue slot.\n"),i));
     78//      else
     79//        for (uint32_t j=0; j<_nb_type; j++)
     80//          if (not type_present [j] and not is_type_optionnal(j))
     81//            test.error(toString(_("Rename_unit [%d] can't issue instruction's type \"%s\".\n"),i,toString(j).c_str()));
     82//       }
    8383   
    8484    if ((_priority != PRIORITY_ROUND_ROBIN))
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/SelfTest/src/test.cpp

    r88 r117  
    153153  ALLOC1_SC_SIGNAL( in_COMMIT_ACK                           ," in_COMMIT_ACK                         ",Tcontrol_t         ,_param->_nb_inst_commit);
    154154  ALLOC1_SC_SIGNAL(out_COMMIT_WEN                           ,"out_COMMIT_WEN                         ",Tcontrol_t         ,_param->_nb_inst_commit);
    155   ALLOC1_SC_SIGNAL(out_COMMIT_CONTEXT_ID                    ,"out_COMMIT_CONTEXT_ID                  ",Tcontext_t         ,_param->_nb_inst_commit);
    156   ALLOC1_SC_SIGNAL(out_COMMIT_FRONT_END_ID                  ,"out_COMMIT_FRONT_END_ID                ",Tcontext_t         ,_param->_nb_inst_commit);
     155//ALLOC1_SC_SIGNAL(out_COMMIT_CONTEXT_ID                    ,"out_COMMIT_CONTEXT_ID                  ",Tcontext_t         ,_param->_nb_inst_commit);
     156//ALLOC1_SC_SIGNAL(out_COMMIT_FRONT_END_ID                  ,"out_COMMIT_FRONT_END_ID                ",Tcontext_t         ,_param->_nb_inst_commit);
    157157  ALLOC1_SC_SIGNAL(out_COMMIT_PACKET_ID                     ,"out_COMMIT_PACKET_ID                   ",Tpacket_t          ,_param->_nb_inst_commit);
    158158//ALLOC1_SC_SIGNAL(out_COMMIT_OPERATION                     ,"out_COMMIT_OPERATION                   ",Toperation_t       ,_param->_nb_inst_commit);
     
    234234  INSTANCE1_SC_SIGNAL(_Reexecute_unit, in_COMMIT_ACK                           ,_param->_nb_inst_commit);
    235235  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_COMMIT_WEN                           ,_param->_nb_inst_commit);
    236   if (_param->_have_port_context_id)
    237   INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_COMMIT_CONTEXT_ID                    ,_param->_nb_inst_commit);
    238   if (_param->_have_port_front_end_id)
    239   INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_COMMIT_FRONT_END_ID                  ,_param->_nb_inst_commit);
     236//if (_param->_have_port_context_id)
     237//INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_COMMIT_CONTEXT_ID                    ,_param->_nb_inst_commit);
     238//if (_param->_have_port_front_end_id)
     239//INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_COMMIT_FRONT_END_ID                  ,_param->_nb_inst_commit);
    240240  if (_param->_have_port_rob_ptr  )
    241241  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_COMMIT_PACKET_ID                     ,_param->_nb_inst_commit);
     
    415415
    416416                  TEST(Tcontrol_t     ,out_COMMIT_WEN          [i]->read(),request[packet].commit_wen  );
    417                   if (_param->_have_port_context_id)
    418                   TEST(Tcontext_t     ,out_COMMIT_CONTEXT_ID   [i]->read(),request[packet].context_id  );
    419                   if (_param->_have_port_front_end_id)
    420                   TEST(Tcontext_t     ,out_COMMIT_FRONT_END_ID [i]->read(),request[packet].front_end_id);
     417//                if (_param->_have_port_context_id)
     418//                TEST(Tcontext_t     ,out_COMMIT_CONTEXT_ID   [i]->read(),request[packet].context_id  );
     419//                if (_param->_have_port_front_end_id)
     420//                TEST(Tcontext_t     ,out_COMMIT_FRONT_END_ID [i]->read(),request[packet].front_end_id);
    421421//                TEST(Toperation_t   ,out_COMMIT_OPERATION    [i]->read(),request[packet].operation   );
    422422//                TEST(Ttype_t        ,out_COMMIT_TYPE         [i]->read(),request[packet].type        );
     
    529529  DELETE1_SC_SIGNAL( in_COMMIT_ACK                           ,_param->_nb_inst_commit);
    530530  DELETE1_SC_SIGNAL(out_COMMIT_WEN                           ,_param->_nb_inst_commit);
    531   DELETE1_SC_SIGNAL(out_COMMIT_CONTEXT_ID                    ,_param->_nb_inst_commit);
    532   DELETE1_SC_SIGNAL(out_COMMIT_FRONT_END_ID                  ,_param->_nb_inst_commit);
     531//DELETE1_SC_SIGNAL(out_COMMIT_CONTEXT_ID                    ,_param->_nb_inst_commit);
     532//DELETE1_SC_SIGNAL(out_COMMIT_FRONT_END_ID                  ,_param->_nb_inst_commit);
    533533  DELETE1_SC_SIGNAL(out_COMMIT_PACKET_ID                     ,_param->_nb_inst_commit);
    534534//DELETE1_SC_SIGNAL(out_COMMIT_OPERATION                     ,_param->_nb_inst_commit);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/include/Reexecute_unit.h

    r97 r117  
    8787  public    : SC_IN (Tcontrol_t         )  **  in_COMMIT_ACK                           ;//[nb_inst_commit]
    8888  public    : SC_OUT(Tcontrol_t         )  ** out_COMMIT_WEN                           ;//[nb_inst_commit]
    89   public    : SC_OUT(Tcontext_t         )  ** out_COMMIT_CONTEXT_ID                    ;//[nb_inst_commit]
    90   public    : SC_OUT(Tcontext_t         )  ** out_COMMIT_FRONT_END_ID                  ;//[nb_inst_commit]
     89//public    : SC_OUT(Tcontext_t         )  ** out_COMMIT_CONTEXT_ID                    ;//[nb_inst_commit]
     90//public    : SC_OUT(Tcontext_t         )  ** out_COMMIT_FRONT_END_ID                  ;//[nb_inst_commit]
    9191  public    : SC_OUT(Tpacket_t          )  ** out_COMMIT_PACKET_ID                     ;//[nb_inst_commit]
    9292//public    : SC_OUT(Toperation_t       )  ** out_COMMIT_OPERATION                     ;//[nb_inst_commit]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit_allocation.cpp

    r112 r117  
    8383      ALLOC1_VALACK_IN ( in_COMMIT_ACK                           ,ACK);
    8484      ALLOC1_SIGNAL_OUT(out_COMMIT_WEN                           ,"wen"         ,Tcontrol_t         ,1);
    85       ALLOC1_SIGNAL_OUT(out_COMMIT_CONTEXT_ID                    ,"context_id"  ,Tcontext_t         ,_param->_size_context_id  );
    86       ALLOC1_SIGNAL_OUT(out_COMMIT_FRONT_END_ID                  ,"front_end_id",Tcontext_t         ,_param->_size_front_end_id);
     85//    ALLOC1_SIGNAL_OUT(out_COMMIT_CONTEXT_ID                    ,"context_id"  ,Tcontext_t         ,_param->_size_context_id  );
     86//    ALLOC1_SIGNAL_OUT(out_COMMIT_FRONT_END_ID                  ,"front_end_id",Tcontext_t         ,_param->_size_front_end_id);
    8787      ALLOC1_SIGNAL_OUT(out_COMMIT_PACKET_ID                     ,"packet_id"   ,Tpacket_t          ,_param->_size_rob_ptr     );
    8888//    ALLOC1_SIGNAL_OUT(out_COMMIT_OPERATION                     ,"operation"   ,Toperation_t       ,_param->_size_operation   );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit_deallocation.cpp

    r115 r117  
    4444        DELETE1_SIGNAL( in_COMMIT_ACK                           ,_param->_nb_inst_commit,1);
    4545        DELETE1_SIGNAL(out_COMMIT_WEN                           ,_param->_nb_inst_commit,1);
    46         DELETE1_SIGNAL(out_COMMIT_CONTEXT_ID                    ,_param->_nb_inst_commit,_param->_size_context_id  );
    47         DELETE1_SIGNAL(out_COMMIT_FRONT_END_ID                  ,_param->_nb_inst_commit,_param->_size_front_end_id);
     46//      DELETE1_SIGNAL(out_COMMIT_CONTEXT_ID                    ,_param->_nb_inst_commit,_param->_size_context_id  );
     47//      DELETE1_SIGNAL(out_COMMIT_FRONT_END_ID                  ,_param->_nb_inst_commit,_param->_size_front_end_id);
    4848        DELETE1_SIGNAL(out_COMMIT_PACKET_ID                     ,_param->_nb_inst_commit,_param->_size_rob_ptr     );
    4949//      DELETE1_SIGNAL(out_COMMIT_OPERATION                     ,_param->_nb_inst_commit,_param->_size_operation   );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit_genMealy_commit.cpp

    r98 r117  
    101101                if (commit_val)
    102102                  {
    103                     if (_param->_have_port_context_id)
    104                     PORT_WRITE(out_COMMIT_CONTEXT_ID   [i], PORT_READ(in_EXECUTE_LOOP_CONTEXT_ID   [x][y]));
    105                     if (_param->_have_port_front_end_id)
    106                     PORT_WRITE(out_COMMIT_FRONT_END_ID [i], PORT_READ(in_EXECUTE_LOOP_FRONT_END_ID [x][y]));
     103//                  if (_param->_have_port_context_id)
     104//                  PORT_WRITE(out_COMMIT_CONTEXT_ID   [i], PORT_READ(in_EXECUTE_LOOP_CONTEXT_ID   [x][y]));
     105//                  if (_param->_have_port_front_end_id)
     106//                  PORT_WRITE(out_COMMIT_FRONT_END_ID [i], PORT_READ(in_EXECUTE_LOOP_FRONT_END_ID [x][y]));
    107107                    if (_param->_have_port_rob_ptr  )
    108108                    PORT_WRITE(out_COMMIT_PACKET_ID    [i], PORT_READ(in_EXECUTE_LOOP_PACKET_ID    [x][y]));
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/SelfTest/src/test.cpp

    r88 r117  
    7777  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
    7878
     79  sc_signal<Tcontrol_t  > **  in_INSERT_VAL                  ;
     80  sc_signal<Tcontrol_t  > ** out_INSERT_ACK                  ;
     81  sc_signal<Tcontext_t  > **  in_INSERT_FRONT_END_ID         ;
     82  sc_signal<Tcontext_t  > **  in_INSERT_CONTEXT_ID           ;
     83  sc_signal<Ttype_t     > **  in_INSERT_TYPE                 ;
     84  sc_signal<Toperation_t> **  in_INSERT_OPERATION            ;
     85  sc_signal<Tlsq_ptr_t  > ** out_INSERT_STORE_QUEUE_PTR_WRITE;
     86  sc_signal<Tlsq_ptr_t  > ** out_INSERT_LOAD_QUEUE_PTR_WRITE ;
     87  sc_signal<Tcontrol_t  > **  in_RETIRE_VAL                  ;
     88  sc_signal<Tcontrol_t  > ** out_RETIRE_ACK                  ;
     89  sc_signal<Tcontext_t  > **  in_RETIRE_FRONT_END_ID         ;
     90  sc_signal<Tcontext_t  > **  in_RETIRE_CONTEXT_ID           ;
     91//sc_signal<Ttype_t     > **  in_RETIRE_TYPE                 ;
     92//sc_signal<Toperation_t> **  in_RETIRE_OPERATION            ;
     93  sc_signal<Tcontrol_t  > **  in_RETIRE_USE_STORE_QUEUE      ;
     94  sc_signal<Tcontrol_t  > **  in_RETIRE_USE_LOAD_QUEUE       ;
     95  sc_signal<Tlsq_ptr_t  > **  in_RETIRE_STORE_QUEUE_PTR_WRITE;
     96  sc_signal<Tlsq_ptr_t  > **  in_RETIRE_LOAD_QUEUE_PTR_WRITE ;
     97
    7998  ALLOC1_SC_SIGNAL( in_INSERT_VAL                  ," in_INSERT_VAL                  ",Tcontrol_t  ,_param->_nb_inst_insert);
    8099  ALLOC1_SC_SIGNAL(out_INSERT_ACK                  ,"out_INSERT_ACK                  ",Tcontrol_t  ,_param->_nb_inst_insert);
     
    89108  ALLOC1_SC_SIGNAL( in_RETIRE_FRONT_END_ID         ," in_RETIRE_FRONT_END_ID         ",Tcontext_t  ,_param->_nb_inst_retire);
    90109  ALLOC1_SC_SIGNAL( in_RETIRE_CONTEXT_ID           ," in_RETIRE_CONTEXT_ID           ",Tcontext_t  ,_param->_nb_inst_retire);
    91 //   ALLOC1_SC_SIGNAL( in_RETIRE_TYPE                 ," in_RETIRE_TYPE                 ",Ttype_t     ,_param->_nb_inst_retire);
    92 //   ALLOC1_SC_SIGNAL( in_RETIRE_OPERATION            ," in_RETIRE_OPERATION            ",Toperation_t,_param->_nb_inst_retire);
     110//ALLOC1_SC_SIGNAL( in_RETIRE_TYPE                 ," in_RETIRE_TYPE                 ",Ttype_t     ,_param->_nb_inst_retire);
     111//ALLOC1_SC_SIGNAL( in_RETIRE_OPERATION            ," in_RETIRE_OPERATION            ",Toperation_t,_param->_nb_inst_retire);
    93112  ALLOC1_SC_SIGNAL( in_RETIRE_USE_STORE_QUEUE      ," in_RETIRE_USE_STORE_QUEUE      ",Tcontrol_t  ,_param->_nb_inst_retire);
    94113  ALLOC1_SC_SIGNAL( in_RETIRE_USE_LOAD_QUEUE       ," in_RETIRE_USE_LOAD_QUEUE       ",Tcontrol_t  ,_param->_nb_inst_retire);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/src/test.cpp

    r98 r117  
    7979  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW",Tspecial_address_t,_param->_nb_inst_insert);
    8080
    81   ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RA                     ,"out_INSERT_STAT_LIST_READ_RA                     ",Tcontrol_t        ,_param->_nb_inst_insert);
    82   ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ,"out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ",Tgeneral_address_t,_param->_nb_inst_insert);
    83   ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RB                     ,"out_INSERT_STAT_LIST_READ_RB                     ",Tcontrol_t        ,_param->_nb_inst_insert);
    84   ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ,"out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ",Tgeneral_address_t,_param->_nb_inst_insert);
    85   ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RC                     ,"out_INSERT_STAT_LIST_READ_RC                     ",Tcontrol_t        ,_param->_nb_inst_insert);
    86   ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,"out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ",Tspecial_address_t,_param->_nb_inst_insert);
     81//ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RA                     ,"out_INSERT_STAT_LIST_READ_RA                     ",Tcontrol_t        ,_param->_nb_inst_insert);
     82//ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ,"out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ",Tgeneral_address_t,_param->_nb_inst_insert);
     83//ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RB                     ,"out_INSERT_STAT_LIST_READ_RB                     ",Tcontrol_t        ,_param->_nb_inst_insert);
     84//ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ,"out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ",Tgeneral_address_t,_param->_nb_inst_insert);
     85//ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RC                     ,"out_INSERT_STAT_LIST_READ_RC                     ",Tcontrol_t        ,_param->_nb_inst_insert);
     86//ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,"out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ",Tspecial_address_t,_param->_nb_inst_insert);
    8787  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_WRITE_RD                    ,"out_INSERT_STAT_LIST_WRITE_RD                    ",Tcontrol_t        ,_param->_nb_inst_insert);
     88  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_OLD          ,"out_INSERT_STAT_LIST_NUM_REG_RD_PHY_OLD          ",Tgeneral_address_t,_param->_nb_inst_insert);
    8889  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ,"out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ",Tgeneral_address_t,_param->_nb_inst_insert);
    8990  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_WRITE_RE                    ,"out_INSERT_STAT_LIST_WRITE_RE                    ",Tcontrol_t        ,_param->_nb_inst_insert);
     91  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_OLD          ,"out_INSERT_STAT_LIST_NUM_REG_RE_PHY_OLD          ",Tspecial_address_t,_param->_nb_inst_insert);
    9092  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ,"out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ",Tspecial_address_t,_param->_nb_inst_insert);
    9193
     
    157159  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert);
    158160
    159   INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_READ_RA                     ,_param->_nb_inst_insert);
    160   INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ,_param->_nb_inst_insert);
    161   INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_READ_RB                     ,_param->_nb_inst_insert);
    162   INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ,_param->_nb_inst_insert);
    163   INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_READ_RC                     ,_param->_nb_inst_insert);
    164   INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,_param->_nb_inst_insert);
     161//INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_READ_RA                     ,_param->_nb_inst_insert);
     162//INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ,_param->_nb_inst_insert);
     163//INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_READ_RB                     ,_param->_nb_inst_insert);
     164//INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ,_param->_nb_inst_insert);
     165//INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_READ_RC                     ,_param->_nb_inst_insert);
     166//INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,_param->_nb_inst_insert);
    165167  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_WRITE_RD                    ,_param->_nb_inst_insert);
     168  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RD_PHY_OLD          ,_param->_nb_inst_insert);
    166169  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ,_param->_nb_inst_insert);
    167170  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_WRITE_RE                    ,_param->_nb_inst_insert);
     171  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RE_PHY_OLD          ,_param->_nb_inst_insert);
    168172  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ,_param->_nb_inst_insert);
    169173
     
    331335  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert);
    332336
    333   DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RA                     ,_param->_nb_inst_insert);
    334   DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ,_param->_nb_inst_insert);
    335   DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RB                     ,_param->_nb_inst_insert);
    336   DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ,_param->_nb_inst_insert);
    337   DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RC                     ,_param->_nb_inst_insert);
    338   DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,_param->_nb_inst_insert);
     337//DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RA                     ,_param->_nb_inst_insert);
     338//DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ,_param->_nb_inst_insert);
     339//DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RB                     ,_param->_nb_inst_insert);
     340//DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ,_param->_nb_inst_insert);
     341//DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RC                     ,_param->_nb_inst_insert);
     342//DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,_param->_nb_inst_insert);
    339343  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_WRITE_RD                    ,_param->_nb_inst_insert);
     344  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_OLD          ,_param->_nb_inst_insert);
    340345  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ,_param->_nb_inst_insert);
    341346  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_WRITE_RE                    ,_param->_nb_inst_insert);
     347  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_OLD          ,_param->_nb_inst_insert);
    342348  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ,_param->_nb_inst_insert);
    343349
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Register_translation_unit_Glue.h

    r110 r117  
    108108  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ;//[nb_inst_insert]
    109109  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_STAT_LIST_WRITE_RD                    ;//[nb_inst_insert]
     110  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_STAT_LIST_NUM_REG_RD_PHY_OLD          ;//[nb_inst_insert]
    110111  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ;//[nb_inst_insert]
    111112  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_STAT_LIST_WRITE_RE                    ;//[nb_inst_insert]
     113  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_STAT_LIST_NUM_REG_RE_PHY_OLD          ;//[nb_inst_insert]
    112114  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ;//[nb_inst_insert]
    113115
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_allocation.cpp

    r112 r117  
    9797      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,"STAT_LIST_NUM_REG_RC_PHY"              ,Tspecial_address_t,_param->_size_special_register      );
    9898      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_WRITE_RD                    ,"STAT_LIST_WRITE_RD"                    ,Tcontrol_t        ,1);
     99      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_OLD          ,"STAT_LIST_NUM_REG_RD_PHY_OLD"          ,Tgeneral_address_t,_param->_size_general_register      );
    99100      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ,"STAT_LIST_NUM_REG_RD_PHY_NEW"          ,Tgeneral_address_t,_param->_size_general_register      );
    100101      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_WRITE_RE                    ,"STAT_LIST_WRITE_RE"                    ,Tcontrol_t        ,1);
     102      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_OLD          ,"STAT_LIST_NUM_REG_RE_PHY_OLD"          ,Tspecial_address_t,_param->_size_special_register      );
    101103      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ,"STAT_LIST_NUM_REG_RE_PHY_NEW"          ,Tspecial_address_t,_param->_size_special_register      );
    102104
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_deallocation.cpp

    r110 r117  
    5959        DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register      );
    6060       
    61         DELETE1_SIGNAL(out_INSERT_STAT_LIST_READ_RA                     ,_param->_nb_inst_insert,1);
    62         DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ,_param->_nb_inst_insert,_param->_size_general_register      );
    63         DELETE1_SIGNAL(out_INSERT_STAT_LIST_READ_RB                     ,_param->_nb_inst_insert,1);
    64         DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ,_param->_nb_inst_insert,_param->_size_general_register      );
    65         DELETE1_SIGNAL(out_INSERT_STAT_LIST_READ_RC                     ,_param->_nb_inst_insert,1);
    66         DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,_param->_nb_inst_insert,_param->_size_special_register      );
     61        DELETE1_SIGNAL(out_INSERT_STAT_LIST_READ_RA                     ,_param->_nb_inst_insert,1);
     62        DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ,_param->_nb_inst_insert,_param->_size_general_register      );
     63        DELETE1_SIGNAL(out_INSERT_STAT_LIST_READ_RB                     ,_param->_nb_inst_insert,1);
     64        DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ,_param->_nb_inst_insert,_param->_size_general_register      );
     65        DELETE1_SIGNAL(out_INSERT_STAT_LIST_READ_RC                     ,_param->_nb_inst_insert,1);
     66        DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,_param->_nb_inst_insert,_param->_size_special_register      );
    6767        DELETE1_SIGNAL(out_INSERT_STAT_LIST_WRITE_RD                    ,_param->_nb_inst_insert,1);
     68        DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_OLD          ,_param->_nb_inst_insert,_param->_size_general_register      );
    6869        DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ,_param->_nb_inst_insert,_param->_size_general_register      );
    6970        DELETE1_SIGNAL(out_INSERT_STAT_LIST_WRITE_RE                    ,_param->_nb_inst_insert,1);
     71        DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_OLD          ,_param->_nb_inst_insert,_param->_size_special_register      );
    7072        DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ,_param->_nb_inst_insert,_param->_size_special_register      );
    7173       
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_genMealy_insert.cpp

    r101 r117  
    4949        PORT_WRITE(out_INSERT_FREE_LIST_SPR_VAL            [i], WRITE_RE          );
    5050
    51         PORT_WRITE(out_INSERT_STAT_LIST_READ_RA            [i], READ_RA           );
    52         PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RA_PHY     [i], NUM_REG_RA_PHY    );
    53         PORT_WRITE(out_INSERT_STAT_LIST_READ_RB            [i], READ_RB           );
    54         PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RB_PHY     [i], NUM_REG_RB_PHY    );
    55         PORT_WRITE(out_INSERT_STAT_LIST_READ_RC            [i], READ_RC           );
    56         PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RC_PHY     [i], NUM_REG_RC_PHY    );
     51        PORT_WRITE(out_INSERT_STAT_LIST_READ_RA            [i], READ_RA           );
     52        PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RA_PHY     [i], NUM_REG_RA_PHY    );
     53        PORT_WRITE(out_INSERT_STAT_LIST_READ_RB            [i], READ_RB           );
     54        PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RB_PHY     [i], NUM_REG_RB_PHY    );
     55        PORT_WRITE(out_INSERT_STAT_LIST_READ_RC            [i], READ_RC           );
     56        PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RC_PHY     [i], NUM_REG_RC_PHY    );
    5757        PORT_WRITE(out_INSERT_STAT_LIST_WRITE_RD           [i], WRITE_RD          );
     58        PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_OLD [i], NUM_REG_RD_PHY_OLD);
    5859        PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW [i], NUM_REG_RD_PHY_NEW);
    5960        PORT_WRITE(out_INSERT_STAT_LIST_WRITE_RE           [i], WRITE_RE          );
     61        PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_OLD [i], NUM_REG_RE_PHY_OLD);
    6062        PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW [i], NUM_REG_RE_PHY_NEW);
    6163       
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/test.cpp

    r113 r117  
    6363  sc_signal<Tcontrol_t        >   **  in_INSERT_VAL               ;//[nb_inst_insert]
    6464  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]
     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]
    7171  sc_signal<Tcontrol_t        >   **  in_INSERT_WRITE_RD          ;//[nb_inst_insert]
     72  sc_signal<Tgeneral_address_t>   **  in_INSERT_NUM_REG_RD_PHY_OLD;//[nb_inst_insert]
    7273  sc_signal<Tgeneral_address_t>   **  in_INSERT_NUM_REG_RD_PHY_NEW;//[nb_inst_insert]
    7374  sc_signal<Tcontrol_t        >   **  in_INSERT_WRITE_RE          ;//[nb_inst_insert]
     75  sc_signal<Tspecial_address_t>   **  in_INSERT_NUM_REG_RE_PHY_OLD;//[nb_inst_insert]
    7476  sc_signal<Tspecial_address_t>   **  in_INSERT_NUM_REG_RE_PHY_NEW;//[nb_inst_insert]
    7577  sc_signal<Tcontrol_t        >   **  in_RETIRE_VAL               ;//[nb_inst_retire]
    7678  sc_signal<Tcontrol_t        >   ** out_RETIRE_ACK               ;//[nb_inst_retire]
    7779  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]
     80//sc_signal<Tcontrol_t        >   **  in_RETIRE_READ_RA           ;//[nb_inst_retire]
     81//sc_signal<Tgeneral_address_t>   **  in_RETIRE_NUM_REG_RA_PHY    ;//[nb_inst_retire]
     82//sc_signal<Tcontrol_t        >   **  in_RETIRE_READ_RB           ;//[nb_inst_retire]
     83//sc_signal<Tgeneral_address_t>   **  in_RETIRE_NUM_REG_RB_PHY    ;//[nb_inst_retire]
     84//sc_signal<Tcontrol_t        >   **  in_RETIRE_READ_RC           ;//[nb_inst_retire]
     85//sc_signal<Tspecial_address_t>   **  in_RETIRE_NUM_REG_RC_PHY    ;//[nb_inst_retire]
    8486  sc_signal<Tcontrol_t        >   **  in_RETIRE_WRITE_RD          ;//[nb_inst_retire]
    8587  sc_signal<Tcontrol_t        >   **  in_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire]
     
    99101  ALLOC1_SC_SIGNAL( in_INSERT_VAL               ," in_INSERT_VAL               ",Tcontrol_t        ,_param->_nb_inst_insert);
    100102  ALLOC1_SC_SIGNAL(out_INSERT_ACK               ,"out_INSERT_ACK               ",Tcontrol_t        ,_param->_nb_inst_insert);
    101   ALLOC1_SC_SIGNAL( in_INSERT_READ_RA           ," in_INSERT_READ_RA           ",Tcontrol_t        ,_param->_nb_inst_insert);
    102   ALLOC1_SC_SIGNAL( in_INSERT_NUM_REG_RA_PHY    ," in_INSERT_NUM_REG_RA_PHY    ",Tgeneral_address_t,_param->_nb_inst_insert);
    103   ALLOC1_SC_SIGNAL( in_INSERT_READ_RB           ," in_INSERT_READ_RB           ",Tcontrol_t        ,_param->_nb_inst_insert);
    104   ALLOC1_SC_SIGNAL( in_INSERT_NUM_REG_RB_PHY    ," in_INSERT_NUM_REG_RB_PHY    ",Tgeneral_address_t,_param->_nb_inst_insert);
    105   ALLOC1_SC_SIGNAL( in_INSERT_READ_RC           ," in_INSERT_READ_RC           ",Tcontrol_t        ,_param->_nb_inst_insert);
    106   ALLOC1_SC_SIGNAL( in_INSERT_NUM_REG_RC_PHY    ," in_INSERT_NUM_REG_RC_PHY    ",Tspecial_address_t,_param->_nb_inst_insert);
     103//ALLOC1_SC_SIGNAL( in_INSERT_READ_RA           ," in_INSERT_READ_RA           ",Tcontrol_t        ,_param->_nb_inst_insert);
     104//ALLOC1_SC_SIGNAL( in_INSERT_NUM_REG_RA_PHY    ," in_INSERT_NUM_REG_RA_PHY    ",Tgeneral_address_t,_param->_nb_inst_insert);
     105//ALLOC1_SC_SIGNAL( in_INSERT_READ_RB           ," in_INSERT_READ_RB           ",Tcontrol_t        ,_param->_nb_inst_insert);
     106//ALLOC1_SC_SIGNAL( in_INSERT_NUM_REG_RB_PHY    ," in_INSERT_NUM_REG_RB_PHY    ",Tgeneral_address_t,_param->_nb_inst_insert);
     107//ALLOC1_SC_SIGNAL( in_INSERT_READ_RC           ," in_INSERT_READ_RC           ",Tcontrol_t        ,_param->_nb_inst_insert);
     108//ALLOC1_SC_SIGNAL( in_INSERT_NUM_REG_RC_PHY    ," in_INSERT_NUM_REG_RC_PHY    ",Tspecial_address_t,_param->_nb_inst_insert);
    107109  ALLOC1_SC_SIGNAL( in_INSERT_WRITE_RD          ," in_INSERT_WRITE_RD          ",Tcontrol_t        ,_param->_nb_inst_insert);
     110  ALLOC1_SC_SIGNAL( in_INSERT_NUM_REG_RD_PHY_OLD," in_INSERT_NUM_REG_RD_PHY_OLD",Tgeneral_address_t,_param->_nb_inst_insert);
    108111  ALLOC1_SC_SIGNAL( in_INSERT_NUM_REG_RD_PHY_NEW," in_INSERT_NUM_REG_RD_PHY_NEW",Tgeneral_address_t,_param->_nb_inst_insert);
    109112  ALLOC1_SC_SIGNAL( in_INSERT_WRITE_RE          ," in_INSERT_WRITE_RE          ",Tcontrol_t        ,_param->_nb_inst_insert);
     113  ALLOC1_SC_SIGNAL( in_INSERT_NUM_REG_RE_PHY_OLD," in_INSERT_NUM_REG_RE_PHY_OLD",Tspecial_address_t,_param->_nb_inst_insert);
    110114  ALLOC1_SC_SIGNAL( in_INSERT_NUM_REG_RE_PHY_NEW," in_INSERT_NUM_REG_RE_PHY_NEW",Tspecial_address_t,_param->_nb_inst_insert);
    111115  ALLOC1_SC_SIGNAL( in_RETIRE_VAL               ," in_RETIRE_VAL               ",Tcontrol_t        ,_param->_nb_inst_retire);
    112116  ALLOC1_SC_SIGNAL(out_RETIRE_ACK               ,"out_RETIRE_ACK               ",Tcontrol_t        ,_param->_nb_inst_retire);
    113117  ALLOC1_SC_SIGNAL( in_RETIRE_RESTORE           ," in_RETIRE_RESTORE           ",Tcontrol_t        ,_param->_nb_inst_retire);
    114   ALLOC1_SC_SIGNAL( in_RETIRE_READ_RA           ," in_RETIRE_READ_RA           ",Tcontrol_t        ,_param->_nb_inst_retire);
    115   ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RA_PHY    ," in_RETIRE_NUM_REG_RA_PHY    ",Tgeneral_address_t,_param->_nb_inst_retire);
    116   ALLOC1_SC_SIGNAL( in_RETIRE_READ_RB           ," in_RETIRE_READ_RB           ",Tcontrol_t        ,_param->_nb_inst_retire);
    117   ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RB_PHY    ," in_RETIRE_NUM_REG_RB_PHY    ",Tgeneral_address_t,_param->_nb_inst_retire);
    118   ALLOC1_SC_SIGNAL( in_RETIRE_READ_RC           ," in_RETIRE_READ_RC           ",Tcontrol_t        ,_param->_nb_inst_retire);
    119   ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RC_PHY    ," in_RETIRE_NUM_REG_RC_PHY    ",Tspecial_address_t,_param->_nb_inst_retire);
     118//ALLOC1_SC_SIGNAL( in_RETIRE_READ_RA           ," in_RETIRE_READ_RA           ",Tcontrol_t        ,_param->_nb_inst_retire);
     119//ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RA_PHY    ," in_RETIRE_NUM_REG_RA_PHY    ",Tgeneral_address_t,_param->_nb_inst_retire);
     120//ALLOC1_SC_SIGNAL( in_RETIRE_READ_RB           ," in_RETIRE_READ_RB           ",Tcontrol_t        ,_param->_nb_inst_retire);
     121//ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RB_PHY    ," in_RETIRE_NUM_REG_RB_PHY    ",Tgeneral_address_t,_param->_nb_inst_retire);
     122//ALLOC1_SC_SIGNAL( in_RETIRE_READ_RC           ," in_RETIRE_READ_RC           ",Tcontrol_t        ,_param->_nb_inst_retire);
     123//ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RC_PHY    ," in_RETIRE_NUM_REG_RC_PHY    ",Tspecial_address_t,_param->_nb_inst_retire);
    120124  ALLOC1_SC_SIGNAL( in_RETIRE_WRITE_RD          ," in_RETIRE_WRITE_RD          ",Tcontrol_t        ,_param->_nb_inst_retire);
    121125  ALLOC1_SC_SIGNAL( in_RETIRE_RESTORE_RD_PHY_OLD," in_RETIRE_RESTORE_RD_PHY_OLD",Tcontrol_t        ,_param->_nb_inst_retire);
     
    145149  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_VAL               ,_param->_nb_inst_insert);
    146150  INSTANCE1_SC_SIGNAL(_Stat_List_unit,out_INSERT_ACK               ,_param->_nb_inst_insert);
    147   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_READ_RA           ,_param->_nb_inst_insert);
    148   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_NUM_REG_RA_PHY    ,_param->_nb_inst_insert);
    149   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_READ_RB           ,_param->_nb_inst_insert);
    150   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_NUM_REG_RB_PHY    ,_param->_nb_inst_insert);
    151   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_READ_RC           ,_param->_nb_inst_insert);
    152   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_NUM_REG_RC_PHY    ,_param->_nb_inst_insert);
     151//INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_READ_RA           ,_param->_nb_inst_insert);
     152//INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_NUM_REG_RA_PHY    ,_param->_nb_inst_insert);
     153//INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_READ_RB           ,_param->_nb_inst_insert);
     154//INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_NUM_REG_RB_PHY    ,_param->_nb_inst_insert);
     155//INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_READ_RC           ,_param->_nb_inst_insert);
     156//INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_NUM_REG_RC_PHY    ,_param->_nb_inst_insert);
    153157  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_WRITE_RD          ,_param->_nb_inst_insert);
     158  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert);
    154159  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert);
    155160  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_WRITE_RE          ,_param->_nb_inst_insert);
     161  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert);
    156162  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_INSERT_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert);
    157163
     
    159165  INSTANCE1_SC_SIGNAL(_Stat_List_unit,out_RETIRE_ACK               ,_param->_nb_inst_retire);
    160166  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_RESTORE           ,_param->_nb_inst_retire);
    161   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_READ_RA           ,_param->_nb_inst_retire);
    162   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RA_PHY    ,_param->_nb_inst_retire);
    163   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_READ_RB           ,_param->_nb_inst_retire);
    164   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RB_PHY    ,_param->_nb_inst_retire);
    165   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_READ_RC           ,_param->_nb_inst_retire);
    166   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RC_PHY    ,_param->_nb_inst_retire);
     167//INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_READ_RA           ,_param->_nb_inst_retire);
     168//INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RA_PHY    ,_param->_nb_inst_retire);
     169//INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_READ_RB           ,_param->_nb_inst_retire);
     170//INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RB_PHY    ,_param->_nb_inst_retire);
     171//INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_READ_RC           ,_param->_nb_inst_retire);
     172//INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RC_PHY    ,_param->_nb_inst_retire);
    167173  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_WRITE_RD          ,_param->_nb_inst_retire);
    168174  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire);
     
    348354
    349355              in_INSERT_VAL                [i]->write((rand()%100) < percent_transaction_insert);
    350               in_INSERT_READ_RA            [i]->write(read_ra );
    351               in_INSERT_NUM_REG_RA_PHY     [i]->write(ra);
    352               in_INSERT_READ_RB            [i]->write(read_rb );
    353               in_INSERT_NUM_REG_RB_PHY     [i]->write(rb);
    354               in_INSERT_READ_RC            [i]->write(read_rc );
    355               in_INSERT_NUM_REG_RC_PHY     [i]->write(rc);
     356//            in_INSERT_READ_RA            [i]->write(read_ra );
     357//            in_INSERT_NUM_REG_RA_PHY     [i]->write(ra);
     358//            in_INSERT_READ_RB            [i]->write(read_rb );
     359//            in_INSERT_NUM_REG_RB_PHY     [i]->write(rb);
     360//            in_INSERT_READ_RC            [i]->write(read_rc );
     361//            in_INSERT_NUM_REG_RC_PHY     [i]->write(rc);
    356362              in_INSERT_WRITE_RD           [i]->write(write_rd);
    357363              in_INSERT_NUM_REG_RD_PHY_NEW [i]->write(rd);
     
    394400
    395401              in_RETIRE_VAL                [i]->write((rand()%100) < percent_transaction_retire);
    396               in_RETIRE_READ_RA            [i]->write(read_ra );
    397               in_RETIRE_RESTORE            [i]->write(0);
    398               in_RETIRE_NUM_REG_RA_PHY     [i]->write(ra);
    399               in_RETIRE_READ_RB            [i]->write(read_rb );
    400               in_RETIRE_NUM_REG_RB_PHY     [i]->write(rb);
    401               in_RETIRE_READ_RC            [i]->write(read_rc );
    402               in_RETIRE_NUM_REG_RC_PHY     [i]->write(rc);
     402//            in_RETIRE_READ_RA            [i]->write(read_ra );
     403//            in_RETIRE_RESTORE            [i]->write(0);
     404//            in_RETIRE_NUM_REG_RA_PHY     [i]->write(ra);
     405//            in_RETIRE_READ_RB            [i]->write(read_rb );
     406//            in_RETIRE_NUM_REG_RB_PHY     [i]->write(rb);
     407//            in_RETIRE_READ_RC            [i]->write(read_rc );
     408//            in_RETIRE_NUM_REG_RC_PHY     [i]->write(rc);
    403409              in_RETIRE_WRITE_RD           [i]->write(write_rd);
    404410              in_RETIRE_RESTORE_RD_PHY_OLD [i]->write(0);
     
    454460              if (in_INSERT_VAL [i]->read() and out_INSERT_ACK [i]->read())
    455461                {
    456                   Tcontrol_t         read_ra  = in_INSERT_READ_RA            [i]->read();
    457                   Tgeneral_address_t ra       = in_INSERT_NUM_REG_RA_PHY     [i]->read();
    458                   Tcontrol_t         read_rb  = in_INSERT_READ_RB            [i]->read();
    459                   Tgeneral_address_t rb       = in_INSERT_NUM_REG_RB_PHY     [i]->read();
    460                   Tcontrol_t         read_rc  = in_INSERT_READ_RC            [i]->read();
    461                   Tspecial_address_t rc       = in_INSERT_NUM_REG_RC_PHY     [i]->read();
     462//                Tcontrol_t         read_ra  = in_INSERT_READ_RA            [i]->read();
     463//                Tgeneral_address_t ra       = in_INSERT_NUM_REG_RA_PHY     [i]->read();
     464//                Tcontrol_t         read_rb  = in_INSERT_READ_RB            [i]->read();
     465//                Tgeneral_address_t rb       = in_INSERT_NUM_REG_RB_PHY     [i]->read();
     466//                Tcontrol_t         read_rc  = in_INSERT_READ_RC            [i]->read();
     467//                Tspecial_address_t rc       = in_INSERT_NUM_REG_RC_PHY     [i]->read();
    462468                  Tgeneral_address_t rd_new   = in_INSERT_NUM_REG_RD_PHY_NEW [i]->read();
    463469                  Tspecial_address_t re_new   = in_INSERT_NUM_REG_RE_PHY_NEW [i]->read();               
    464470                 
    465471                  LABEL("INSERT [%d] - Accepted",i);
    466                   LABEL(" * read_ra          : %d",read_ra );
    467                   LABEL(" * reg_ra           : %d",ra      );
    468                   LABEL("   * status[%d]._is_free  : %d",ra,spr_status[ra]._is_free );
    469                   LABEL("   * status[%d]._is_link  : %d",ra,spr_status[ra]._is_link );
    470                   LABEL("   * status[%d]._is_valid : %d",ra,spr_status[ra]._is_valid);
    471                   LABEL("   * status[%d]._counter  : %d",ra,spr_status[ra]._counter );
    472                   LABEL(" * read_rb          : %d",read_rb );
    473                   LABEL(" * reg_rb           : %d",rb      );
    474                   LABEL("   * status[%d]._is_free  : %d",rb,spr_status[rb]._is_free );
    475                   LABEL("   * status[%d]._is_link  : %d",rb,spr_status[rb]._is_link );
    476                   LABEL("   * status[%d]._is_valid : %d",rb,spr_status[rb]._is_valid);
    477                   LABEL("   * status[%d]._counter  : %d",rb,spr_status[rb]._counter );
    478                   LABEL(" * read_rc          : %d",read_rc );
    479                   LABEL(" * reg_rc           : %d",rc      );
    480                   LABEL("   * status[%d]._is_free  : %d",rc,spr_status[rc]._is_free );
    481                   LABEL("   * status[%d]._is_link  : %d",rc,spr_status[rc]._is_link );
    482                   LABEL("   * status[%d]._is_valid : %d",rc,spr_status[rc]._is_valid);
    483                   LABEL("   * status[%d]._counter  : %d",rc,spr_status[rc]._counter );
     472//                LABEL(" * read_ra          : %d",read_ra );
     473//                LABEL(" * reg_ra           : %d",ra      );
     474//                LABEL("   * status[%d]._is_free  : %d",ra,spr_status[ra]._is_free );
     475//                LABEL("   * status[%d]._is_link  : %d",ra,spr_status[ra]._is_link );
     476//                LABEL("   * status[%d]._is_valid : %d",ra,spr_status[ra]._is_valid);
     477//                LABEL("   * status[%d]._counter  : %d",ra,spr_status[ra]._counter );
     478//                LABEL(" * read_rb          : %d",read_rb );
     479//                LABEL(" * reg_rb           : %d",rb      );
     480//                LABEL("   * status[%d]._is_free  : %d",rb,spr_status[rb]._is_free );
     481//                LABEL("   * status[%d]._is_link  : %d",rb,spr_status[rb]._is_link );
     482//                LABEL("   * status[%d]._is_valid : %d",rb,spr_status[rb]._is_valid);
     483//                LABEL("   * status[%d]._counter  : %d",rb,spr_status[rb]._counter );
     484//                LABEL(" * read_rc          : %d",read_rc );
     485//                LABEL(" * reg_rc           : %d",rc      );
     486//                LABEL("   * status[%d]._is_free  : %d",rc,spr_status[rc]._is_free );
     487//                LABEL("   * status[%d]._is_link  : %d",rc,spr_status[rc]._is_link );
     488//                LABEL("   * status[%d]._is_valid : %d",rc,spr_status[rc]._is_valid);
     489//                LABEL("   * status[%d]._counter  : %d",rc,spr_status[rc]._counter );
    484490                  LABEL(" * read_rd          : %d",write_rd);
    485491                  LABEL(" * reg_rd_new       : %d",rd_new  );
     
    495501                  LABEL("   * status[%d]._counter  : %d",re_new,spr_status[re_new]._counter );
    496502                 
    497                   if (read_ra)
    498                     {
    499                       gpr_status[ra]._counter ++;
    500                     }
    501                   if (read_rb)
    502                     {
    503                       gpr_status[rb]._counter ++;
    504                     }
    505                   if (read_rc)
    506                     {
    507                       spr_status[rc]._counter ++;
    508                     }
     503//                if (read_ra)
     504//                  {
     505//                    gpr_status[ra]._counter ++;
     506//                  }
     507//                if (read_rb)
     508//                  {
     509//                    gpr_status[rb]._counter ++;
     510//                  }
     511//                if (read_rc)
     512//                  {
     513//                    spr_status[rc]._counter ++;
     514//                  }
    509515                  if (write_rd)
    510516                    {
     
    544550              {
    545551                Tcontrol_t         restore        = in_RETIRE_RESTORE            [i]->read();
    546                 Tcontrol_t         read_ra        = in_RETIRE_READ_RA            [i]->read();
    547                 Tgeneral_address_t ra             = in_RETIRE_NUM_REG_RA_PHY     [i]->read();
    548                 Tcontrol_t         read_rb        = in_RETIRE_READ_RB            [i]->read();
    549                 Tgeneral_address_t rb             = in_RETIRE_NUM_REG_RB_PHY     [i]->read();
    550                 Tcontrol_t         read_rc        = in_RETIRE_READ_RC            [i]->read();
    551                 Tspecial_address_t rc             = in_RETIRE_NUM_REG_RC_PHY     [i]->read();
     552//              Tcontrol_t         read_ra        = in_RETIRE_READ_RA            [i]->read();
     553//              Tgeneral_address_t ra             = in_RETIRE_NUM_REG_RA_PHY     [i]->read();
     554//              Tcontrol_t         read_rb        = in_RETIRE_READ_RB            [i]->read();
     555//              Tgeneral_address_t rb             = in_RETIRE_NUM_REG_RB_PHY     [i]->read();
     556//              Tcontrol_t         read_rc        = in_RETIRE_READ_RC            [i]->read();
     557//              Tspecial_address_t rc             = in_RETIRE_NUM_REG_RC_PHY     [i]->read();
    552558                Tcontrol_t         write_rd       = in_RETIRE_WRITE_RD           [i]->read();
    553559                Tcontrol_t         restore_rd_old = in_RETIRE_RESTORE_RD_PHY_OLD [i]->read();
     
    561567                LABEL("RETIRE [%d] - Accepted",i);
    562568                LABEL(" * restore          : %d",restore);
    563                 LABEL(" * read_ra          : %d",read_ra );
    564                 LABEL(" * reg_ra           : %d",ra      );
    565                 LABEL("   * status[%d]._is_free  : %d",ra,spr_status[ra]._is_free );
    566                 LABEL("   * status[%d]._is_link  : %d",ra,spr_status[ra]._is_link );
    567                 LABEL("   * status[%d]._is_valid : %d",ra,spr_status[ra]._is_valid);
    568                 LABEL("   * status[%d]._counter  : %d",ra,spr_status[ra]._counter );
    569                 LABEL(" * read_rb          : %d",read_rb );
    570                 LABEL(" * reg_rb           : %d",rb      );
    571                 LABEL("   * status[%d]._is_free  : %d",rb,spr_status[rb]._is_free );
    572                 LABEL("   * status[%d]._is_link  : %d",rb,spr_status[rb]._is_link );
    573                 LABEL("   * status[%d]._is_valid : %d",rb,spr_status[rb]._is_valid);
    574                 LABEL("   * status[%d]._counter  : %d",rb,spr_status[rb]._counter );
    575                 LABEL(" * read_rc          : %d",read_rc );
    576                 LABEL(" * reg_rc           : %d",rc      );
    577                 LABEL("   * status[%d]._is_free  : %d",rc,spr_status[rc]._is_free );
    578                 LABEL("   * status[%d]._is_link  : %d",rc,spr_status[rc]._is_link );
    579                 LABEL("   * status[%d]._is_valid : %d",rc,spr_status[rc]._is_valid);
    580                 LABEL("   * status[%d]._counter  : %d",rc,spr_status[rc]._counter );
     569//              LABEL(" * read_ra          : %d",read_ra );
     570//              LABEL(" * reg_ra           : %d",ra      );
     571//              LABEL("   * status[%d]._is_free  : %d",ra,spr_status[ra]._is_free );
     572//              LABEL("   * status[%d]._is_link  : %d",ra,spr_status[ra]._is_link );
     573//              LABEL("   * status[%d]._is_valid : %d",ra,spr_status[ra]._is_valid);
     574//              LABEL("   * status[%d]._counter  : %d",ra,spr_status[ra]._counter );
     575//              LABEL(" * read_rb          : %d",read_rb );
     576//              LABEL(" * reg_rb           : %d",rb      );
     577//              LABEL("   * status[%d]._is_free  : %d",rb,spr_status[rb]._is_free );
     578//              LABEL("   * status[%d]._is_link  : %d",rb,spr_status[rb]._is_link );
     579//              LABEL("   * status[%d]._is_valid : %d",rb,spr_status[rb]._is_valid);
     580//              LABEL("   * status[%d]._counter  : %d",rb,spr_status[rb]._counter );
     581//              LABEL(" * read_rc          : %d",read_rc );
     582//              LABEL(" * reg_rc           : %d",rc      );
     583//              LABEL("   * status[%d]._is_free  : %d",rc,spr_status[rc]._is_free );
     584//              LABEL("   * status[%d]._is_link  : %d",rc,spr_status[rc]._is_link );
     585//              LABEL("   * status[%d]._is_valid : %d",rc,spr_status[rc]._is_valid);
     586//              LABEL("   * status[%d]._counter  : %d",rc,spr_status[rc]._counter );
    581587                LABEL(" * read_rd          : %d",write_rd);
    582588                LABEL(" * restore_rd_old   : %d",restore_rd_old);
     
    604610                LABEL("   * status[%d]._counter  : %d",re_new,spr_status[re_new]._counter );
    605611
    606                 if (read_ra)
    607                   {
    608                     gpr_status[ra]._counter --;
    609                   }
    610                 if (read_rb)
    611                   {
    612                     gpr_status[rb]._counter --;
    613                   }
    614                 if (read_rc)
    615                   {
    616                     spr_status[rc]._counter --;
    617                   }
     612//              if (read_ra)
     613//                {
     614//                  gpr_status[ra]._counter --;
     615//                }
     616//              if (read_rb)
     617//                {
     618//                  gpr_status[rb]._counter --;
     619//                }
     620//              if (read_rc)
     621//                {
     622//                  spr_status[rc]._counter --;
     623//                }
    618624                if (write_rd)
    619625                  {
     
    721727  delete []  in_INSERT_VAL               ;
    722728  delete [] out_INSERT_ACK               ;
    723   delete []  in_INSERT_READ_RA           ;
    724   delete []  in_INSERT_NUM_REG_RA_PHY    ;
    725   delete []  in_INSERT_READ_RB           ;
    726   delete []  in_INSERT_NUM_REG_RB_PHY    ;
    727   delete []  in_INSERT_READ_RC           ;
    728   delete []  in_INSERT_NUM_REG_RC_PHY    ;
     729//delete []  in_INSERT_READ_RA           ;
     730//delete []  in_INSERT_NUM_REG_RA_PHY    ;
     731//delete []  in_INSERT_READ_RB           ;
     732//delete []  in_INSERT_NUM_REG_RB_PHY    ;
     733//delete []  in_INSERT_READ_RC           ;
     734//delete []  in_INSERT_NUM_REG_RC_PHY    ;
    729735  delete []  in_INSERT_WRITE_RD          ;
     736  delete []  in_INSERT_NUM_REG_RD_PHY_OLD;
    730737  delete []  in_INSERT_NUM_REG_RD_PHY_NEW;
    731738  delete []  in_INSERT_WRITE_RE          ;
     739  delete []  in_INSERT_NUM_REG_RE_PHY_OLD;
    732740  delete []  in_INSERT_NUM_REG_RE_PHY_NEW;
    733741  delete []  in_RETIRE_VAL               ;
    734742  delete [] out_RETIRE_ACK               ;
    735743  delete []  in_RETIRE_RESTORE           ;
    736   delete []  in_RETIRE_READ_RA           ;
    737   delete []  in_RETIRE_NUM_REG_RA_PHY    ;
    738   delete []  in_RETIRE_READ_RB           ;
    739   delete []  in_RETIRE_NUM_REG_RB_PHY    ;
    740   delete []  in_RETIRE_READ_RC           ;
    741   delete []  in_RETIRE_NUM_REG_RC_PHY    ;
     744//delete []  in_RETIRE_READ_RA           ;
     745//delete []  in_RETIRE_NUM_REG_RA_PHY    ;
     746//delete []  in_RETIRE_READ_RB           ;
     747//delete []  in_RETIRE_NUM_REG_RB_PHY    ;
     748//delete []  in_RETIRE_READ_RC           ;
     749//delete []  in_RETIRE_NUM_REG_RC_PHY    ;
    742750  delete []  in_RETIRE_WRITE_RD          ;
    743751  delete []  in_RETIRE_RESTORE_RD_PHY_OLD;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h

    r112 r117  
    7272  public    : SC_IN (Tspecial_address_t)   **  in_INSERT_NUM_REG_RC_PHY    ;//[nb_inst_insert]
    7373  public    : SC_IN (Tcontrol_t        )   **  in_INSERT_WRITE_RD          ;//[nb_inst_insert]
     74  public    : SC_IN (Tgeneral_address_t)   **  in_INSERT_NUM_REG_RD_PHY_OLD;//[nb_inst_insert]
    7475  public    : SC_IN (Tgeneral_address_t)   **  in_INSERT_NUM_REG_RD_PHY_NEW;//[nb_inst_insert]
    7576  public    : SC_IN (Tcontrol_t        )   **  in_INSERT_WRITE_RE          ;//[nb_inst_insert]
     77  public    : SC_IN (Tspecial_address_t)   **  in_INSERT_NUM_REG_RE_PHY_OLD;//[nb_inst_insert]
    7678  public    : SC_IN (Tspecial_address_t)   **  in_INSERT_NUM_REG_RE_PHY_NEW;//[nb_inst_insert]
    77 
     79 
    7880    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7981  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_VAL               ;//[nb_inst_retire]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Types.h

    r112 r117  
    2323  class stat_list_entry_t
    2424  {
    25   public : bool     _is_free ; // set = is present in free list
    26   public : bool     _is_link ; // set = is present in rat
    27 //public : bool     _is_valid; // set = an instruction have write in this register
    28 //public : uint32_t _counter ; // number of register that must read this register
     25  public : bool     _is_free      ; // set = is present in free list
     26  public : bool     _is_link      ; // set = is present in rat
     27  public : bool     _is_use       ; // set = is present in ROB (used by an instruction as destination)
     28                                    // not necesseray in single thread mode : because an thread can't rename when they have an event
     29                                    // in multi thread, the renaming continue and an old register can be reused
    2930
    3031  public :  stat_list_entry_t (void) {};
     
    3536      _is_free  = 0;
    3637      _is_link  = is_link;
    37 //    _is_valid = 1;
    38 //    _counter  = 0;
     38      _is_use   = is_link;
    3939    }
    4040
    41 //   public : void insert_read (void)
    42 //     {
    43 //    _counter ++;
    44 //     }
     41  public : void insert_write_old (void)
     42    {
     43      // old is not in the rat, but is already used (if miss prediction or event)
     44      _is_link  = 0;
     45    }
    4546
    46   public : void insert_write (void)
     47  public : void insert_write_new (void)
    4748    {
    4849      _is_free  = 0;
    4950      _is_link  = 1;
    50 //    _is_valid = 0;
     51      _is_use   = 1;
    5152    }
    52 
    53 //   public : void retire_read (void)
    54 //     {
    55 //    _counter --;
    56 //     }
    5753
    5854  public : void retire_write_old (bool restore, bool restore_old)
     
    6258      // 1       0           0       - event and previous update
    6359      // 1       1           1       - event and first update
    64      
    65       _is_link = restore and restore_old;
     60   
     61      if (restore and restore_old)
     62        {
     63          _is_link = 1;
     64//        _is_use  = 1; // already set
     65        }
     66      else
     67        {
     68//        _is_link = 0; // already unset
     69          _is_use  = 0;
     70        }
     71       
    6672    }
    6773
     
    7379
    7480      if (restore)
    75         _is_link = 0;
     81        {
     82          // test if is the actual mapping (in RAT)
     83          if (_is_link)
     84            _is_use = 0;
    7685
    77       // in all case
    78 //    _is_valid = 1;
     86          _is_link = 0;
     87        }
    7988    }
    8089
     
    8493    }
    8594
    86 //   public : bool can_insert_read (uint32_t max_reader)
    87 //     {
    88 //    return ((_counter+1) < max_reader);
    89 //     }
    90 
    9195  public : bool can_free (void)
    9296    {
    9397      return ((_is_free  == 0) and
    94               (_is_link  == 0) // and
    95 //            (_is_valid == 1) and // if is_link <- 0, then retire_write_old or reset
    96 //            (_counter  == 0)
    97               );
     98              (_is_link  == 0) and
     99              (_is_use   == 0));
    98100    }
    99101
     
    102104    {
    103105      output << x._is_free  << " "
    104              << x._is_link  // << " "
    105 //           << x._is_valid  << " "
    106 //              << x._counter
    107         ;
     106             << x._is_link  << " "
     107             << x._is_use ;
    108108     
    109109      return output;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_allocation.cpp

    r112 r117  
    6969       ALLOC1_SIGNAL_IN ( in_INSERT_NUM_REG_RC_PHY    ,"num_reg_rc_phy"    ,Tspecial_address_t,_param->_size_special_register);
    7070       ALLOC1_SIGNAL_IN ( in_INSERT_WRITE_RD          ,"write_rd"          ,Tcontrol_t        ,1                             );
     71       ALLOC1_SIGNAL_IN ( in_INSERT_NUM_REG_RD_PHY_OLD,"num_reg_rd_phy_old",Tgeneral_address_t,_param->_size_general_register);
    7172       ALLOC1_SIGNAL_IN ( in_INSERT_NUM_REG_RD_PHY_NEW,"num_reg_rd_phy_new",Tgeneral_address_t,_param->_size_general_register);
    7273       ALLOC1_SIGNAL_IN ( in_INSERT_WRITE_RE          ,"write_re"          ,Tcontrol_t        ,1                             );
     74       ALLOC1_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register);
    7375       ALLOC1_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register);
    74 
     76 
    7577       ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    7678     }
    77 
     79 
    7880     // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7981     {
    8082       ALLOC1_INTERFACE_BEGIN("retire",IN,NORTH,_("Retire a renaming result"),_param->_nb_inst_retire);
    81 
     83 
    8284       ALLOC1_VALACK_IN ( in_RETIRE_VAL               ,VAL);
    8385       ALLOC1_VALACK_OUT(out_RETIRE_ACK               ,ACK);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_deallocation.cpp

    r112 r117  
    3939        DELETE1_SIGNAL( in_INSERT_NUM_REG_RC_PHY    ,_param->_nb_inst_insert,_param->_size_special_register);
    4040        DELETE1_SIGNAL( in_INSERT_WRITE_RD          ,_param->_nb_inst_insert,1                             );
     41        DELETE1_SIGNAL( in_INSERT_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register);
    4142        DELETE1_SIGNAL( in_INSERT_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert,_param->_size_general_register);
    4243        DELETE1_SIGNAL( in_INSERT_WRITE_RE          ,_param->_nb_inst_insert,1                             );
     44        DELETE1_SIGNAL( in_INSERT_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register);
    4345        DELETE1_SIGNAL( in_INSERT_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register);
    44 
     46 
    4547        DELETE1_SIGNAL( in_RETIRE_VAL               ,_param->_nb_inst_retire,1);
    4648        DELETE1_SIGNAL(out_RETIRE_ACK               ,_param->_nb_inst_retire,1);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_transition.cpp

    r112 r117  
    8686              if (PORT_READ(in_INSERT_WRITE_RD [i]))
    8787                {
    88                   Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RD_PHY_NEW [i]);
    89 
    90                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RD - num_reg new : %d",num_reg);
    91 
    92                   uint32_t bank = num_reg >> _param->_shift_gpr;
    93                   uint32_t reg  = num_reg  & _param->_mask_gpr ;
    94                   gpr_stat_list [bank][reg].insert_write();
     88                  {
     89                    Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RD_PHY_OLD [i]);
     90                   
     91                    log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RD - num_reg old : %d",num_reg);
     92                   
     93                    uint32_t bank = num_reg >> _param->_shift_gpr;
     94                    uint32_t reg  = num_reg  & _param->_mask_gpr ;
     95                    gpr_stat_list [bank][reg].insert_write_old();
     96                  }
     97                  {
     98                    Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RD_PHY_NEW [i]);
     99                   
     100                    log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RD - num_reg new : %d",num_reg);
     101                   
     102                    uint32_t bank = num_reg >> _param->_shift_gpr;
     103                    uint32_t reg  = num_reg  & _param->_mask_gpr ;
     104                    gpr_stat_list [bank][reg].insert_write_new();
     105                  }
    95106                }
    96107
    97108              if (PORT_READ(in_INSERT_WRITE_RE [i]))
    98109                {
    99                   Tspecial_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RE_PHY_NEW [i]);
    100 
    101                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RE - num_reg new : %d",num_reg);
    102 
    103                   uint32_t bank = num_reg >> _param->_shift_spr;
    104                   uint32_t reg  = num_reg  & _param->_mask_spr ;
    105                   spr_stat_list [bank][reg].insert_write();
    106                 }
     110                  {
     111                    Tspecial_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RE_PHY_OLD [i]);
     112                   
     113                    log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RE - num_reg old : %d",num_reg);
     114                   
     115                    uint32_t bank = num_reg >> _param->_shift_spr;
     116                    uint32_t reg  = num_reg  & _param->_mask_spr ;
     117                    spr_stat_list [bank][reg].insert_write_old();
     118                  }
     119                  {
     120                    Tspecial_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RE_PHY_NEW [i]);
     121                   
     122                    log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RE - num_reg new : %d",num_reg);
     123                   
     124                    uint32_t bank = num_reg >> _param->_shift_spr;
     125                    uint32_t reg  = num_reg  & _param->_mask_spr ;
     126                    spr_stat_list [bank][reg].insert_write_new();
     127                  }
     128                }
    107129            }
    108130
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_allocation.cpp

    r112 r117  
    638638          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RD"          ,
    639639                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_WRITE_RD"          );
     640          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
     641                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RD_PHY_OLD");
    640642          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
    641643                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RD_PHY_NEW");
    642644          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RE"          ,
    643645                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_WRITE_RE"          );
     646          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
     647                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RE_PHY_OLD");
    644648          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
    645649                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RE_PHY_NEW");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/SelfTest/configuration.cfg

    r112 r117  
    771       1       +1      # nb_inst_insert                    [0]               [nb_rename_unit]
    881       1       +1      # nb_inst_retire                    [0]               [nb_rename_unit]
    9 1       1       +1      # nb_inst_issue                                       
    1091       1       +1      # nb_inst_execute                   [0]               [nb_execute_loop]
    11101       1       +1      # nb_inst_reexecute                                   
     
    28271       1       +1      # issue_priority                           
    29281       1       +1      # issue_load_balancing                     
    30 1       1       +1      # table_routing                     [0][0]            [nb_rename_unit][nb_inst_issue]
    31 1       1       +1      # table_issue_type                  [0][TYPE_ALU    ] [nb_inst_issue][nb_type]
    32 1       1       +1      # table_issue_type                  [0][TYPE_SHIFT  ] [nb_inst_issue][nb_type]
    33 1       1       +1      # table_issue_type                  [0][TYPE_MOVE   ] [nb_inst_issue][nb_type]
    34 1       1       +1      # table_issue_type                  [0][TYPE_TEST   ] [nb_inst_issue][nb_type]
    35 1       1       +1      # table_issue_type                  [0][TYPE_MUL    ] [nb_inst_issue][nb_type]
    36 1       1       +1      # table_issue_type                  [0][TYPE_DIV    ] [nb_inst_issue][nb_type]
    37 1       1       +1      # table_issue_type                  [0][TYPE_EXTEND ] [nb_inst_issue][nb_type]
    38 1       1       +1      # table_issue_type                  [0][TYPE_FIND   ] [nb_inst_issue][nb_type]
    39 1       1       +1      # table_issue_type                  [0][TYPE_SPECIAL] [nb_inst_issue][nb_type]
    40 1       1       +1      # table_issue_type                  [0][TYPE_CUSTOM ] [nb_inst_issue][nb_type]
    41 1       1       +1      # table_issue_type                  [0][TYPE_BRANCH ] [nb_inst_issue][nb_type]
    42 1       1       +1      # table_issue_type                  [0][TYPE_MEMORY ] [nb_inst_issue][nb_type]
    43291       1       +1      # size_reexecute_queue                     
    44301       1       +1      # reexecute_priority                       
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/SelfTest/src/main.cpp

    r112 r117  
    99#include "Behavioural/include/Allocation.h"
    1010
    11 #define NB_PARAMS 24
     11#define NB_PARAMS 23
    1212
    1313void usage (int argc, char * argv[])
     
    2222  err (_(" * nb_inst_insert                    [nb_rename_unit]                      (uint32_t             )\n"));
    2323  err (_(" * nb_inst_retire                    [nb_rename_unit]                      (uint32_t             )\n"));
    24   err (_(" * nb_inst_issue                                                           (uint32_t             )\n"));
     24//err (_(" * nb_inst_issue                                                           (uint32_t             )\n"));
    2525  err (_(" * nb_inst_execute                   [nb_execute_loop]                     (uint32_t             )\n"));
    2626  err (_(" * nb_inst_reexecute                                                       (uint32_t             )\n"));
     
    4343  err (_(" * issue_priority                                                          (Tpriority_t          )\n"));
    4444  err (_(" * issue_load_balancing                                                    (Tload_balancing_t    )\n"));
    45   err (_(" * table_routing                     [nb_rename_unit][nb_inst_issue]       (bool                 )\n"));
    46   err (_(" * table_issue_type                  [nb_inst_issue][nb_type]              (bool                 )\n"));
    47   err (_("   * TYPE_ALU    \n"));
    48   err (_("   * TYPE_SHIFT  \n"));
    49   err (_("   * TYPE_MOVE   \n"));
    50   err (_("   * TYPE_TEST   \n"));
    51   err (_("   * TYPE_MUL    \n"));
    52   err (_("   * TYPE_DIV    \n"));
    53   err (_("   * TYPE_EXTEND \n"));
    54   err (_("   * TYPE_FIND   \n"));
    55   err (_("   * TYPE_SPECIAL\n"));
    56   err (_("   * TYPE_CUSTOM \n"));
    57   err (_("   * TYPE_BRANCH \n"));
    58   err (_("   * TYPE_MEMORY \n"));
     45//   err (_(" * table_routing                     [nb_rename_unit][nb_inst_issue]       (bool                 )\n"));
     46//   err (_(" * table_issue_type                  [nb_inst_issue][nb_type]              (bool                 )\n"));
     47//   err (_("   * TYPE_ALU    \n"));
     48//   err (_("   * TYPE_SHIFT  \n"));
     49//   err (_("   * TYPE_MOVE   \n"));
     50//   err (_("   * TYPE_TEST   \n"));
     51//   err (_("   * TYPE_MUL    \n"));
     52//   err (_("   * TYPE_DIV    \n"));
     53//   err (_("   * TYPE_EXTEND \n"));
     54//   err (_("   * TYPE_FIND   \n"));
     55//   err (_("   * TYPE_SPECIAL\n"));
     56//   err (_("   * TYPE_CUSTOM \n"));
     57//   err (_("   * TYPE_BRANCH \n"));
     58//   err (_("   * TYPE_MEMORY \n"));
    5959  err (_(" * size_reexecute_queue                                                    (uint32_t         )\n"));
    6060  err (_(" * reexecute_priority                                                      (Tpriority_t      )\n"));
     
    120120    _nb_inst_retire [i] = fromString<uint32_t>(argv[x++]);
    121121
    122   uint32_t              _nb_inst_issue                     = fromString<uint32_t         >(argv[x++]);
     122//uint32_t              _nb_inst_issue                     = fromString<uint32_t         >(argv[x++]);
    123123  uint32_t            * _nb_inst_execute                   = new uint32_t [_nb_execute_loop];
    124124  for (uint32_t i=0; i<_nb_execute_loop; i++)
     
    152152  Tpriority_t           _issue_priority                    = fromString<Tpriority_t      >(argv[x++]);
    153153  Tload_balancing_t     _issue_load_balancing              = fromString<Tload_balancing_t>(argv[x++]);
    154   bool               ** _table_routing                     = new bool * [_nb_rename_unit];
    155   for (uint32_t i=0; i<_nb_rename_unit; i++)
    156     {
    157       _table_routing [i] = new bool [_nb_inst_issue];
    158       for (uint32_t j=0; j<_nb_inst_issue; j++)
    159         _table_routing [i][j] = fromString<bool>(argv[x++]);
    160     }
    161 
    162   if (argc <= static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+10*_nb_rename_unit+_nb_execute_loop+_nb_rename_unit*_nb_inst_issue+12*_nb_inst_issue))
     154//   bool               ** _table_routing                     = new bool * [_nb_rename_unit];
     155//   for (uint32_t i=0; i<_nb_rename_unit; i++)
     156//     {
     157//       _table_routing [i] = new bool [_nb_inst_issue];
     158//       for (uint32_t j=0; j<_nb_inst_issue; j++)
     159//         _table_routing [i][j] = fromString<bool>(argv[x++]);
     160//     }
     161
     162  if (argc <= static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+10*_nb_rename_unit+_nb_execute_loop//+_nb_rename_unit*_nb_inst_issue+12*_nb_inst_issue
     163                               ))
    163164    usage (argc, argv);
    164165 
    165   bool               ** _table_issue_type                  = new bool * [_nb_inst_issue];
    166   for (uint32_t i=0; i<_nb_inst_issue; i++)   
    167     {
    168       _table_issue_type [i] = new bool [MAX_TYPE];
    169       for (uint32_t j=0; j<MAX_TYPE; j++)
    170         _table_issue_type [i][j] = false;
    171 
    172       _table_issue_type [i][TYPE_ALU    ] = fromString<bool>(argv[x++]);
    173       _table_issue_type [i][TYPE_SHIFT  ] = fromString<bool>(argv[x++]);
    174       _table_issue_type [i][TYPE_MOVE   ] = fromString<bool>(argv[x++]);
    175       _table_issue_type [i][TYPE_TEST   ] = fromString<bool>(argv[x++]);
    176       _table_issue_type [i][TYPE_MUL    ] = fromString<bool>(argv[x++]);
    177       _table_issue_type [i][TYPE_DIV    ] = fromString<bool>(argv[x++]);
    178       _table_issue_type [i][TYPE_EXTEND ] = fromString<bool>(argv[x++]);
    179       _table_issue_type [i][TYPE_FIND   ] = fromString<bool>(argv[x++]);
    180       _table_issue_type [i][TYPE_SPECIAL] = fromString<bool>(argv[x++]);
    181       _table_issue_type [i][TYPE_CUSTOM ] = fromString<bool>(argv[x++]);
    182       _table_issue_type [i][TYPE_BRANCH ] = fromString<bool>(argv[x++]);
    183       _table_issue_type [i][TYPE_MEMORY ] = fromString<bool>(argv[x++]);
    184     }
     166//   bool               ** _table_issue_type                  = new bool * [_nb_inst_issue];
     167//   for (uint32_t i=0; i<_nb_inst_issue; i++)   
     168//     {
     169//       _table_issue_type [i] = new bool [MAX_TYPE];
     170//       for (uint32_t j=0; j<MAX_TYPE; j++)
     171//         _table_issue_type [i][j] = false;
     172
     173//       _table_issue_type [i][TYPE_ALU    ] = fromString<bool>(argv[x++]);
     174//       _table_issue_type [i][TYPE_SHIFT  ] = fromString<bool>(argv[x++]);
     175//       _table_issue_type [i][TYPE_MOVE   ] = fromString<bool>(argv[x++]);
     176//       _table_issue_type [i][TYPE_TEST   ] = fromString<bool>(argv[x++]);
     177//       _table_issue_type [i][TYPE_MUL    ] = fromString<bool>(argv[x++]);
     178//       _table_issue_type [i][TYPE_DIV    ] = fromString<bool>(argv[x++]);
     179//       _table_issue_type [i][TYPE_EXTEND ] = fromString<bool>(argv[x++]);
     180//       _table_issue_type [i][TYPE_FIND   ] = fromString<bool>(argv[x++]);
     181//       _table_issue_type [i][TYPE_SPECIAL] = fromString<bool>(argv[x++]);
     182//       _table_issue_type [i][TYPE_CUSTOM ] = fromString<bool>(argv[x++]);
     183//       _table_issue_type [i][TYPE_BRANCH ] = fromString<bool>(argv[x++]);
     184//       _table_issue_type [i][TYPE_MEMORY ] = fromString<bool>(argv[x++]);
     185//     }
    185186 
    186187  uint32_t              _size_reexecute_queue              = fromString<uint32_t         >(argv[x++]);
     
    220221    }
    221222
    222   if (argc != static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+10*_nb_rename_unit+_nb_execute_loop+_nb_rename_unit*_nb_inst_issue+12*_nb_inst_issue+3*_sum_nb_load_store_queue))
     223  if (argc != static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+10*_nb_rename_unit+_nb_execute_loop+// _nb_rename_unit*_nb_inst_issue+12*_nb_inst_issue
     224                               3*_sum_nb_load_store_queue))
    223225    usage (argc, argv);
    224226
     
    294296         _nb_inst_insert                   ,
    295297         _nb_inst_retire                   ,
    296          _nb_inst_issue                    ,
     298//       _nb_inst_issue                    ,
    297299         _nb_inst_execute                  ,
    298300         _nb_inst_reexecute                ,
     
    315317         _issue_priority                   ,
    316318         _issue_load_balancing             ,
    317          _table_routing                    ,
    318          _table_issue_type                 ,
     319//          _table_routing                    ,
     320//          _table_issue_type                 ,
    319321         _size_reexecute_queue             ,
    320322         _reexecute_priority               ,
     
    400402  delete [] _rename_select_priority            ;
    401403
    402   for (uint32_t i=0; i<_nb_inst_issue; i++)   
    403     delete [] _table_issue_type [i];
    404   delete [] _table_issue_type; 
    405 
    406   for (uint32_t i=0; i<_nb_rename_unit; i++)
    407     delete [] _table_routing [i];
    408   delete [] _table_routing;
     404//   for (uint32_t i=0; i<_nb_inst_issue; i++)   
     405//     delete [] _table_issue_type [i];
     406//   delete [] _table_issue_type; 
     407
     408//   for (uint32_t i=0; i<_nb_rename_unit; i++)
     409//     delete [] _table_routing [i];
     410//   delete [] _table_routing;
    409411
    410412  delete [] _link_rename_unit_with_front_end;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/SelfTest/src/test.cpp

    r112 r117  
    5252  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
    5353  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
     54
     55  sc_signal<Tcontrol_t        > ***  in_RENAME_VAL                       ;
     56  sc_signal<Tcontrol_t        > *** out_RENAME_ACK                       ;
     57  sc_signal<Tcontext_t        > ***  in_RENAME_FRONT_END_ID              ;
     58  sc_signal<Tcontext_t        > ***  in_RENAME_CONTEXT_ID                ;
     59  sc_signal<Tdepth_t          > ***  in_RENAME_DEPTH                     ;
     60  sc_signal<Ttype_t           > ***  in_RENAME_TYPE                      ;
     61  sc_signal<Toperation_t      > ***  in_RENAME_OPERATION                 ;
     62  sc_signal<Tcontrol_t        > ***  in_RENAME_NO_EXECUTE                ;
     63  sc_signal<Tcontrol_t        > ***  in_RENAME_IS_DELAY_SLOT             ;
     64  sc_signal<Taddress_t        > ***  in_RENAME_ADDRESS                   ;
     65  sc_signal<Taddress_t        > ***  in_RENAME_ADDRESS_NEXT              ;
     66  sc_signal<Tcontrol_t        > ***  in_RENAME_HAS_IMMEDIAT              ;
     67  sc_signal<Tgeneral_data_t   > ***  in_RENAME_IMMEDIAT                  ;
     68  sc_signal<Tcontrol_t        > ***  in_RENAME_READ_RA                   ;
     69  sc_signal<Tgeneral_address_t> ***  in_RENAME_NUM_REG_RA                ;
     70  sc_signal<Tcontrol_t        > ***  in_RENAME_READ_RB                   ;
     71  sc_signal<Tgeneral_address_t> ***  in_RENAME_NUM_REG_RB                ;
     72  sc_signal<Tcontrol_t        > ***  in_RENAME_READ_RC                   ;
     73  sc_signal<Tspecial_address_t> ***  in_RENAME_NUM_REG_RC                ;
     74  sc_signal<Tcontrol_t        > ***  in_RENAME_WRITE_RD                  ;
     75  sc_signal<Tgeneral_address_t> ***  in_RENAME_NUM_REG_RD                ;
     76  sc_signal<Tcontrol_t        > ***  in_RENAME_WRITE_RE                  ;
     77  sc_signal<Tspecial_address_t> ***  in_RENAME_NUM_REG_RE                ;
     78  sc_signal<Texception_t      > ***  in_RENAME_EXCEPTION_USE             ;
     79  sc_signal<Texception_t      > ***  in_RENAME_EXCEPTION                 ;
     80
     81  sc_signal<Tcontrol_t        >  ** out_ISSUE_VAL                        ;
     82  sc_signal<Tcontrol_t        >  **  in_ISSUE_ACK                        ;
     83  sc_signal<Tcontext_t        >  ** out_ISSUE_FRONT_END_ID               ;
     84  sc_signal<Tcontext_t        >  ** out_ISSUE_CONTEXT_ID                 ;
     85  sc_signal<Tpacket_t         >  ** out_ISSUE_PACKET_ID                  ;
     86  sc_signal<Ttype_t           >  ** out_ISSUE_TYPE                       ;
     87  sc_signal<Toperation_t      >  ** out_ISSUE_OPERATION                  ;
     88  sc_signal<Tlsq_ptr_t        >  ** out_ISSUE_STORE_QUEUE_PTR_WRITE      ;
     89  sc_signal<Tlsq_ptr_t        >  ** out_ISSUE_LOAD_QUEUE_PTR_WRITE       ;
     90  sc_signal<Tcontrol_t        >  ** out_ISSUE_HAS_IMMEDIAT               ;
     91  sc_signal<Tgeneral_data_t   >  ** out_ISSUE_IMMEDIAT                   ;
     92  sc_signal<Tcontrol_t        >  ** out_ISSUE_READ_RA                    ;
     93  sc_signal<Tgeneral_address_t>  ** out_ISSUE_NUM_REG_RA                 ;
     94  sc_signal<Tcontrol_t        >  ** out_ISSUE_READ_RB                    ;
     95  sc_signal<Tgeneral_address_t>  ** out_ISSUE_NUM_REG_RB                 ;
     96  sc_signal<Tcontrol_t        >  ** out_ISSUE_READ_RC                    ;
     97  sc_signal<Tspecial_address_t>  ** out_ISSUE_NUM_REG_RC                 ;
     98  sc_signal<Tcontrol_t        >  ** out_ISSUE_WRITE_RD                   ;
     99  sc_signal<Tgeneral_address_t>  ** out_ISSUE_NUM_REG_RD                 ;
     100  sc_signal<Tcontrol_t        >  ** out_ISSUE_WRITE_RE                   ;
     101  sc_signal<Tspecial_address_t>  ** out_ISSUE_NUM_REG_RE                 ;
     102
     103  sc_signal<Tcontrol_t        > ***  in_EXECUTE_LOOP_VAL                 ;
     104  sc_signal<Tcontrol_t        > *** out_EXECUTE_LOOP_ACK                 ;
     105  sc_signal<Tcontext_t        > ***  in_EXECUTE_LOOP_FRONT_END_ID        ;
     106  sc_signal<Tcontext_t        > ***  in_EXECUTE_LOOP_CONTEXT_ID          ;
     107  sc_signal<Tpacket_t         > ***  in_EXECUTE_LOOP_PACKET_ID           ;
     108//sc_signal<Ttype_t           > ***  in_EXECUTE_LOOP_TYPE                ;
     109//sc_signal<Toperation_t      > ***  in_EXECUTE_LOOP_OPERATION           ;
     110  sc_signal<Tspecial_data_t   > ***  in_EXECUTE_LOOP_FLAGS               ;
     111  sc_signal<Texception_t      > ***  in_EXECUTE_LOOP_EXCEPTION           ;
     112  sc_signal<Tcontrol_t        > ***  in_EXECUTE_LOOP_NO_SEQUENCE         ;
     113  sc_signal<Taddress_t        > ***  in_EXECUTE_LOOP_ADDRESS             ;
     114  sc_signal<Tgeneral_data_t   > ***  in_EXECUTE_LOOP_DATA                ;
     115
     116  sc_signal<Tcontrol_t        >  ** out_INSERT_VAL                       ;
     117  sc_signal<Tcontrol_t        >  **  in_INSERT_ACK                       ;
     118  sc_signal<Tcontrol_t        >  ** out_INSERT_RD_USE                    ;
     119  sc_signal<Tgeneral_address_t>  ** out_INSERT_RD_NUM_REG                ;
     120  sc_signal<Tcontrol_t        >  ** out_INSERT_RE_USE                    ;
     121  sc_signal<Tspecial_address_t>  ** out_INSERT_RE_NUM_REG                ;
     122
     123//sc_signal<Tcontrol_t        >  ** out_RETIRE_VAL                       ;
     124//sc_signal<Tcontrol_t        >  **  in_RETIRE_ACK                       ;
     125//sc_signal<Tcontrol_t        >  ** out_RETIRE_RD_OLD_USE                ;
     126//sc_signal<Tgeneral_address_t>  ** out_RETIRE_RD_OLD_NUM_REG            ;
     127//sc_signal<Tcontrol_t        >  ** out_RETIRE_RD_NEW_USE                ;
     128//sc_signal<Tgeneral_address_t>  ** out_RETIRE_RD_NEW_NUM_REG            ;
     129//sc_signal<Tcontrol_t        >  ** out_RETIRE_RE_OLD_USE                ;
     130//sc_signal<Tspecial_address_t>  ** out_RETIRE_RE_OLD_NUM_REG            ;
     131//sc_signal<Tcontrol_t        >  ** out_RETIRE_RE_NEW_USE                ;
     132//sc_signal<Tspecial_address_t>  ** out_RETIRE_RE_NEW_NUM_REG            ;
     133
     134  sc_signal<Tcontrol_t        >  ** out_BRANCH_COMPLETE_VAL              ;
     135  sc_signal<Tcontrol_t        >  **  in_BRANCH_COMPLETE_ACK              ;
     136  sc_signal<Tcontext_t        >  ** out_BRANCH_COMPLETE_FRONT_END_ID     ;
     137  sc_signal<Tcontext_t        >  ** out_BRANCH_COMPLETE_CONTEXT_ID       ;
     138  sc_signal<Tdepth_t          >  ** out_BRANCH_COMPLETE_DEPTH            ;
     139  sc_signal<Taddress_t        >  ** out_BRANCH_COMPLETE_ADDRESS          ;
     140  sc_signal<Tcontrol_t        >  ** out_BRANCH_COMPLETE_NO_SEQUENCE      ;
     141  sc_signal<Tcontrol_t        >  **  in_BRANCH_COMPLETE_MISS_PREDICTION  ;
     142
     143  sc_signal<Tcontrol_t        >   * out_COMMIT_EVENT_VAL                 ;
     144  sc_signal<Tcontrol_t        >   *  in_COMMIT_EVENT_ACK                 ;
     145  sc_signal<Tcontext_t        >   * out_COMMIT_EVENT_FRONT_END_ID        ;
     146  sc_signal<Tcontext_t        >   * out_COMMIT_EVENT_CONTEXT_ID          ;
     147  sc_signal<Tdepth_t          >   * out_COMMIT_EVENT_DEPTH               ;
     148  sc_signal<Tevent_type_t     >   * out_COMMIT_EVENT_TYPE                ;
     149  sc_signal<Tcontrol_t        >   * out_COMMIT_EVENT_IS_DELAY_SLOT       ;
     150  sc_signal<Taddress_t        >   * out_COMMIT_EVENT_ADDRESS             ;
     151  sc_signal<Tcontrol_t        >   * out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ;
     152  sc_signal<Taddress_t        >   * out_COMMIT_EVENT_ADDRESS_EPCR        ;
     153  sc_signal<Tcontrol_t        >   * out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ;
     154  sc_signal<Tgeneral_data_t   >   * out_COMMIT_EVENT_ADDRESS_EEAR        ;
     155
     156  sc_signal<Tcontrol_t        > ***  in_EVENT_VAL                        ;
     157  sc_signal<Tcontrol_t        > *** out_EVENT_ACK                        ;
     158  sc_signal<Taddress_t        > ***  in_EVENT_ADDRESS                    ;
     159  sc_signal<Taddress_t        > ***  in_EVENT_ADDRESS_NEXT               ;
     160  sc_signal<Tcontrol_t        > ***  in_EVENT_ADDRESS_NEXT_VAL           ;
     161  sc_signal<Tcontrol_t        > ***  in_EVENT_IS_DS_TAKE                 ;
     162
     163  sc_signal<Tcontrol_t        > ***  in_SPR_EVENT_VAL                    ;
     164  sc_signal<Tcontrol_t        > *** out_SPR_EVENT_ACK                    ;
     165  sc_signal<Tspr_t            > ***  in_SPR_EVENT_EPCR                   ;
     166  sc_signal<Tcontrol_t        > ***  in_SPR_EVENT_EEAR_WEN               ;
     167  sc_signal<Tspr_t            > ***  in_SPR_EVENT_EEAR                   ;
     168  sc_signal<Tcontrol_t        > ***  in_SPR_EVENT_SR_DSX                 ;
     169  sc_signal<Tcontrol_t        > ***  in_SPR_EVENT_SR_TO_ESR              ;
     170
     171  sc_signal<Tcounter_t        > *** out_NB_INST_COMMIT_ALL               ;
     172  sc_signal<Tcounter_t        > *** out_NB_INST_COMMIT_MEM               ;
     173  sc_signal<Tcounter_t        > ***  in_NB_INST_DECOD_ALL                ;
     174
     175  sc_signal<Tdepth_t          > ***  in_DEPTH_MIN                        ;
     176  sc_signal<Tdepth_t          > ***  in_DEPTH_MAX                        ;
     177  sc_signal<Tcontrol_t        > ***  in_DEPTH_FULL                       ;
     178
     179  sc_signal<Tcontrol_t        > *** out_SPR_SR_IEE                       ;
     180  sc_signal<Tcontrol_t        > *** out_SPR_SR_EPH                       ;
    54181
    55182  ALLOC2_SC_SIGNAL( in_RENAME_VAL                       ," in_RENAME_VAL                       ",Tcontrol_t        ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/SelfTest/src/main.cpp

    r115 r117  
    6161    }
    6262
     63  uint32_t    num_thread = 0;
     64  uint32_t ** _translate_num_context_to_num_thread       = new uint32_t * [_nb_front_end];
     65  for (uint32_t i=0; i<_nb_front_end; i++)
     66    {
     67      _translate_num_context_to_num_thread [i] = new uint32_t [_nb_context[i]];
     68      for (uint32_t j=0; j<_nb_context[i]; j++)
     69        _translate_num_context_to_num_thread [i][j] = num_thread ++;
     70    }
     71
    6372  int _return = EXIT_SUCCESS;
    6473  try
     
    7079         _nb_inst_reexecute ,
    7180         _implement_group   ,
     81         _translate_num_context_to_num_thread,
    7282         true //is_toplevel
    7383        );
     
    100110  for (uint32_t i=0; i<_nb_front_end; i++)
    101111    {
     112      delete [] _translate_num_context_to_num_thread [i];
     113    }
     114  delete [] _translate_num_context_to_num_thread;
     115
     116
     117  for (uint32_t i=0; i<_nb_front_end; i++)
     118    {
    102119      for (uint32_t j=0; j<_nb_context[i]; j++)
    103120        delete [] _implement_group [i][j];
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/include/Parameters.h

    r88 r117  
    2727  public : uint32_t     _nb_inst_reexecute     ;
    2828  public : bool     *** _implement_group       ;//[nb_front_end][nb_context][NB_GROUP]
     29  public : uint32_t  ** _translate_num_context_to_num_thread; //[nb_front_end][nb_context]
    2930
    3031  public : uint32_t     _max_nb_context        ;
     
    4142                        uint32_t     nb_inst_reexecute     ,
    4243                        bool     *** implement_group       ,
     44                        uint32_t  ** translate_num_context_to_num_thread, //[nb_front_end][nb_context]
    4345                        bool         is_toplevel=false
    4446                        );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/include/SPR.h

    r101 r117  
    545545  // [0][21] CID
    546546  //----------------------------------------------------------
    547   class CID : public GENERIC
    548   {
    549   public : CID (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL) : GENERIC (num_front_end,num_context,param) {};
    550   };
    551 
    552   //----------------------------------------------------------
    553   // [0][22] TID
    554   //----------------------------------------------------------
    555   class TID : public GENERIC
    556   {
    557   public : TID (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL) : GENERIC (num_front_end,num_context,param) {};
    558   };
    559 
    560   //----------------------------------------------------------
    561   // [0][23] TSR
     547  class CID : public morpheo::behavioural::SPR
     548  {
     549  private: const Tspr_t _cpu_id : 32; // cpu_id reset value
     550  public :       Tspr_t  cpu_id : 32;
     551
     552  public :        CID (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL):
     553    _cpu_id ((param==NULL)?0:param->_translate_num_context_to_num_thread[num_front_end][num_context])
     554    {};
     555  public : void   reset (void  )
     556    {
     557      cpu_id = _cpu_id;
     558    };
     559  public : Tspr_t read  (void  )
     560    {
     561      return ((cpu_id << 0));
     562    };
     563  public : void   write (Tspr_t x)
     564    {
     565      cpu_id = x >> 0;
     566    };
     567  };
     568
     569  //----------------------------------------------------------
     570  // [0][22] TID - Thread Id
     571  //----------------------------------------------------------
     572  class TID : public morpheo::behavioural::SPR
     573  {
     574  public :       Tspr_t  thread_id : 32;
     575
     576  public :        TID (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL)
     577    {};
     578  public : void   reset (void  )
     579    {
     580    };
     581  public : Tspr_t read  (void  )
     582    {
     583      return ((thread_id << 0));
     584    };
     585  public : void   write (Tspr_t x)
     586    {
     587      thread_id = x >> 0;
     588    };
     589  };
     590
     591  //----------------------------------------------------------
     592  // [0][23] TSR - Thread Status Register
    562593  //----------------------------------------------------------
    563594  class TSR : public GENERIC
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/src/Parameters.cpp

    r88 r117  
    2323                          uint32_t     nb_inst_reexecute     ,
    2424                          bool     *** implement_group       ,
     25                          uint32_t  ** translate_num_context_to_num_thread, //[nb_front_end][nb_context]
    2526                          bool         is_toplevel
    2627                          )
     
    3233    _nb_inst_reexecute      = nb_inst_reexecute;
    3334    _implement_group        = implement_group  ;
     35    _translate_num_context_to_num_thread = translate_num_context_to_num_thread;
    3436
    3537    _max_nb_context         = max<uint32_t>(_nb_context,_nb_front_end);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/src/Special_Register_unit_allocation.cpp

    r112 r117  
    236236      for (uint32_t j=0; j<_param->_nb_context[i]; j++)
    237237        for (uint32_t k=0; k<NB_GROUP; k++)
    238           if (_param->_implement_group [i][j][k])
     238          if (_param->_implement_group [i][j][k])
    239239            {
     240             
    240241              for (uint32_t l=0; l<NB_REG_GROUP[k]; l++)
    241242                if (_spr [i][j][k][l] == NULL)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/include/Parameters.h

    r112 r117  
    6262  public : Tpriority_t           _issue_priority                   ;
    6363  public : Tload_balancing_t     _issue_load_balancing             ;
    64   public : bool               ** _table_routing                    ;//[nb_rename_unit][nb_inst_issue]
    65   public : bool               ** _table_issue_type                 ;//[nb_inst_issue][nb_type]
     64//   public : bool               ** _table_routing                    ;//[nb_rename_unit][nb_inst_issue]
     65//   public : bool               ** _table_issue_type                 ;//[nb_inst_issue][nb_type]
    6666    // Reexecute
    6767  public : uint32_t              _size_reexecute_queue             ;
     
    135135                        uint32_t            * nb_inst_insert                   ,//[nb_rename_unit]
    136136                        uint32_t            * nb_inst_retire                   ,//[nb_rename_unit]
    137                         uint32_t              nb_inst_issue                    ,
     137//                      uint32_t              nb_inst_issue                    ,
    138138                        uint32_t            * nb_inst_execute                  ,//[nb_execute_loop]
    139139                        uint32_t              nb_inst_reexecute                ,
     
    159159                        Tpriority_t           issue_priority                   ,
    160160                        Tload_balancing_t     issue_load_balancing             ,
    161                         bool               ** table_routing                    ,//[nb_rename_unit][nb_inst_issue]
    162                         bool               ** table_issue_type                 ,//[nb_inst_issue][nb_type]
     161//                         bool               ** table_routing                    ,//[nb_rename_unit][nb_inst_issue]
     162//                         bool               ** table_issue_type                 ,//[nb_inst_issue][nb_type]
    163163                        // Reexecute
    164164                        uint32_t              size_reexecute_queue             ,
     
    173173                        uint32_t            * nb_reg_free                      ,//[nb_rename_unit]
    174174                        uint32_t            * nb_rename_unit_bank              ,//[nb_rename_unit]
    175 //                         uint32_t            * size_read_counter                ,//[nb_rename_unit]
     175//                      uint32_t            * size_read_counter                ,//[nb_rename_unit]
    176176                        uint32_t            * nb_load_store_queue              ,//[nb_rename_unit]
    177177                        uint32_t           ** size_store_queue                 ,//[nb_rename_unit][nb_load_store_queue]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_allocation.cpp

    r112 r117  
    674674                    COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_STATE",
    675675                                             dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_STATE");
    676                     x++;
    677                     ++it;
    678676                  }
     677                x++;
     678                ++it;
    679679              }
    680680        }
     
    885885          COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_WEN"        ,
    886886                                   dest,"out_COMMIT_"+toString(i)+"_WEN"        );
     887//        if (_param->_have_port_context_id)
     888//        COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_CONTEXT_ID"  ,
     889//                                 dest,"out_COMMIT_"+toString(i)+"_CONTEXT_ID"  );
     890//        if (_param->_have_port_front_end_id)
     891//        COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_FRONT_END_ID",
     892//                                 dest,"out_COMMIT_"+toString(i)+"_FRONT_END_ID");
    887893          if (_param->_have_port_rob_ptr)
    888894          COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_PACKET_ID"  ,
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters.cpp

    r112 r117  
    2525                          uint32_t            * nb_inst_insert                   ,//[nb_rename_unit]
    2626                          uint32_t            * nb_inst_retire                   ,//[nb_rename_unit]
    27                           uint32_t              nb_inst_issue                    ,
     27//                        uint32_t              nb_inst_issue                    ,
    2828                          uint32_t            * nb_inst_execute                  ,//[nb_execute_loop]
    2929                          uint32_t              nb_inst_reexecute                ,
     
    4949                          Tpriority_t           issue_priority                   ,
    5050                          Tload_balancing_t     issue_load_balancing             ,
    51                           bool               ** table_routing                    ,//[nb_rename_unit][nb_inst_issue]
    52                           bool               ** table_issue_type                 ,//[nb_inst_issue][nb_type]
     51//                           bool               ** table_routing                    ,//[nb_rename_unit][nb_inst_issue]
     52//                           bool               ** table_issue_type                 ,//[nb_inst_issue][nb_type]
    5353                          // Reexecute
    5454                          uint32_t              size_reexecute_queue             ,
     
    6363                          uint32_t            * nb_reg_free                      ,//[nb_rename_unit]
    6464                          uint32_t            * nb_rename_unit_bank              ,//[nb_rename_unit]
    65 //                           uint32_t            * size_read_counter                ,//[nb_rename_unit]
     65//                        uint32_t            * size_read_counter                ,//[nb_rename_unit]
    6666                          uint32_t            * nb_load_store_queue              ,//[nb_rename_unit]
    6767                          uint32_t           ** size_store_queue                 ,//[nb_rename_unit][nb_load_store_queue]
     
    8787    _nb_inst_insert                    = nb_inst_insert                   ;
    8888    _nb_inst_retire                    = nb_inst_retire                   ;
    89     _nb_inst_issue                     = nb_inst_issue                    ;
     89//  _nb_inst_issue                     = nb_inst_issue                    ;
    9090    _nb_inst_execute                   = nb_inst_execute                  ;
    9191    _nb_inst_reexecute                 = nb_inst_reexecute                ;
     
    107107    _issue_priority                    = issue_priority                   ;
    108108    _issue_load_balancing              = issue_load_balancing             ;
    109     _table_routing                     = table_routing                    ;
    110     _table_issue_type                  = table_issue_type                 ;
     109//     _table_routing                     = table_routing                    ;
     110//     _table_issue_type                  = table_issue_type                 ;
    111111    _size_reexecute_queue              = size_reexecute_queue             ;
    112112    _reexecute_priority                = reexecute_priority               ;
     
    265265       _commit_load_balancing   ,
    266266       _nb_rename_unit_select   ,
    267        _nb_thread                          ,
     267       _nb_thread               ,
    268268       _translate_num_context_to_num_thread
    269269       );
     
    284284        size_store_queue_ptr    ,
    285285        size_load_queue_ptr     ,
    286        _nb_inst_issue           ,
     286//     _nb_inst_issue           ,
    287287       _nb_inst_insert          ,
    288288       _nb_inst_reexecute       ,
    289289       _nb_rename_unit_select   ,
    290290       _issue_priority          ,
    291        _issue_load_balancing    ,
    292        _table_routing           ,
    293        _table_issue_type       
     291       _issue_load_balancing    // ,
     292//        _table_routing           ,
     293//        _table_issue_type       
    294294       );
     295
     296    _nb_inst_issue = _param_issue_queue->_nb_inst_issue;
    295297
    296298    _param_reexecute_unit        = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::reexecute_unit::Parameters 
     
    319321       _nb_context            ,
    320322       _nb_inst_reexecute     ,
    321        _implement_group       
     323       _implement_group       ,
     324       _translate_num_context_to_num_thread
    322325       );
    323326
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters_print.cpp

    r112 r117  
    5858    str+= toString(MSG_INFORMATION)+"   * issue_priority                   : "+toString<Tpriority_t      >(_issue_priority                   )+"\n";
    5959    str+= toString(MSG_INFORMATION)+"   * issue_load_balancing             : "+toString<Tload_balancing_t>(_issue_load_balancing             )+"\n";
    60     for (uint32_t i=0; i<_nb_rename_unit; ++i)
    61     for (uint32_t j=0; j<_nb_inst_issue ; ++j)
    62     str+= toString(MSG_INFORMATION)+"   * table_routing                      ["+toString(i)+"]["+toString(j)+"] : "+toString<bool             >(_table_routing [i][j]             )+"\n";//[nb_rename_unit][nb_inst_issue]
    63     for (uint32_t i=0; i<_nb_inst_issue ; ++i)
    64     for (uint32_t j=0; j<_nb_type; ++j)
    65     str+= toString(MSG_INFORMATION)+"   * table_issue_type                   ["+toString(i)+"]["+toString(j)+"] : "+toString<bool             >(_table_issue_type [i][j]          )+"\n";//[nb_inst_issue][nb_type]
     60//  for (uint32_t i=0; i<_nb_rename_unit; ++i)
     61//  for (uint32_t j=0; j<_nb_inst_issue ; ++j)
     62//  str+= toString(MSG_INFORMATION)+"   * table_routing                      ["+toString(i)+"]["+toString(j)+"] : "+toString<bool             >(_table_routing [i][j]             )+"\n";//[nb_rename_unit][nb_inst_issue]
     63//  for (uint32_t i=0; i<_nb_inst_issue ; ++i)
     64//  for (uint32_t j=0; j<_nb_type; ++j)
     65//  str+= toString(MSG_INFORMATION)+"   * table_issue_type                   ["+toString(i)+"]["+toString(j)+"] : "+toString<bool             >(_table_issue_type [i][j]          )+"\n";//[nb_inst_issue][nb_type]
    6666    str+= toString(MSG_INFORMATION)+"   * size_reexecute_queue             : "+toString<uint32_t         >(_size_reexecute_queue             )+"\n";
    6767    str+= toString(MSG_INFORMATION)+"   * reexecute_priority               : "+toString<Tpriority_t      >(_reexecute_priority               )+"\n";
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/SelfTest/src/test.cpp

    r110 r117  
    5252  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
    5353  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
     54
     55  sc_signal<Tcontrol_t           >  ** out_ICACHE_REQ_VAL         ;
     56  sc_signal<Tcontrol_t           >  **  in_ICACHE_REQ_ACK         ;
     57  sc_signal<Tcontext_t           >  ** out_ICACHE_REQ_THREAD_ID   ;
     58  sc_signal<Tpacket_t            >  ** out_ICACHE_REQ_PACKET_ID   ;
     59  sc_signal<Ticache_address_t    >  ** out_ICACHE_REQ_ADDRESS     ;
     60  sc_signal<Ticache_type_t       >  ** out_ICACHE_REQ_TYPE        ;
     61
     62  sc_signal<Tcontrol_t           >  **  in_ICACHE_RSP_VAL         ;
     63  sc_signal<Tcontrol_t           >  ** out_ICACHE_RSP_ACK         ;
     64  sc_signal<Tcontext_t           >  **  in_ICACHE_RSP_THREAD_ID   ;
     65  sc_signal<Tpacket_t            >  **  in_ICACHE_RSP_PACKET_ID   ;
     66  sc_signal<Ticache_instruction_t> ***  in_ICACHE_RSP_INSTRUCTION ;
     67  sc_signal<Ticache_error_t      >  **  in_ICACHE_RSP_ERROR       ;
     68
     69  sc_signal<Tcontrol_t           >  ** out_DCACHE_REQ_VAL         ;
     70  sc_signal<Tcontrol_t           >  **  in_DCACHE_REQ_ACK         ;
     71  sc_signal<Tcontext_t           >  ** out_DCACHE_REQ_THREAD_ID   ;
     72  sc_signal<Tpacket_t            >  ** out_DCACHE_REQ_PACKET_ID   ;
     73  sc_signal<Tdcache_address_t    >  ** out_DCACHE_REQ_ADDRESS     ;
     74  sc_signal<Tdcache_data_t       >  ** out_DCACHE_REQ_WDATA       ;
     75  sc_signal<Tdcache_type_t       >  ** out_DCACHE_REQ_TYPE        ;
     76
     77  sc_signal<Tcontrol_t           >  **  in_DCACHE_RSP_VAL         ;
     78  sc_signal<Tcontrol_t           >  ** out_DCACHE_RSP_ACK         ;
     79  sc_signal<Tcontext_t           >  **  in_DCACHE_RSP_THREAD_ID   ;
     80  sc_signal<Tpacket_t            >  **  in_DCACHE_RSP_PACKET_ID   ;
     81  sc_signal<Tdcache_data_t       >  **  in_DCACHE_RSP_RDATA       ;
     82  sc_signal<Tdcache_error_t      >  **  in_DCACHE_RSP_ERROR       ;
     83
     84  sc_signal<Tcontrol_t           >  **  in_INTERRUPT_ENABLE       ;
    5485
    5586  ALLOC1_SC_SIGNAL(out_ICACHE_REQ_VAL         ,"out_ICACHE_REQ_VAL        ",Tcontrol_t           ,_param->_nb_icache_port);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/include/Parameters.h

    r115 r117  
    135135  public : uint32_t                _nb_ooo_engine                                 ;
    136136  public : uint32_t              * _nb_rename_unit                                ;//[nb_ooo_engine]
    137   public : uint32_t              * _nb_inst_issue                                 ;//[nb_ooo_engine]
     137  public : uint32_t              * _nb_inst_issue_queue                           ;//[nb_ooo_engine]
     138  public : uint32_t              * _nb_inst_issue_slot                            ;//[nb_ooo_engine]
    138139  public : uint32_t              * _nb_inst_reexecute                             ;//[nb_ooo_engine]
    139140  public : uint32_t              * _nb_inst_commit                                ;//[nb_ooo_engine]
     
    148149  public : multi_ooo_engine::ooo_engine::issue_queue::Tissue_queue_scheme_t
    149150                                 * _issue_queue_scheme                            ;//[nb_ooo_engine]
     151  public : bool                  * _issue_queue_in_order                          ;//[nb_ooo_engine]
    150152  public : uint32_t              * _nb_issue_queue_bank                           ;//[nb_ooo_engine]
    151153  public : Tpriority_t           * _issue_priority                                ;//[nb_ooo_engine]
     
    179181  public : uint32_t              * _link_decod_bloc_with_thread                   ;//[nb_thread]
    180182  public : uint32_t              * _link_rename_bloc_with_front_end               ;//[nb_front_end]
    181   public : bool                *** _table_dispatch                                ;//[nb_ooo_engine][nb_inst_issue][nb_read_bloc]
     183  public : bool                *** _table_dispatch                                ;//[nb_ooo_engine][nb_inst_issue_slot][nb_read_bloc]
    182184  public : bool                 ** _link_read_bloc_and_load_store_unit            ;//[nb_read_bloc][nb_load_store_unit]
    183185  public : bool                 ** _link_read_bloc_and_functionnal_unit           ;//[nb_read_bloc][nb_functionnal_unit]
     
    251253  public : uint32_t             ** _ooo_engine_nb_reg_free                        ;//[nb_ooo_engine][nb_rename_unit]
    252254  public : uint32_t             ** _ooo_engine_nb_rename_unit_bank                ;//[nb_ooo_engine][nb_rename_unit]
    253 //   public : uint32_t             ** _ooo_engine_size_read_counter                  ;//[nb_ooo_engine][nb_rename_unit]
    254   public : bool                *** _ooo_engine_table_routing                      ;//[nb_ooo_engine][nb_rename_unit][nb_inst_issue]
    255   public : bool                *** _ooo_engine_table_issue_type                   ;//[nb_ooo_engine][nb_inst_issue][nb_type]
     255//public : uint32_t             ** _ooo_engine_size_read_counter                  ;//[nb_ooo_engine][nb_rename_unit]
     256//public : bool                *** _ooo_engine_table_routing                      ;//[nb_ooo_engine][nb_rename_unit][nb_inst_issue_slot]
     257//public : bool                *** _ooo_engine_table_issue_type                   ;//[nb_ooo_engine][nb_inst_issue_slot][nb_type]
    256258  public : uint32_t             ** _ooo_engine_nb_load_store_unit                 ;//[nb_ooo_engine][nb_rename_unit]
    257259  public : uint32_t            *** _ooo_engine_size_store_queue                   ;//[nb_ooo_engine][nb_rename_unit][ooo_engine_nb_load_store_unit]
     
    331333
    332334
    333   public : bool               **** _network_table_dispatch                        ;//[nb_ooo_engine][nb_inst_issue][nb_execute_loop][nb_read_unit]
     335  public : bool               **** _network_table_dispatch                        ;//[nb_ooo_engine][nb_inst_issue_slot][nb_execute_loop][nb_read_unit]
     336  public : bool                *** _network_table_issue_type                      ;//                                   [nb_execute_loop][nb_read_unit][nb_type]
    334337
    335338
     
    450453  uint32_t                nb_ooo_engine                                 ,
    451454  uint32_t              * nb_rename_unit                                ,//[nb_ooo_engine]
    452   uint32_t              * nb_inst_issue                                 ,//[nb_ooo_engine]
     455  uint32_t              * nb_inst_issue_slot                            ,//[nb_ooo_engine]
    453456  uint32_t              * nb_inst_reexecute                             ,//[nb_ooo_engine]
    454457  uint32_t              * nb_inst_commit                                ,//[nb_ooo_engine]
     
    494497  uint32_t              * link_decod_bloc_with_thread                   ,//[nb_thread]
    495498  uint32_t              * link_rename_bloc_with_front_end               ,//[nb_front_end]
    496   bool                *** table_dispatch                                ,//[nb_ooo_engine][nb_inst_issue][nb_read_bloc]
     499  bool                *** table_dispatch                                ,//[nb_ooo_engine][nb_inst_issue_slot][nb_read_bloc]
    497500  bool                 ** link_read_bloc_and_load_store_unit            ,//[nb_read_bloc][nb_load_store_unit]
    498501  bool                 ** link_read_bloc_and_functionnal_unit           ,//[nb_read_bloc][nb_functionnal_unit]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Core_allocation.cpp

    r112 r117  
    701701
    702702        // ~~~~~[ Interface : "issue" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    703         for (uint32_t j=0; j<_param->_nb_inst_issue [i]; ++j)
     703        for (uint32_t j=0; j<_param->_nb_inst_issue_queue [i]; ++j)
    704704          {
    705705            dest = _name+"_glue";
     
    12101210            if (_param->_have_port_dcache_thread_id)
    12111211            COMPONENT_MAP(_component,src , "in_LSQ_REQ_"   +toString(i)+"_"+toString(j)+"_"+toString(k)+"_THREAD_ID",
    1212                                      dest,"out_DCACHE_REQ_"                +toString(j)+"_"+toString(k)+"_THREAD_ID");
     1212                                     dest,"out_DCACHE_REQ_"                +toString(j)+"_"+toString(k)+"_CONTEXT_ID");
    12131213            if (_param->_have_port_dcache_packet_id)
    12141214            COMPONENT_MAP(_component,src , "in_LSQ_REQ_"   +toString(i)+"_"+toString(j)+"_"+toString(k)+"_PACKET_ID",
     
    12391239            if (_param->_have_port_dcache_thread_id)
    12401240            COMPONENT_MAP(_component,src ,"out_LSQ_RSP_"   +toString(i)+"_"+toString(j)+"_"+toString(k)+"_THREAD_ID",
    1241                                      dest, "in_DCACHE_RSP_"                +toString(j)+"_"+toString(k)+"_THREAD_ID");
     1241                                     dest, "in_DCACHE_RSP_"                +toString(j)+"_"+toString(k)+"_CONTEXT_ID");
    12421242            if (_param->_have_port_dcache_packet_id)
    12431243            COMPONENT_MAP(_component,src ,"out_LSQ_RSP_"   +toString(i)+"_"+toString(j)+"_"+toString(k)+"_PACKET_ID",
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters.cpp

    r115 r117  
    107107  uint32_t              * nb_reg_free                                   ,//[nb_rename_bloc]
    108108  uint32_t              * nb_rename_unit_bank                           ,//[nb_rename_bloc]
    109 //   uint32_t              * size_read_counter                             ,//[nb_rename_bloc]
     109//uint32_t              * size_read_counter                             ,//[nb_rename_bloc]
    110110
    111111  // Read bloc
     
    173173  uint32_t                nb_ooo_engine                                 ,
    174174  uint32_t              * nb_rename_unit                                ,//[nb_ooo_engine]
    175   uint32_t              * nb_inst_issue                                 ,//[nb_ooo_engine]
     175  uint32_t              * nb_inst_issue_slot                            ,//[nb_ooo_engine]
    176176  uint32_t              * nb_inst_reexecute                             ,//[nb_ooo_engine]
    177177  uint32_t              * nb_inst_commit                                ,//[nb_ooo_engine]
     
    217217  uint32_t              * link_decod_bloc_with_thread                   ,//[nb_thread]
    218218  uint32_t              * link_rename_bloc_with_front_end               ,//[nb_front_end]
    219   bool                *** table_dispatch                                ,//[nb_ooo_engine][nb_inst_issue][nb_read_bloc]
     219  bool                *** table_dispatch                                ,//[nb_ooo_engine][nb_inst_issue_slot][nb_read_bloc]
    220220  bool                 ** link_read_bloc_and_load_store_unit            ,//[nb_read_bloc][nb_load_store_unit]
    221221  bool                 ** link_read_bloc_and_functionnal_unit           ,//[nb_read_bloc][nb_functionnal_unit]
     
    319319    _nb_ooo_engine                           = nb_ooo_engine                           ;
    320320    _nb_rename_unit                          = nb_rename_unit                          ;
    321     _nb_inst_issue                           = nb_inst_issue                           ;
     321    _nb_inst_issue_slot                      = nb_inst_issue_slot                      ;
    322322    _nb_inst_reexecute                       = nb_inst_reexecute                       ;
    323323    _nb_inst_commit                          = nb_inst_commit                          ;
     
    868868      for (uint32_t i=0; i<_nb_ooo_engine; ++i)
    869869        {
    870           for (uint32_t j=0; j<_nb_inst_issue[i]; ++j)
     870          for (uint32_t j=0; j<_nb_inst_issue_slot[i]; ++j)
    871871            for (uint32_t k=0; k<_nb_read_bloc; ++k)
    872872              {
     
    10031003      }
    10041004   
    1005     ALLOC4(_network_table_dispatch                        ,bool             ,_nb_ooo_engine,_nb_inst_issue[it1],_nb_execute_loop,_nb_read_unit[it3]);
    1006     ALLOC3(_ooo_engine_table_routing                      ,bool             ,_nb_ooo_engine,_nb_rename_unit[it1],_nb_inst_issue[it1]);
    1007     ALLOC3(_ooo_engine_table_issue_type                   ,bool             ,_nb_ooo_engine,_nb_inst_issue[it1],_nb_type);
     1005    ALLOC4(_network_table_dispatch                        ,bool             ,_nb_ooo_engine,_nb_inst_issue_slot[it1],_nb_execute_loop,_nb_read_unit[it3]);
     1006//  ALLOC3(_ooo_engine_table_routing                      ,bool             ,_nb_ooo_engine,_nb_rename_unit[it1],_nb_inst_issue_slot[it1]);
     1007//  ALLOC3(_ooo_engine_table_issue_type                   ,bool             ,_nb_ooo_engine,_nb_inst_issue_slot[it1],_nb_type);
    10081008    ALLOC2(_list_functionnal_unit_with_rename_unit        ,std::vector<uint32_t>,_nb_ooo_engine,_nb_rename_unit[it1]);
    10091009    ALLOC2(_list_load_store_unit_with_rename_unit         ,std::vector<uint32_t>,_nb_ooo_engine,_nb_rename_unit[it1]);
     
    10111011    for (uint32_t i=0; i<_nb_ooo_engine; ++i)
    10121012      {
    1013         log_printf(TRACE,Core,FUNCTION,_(" * ooo_engine_table_issue_type [%d]"),i);
    1014 
     1013//         log_printf(TRACE,Core,FUNCTION,_(" * ooo_engine_table_issue_type [%d]"),i);
    10151014
    10161015        // Init
    1017         for (uint32_t j=0; j<_nb_inst_issue[i]; ++j)
     1016        for (uint32_t j=0; j<_nb_inst_issue_slot[i]; ++j)
    10181017          {
    10191018            for (uint32_t k=0; k<_nb_execute_loop; ++k)
    10201019              for (uint32_t l=0; l<_nb_read_unit[k]; ++l)
    10211020                _network_table_dispatch [i][j][k][l] = false;
    1022             for (uint32_t k=0; k<_nb_rename_unit[i]; ++k)
    1023               _ooo_engine_table_routing [i][k][j] = false;
    1024             for (uint32_t k=0; k<_nb_type; ++k)
    1025               _ooo_engine_table_issue_type [i][j][k] = false;
     1021//             for (uint32_t k=0; k<_nb_rename_unit[i]; ++k)
     1022//               _ooo_engine_table_routing [i][k][j] = false;
     1023//             for (uint32_t k=0; k<_nb_type; ++k)
     1024//               _ooo_engine_table_issue_type [i][j][k] = false;
    10261025          }
    10271026
    1028         std::vector<uint32_t> list_thread_with_inst_issue [_nb_inst_issue[i]];
     1027        std::vector<uint32_t> list_thread_with_inst_issue [_nb_inst_issue_slot[i]];
    10291028       
    1030         for (uint32_t j=0; j<_nb_inst_issue[i]; ++j)
     1029        for (uint32_t j=0; j<_nb_inst_issue_slot[i]; ++j)
    10311030          {
    10321031            for (uint32_t k=0; k<_nb_read_bloc; ++k)
     
    10441043                        {
    10451044                          // Scan timing table, test if have an instruction
    1046                           for (uint32_t m=0; m<_nb_type; ++m)
    1047                             for (uint32_t n=0; n<_nb_operation; ++n)
    1048                               if (_timing[l][m][n]._latence > 0)
    1049                                 {
    1050                                   log_printf(TRACE,Core,FUNCTION,_("   [%d][%d] -> true"),j,m);
     1045//                           for (uint32_t m=0; m<_nb_type; ++m)
     1046//                             for (uint32_t n=0; n<_nb_operation; ++n)
     1047//                               if (_timing[l][m][n]._latence > 0)
     1048//                                 {
     1049//                                   log_printf(TRACE,Core,FUNCTION,_("   [%d][%d] -> true"),j,m);
    10511050                                 
    1052                                   _ooo_engine_table_issue_type [i][j][m] = true;
    1053                                   break;
    1054                                 }
     1051//                                   _ooo_engine_table_issue_type [i][j][m] = true;
     1052//                                   break;
     1053//                                 }
    10551054                         
    10561055                          for (uint32_t m=0; m<_nb_thread; ++m)
     
    10731072                      if (_link_read_bloc_and_load_store_unit [k][l])
    10741073                       {
    1075                           _ooo_engine_table_issue_type [i][j][TYPE_MEMORY] = true;
     1074//                        _ooo_engine_table_issue_type [i][j][TYPE_MEMORY] = true;
    10761075//                        _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_LBS)._type] |= (_timing[l][instruction_information(INSTRUCTION_L_LBS)._type][instruction_information(INSTRUCTION_L_LBS)._operation]._latence > 0);
    10771076//                        _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_LBZ)._type] |= (_timing[l][instruction_information(INSTRUCTION_L_LBZ)._type][instruction_information(INSTRUCTION_L_LBZ)._operation]._latence > 0);
     
    11311130            }
    11321131
    1133             uint32_t num_rename_bloc = _link_rename_bloc_with_rename_unit[i][j];
    1134 
    1135             for (uint32_t k=0; k<_nb_front_end; ++k)
    1136               // test if this front_end is connected with this rename_bloc
    1137               if (_link_rename_bloc_with_front_end[k] == num_rename_bloc)
    1138                 // the front end is connected with rename_bloc. Now test all slot issue that it can accepted this front_end
    1139                 for (uint32_t l=0; l<_nb_inst_issue[i]; ++l)
    1140                   for (std::vector<uint32_t>::iterator it = list_thread_with_inst_issue [l].begin();
    1141                        it != list_thread_with_inst_issue [l].end();
    1142                        ++it)
    1143                     // Test if the this is in front_end [k]
    1144                     if (_link_context_with_thread[*it].first == k)
    1145                       {
    1146                         _ooo_engine_table_routing [i][j][l] |= true;
    1147                         log_printf(TRACE,Core,FUNCTION,_("   [%d][%d] -> true"),j,l);
    1148                       }
     1132//             uint32_t num_rename_bloc = _link_rename_bloc_with_rename_unit[i][j];
     1133
     1134//             for (uint32_t k=0; k<_nb_front_end; ++k)
     1135//               // test if this front_end is connected with this rename_bloc
     1136//               if (_link_rename_bloc_with_front_end[k] == num_rename_bloc)
     1137//                 // the front end is connected with rename_bloc. Now test all slot issue that it can accepted this front_end
     1138//                 for (uint32_t l=0; l<_nb_inst_issue_slot[i]; ++l)
     1139//                   for (std::vector<uint32_t>::iterator it = list_thread_with_inst_issue [l].begin();
     1140//                        it != list_thread_with_inst_issue [l].end();
     1141//                        ++it)
     1142//                     // Test if the this is in front_end [k]
     1143//                     if (_link_context_with_thread[*it].first == k)
     1144//                       {
     1145//                         _ooo_engine_table_routing [i][j][l] |= true;
     1146//                         log_printf(TRACE,Core,FUNCTION,_("   [%d][%d] -> true"),j,l);
     1147//                       }
    11491148          }
    11501149      }
    11511150   
    1152     log_printf(TRACE,Core,FUNCTION,_("  * network_table_dispatch [nb_ooo_engine][nb_inst_issue][nb_execute_loop][nb_read_unit]"));
     1151    log_printf(TRACE,Core,FUNCTION,_(" * network_table_dispatch [nb_ooo_engine][nb_inst_issue_slot][nb_execute_loop][nb_read_unit]"));
    11531152    for (uint32_t i=0; i<_nb_ooo_engine; ++i)
    1154       for (uint32_t j=0; j<_nb_inst_issue[i]; ++j)
     1153      for (uint32_t j=0; j<_nb_inst_issue_slot[i]; ++j)
    11551154        for (uint32_t k=0; k<_nb_execute_loop; ++k)
    11561155          for (uint32_t l=0; l<_nb_read_unit[k]; ++l)
    11571156            if (_network_table_dispatch [i][j][k][l] == true)
    11581157              log_printf(TRACE,Core,FUNCTION,_("   Issue Slot [%d][%d] is connected with Read_unit [%d][%d]"),i,j,k,l);
     1158
     1159    ALLOC3(_network_table_issue_type,bool,_nb_execute_loop,_nb_read_unit[it1],_nb_type);
     1160
     1161    log_printf(TRACE,Core,FUNCTION,_(" * network_table_issue_type"));
     1162    for (uint32_t i=0; i<_nb_execute_loop; ++i)
     1163      for (uint32_t j=0; j<_nb_read_unit[i]; ++j)
     1164        {
     1165          // init
     1166          for (uint32_t t=0; t<_nb_type; ++t)
     1167            _network_table_issue_type [i][j][t] = false;
     1168
     1169          // get number of read bloc
     1170          uint32_t num_read_bloc = _link_read_bloc_with_read_unit[i][j];
     1171
     1172          // for each functionnal unit : test if the read bloc is connected with the functionnal unit
     1173          for (uint32_t k=0; k<_nb_functionnal_unit; ++k)
     1174            if (_link_read_bloc_and_functionnal_unit [num_read_bloc][k])
     1175              // Scan timing table, test if have an instruction
     1176              for (uint32_t t=0; t<_nb_type; ++t)
     1177                for (uint32_t o=0; o<_nb_operation; ++o)
     1178                  if (_timing[k][t][o]._latence > 0)
     1179                    {
     1180                      log_printf(TRACE,Core,FUNCTION,_("   [%d][%d][%d] -> true"),i,j,t);
     1181                     
     1182                      _network_table_issue_type [i][j][t] = true;
     1183                      break; // operation
     1184                    }
     1185         
     1186          // Test load store unit connected with this read bloc
     1187          for (uint32_t k=0; k<_nb_load_store_unit; ++k)
     1188            // Test load store unit connected with this read bloc
     1189            if (_link_read_bloc_and_load_store_unit [num_read_bloc][k])
     1190              {
     1191                uint32_t t = TYPE_MEMORY;
     1192               
     1193                log_printf(TRACE,Core,FUNCTION,_("   [%d][%d][%d] -> true"),i,j,t);
     1194               
     1195                _network_table_issue_type [i][j][t] = true;
     1196                break; // load_store_unit
     1197              }
     1198        }
    11591199
    11601200    ALLOC2(_ooo_engine_nb_load_store_unit                 ,uint32_t         ,_nb_ooo_engine,_nb_rename_unit[it1]);
     
    17871827        }
    17881828
     1829    ALLOC1(_issue_queue_in_order,bool,_nb_ooo_engine);
     1830    for (uint32_t i=0; i<_nb_ooo_engine; ++i)
     1831      _issue_queue_in_order [i] = (_issue_queue_scheme [i] == core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_IN_ORDER);
     1832
    17891833    // parameters depends
    17901834    _size_ooo_engine_id                    = log2(_nb_ooo_engine);
     
    18381882    for (uint32_t i=0; i<_nb_front_end; ++i)
    18391883      _param_front_end [i]= new core::multi_front_end::front_end::Parameters
    1840        (
     1884        (
    18411885        _nb_context                             [i],
    18421886        _nb_decod_unit                          [i],
     
    18771921        );
    18781922
     1923    ALLOC1(_nb_inst_issue_queue,uint32_t,_nb_ooo_engine);
     1924
    18791925    _param_ooo_engine = new core::multi_ooo_engine::ooo_engine::Parameters * [_nb_ooo_engine];
    18801926
    18811927    for (uint32_t i=0; i<_nb_ooo_engine; ++i)
     1928      {
    18821929    _param_ooo_engine [i] = new core::multi_ooo_engine::ooo_engine::Parameters
    18831930      (
     
    18891936       _ooo_engine_nb_inst_insert                    [i],
    18901937       _ooo_engine_nb_inst_retire                    [i],
    1891        _nb_inst_issue                                [i],
     1938//        _nb_inst_issue                                [i],
    18921939       _ooo_engine_nb_inst_execute                   [i],
    18931940       _nb_inst_reexecute                            [i],
     
    19101957       _issue_priority                               [i],
    19111958       _issue_load_balancing                         [i],
    1912        _ooo_engine_table_routing                     [i],
    1913        _ooo_engine_table_issue_type                  [i],
     1959//        _ooo_engine_table_routing                     [i],
     1960//        _ooo_engine_table_issue_type                  [i],
    19141961       _size_reexecute_queue                         [i],
    19151962       _reexecute_priority                           [i],
     
    19221969       _ooo_engine_nb_reg_free                       [i],
    19231970       _ooo_engine_nb_rename_unit_bank               [i],
    1924 //        _ooo_engine_size_read_counter                 [i],
     1971//     _ooo_engine_size_read_counter                 [i],
    19251972       _ooo_engine_nb_load_store_unit                [i],
    19261973       _ooo_engine_size_store_queue                  [i],
     
    19321979       _ooo_engine_translate_num_context_to_num_thread[i]
    19331980       );
     1981    _nb_inst_issue_queue [i] = _param_ooo_engine [i]->_nb_inst_issue;
     1982      }
    19341983
    19351984    _param_execute_loop = new core::multi_execute_loop::execute_loop::Parameters * [_nb_execute_loop];
     
    20452094       _nb_inst_branch_complete              ,//[nb_ooo_engine]
    20462095       _ooo_engine_nb_inst_insert_rob        ,//[nb_ooo_engine]
    2047        _nb_inst_issue                        ,//[nb_ooo_engine]
     2096       _nb_inst_reexecute                    ,//[nb_ooo_engine]
     2097       _nb_inst_issue_queue                  ,//[nb_ooo_engine]
     2098       _nb_inst_issue_slot                   ,//[nb_ooo_engine]
    20482099       _ooo_engine_nb_inst_execute           ,//[nb_ooo_engine][ooo_engine_nb_execute_loop]
     2100       _issue_queue_in_order                 ,//[nb_ooo_engine]
    20492101       _nb_read_unit                         ,//[nb_execute_loop]
    20502102       _nb_write_unit                        ,//[nb_execute_loop]
     
    20592111       _dispatch_priority                    ,
    20602112       _dispatch_load_balancing              ,
    2061        _network_table_dispatch               ,//[nb_ooo_engine][nb_inst_issue][nb_execute_loop][nb_read_unit]
     2113       _network_table_dispatch               ,//[nb_ooo_engine][nb_inst_issue_slot][nb_execute_loop][nb_read_unit]
     2114       _network_table_issue_type             ,//                                   [nb_execute_loop][nb_read_unit][nb_type]
    20622115       _translate_ooo_engine_num_front_end   ,//[nb_ooo_engine][ooo_engine_nb_front_end]
    20632116       _translate_ooo_engine_num_execute_loop,//[nb_ooo_engine][ooo_engine_nb_execute_loop]
    2064        _translate_execute_loop_num_ooo_engine //*[nb_execute_loop][execute_loop_nb_ooo_engine]
     2117       _translate_execute_loop_num_ooo_engine //[nb_execute_loop][execute_loop_nb_ooo_engine]
    20652118       );
    20662119   
     
    21462199    DELETE2(_list_load_store_unit_with_rename_unit                  ,_nb_ooo_engine,_nb_rename_unit[it1]);
    21472200    DELETE2(_list_functionnal_unit_with_rename_unit                 ,_nb_ooo_engine,_nb_rename_unit[it1]);
    2148     DELETE3(_ooo_engine_table_issue_type                            ,_nb_ooo_engine,_nb_inst_issue[it1],_nb_type);
    2149     DELETE3(_ooo_engine_table_routing                               ,_nb_ooo_engine,_nb_rename_unit[it1],_nb_inst_issue[it1]);
    2150     DELETE4(_network_table_dispatch                                 ,_nb_ooo_engine,_nb_inst_issue[it1],_nb_execute_loop,_nb_read_unit[it3]);
    2151 //     DELETE2(_ooo_engine_size_read_counter                           ,_nb_ooo_engine,_nb_rename_unit[it1]);
     2201//  DELETE3(_ooo_engine_table_issue_type                            ,_nb_ooo_engine,_nb_inst_issue_slot[it1],_nb_type);
     2202//  DELETE3(_ooo_engine_table_routing                               ,_nb_ooo_engine,_nb_rename_unit[it1],_nb_inst_issue_slot[it1]);
     2203    DELETE3(_network_table_issue_type                                                                       ,_nb_execute_loop,_nb_read_unit[it1],_nb_type);
     2204    DELETE4(_network_table_dispatch                                 ,_nb_ooo_engine,_nb_inst_issue_slot[it1],_nb_execute_loop,_nb_read_unit[it3]);
     2205//  DELETE2(_ooo_engine_size_read_counter                           ,_nb_ooo_engine,_nb_rename_unit[it1]);
    21522206    DELETE2(_ooo_engine_nb_rename_unit_bank                         ,_nb_ooo_engine,_nb_rename_unit[it1]);
    21532207    DELETE2(_ooo_engine_nb_reg_free                                 ,_nb_ooo_engine,_nb_rename_unit[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters_msg_error.cpp

    r109 r117  
    206206    {
    207207      // initialisation
    208       uint32_t nb_link_slot      [_nb_ooo_engine][max<uint32_t>(_nb_inst_issue,_nb_ooo_engine)];
     208      uint32_t nb_link_slot      [_nb_ooo_engine][max<uint32_t>(_nb_inst_issue_slot,_nb_ooo_engine)];
    209209      uint32_t nb_link_read_bloc [_nb_read_bloc];
    210210 
    211211      // initialisation
    212212      for (uint32_t i=0; i<_nb_ooo_engine; ++i)
    213         for (uint32_t j=0; j<_nb_inst_issue[i]; ++j)
     213        for (uint32_t j=0; j<_nb_inst_issue_slot[i]; ++j)
    214214          nb_link_slot [i][j] = 0;
    215215      for (uint32_t i=0; i<_nb_read_bloc; ++i)
     
    218218      // set link
    219219      for (uint32_t i=0; i<_nb_ooo_engine; ++i)
    220         for (uint32_t j=0; j<_nb_inst_issue[i]; ++j)
     220        for (uint32_t j=0; j<_nb_inst_issue_slot[i]; ++j)
    221221          for (uint32_t k=0; k<_nb_read_bloc; ++k)
    222222            if (_table_dispatch [i][j][k])
     
    228228      // test
    229229      for (uint32_t i=0; i<_nb_ooo_engine; ++i)
    230         for (uint32_t j=0; j<_nb_inst_issue[i]; ++j)
     230        for (uint32_t j=0; j<_nb_inst_issue_slot[i]; ++j)
    231231          if (nb_link_slot [i][j] == 0)
    232232            test.error(toString(_("In Out Of Order Engine [%d], the slot issue [%d] is not link with a read_bloc.\n"),i,j));
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters_print.cpp

    r112 r117  
    173173    str+= toString(MSG_INFORMATION)+"   * OOO_ENGINE ["+toString<uint32_t>(i)+"]\n";
    174174    str+= toString(MSG_INFORMATION)+"     * nb_rename_unit                              : "+toString<uint32_t         >(_nb_rename_unit          [i])+"\n";
    175     str+= toString(MSG_INFORMATION)+"     * nb_inst_issue                               : "+toString<uint32_t         >(_nb_inst_issue           [i])+"\n";
     175    str+= toString(MSG_INFORMATION)+"     * nb_inst_issue_queue                         : "+toString<uint32_t         >(_nb_inst_issue_queue     [i])+"\n";
     176    str+= toString(MSG_INFORMATION)+"     * nb_inst_issue_slot                          : "+toString<uint32_t         >(_nb_inst_issue_slot      [i])+"\n";
    176177    str+= toString(MSG_INFORMATION)+"     * nb_inst_reexecute                           : "+toString<uint32_t         >(_nb_inst_reexecute       [i])+"\n";
    177178    str+= toString(MSG_INFORMATION)+"     * nb_inst_commit                              : "+toString<uint32_t         >(_nb_inst_commit          [i])+"\n";
     
    261262
    262263    for (uint32_t i=0; i<_nb_ooo_engine; ++i)
    263       for (uint32_t j=0; j<_nb_inst_issue[i]; ++j)
     264      for (uint32_t j=0; j<_nb_inst_issue_slot[i]; ++j)
    264265        for (uint32_t k=0; k<_nb_read_bloc; ++k)
    265266    str+= toString(MSG_INFORMATION)+"   * table_dispatch                                  ["+toString(i)+"]["+toString(j)+"]["+toString(k)+"] : "+toString(_table_dispatch                      [i][j][k])+"\n";//[nb_ooo_engine][nb_inst_issue][nb_read_bloc]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/src/main.cpp

    r115 r117  
    2525      delete my_top;
    2626
    27       delete param;
    2827    }
    2928  catch (morpheo::ErrorMorpheo & error)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Common

    r113 r117  
    2222endif
    2323
    24 ##-----[ Entity ]-------------------------------------------
    25 #ENTITY                         = $$($(BASENAME) $$PWD)
    26 
    2724#-----[ Directory ]----------------------------------------
    28 #DIR_TMP                         = .
    2925DIR_TMP                         = $(MORPHEO_TMP)
    3026DIR_INC                         = include
     
    3531
    3632#-----[ Compilation ]--------------------------------------
    37 INCDIR                          = $(SYSTEMC_INCDIR_$(SIMULATOR))        \
     33INCDIR                          = $(SYSTEMC_INCDIR_$(SIMULATOR_SYSTEMC))        \
    3834                                  -I.                                   \
    3935                                  -I$(DIR_MORPHEO)
    4036
    4137LIBDIR                          = -L$(DIR_LIB) \
    42                                   $(SYSTEMC_LIBDIR_$(SIMULATOR))       
     38                                  $(SYSTEMC_LIBDIR_$(SIMULATOR_SYSTEMC))       
    4339#                                 $(OR1K_LIBDIR)                               
    4440
    45 FLAGS_COMMON                    = $(SYSTEMC_CFLAGS_$(SIMULATOR))        \
     41FLAGS_COMMON                    = $(SYSTEMC_CFLAGS_$(SIMULATOR_SYSTEMC))        \
    4642                                  $(CXX_FLAGS)
    4743
     
    6258                                @$(ECHO) "-------------------| $(ENTITY)"
    6359
    64 test                            :
    65                                 @echo $(DIR_LIBRARY);
    66 
    6760$(DIR_OBJ)/$(ENTITY)_%.o        : $(DIR_SRC)/%.cpp $(HEADERS)
    6861                                @\
    6962                                $(ECHO) "Compilation        : $*";\
    70                                 $(SYSTEMC_CXX_$(SIMULATOR)) $(CFLAGS) -c -o $@ $<;
     63                                $(SYSTEMC_CXX_$(SIMULATOR_SYSTEMC)) $(CFLAGS) -c -o $@ $<;
    7164
    7265$(DIR_OBJ)                      :
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Component

    r113 r117  
    1818$(DIR_LIB)/%.a                  : $(SOURCES) $(HEADERS)
    1919                                @\
    20                                 case "${SIMULATOR}" in                                                          \
     20                                case "${SIMULATOR_SYSTEMC}" in                                                          \
    2121                                    "modelsim")                                                                 \
    2222                                        $(MODELTECH_VLIB) $@;                                                   \
     
    2525                                    *)                                                                          \
    2626                                        $(MAKE) $(OBJECTS);                                                     \
    27                                         $(ECHO) "Archive            : $*";                                      \
    28                                         $(AR)  -r $@ $(OBJECTS);                                                \
    29                                         $(RANLIB) $@;                                                           \
     27                                        if $(TEST) $$? -eq 0; then                                              \
     28                                           $(ECHO) "Archive            : $*";                                   \
     29                                           $(AR)  -r $@ $(OBJECTS);                                             \
     30                                           $(RANLIB) $@;                                                        \
     31                                        fi;                                                                     \
    3032                                        ;;                                                                      \
    3133                                esac;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest

    r115 r117  
    1919OBJECTS                         = $(OBJECTS_COMMON)
    2020
    21 LIBS                            = -lm $(SYSTEMC_LIBNAME_$(SIMULATOR))
     21LIBS                            = -lm $(SYSTEMC_LIBNAME_$(SIMULATOR_SYSTEMC))
    2222#                                 $(OR1K_LIBNAME) -lbfd 
    2323
     
    2727EXEC_PREFIX                     =
    2828#$(VALGRIND)
    29 EXEC_PARAMS                     = $(SYSTEMC_EXEC_PARAMS_$(SIMULATOR))
     29EXEC_PARAMS                     = $(SYSTEMC_EXEC_PARAMS_$(SIMULATOR_SYSTEMC))
    3030EXEC_LOG                        = $(patsubst $(DIR_CFG_GEN)/%.cfg,$(DIR_LOG)/%.exec.log,$(wildcard $(DIR_CFG_GEN)/*.cfg))       \
    3131                                  $(patsubst $(DIR_CFG_USER)/%.cfg,$(DIR_LOG)/%.exec.log,$(wildcard $(DIR_CFG_USER)/*.cfg))
     
    3535.PRECIOUS                       : $(DIR_BIN)/%.x $(DIR_LOG)/%.exec.log
    3636#.NOTPARALLEL                   : clean clean_all help
     37
     38vpath   %.cfg   $(DIR_CFG_USER):$(DIR_CFG_GEN)
     39vpath   %.x     $(DIR_BIN)
    3740
    3841all_selftest                    : test_env $(DIR_OBJ) $(DIR_BIN) $(DIR_LOG)
     
    168171                                done;
    169172
    170 $(DIR_LOG)/%.exec.log           : $(DIR_CFG_GEN)/%.cfg  $(DIR_BIN)/$(EXEC).x
     173$(DIR_LOG)/%.exec.log           : %.cfg  $(EXEC).x
    171174                                @\
    172175                                $(ECHO) "Execute            : $*";\
    173                                 export SYSTEMC=$(SYSTEMC_$(SIMULATOR)); $(EXEC_PREFIX) $(DIR_BIN)/$(EXEC).x $(EXEC_PARAMS) $* `$(CAT) $<` &> $@; \
     176                                export SYSTEMC=$(SYSTEMC_$(SIMULATOR_SYSTEMC)); $(EXEC_PREFIX) $(DIR_BIN)/$(EXEC).x $(EXEC_PARAMS) $* `$(CAT) $<` &> $@; \
    174177                                declare timing=`$(GREP) -h "Timing"  $@`;               \
    175178                                $(GREP) -q "Timing"  $@;                                \
     
    189192                                fi;
    190193
    191 $(DIR_LOG)/%.exec.log           : $(DIR_CFG_USER)/%.cfg $(DIR_BIN)/$(EXEC).x
    192                                 @\
    193                                 $(ECHO) "Execute            : $*";\
    194                                 export SYSTEMC=$(SYSTEMC_$(SIMULATOR)); $(EXEC_PREFIX) $(DIR_BIN)/$(EXEC).x $(EXEC_PARAMS) $* `$(CAT) $<` &> $@; \
    195                                 declare timing=`$(GREP) -h "Timing"  $@`;               \
    196                                 $(GREP) -q "Timing"  $@;                                \
    197                                 declare -i test_timing=$$?;                             \
    198                                 $(GREP) -q "Test OK" $@;                                \
    199                                 declare -i test_ok=$$?;                                 \
    200                                 $(GREP) -q "Test KO" $@;                                \
    201                                 declare -i test_ko=$$?;                                 \
    202                                 if $(TEST) $$test_ko -ne 0 -a $$test_ok -eq 0 -a $$test_timing -eq 0; \
    203                                 then $(ECHO) -e "                     $* ... OK\t$$timing";\
    204                                 else $(ECHO)    "                     $* ... KO";          \
    205                                 fi;
    206 
    207194$(DIR_BIN)/%.x                  : $(SOURCES) $(HEADERS) $(DIR_OBJ) $(DIR_BIN)
    208195                                @\
    209196                                $(ECHO) "Linkage            : $*";\
    210                                 case "${SIMULATOR}" in                                                          \
     197                                case "${SIMULATOR_SYSTEMC}" in                                                          \
    211198                                    "modelsim")                                                                 \
    212199                                        $(MAKE) vhdl_package;                                                   \
     
    226213                                    *)                                                                          \
    227214                                        $(MAKE) $(OBJECTS);                                                     \
    228                                         $(SYSTEMC_CXX_$(SIMULATOR)) $(LFLAGS) -o $@ $(OBJECTS) $(LIBRARY) $(LIBS);\
     215                                        $(SYSTEMC_CXX_$(SIMULATOR_SYSTEMC)) $(LFLAGS) -o $@ $(OBJECTS) $(LIBRARY) $(LIBS);\
    229216                                        ;;                                                                      \
    230217                                esac;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Synthesis

    r116 r117  
    1111DIR_VHDL                        = .
    1212WORK_NAME                       = work
    13 DIR_WORK                        = $(MORPHEO_TMP)/$(WORK_NAME)
     13DIR_WORK                        = $(DIR_TMP)/$(WORK_NAME)
    1414
    1515FPGA_CFG_FILE_LOCAL             = mkf.info
     
    9595                                $(XILINX_ENV); $(MAKE) -f Makefile.mkf $*.ngc &> $@;
    9696
    97 $(DIR_WORK)                     : $(XILINX_CORELIB)
     97$(DIR_WORK)                     :
    9898                                @\
    9999                                $(ECHO) "Create work-space  : $@";                                                      \
     100                                mkdir -p $@; \
    100101                                $(MODELTECH_VLIB) $@;                                                                   \
    101102                                $(MODELTECH_VMAP) $(XILINX_LIBNAME) $(XILINX_LIBDIR);                                   \
     
    104105                                   $(ECHO) "Run manualy \"$(XILINX_COMPXLIB)\" with $(XILINX_CORELIB) directory";       \
    105106                                fi;                                 
    106 
    107 $(XILINX_CORELIB)               :
    108                                 @\
    109                                 $(ECHO) "Create Corelib     : $@"; \
    110                                 $(MODELTECH_ENV); $(XILINX_COMPXLIB)
    111 
    112 #                               $(MODELTECH_ENV); $(XILINX_COMPXLIB) -s mti_se -arch all -lib all -l vhdl -dir $(XILINX_CORELIB) -w -p $(MODELTECH_BIN) -smartmodel_setup
    113                                
    114107
    115108$(DIR_LOG)/%.sim.log            : $(DIR_VHDL)/%.vhdl $(DIR_LOG)/%.vhdl.log
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Constants.h

    r116 r117  
    3939typedef enum
    4040  {
    41     TYPE_ALU                               = 0x0,       // 00000 - unit multiple
    42     TYPE_SHIFT                             = 0x1,       // 00001 - unit multiple
    43     TYPE_MOVE                              = 0x2,       // 00010 - unit multiple
    44     TYPE_TEST                              = 0x3,       // 00011 - unit multiple
    45     TYPE_MUL                               = 0x4,       // 00100 - unit multiple
    46     TYPE_DIV                               = 0x5,       // 00101 - unit multiple, type optionnal
    47     TYPE_EXTEND                            = 0x6,       // 00110 - unit multiple, type optionnal
    48     TYPE_FIND                              = 0x7,       // 00111 - unit multiple, type optionnal
    49     TYPE_SPECIAL                           = 0x8,       // 01000 - unit uniq
    50     TYPE_CUSTOM                            = 0x9,       // 01001 - unit uniq    , type optionnal
    51     TYPE_BRANCH                            = 0xa,       // 01010 - unit multiple
    52     TYPE_MEMORY                            = 0xb        // 01011 - unit uniq
     41    TYPE_ALU                               = 0x0,       // 0000 - unit multiple
     42    TYPE_SHIFT                             = 0x1,       // 0000 - unit multiple
     43    TYPE_MOVE                              = 0x2,       // 0000 - unit multiple
     44    TYPE_TEST                              = 0x3,       // 0000 - unit multiple
     45    TYPE_MUL                               = 0x4,       // 0000 - unit multiple
     46    TYPE_DIV                               = 0x5,       // 0000 - unit multiple, type optionnal
     47    TYPE_EXTEND                            = 0x6,       // 0000 - unit multiple, type optionnal
     48    TYPE_FIND                              = 0x7,       // 0000 - unit multiple, type optionnal
     49    TYPE_SPECIAL                           = 0x8,       // 0000 - unit uniq
     50    TYPE_CUSTOM                            = 0x9,       // 0000 - unit uniq    , type optionnal
     51    TYPE_BRANCH                            = 0xa,       // 0000 - unit multiple
     52    TYPE_MEMORY                            = 0xb,       // 0000 - unit uniq    , type exclusive
     53    TYPE_INVALID                           = 0xf        // 1111 - none
    5354  } type_t;
    5455
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Parameters.h

    r113 r117  
    113113
    114114  public   :              uint32_t   _size_store_queue_ptr                  ;
    115 //public   :              bool       _have_port_store_queue_ptr             ; // always true (min = 1)
     115  public   :              bool       _have_port_store_queue_ptr             ; // always true (min = 1)
    116116
    117117  public   :              uint32_t   _size_general_data                     ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Version.h

    r116 r117  
    1010#define MORPHEO_MAJOR_VERSION "0"
    1111#define MORPHEO_MINOR_VERSION "2"
    12 #define MORPHEO_REVISION      "116"
     12#define MORPHEO_REVISION      "117"
    1313#define MORPHEO_CODENAME      "Castor"
    1414
    15 #define MORPHEO_DATE_DAY      "30
    16 #define MORPHEO_DATE_MONTH    "04"
     15#define MORPHEO_DATE_DAY      "16
     16#define MORPHEO_DATE_MONTH    "05"
    1717#define MORPHEO_DATE_YEAR     "2009"
    1818
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Parameters.cpp

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

    r88 r117  
    5858
    5959    param->_size_store_queue_ptr                  = _size_store_queue_ptr                  ;
    60 //  param->_have_port_store_queue_ptr             = _have_port_store_queue_ptr             ; // always true (min = 1)
     60    param->_have_port_store_queue_ptr             = _have_port_store_queue_ptr             ; // always true (min = 1)
    6161
    6262    param->_size_general_data                     = _size_general_data                     ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/SPR_access_mode_implement_group.cpp

    r97 r117  
    3232            _spr_generic [GROUP_SYSTEM_AND_CONTROL ][  20]._user_access_mode       = SPR_ACCESS_MODE_READ_ONLY_COND;
    3333            _spr_generic [GROUP_SYSTEM_AND_CONTROL ][  20]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
     34           
     35            // new register : CID, TID, TSR
     36            _spr_generic [GROUP_SYSTEM_AND_CONTROL ][  21]._user_access_mode       = SPR_ACCESS_MODE_READ_ONLY;
     37            _spr_generic [GROUP_SYSTEM_AND_CONTROL ][  21]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
     38            _spr_generic [GROUP_SYSTEM_AND_CONTROL ][  22]._user_access_mode       = SPR_ACCESS_MODE_READ_ONLY;
     39            _spr_generic [GROUP_SYSTEM_AND_CONTROL ][  22]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
     40            _spr_generic [GROUP_SYSTEM_AND_CONTROL ][  23]._user_access_mode       = SPR_ACCESS_MODE_READ_ONLY;
     41            _spr_generic [GROUP_SYSTEM_AND_CONTROL ][  23]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
    3442           
    3543            const uint32_t nb_shadow = 1; // max 16
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Simulation_test_end.cpp

    r113 r117  
    1515  bool simulation_test_end (void)
    1616  {
    17     msg("##########[ cycle %d ]\n",static_cast<uint32_t>(simulation_cycle()));
     17    msgInformation("##########[ cycle %.0f ]\n",static_cast<double>(simulation_cycle()));
    1818
    1919    // Test if a stop condition is activate
  • trunk/IPs/systemC/processor/Morpheo/Common/include/ErrorMorpheo.h

    r88 r117  
    2222  class ErrorMorpheo : public std::exception
    2323  {
    24     // -----[ fields ]----------------------------------------------------
     24    // -----[ fields ]----------------------------------------------------
    2525  private : std::string _msg;
    2626   
    27     // -----[ methods ]---------------------------------------------------
     27    // -----[ methods ]---------------------------------------------------
    2828  public  :             ErrorMorpheo  ()                throw() {_msg = toString("%s ",MSG_ERROR); _msg+="Exception detected ...";}
    2929  public  :             ErrorMorpheo  (std::string msg) throw() {_msg = toString("%s ",MSG_ERROR); _msg+=msg;}
     
    3434    {
    3535#ifdef DEBUG
    36       _msg = toString(_("%s <%s> at line %d, in file %s : %s"),MSG_ERROR,funcname.c_str(),line,file.c_str(),msg.c_str());
     36      _msg = toString(_("\n%s at line %d, in file %s"),MSG_ERROR,line,file.c_str());
     37      _msg = toString(_("\n%s <%s> %s"),MSG_ERROR,funcname.c_str(),msg.c_str());
    3738#else
    38       _msg = toString(_("%s %s"),MSG_ERROR,msg.c_str());
     39      _msg = toString(_("\n%s %s"),MSG_ERROR,msg.c_str());
    3940#endif
    4041    }
     
    4445  };
    4546
    46   class TestMorpheo : public std::exception
    47   {
    48     // -----[ fields ]----------------------------------------------------
    49   private : std::string _msg;
     47//   class TestMorpheo : public std::exception
     48//   {
     49//     // -----[ fields ]----------------------------------------------------
     50//   private : std::string _msg;
    5051   
    51     // -----[ methods ]---------------------------------------------------
    52   public  :             TestMorpheo   ()                throw() {_msg=_("Test error ...");}
    53   public  :             TestMorpheo   (std::string msg) throw() {_msg=msg;}
    54   public  :             ~TestMorpheo  (void)            throw() {}
    55   public  : const char* what          ()    const       throw() { return ( _msg.c_str() );}
    56   };
     52//     // -----[ methods ]---------------------------------------------------
     53//   public  :             TestMorpheo   ()                throw() {_msg=_("Test error ...");}
     54//   public  :             TestMorpheo   (std::string msg) throw() {_msg=msg;}
     55//   public  :             ~TestMorpheo  (void)            throw() {}
     56//   public  : const char* what          ()    const       throw() { return ( _msg.c_str() );}
     57//   };
    5758
    5859}; // end namespace morpheo             
  • trunk/IPs/systemC/processor/Morpheo/Common/src/MemCheck.cpp

    r115 r117  
    1414
    1515// Global flags set by macros in MemCheck.h
    16 bool traceFlag  = true;
     16bool traceFlag  = false;
    1717bool activeFlag = false;
    1818
     
    137137void operator delete(void* p)
    138138{
    139   memMap_it it = findPtr(p);
     139  bool can_free = true;
    140140 
    141   if (it != memMap.end())
     141  if (activeFlag)
    142142    {
     143      memMap_it it = findPtr(p);
     144     
     145      if (it != memMap.end())
     146        {
     147          // this pointer is previously allocated
     148          delPtr(p);
     149         
     150        }
     151      else
     152        {
     153          // this pointer is not previously allocated
     154
     155          can_free = false;
     156          msgError("Attempt to delete unknown pointer: %p\n", p);
     157        }
     158    }
     159
     160 
     161  if (can_free)
     162    {
     163      if(traceFlag)
     164        msgInformation("Deleted memory at address %p\n", p);
     165     
    143166      free(p);
    144       delPtr(p);
    145 
    146       if(traceFlag)
    147         msgInformation("Deleted memory at address %p\n", p);
    148167    }
    149   else
    150     if(!p && activeFlag)
    151       msgError("Attempt to delete unknown pointer: %p\n", p);
    152168}
    153169
  • trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_0.cfg

    r115 r117  
    7474
    7575  <front_end id="0">       
     76    <parameter name="nb_context"                            value="1" />
    7677    <parameter name="nb_decod_unit"                         value="1" />
    7778    <parameter name="nb_inst_branch_predict"                value="1" />
     
    156157  <parameter name="dcache_port_load_balancing"              value="1" />
    157158
     159  <link name="link_context_with_thread"                src="0"     dest="0.0" />
    158160  <link name="link_decod_unit_with_decod_bloc"         src="0"     dest="0.0" />
    159161  <link name="link_rename_unit_with_rename_bloc"       src="0"     dest="0.0" />
  • trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_1.cfg

    r112 r117  
    11<?xml version="1.0" encoding="ISO-8859-1" ?>
    22
    3 <core name="Instance_scalar_1">
     3<core name="Instance_x1_w1_1">
    44
    55  <thread id="0">             
     
    1717  <decod_bloc id="0">                                       
    1818    <parameter name="size_decod_queue"                      value="2" />
     19    <parameter name="decod_queue_scheme"                    value="0" />
    1920    <parameter name="nb_inst_decod"                         value="1" />
    2021    <parameter name="nb_context_select"                     value="1" />
     
    3031    <parameter name="rename_select_nb_front_end_select"     value="1" />
    3132    <parameter name="nb_general_register"                   value="64"/>
    32     <parameter name="nb_special_register"                   value="4" />
     33    <parameter name="nb_special_register"                   value="16" />
    3334    <parameter name="nb_reg_free"                           value="1" />
    3435    <parameter name="nb_rename_unit_bank"                   value="1" />
     
    6162    <parameter name="nb_inst_functionnal_unit" value="1" />
    6263
    63     <timing type="0" latence="1" delay="1" />
     64    <timing type="0"  latence="1" delay="1" />
     65    <timing type="1"  latence="1" delay="1" />
     66    <timing type="2"  latence="1" delay="1" />
     67    <timing type="3"  latence="1" delay="1" />
     68    <timing type="4"  latence="1" delay="1" />
     69    <timing type="6"  latence="1" delay="1" />
     70    <timing type="7"  latence="1" delay="1" />
     71    <timing type="8"  latence="1" delay="1" />
     72    <timing type="10" latence="1" delay="1" />
    6473  </functionnal_unit>
    6574
    6675  <front_end id="0">       
     76    <parameter name="nb_context"                            value="1" />
    6777    <parameter name="nb_decod_unit"                         value="1" />
    6878    <parameter name="nb_inst_branch_predict"                value="1" />
     
    7484    <parameter name="btb_victim_scheme"                     value="1" />
    7585    <parameter name="dir_predictor_scheme"                  value="1" />
     86
     87    <predictor id="0">                                     
     88      <parameter name="dir_have_bht"                        value="0" />
     89      <parameter name="dir_have_pht"                        value="0" />
     90    </predictor>                                           
     91                                                           
     92    <predictor id="1">                                     
     93      <parameter name="dir_have_bht"                        value="0" />
     94      <parameter name="dir_have_pht"                        value="0" />
     95    </predictor>                                           
     96                                                           
     97    <predictor id="2">                                     
     98      <parameter name="dir_have_bht"                        value="0" />
     99      <parameter name="dir_have_pht"                        value="0" />
     100    </predictor>
    76101  </front_end>
    77102
     
    90115    <parameter name="size_issue_queue"                      value="4" />
    91116    <parameter name="nb_issue_queue_bank"                   value="1" />
     117    <parameter name="issue_queue_scheme"                    value="0" />
    92118    <parameter name="issue_priority"                        value="1" />
    93119    <parameter name="issue_load_balancing"                  value="1" />
     
    101127    <parameter name="nb_write_unit"                         value="1" />
    102128    <parameter name="nb_gpr_bank"                           value="1" />
    103     <parameter name="nb_gpr_port_read_by_bank"              value="1" />
     129    <parameter name="nb_gpr_port_read_by_bank"              value="2" />
    104130    <parameter name="nb_gpr_port_write_by_bank"             value="1" />
    105131    <parameter name="nb_spr_bank"                           value="1" />
     
    131157  <parameter name="dcache_port_load_balancing"              value="1" />
    132158
     159  <link name="link_context_with_thread"                src="0"     dest="0.0" />
    133160  <link name="link_decod_unit_with_decod_bloc"         src="0"     dest="0.0" />
    134161  <link name="link_rename_unit_with_rename_bloc"       src="0"     dest="0.0" />
  • trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_2.cfg

    r112 r117  
    11<?xml version="1.0" encoding="ISO-8859-1" ?>
    22
    3 <core name="Instance_scalar_2">
     3<core name="Instance_x1_w1_2">
    44
    55  <thread id="0">             
     
    1717  <decod_bloc id="0">                                       
    1818    <parameter name="size_decod_queue"                      value="4" />
     19    <parameter name="decod_queue_scheme"                    value="0" />
    1920    <parameter name="nb_inst_decod"                         value="1" />
    2021    <parameter name="nb_context_select"                     value="1" />
     
    3031    <parameter name="rename_select_nb_front_end_select"     value="1" />
    3132    <parameter name="nb_general_register"                   value="64"/>
    32     <parameter name="nb_special_register"                   value="4" />
     33    <parameter name="nb_special_register"                   value="16" />
    3334    <parameter name="nb_reg_free"                           value="1" />
    3435    <parameter name="nb_rename_unit_bank"                   value="1" />
     
    6162    <parameter name="nb_inst_functionnal_unit" value="1" />
    6263
    63     <timing type="0" latence="1" delay="1" />
     64    <timing type="0"  latence="1" delay="1" />
     65    <timing type="1"  latence="1" delay="1" />
     66    <timing type="2"  latence="1" delay="1" />
     67    <timing type="3"  latence="1" delay="1" />
     68    <timing type="4"  latence="1" delay="1" />
     69    <timing type="6"  latence="1" delay="1" />
     70    <timing type="7"  latence="1" delay="1" />
     71    <timing type="8"  latence="1" delay="1" />
     72    <timing type="10" latence="1" delay="1" />
    6473  </functionnal_unit>
    6574
    6675  <front_end id="0">       
     76    <parameter name="nb_context"                            value="1" />
    6777    <parameter name="nb_decod_unit"                         value="1" />
    6878    <parameter name="nb_inst_branch_predict"                value="1" />
     
    7484    <parameter name="btb_victim_scheme"                     value="3" />
    7585    <parameter name="dir_predictor_scheme"                  value="1" />
     86
     87    <predictor id="0">                                     
     88      <parameter name="dir_have_bht"                        value="0" />
     89      <parameter name="dir_have_pht"                        value="0" />
     90    </predictor>                                           
     91                                                           
     92    <predictor id="1">                                     
     93      <parameter name="dir_have_bht"                        value="0" />
     94      <parameter name="dir_have_pht"                        value="0" />
     95    </predictor>                                           
     96                                                           
     97    <predictor id="2">                                     
     98      <parameter name="dir_have_bht"                        value="0" />
     99      <parameter name="dir_have_pht"                        value="0" />
     100    </predictor>
    76101  </front_end>
    77102
     
    90115    <parameter name="size_issue_queue"                      value="8" />
    91116    <parameter name="nb_issue_queue_bank"                   value="2" />
     117    <parameter name="issue_queue_scheme"                    value="0" />
    92118    <parameter name="issue_priority"                        value="1" />
    93119    <parameter name="issue_load_balancing"                  value="1" />
     
    100126    <parameter name="nb_read_unit"                          value="1" />
    101127    <parameter name="nb_write_unit"                         value="1" />
    102     <parameter name="nb_gpr_bank"                           value="2" />
    103     <parameter name="nb_gpr_port_read_by_bank"              value="1" />
     128    <parameter name="nb_gpr_bank"                           value="1" />
     129    <parameter name="nb_gpr_port_read_by_bank"              value="2" />
    104130    <parameter name="nb_gpr_port_write_by_bank"             value="1" />
    105131    <parameter name="nb_spr_bank"                           value="2" />
     
    131157  <parameter name="dcache_port_load_balancing"              value="1" />
    132158
     159  <link name="link_context_with_thread"                src="0"     dest="0.0" />
    133160  <link name="link_decod_unit_with_decod_bloc"         src="0"     dest="0.0" />
    134161  <link name="link_rename_unit_with_rename_bloc"       src="0"     dest="0.0" />
  • trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_3.cfg

    r112 r117  
    11<?xml version="1.0" encoding="ISO-8859-1" ?>
    22
    3 <core name="Instance_scalar_2">
     3<core name="Instance_x1_w1_3">
    44
    55  <thread id="0">             
     
    1717  <decod_bloc id="0">                                       
    1818    <parameter name="size_decod_queue"                      value="4" />
     19    <parameter name="decod_queue_scheme"                    value="0" />
    1920    <parameter name="nb_inst_decod"                         value="1" />
    2021    <parameter name="nb_context_select"                     value="1" />
     
    3031    <parameter name="rename_select_nb_front_end_select"     value="1" />
    3132    <parameter name="nb_general_register"                   value="64"/>
    32     <parameter name="nb_special_register"                   value="4" />
     33    <parameter name="nb_special_register"                   value="16" />
    3334    <parameter name="nb_reg_free"                           value="1" />
    3435    <parameter name="nb_rename_unit_bank"                   value="1" />
    3536  </rename_bloc>                                           
    3637                                                           
    37   <read_bloc id="0">                                       
    38     <parameter name="size_read_queue"                       value="4" />
    39     <parameter name="size_reservation_station"              value="4" />
    40     <parameter name="nb_inst_retire_reservation_station"    value="1" />
    41   </read_bloc>                                             
    42 
    43   <read_bloc id="1">                                       
     38  <read_bloc id="0,1">                                       
    4439    <parameter name="size_read_queue"                       value="4" />
    4540    <parameter name="size_reservation_station"              value="4" />
     
    4742  </read_bloc>                                             
    4843                                                           
    49   <write_bloc id="0">                                       
    50     <parameter name="size_write_queue"                      value="4" />
    51     <parameter name="size_execute_queue"                    value="4" />
    52     <parameter name="nb_bypass_write"                       value="0" />
    53   </write_bloc>                                             
    54 
    55   <write_bloc id="1">                                       
     44  <write_bloc id="0,1">                                       
    5645    <parameter name="size_write_queue"                      value="4" />
    5746    <parameter name="size_execute_queue"                    value="4" />
     
    7362    <parameter name="nb_inst_functionnal_unit" value="1" />
    7463
    75     <timing type="0" latence="1" delay="1" />
     64    <timing type="0"  latence="1" delay="1" />
     65    <timing type="1"  latence="1" delay="1" />
     66    <timing type="2"  latence="1" delay="1" />
     67    <timing type="3"  latence="1" delay="1" />
     68    <timing type="4"  latence="1" delay="1" />
     69    <timing type="6"  latence="1" delay="1" />
     70    <timing type="7"  latence="1" delay="1" />
     71    <timing type="8"  latence="1" delay="1" />
     72    <timing type="10" latence="1" delay="1" />
    7673  </functionnal_unit>
    7774
    7875  <front_end id="0">       
     76    <parameter name="nb_context"                            value="1" />
    7977    <parameter name="nb_decod_unit"                         value="1" />
    8078    <parameter name="nb_inst_branch_predict"                value="1" />
     
    8684    <parameter name="btb_victim_scheme"                     value="3" />
    8785    <parameter name="dir_predictor_scheme"                  value="1" />
     86
     87    <predictor id="0">                                     
     88      <parameter name="dir_have_bht"                        value="0" />
     89      <parameter name="dir_have_pht"                        value="0" />
     90    </predictor>                                           
     91                                                           
     92    <predictor id="1">                                     
     93      <parameter name="dir_have_bht"                        value="0" />
     94      <parameter name="dir_have_pht"                        value="0" />
     95    </predictor>                                           
     96                                                           
     97    <predictor id="2">                                     
     98      <parameter name="dir_have_bht"                        value="0" />
     99      <parameter name="dir_have_pht"                        value="0" />
     100    </predictor>
    88101  </front_end>
    89102
     
    102115    <parameter name="size_issue_queue"                      value="8" />
    103116    <parameter name="nb_issue_queue_bank"                   value="2" />
     117    <parameter name="issue_queue_scheme"                    value="0" />
    104118    <parameter name="issue_priority"                        value="1" />
    105119    <parameter name="issue_load_balancing"                  value="1" />
     
    110124
    111125  <execute_loop id="0">
    112     <parameter name="nb_read_unit"                          value="1" />
    113     <parameter name="nb_write_unit"                         value="1" />
     126    <parameter name="nb_read_unit"                          value="2" />
     127    <parameter name="nb_write_unit"                         value="2" />
    114128    <parameter name="nb_gpr_bank"                           value="2" />
    115     <parameter name="nb_gpr_port_read_by_bank"              value="1" />
     129    <parameter name="nb_gpr_port_read_by_bank"              value="2" />
    116130    <parameter name="nb_gpr_port_write_by_bank"             value="1" />
    117131    <parameter name="nb_spr_bank"                           value="2" />
     
    143157  <parameter name="dcache_port_load_balancing"              value="1" />
    144158
     159  <link name="link_context_with_thread"                src="0"     dest="0.0" />
    145160  <link name="link_decod_unit_with_decod_bloc"         src="0"     dest="0.0" />
    146161  <link name="link_rename_unit_with_rename_bloc"       src="0"     dest="0.0" />
     
    157172
    158173  <link name="table_dispatch"                          src="0.0.0" dest="1"   />
    159   <link name="link_read_bloc_and_load_store_unit"      src="0.0"   dest="0"   />
    160   <link name="link_read_bloc_and_load_store_unit"      src="1.0"   dest="1"   />
    161   <link name="link_read_bloc_and_functionnal_unit"     src="0.0"   dest="1"   />
    162   <link name="link_read_bloc_and_functionnal_unit"     src="1.0"   dest="0"   />
    163   <link name="link_write_bloc_and_load_store_unit"     src="0.0"   dest="0"   />
     174  <link name="table_dispatch"                          src="0.0.1" dest="1"   />
     175
     176  <link name="link_read_bloc_and_load_store_unit"      src="0.0"   dest="1"   />
     177  <link name="link_read_bloc_and_load_store_unit"      src="1.0"   dest="0"   />
     178  <link name="link_read_bloc_and_functionnal_unit"     src="0.0"   dest="0"   />
     179  <link name="link_read_bloc_and_functionnal_unit"     src="1.0"   dest="1"   />
     180
     181  <link name="link_write_bloc_and_load_store_unit"     src="0.0"   dest="1"   />
    164182  <link name="link_write_bloc_and_load_store_unit"     src="1.0"   dest="1"   />
    165   <link name="link_write_bloc_and_functionnal_unit"    src="0.0"   dest="0"   />
     183  <link name="link_write_bloc_and_functionnal_unit"    src="0.0"   dest="1"   />
    166184  <link name="link_write_bloc_and_functionnal_unit"    src="1.0"   dest="1"   />
     185
    167186  <link name="link_thread_and_functionnal_unit"        src="0.0"   dest="1"   />
    168187
  • trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_4.cfg

    r112 r117  
    11<?xml version="1.0" encoding="ISO-8859-1" ?>
    22
    3 <core name="Instance_scalar_2">
     3<core name="Instance_x1_w1_4">
    44
    55  <thread id="0">             
     
    1717  <decod_bloc id="0">                                       
    1818    <parameter name="size_decod_queue"                      value="4" />
     19    <parameter name="decod_queue_scheme"                    value="0" />
    1920    <parameter name="nb_inst_decod"                         value="1" />
    2021    <parameter name="nb_context_select"                     value="1" />
     
    3031    <parameter name="rename_select_nb_front_end_select"     value="1" />
    3132    <parameter name="nb_general_register"                   value="64"/>
    32     <parameter name="nb_special_register"                   value="4" />
     33    <parameter name="nb_special_register"                   value="16" />
    3334    <parameter name="nb_reg_free"                           value="1" />
    3435    <parameter name="nb_rename_unit_bank"                   value="1" />
    3536  </rename_bloc>                                           
    3637                                                           
    37   <read_bloc id="0">                                       
     38  <read_bloc id="0,1,2">                                       
    3839    <parameter name="size_read_queue"                       value="4" />
    3940    <parameter name="size_reservation_station"              value="4" />
    4041    <parameter name="nb_inst_retire_reservation_station"    value="1" />
    4142  </read_bloc>                                             
    42 
    43   <read_bloc id="1">                                       
    44     <parameter name="size_read_queue"                       value="4" />
    45     <parameter name="size_reservation_station"              value="4" />
    46     <parameter name="nb_inst_retire_reservation_station"    value="1" />
    47   </read_bloc>                                             
    48                                                            
    49   <write_bloc id="0">                                       
    50     <parameter name="size_write_queue"                      value="4" />
    51     <parameter name="size_execute_queue"                    value="4" />
    52     <parameter name="nb_bypass_write"                       value="0" />
    53   </write_bloc>                                             
    54 
    55   <write_bloc id="1">                                       
     43                                                           
     44  <write_bloc id="0,1,2">                                       
    5645    <parameter name="size_write_queue"                      value="4" />
    5746    <parameter name="size_execute_queue"                    value="4" />
     
    7261  <functionnal_unit id="0">
    7362    <parameter name="nb_inst_functionnal_unit" value="1" />
     63
     64    <timing type="0"  latence="1" delay="1" />
     65    <timing type="1"  latence="1" delay="1" />
     66    <timing type="2"  latence="1" delay="1" />
     67    <timing type="3"  latence="1" delay="1" />
     68    <timing type="4"  latence="1" delay="1" />
     69    <timing type="6"  latence="1" delay="1" />
     70    <timing type="7"  latence="1" delay="1" />
     71    <timing type="8"  latence="1" delay="1" />
     72    <timing type="10" latence="1" delay="1" />
    7473  </functionnal_unit>
    7574
    7675  <functionnal_unit id="1">
    7776    <parameter name="nb_inst_functionnal_unit" value="1" />
     77
     78    <timing type="0"  latence="1" delay="1" />
     79    <timing type="1"  latence="1" delay="1" />
     80    <timing type="2"  latence="1" delay="1" />
     81    <timing type="3"  latence="1" delay="1" />
     82    <timing type="4"  latence="1" delay="1" />
     83    <timing type="6"  latence="1" delay="1" />
     84    <timing type="7"  latence="1" delay="1" />
     85
     86    <timing type="10" latence="1" delay="1" />
    7887  </functionnal_unit>
    7988
    8089  <front_end id="0">       
     90    <parameter name="nb_context"                            value="1" />
    8191    <parameter name="nb_decod_unit"                         value="1" />
    8292    <parameter name="nb_inst_branch_predict"                value="1" />
     
    99109    <parameter name="nb_execute_loop_select"                value="1" />
    100110    <parameter name="size_re_order_buffer"                  value="32"/>
    101     <parameter name="nb_re_order_buffer_bank"               value="2" />
     111    <parameter name="nb_re_order_buffer_bank"               value="8" />
    102112    <parameter name="commit_priority"                       value="1" />
    103113    <parameter name="commit_load_balancing"                 value="1" />
    104114    <parameter name="size_issue_queue"                      value="8" />
    105115    <parameter name="nb_issue_queue_bank"                   value="2" />
     116    <parameter name="issue_queue_scheme"                    value="0" />
    106117    <parameter name="issue_priority"                        value="1" />
    107118    <parameter name="issue_load_balancing"                  value="1" />
     
    112123
    113124  <execute_loop id="0">
    114     <parameter name="nb_read_unit"                          value="1" />
    115     <parameter name="nb_write_unit"                         value="1" />
     125    <parameter name="nb_read_unit"                          value="3" />
     126    <parameter name="nb_write_unit"                         value="3" />
    116127    <parameter name="nb_gpr_bank"                           value="2" />
    117     <parameter name="nb_gpr_port_read_by_bank"              value="1" />
     128    <parameter name="nb_gpr_port_read_by_bank"              value="2" />
    118129    <parameter name="nb_gpr_port_write_by_bank"             value="1" />
    119130    <parameter name="nb_spr_bank"                           value="2" />
     
    148159  <parameter name="dcache_port_load_balancing"              value="1" />
    149160
     161  <link name="link_context_with_thread"                src="0"     dest="0.0" />
    150162  <link name="link_decod_unit_with_decod_bloc"         src="0"     dest="0.0" />
    151163  <link name="link_rename_unit_with_rename_bloc"       src="0"     dest="0.0" />
     164
    152165  <link name="link_read_unit_with_read_bloc"           src="0"     dest="0.0" />
    153166  <link name="link_read_unit_with_read_bloc"           src="1"     dest="0.1" />
     167  <link name="link_read_unit_with_read_bloc"           src="2"     dest="0.2" />
    154168  <link name="link_write_unit_with_write_bloc"         src="0"     dest="0.0" />
    155169  <link name="link_write_unit_with_write_bloc"         src="1"     dest="0.1" />
     170  <link name="link_write_unit_with_write_bloc"         src="2"     dest="0.2" />
     171
    156172  <link name="link_decod_bloc_with_thread"             src="0"     dest="0"   />
    157173  <link name="link_rename_bloc_with_front_end"         src="0"     dest="0"   />
     
    162178
    163179  <link name="table_dispatch"                          src="0.0.0" dest="1"   />
    164   <link name="link_read_bloc_and_load_store_unit"      src="0.0"   dest="0"   />
    165   <link name="link_read_bloc_and_load_store_unit"      src="1.0"   dest="1"   />
    166   <link name="link_read_bloc_and_functionnal_unit"     src="0.0"   dest="1"   />
    167   <link name="link_read_bloc_and_functionnal_unit"     src="0.1"   dest="1"   />
    168   <link name="link_read_bloc_and_functionnal_unit"     src="1.0"   dest="0"   />
     180  <link name="table_dispatch"                          src="0.0.1" dest="1"   />
     181  <link name="table_dispatch"                          src="0.0.2" dest="1"   />
     182
     183  <link name="link_read_bloc_and_load_store_unit"      src="0.0"   dest="1"   />
     184  <link name="link_read_bloc_and_load_store_unit"      src="1.0"   dest="0"   />
     185  <link name="link_read_bloc_and_load_store_unit"      src="2.0"   dest="0"   />
     186
     187  <link name="link_read_bloc_and_functionnal_unit"     src="0.0"   dest="0"   />
     188  <link name="link_read_bloc_and_functionnal_unit"     src="0.1"   dest="0"   />
     189  <link name="link_read_bloc_and_functionnal_unit"     src="1.0"   dest="1"   />
    169190  <link name="link_read_bloc_and_functionnal_unit"     src="1.1"   dest="0"   />
    170   <link name="link_write_bloc_and_load_store_unit"     src="0.0"   dest="0"   />
     191  <link name="link_read_bloc_and_functionnal_unit"     src="2.0"   dest="0"   />
     192  <link name="link_read_bloc_and_functionnal_unit"     src="2.1"   dest="1"   />
     193
     194  <link name="link_write_bloc_and_load_store_unit"     src="0.0"   dest="1"   />
    171195  <link name="link_write_bloc_and_load_store_unit"     src="1.0"   dest="1"   />
    172   <link name="link_write_bloc_and_functionnal_unit"    src="0.0"   dest="0"   />
    173   <link name="link_write_bloc_and_functionnal_unit"    src="0.1"   dest="0"   />
     196  <link name="link_write_bloc_and_load_store_unit"     src="2.0"   dest="1"   />
     197  <link name="link_write_bloc_and_functionnal_unit"    src="0.0"   dest="1"   />
     198  <link name="link_write_bloc_and_functionnal_unit"    src="0.1"   dest="1"   />
    174199  <link name="link_write_bloc_and_functionnal_unit"    src="1.0"   dest="1"   />
    175200  <link name="link_write_bloc_and_functionnal_unit"    src="1.1"   dest="1"   />
     201  <link name="link_write_bloc_and_functionnal_unit"    src="2.0"   dest="1"   />
     202  <link name="link_write_bloc_and_functionnal_unit"    src="2.1"   dest="1"   />
     203
    176204  <link name="link_thread_and_functionnal_unit"        src="0.0"   dest="1"   />
     205  <link name="link_thread_and_functionnal_unit"        src="0.1"   dest="1"   />
    177206
    178207</core>
  • trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_1.cfg

    r112 r117  
    11<?xml version="1.0" encoding="ISO-8859-1" ?>
    22
    3 <core name="Instance_scalar_2">
     3<core name="Instance_x1_w2_1">
    44
    55  <thread id="0">             
     
    1717  <decod_bloc id="0">                                       
    1818    <parameter name="size_decod_queue"                      value="4" />
     19    <parameter name="decod_queue_scheme"                    value="0" />
    1920    <parameter name="nb_inst_decod"                         value="2" />
    2021    <parameter name="nb_context_select"                     value="1" />
     
    3031    <parameter name="rename_select_nb_front_end_select"     value="1" />
    3132    <parameter name="nb_general_register"                   value="64"/>
    32     <parameter name="nb_special_register"                   value="4" />
     33    <parameter name="nb_special_register"                   value="16"/>
    3334    <parameter name="nb_reg_free"                           value="1" />
    34     <parameter name="nb_rename_unit_bank"                   value="1" />
     35    <parameter name="nb_rename_unit_bank"                   value="2" />
    3536  </rename_bloc>                                           
    3637                                                           
    37   <read_bloc id="0">                                       
     38  <read_bloc id="0,1,2">                                       
    3839    <parameter name="size_read_queue"                       value="4" />
    3940    <parameter name="size_reservation_station"              value="4" />
    40     <parameter name="nb_inst_retire_reservation_station"    value="2" />
     41    <parameter name="nb_inst_retire_reservation_station"    value="1" />
    4142  </read_bloc>                                             
    42 
    43   <read_bloc id="1">                                       
    44     <parameter name="size_read_queue"                       value="4" />
    45     <parameter name="size_reservation_station"              value="4" />
    46     <parameter name="nb_inst_retire_reservation_station"    value="2" />
    47   </read_bloc>                                             
    48                                                            
    49   <write_bloc id="0">                                       
    50     <parameter name="size_write_queue"                      value="4" />
    51     <parameter name="size_execute_queue"                    value="4" />
    52     <parameter name="nb_bypass_write"                       value="0" />
    53   </write_bloc>                                             
    54 
    55   <write_bloc id="1">                                       
     43                                                           
     44  <write_bloc id="0,1,2">                                       
    5645    <parameter name="size_write_queue"                      value="4" />
    5746    <parameter name="size_execute_queue"                    value="4" />
     
    7261  <functionnal_unit id="0">
    7362    <parameter name="nb_inst_functionnal_unit" value="1" />
     63
     64    <timing type="0"  latence="1" delay="1" />
     65    <timing type="1"  latence="1" delay="1" />
     66    <timing type="2"  latence="1" delay="1" />
     67    <timing type="3"  latence="1" delay="1" />
     68    <timing type="4"  latence="1" delay="1" />
     69    <timing type="6"  latence="1" delay="1" />
     70    <timing type="7"  latence="1" delay="1" />
     71
     72    <timing type="10" latence="1" delay="1" />
    7473  </functionnal_unit>
    7574
    7675  <functionnal_unit id="1">
    7776    <parameter name="nb_inst_functionnal_unit" value="1" />
     77
     78    <timing type="0"  latence="1" delay="1" />
     79    <timing type="1"  latence="1" delay="1" />
     80    <timing type="2"  latence="1" delay="1" />
     81    <timing type="3"  latence="1" delay="1" />
     82    <timing type="4"  latence="1" delay="1" />
     83    <timing type="6"  latence="1" delay="1" />
     84    <timing type="7"  latence="1" delay="1" />
     85    <timing type="8"  latence="1" delay="1" />
     86    <timing type="10" latence="1" delay="1" />
    7887  </functionnal_unit>
    7988
    8089  <front_end id="0">       
     90    <parameter name="nb_context"                            value="1" />
    8191    <parameter name="nb_decod_unit"                         value="1" />
    8292    <parameter name="nb_inst_branch_predict"                value="1" />
     
    8797    <parameter name="btb_size_counter"                      value="2" />
    8898    <parameter name="btb_victim_scheme"                     value="3" />
    89     <parameter name="dir_predictor_scheme"                  value="1" />
     99    <parameter name="dir_predictor_scheme"                  value="2" />
    90100  </front_end>
    91101
     
    104114    <parameter name="size_issue_queue"                      value="8" />
    105115    <parameter name="nb_issue_queue_bank"                   value="2" />
     116    <parameter name="issue_queue_scheme"                    value="0" />
    106117    <parameter name="issue_priority"                        value="1" />
    107118    <parameter name="issue_load_balancing"                  value="1" />
     
    112123
    113124  <execute_loop id="0">
    114     <parameter name="nb_read_unit"                          value="1" />
    115     <parameter name="nb_write_unit"                         value="1" />
     125    <parameter name="nb_read_unit"                          value="3" />
     126    <parameter name="nb_write_unit"                         value="3" />
    116127    <parameter name="nb_gpr_bank"                           value="2" />
    117     <parameter name="nb_gpr_port_read_by_bank"              value="1" />
    118     <parameter name="nb_gpr_port_write_by_bank"             value="1" />
     128    <parameter name="nb_gpr_port_read_by_bank"              value="2" />
     129    <parameter name="nb_gpr_port_write_by_bank"             value="2" />
    119130    <parameter name="nb_spr_bank"                           value="2" />
    120     <parameter name="nb_spr_port_read_by_bank"              value="1" />
    121     <parameter name="nb_spr_port_write_by_bank"             value="1" />
     131    <parameter name="nb_spr_port_read_by_bank"              value="2" />
     132    <parameter name="nb_spr_port_write_by_bank"             value="2" />
    122133    <parameter name="execution_unit_to_write_unit_priority" value="1" />
    123134    <parameter name="read_unit_to_execution_unit_priority"  value="1" />
     
    148159  <parameter name="dcache_port_load_balancing"              value="1" />
    149160
     161  <link name="link_context_with_thread"                src="0"     dest="0.0" />
    150162  <link name="link_decod_unit_with_decod_bloc"         src="0"     dest="0.0" />
    151163  <link name="link_rename_unit_with_rename_bloc"       src="0"     dest="0.0" />
     164
    152165  <link name="link_read_unit_with_read_bloc"           src="0"     dest="0.0" />
    153166  <link name="link_read_unit_with_read_bloc"           src="1"     dest="0.1" />
     167  <link name="link_read_unit_with_read_bloc"           src="2"     dest="0.2" />
    154168  <link name="link_write_unit_with_write_bloc"         src="0"     dest="0.0" />
    155169  <link name="link_write_unit_with_write_bloc"         src="1"     dest="0.1" />
     170  <link name="link_write_unit_with_write_bloc"         src="2"     dest="0.2" />
     171
    156172  <link name="link_decod_bloc_with_thread"             src="0"     dest="0"   />
    157173  <link name="link_rename_bloc_with_front_end"         src="0"     dest="0"   />
     
    162178
    163179  <link name="table_dispatch"                          src="0.0.0" dest="1"   />
    164   <link name="link_read_bloc_and_load_store_unit"      src="0.0"   dest="0"   />
    165   <link name="link_read_bloc_and_load_store_unit"      src="1.0"   dest="1"   />
    166   <link name="link_read_bloc_and_functionnal_unit"     src="0.0"   dest="1"   />
    167   <link name="link_read_bloc_and_functionnal_unit"     src="0.1"   dest="1"   />
    168   <link name="link_read_bloc_and_functionnal_unit"     src="1.0"   dest="0"   />
     180  <link name="table_dispatch"                          src="0.0.1" dest="1"   />
     181  <link name="table_dispatch"                          src="0.0.2" dest="1"   />
     182  <link name="table_dispatch"                          src="0.1.0" dest="1"   />
     183  <link name="table_dispatch"                          src="0.1.1" dest="1"   />
     184  <link name="table_dispatch"                          src="0.1.2" dest="1"   />
     185
     186  <link name="link_read_bloc_and_load_store_unit"      src="0.0"   dest="1"   />
     187  <link name="link_read_bloc_and_load_store_unit"      src="1.0"   dest="0"   />
     188  <link name="link_read_bloc_and_load_store_unit"      src="2.0"   dest="0"   />
     189
     190  <link name="link_read_bloc_and_functionnal_unit"     src="0.0"   dest="0"   />
     191  <link name="link_read_bloc_and_functionnal_unit"     src="0.1"   dest="0"   />
     192  <link name="link_read_bloc_and_functionnal_unit"     src="1.0"   dest="1"   />
    169193  <link name="link_read_bloc_and_functionnal_unit"     src="1.1"   dest="0"   />
    170   <link name="link_write_bloc_and_load_store_unit"     src="0.0"   dest="0"   />
     194  <link name="link_read_bloc_and_functionnal_unit"     src="2.0"   dest="0"   />
     195  <link name="link_read_bloc_and_functionnal_unit"     src="2.1"   dest="1"   />
     196
     197  <link name="link_write_bloc_and_load_store_unit"     src="0.0"   dest="1"   />
    171198  <link name="link_write_bloc_and_load_store_unit"     src="1.0"   dest="1"   />
    172   <link name="link_write_bloc_and_functionnal_unit"    src="0.0"   dest="0"   />
    173   <link name="link_write_bloc_and_functionnal_unit"    src="0.1"   dest="0"   />
     199  <link name="link_write_bloc_and_load_store_unit"     src="2.0"   dest="1"   />
     200  <link name="link_write_bloc_and_functionnal_unit"    src="0.0"   dest="1"   />
     201  <link name="link_write_bloc_and_functionnal_unit"    src="0.1"   dest="1"   />
    174202  <link name="link_write_bloc_and_functionnal_unit"    src="1.0"   dest="1"   />
    175203  <link name="link_write_bloc_and_functionnal_unit"    src="1.1"   dest="1"   />
     204  <link name="link_write_bloc_and_functionnal_unit"    src="2.0"   dest="1"   />
     205  <link name="link_write_bloc_and_functionnal_unit"    src="2.1"   dest="1"   />
     206
    176207  <link name="link_thread_and_functionnal_unit"        src="0.0"   dest="1"   />
     208  <link name="link_thread_and_functionnal_unit"        src="0.1"   dest="1"   />
    177209
    178210</core>
  • trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w4_1.cfg

    r114 r117  
    11<?xml version="1.0" encoding="ISO-8859-1" ?>
    22
    3 <core name="Instance_debug">
     3<core name="Instance_x1_w4_1">
    44
    55  <thread id="0">             
     
    77    <parameter name="nb_inst_fetch"                         value="8" />
    88    <parameter name="ras_size_queue"                        value="8" />
    9     <parameter name="upt_size_queue"                        value="8" />
     9    <parameter name="upt_size_queue"                        value="4" />
    1010    <parameter name="ufpt_size_queue"                       value="4" />
    1111
     
    3131    <parameter name="rename_select_nb_front_end_select"     value="1" />
    3232    <parameter name="nb_general_register"                   value="256"/>
    33     <parameter name="nb_special_register"                   value="128" />
     33    <parameter name="nb_special_register"                   value="128"/>
    3434    <parameter name="nb_reg_free"                           value="8" />
    3535    <parameter name="nb_rename_unit_bank"                   value="8" />
     
    7979
    8080  <front_end id="0">       
     81    <parameter name="nb_context"                            value="1" />
    8182    <parameter name="nb_decod_unit"                         value="1" />
    8283    <parameter name="nb_inst_branch_predict"                value="1" />
     
    165166  <parameter name="dcache_port_load_balancing"              value="1" />
    166167
     168  <link name="link_context_with_thread"                src="0"     dest="0.0" />
    167169  <link name="link_decod_unit_with_decod_bloc"         src="0"     dest="0.0" />
    168170  <link name="link_rename_unit_with_rename_bloc"       src="0"     dest="0.0" />
     
    226228  <link name="link_read_bloc_and_functionnal_unit"     src="2.2"   dest="0"   />
    227229  <link name="link_read_bloc_and_functionnal_unit"     src="3.2"   dest="1"   />
     230
    228231  <link name="link_write_bloc_and_load_store_unit"     src="0.0"   dest="1"   />
    229232  <link name="link_write_bloc_and_load_store_unit"     src="1.0"   dest="1"   />
  • trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.gen

    r115 r117  
    108108  <parameter name="nb_read_unit"                          min="1"   max="8"    step="+ 1" default="1"   level="..." description="..." />
    109109  <parameter name="nb_execute_unit"                       min="1"   max="8"    step="+ 1" default="1"   level="..." description="..." />
    110   <parameter name="nb_write_unit"                         min="1"   max="8"    step="+ 1" default="1"   level="..." description="..." />
     110  <parameter name="nb_write_unit"                         min="1"   max="16"   step="+ 1" default="1"   level="..." description="..." />
    111111  <parameter name="nb_gpr_bank"                           min="1"   max="8"    step="* 2" default="1"   level="..." description="..." />
    112112  <parameter name="nb_gpr_port_read_by_bank"              min="1"   max="16"   step="+ 1" default="1"   level="..." description="..." />
  • trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.sim

    r115 r117  
    1010  <parameter  name="use_statistics"                         value="1"       />
    1111  <parameter  name="use_information"                        value="0"       />
    12   <parameter  name="use_header"                             value="1"       />
     12  <parameter  name="use_header"                             value="0"       />
    1313
    1414  <parameter  name="statistics_cycle_start"                 value="5"       />
    1515  <parameter  name="statistics_period"                      value="0"       />
    1616                                                           
    17 <<<<<<< .mine
    18   <parameter  name="simulation_nb_cycle"                    value="1000000"  />
    19 =======
    20   <parameter  name="simulation_nb_cycle"                    value="10000000"/>
    21 >>>>>>> .r114
     17  <parameter  name="simulation_nb_cycle"                    value="1000000000"/>
    2218  <parameter  name="simulation_nb_instruction"              value="0"       />
    2319                                                           
     
    2521  <parameter  name="directory_vhdl"                         value="."       />
    2622  <parameter  name="directory_position"                     value="."       />
    27   <parameter  name="directory_log"                          value="."       />
     23  <parameter  name="directory_log"                          value="/dsk/l1/misc/Morpheo/log/"       />
    2824                                                           
    2925  <parameter  name="debug_level"                            value="0"       />
    30 <<<<<<< .mine
    31   <parameter  name="debug_cycle_start"                      value="0"     />
    32   <parameter  name="debug_cycle_stop"                       value="2"     />
    33 =======
    34   <parameter  name="debug_cycle_start"                      value="600"     />
    35   <parameter  name="debug_cycle_stop"                       value="827"     />
    36 >>>>>>> .r114
     26  <parameter  name="debug_cycle_start"                      value="4250"    />
     27  <parameter  name="debug_cycle_stop"                       value="4400"    />
    3728  <parameter  name="debug_have_log_file"                    value="0"       />
    38   <parameter  name="debug_idle_cycle"                       value="100"     />
    39   <parameter  name="debug_idle_time"                        value="5"       />
     29  <parameter  name="debug_idle_cycle"                       value="1000"    />
     30  <parameter  name="debug_idle_time"                        value="10"      />
    4031
    4132  <component  name="Comparator"                             model="systemc" debug="0" />
  • trunk/IPs/systemC/processor/Morpheo/Script/instruction_flow_dump.sh

    r114 r117  
    2020{
    2121    if test ${#} -ne 2; then
     22        usage ${*};
     23    fi;
     24
     25    if test ! -f ${1} -o ! -f ${2}; then
    2226        usage ${*};
    2327    fi;
Note: See TracChangeset for help on using the changeset viewer.