Ignore:
Timestamp:
Dec 10, 2008, 7:31:39 PM (16 years ago)
Author:
rosiere
Message:

Almost complete design
with Test and test platform

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src
Files:
9 edited

Legend:

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

    r82 r88  
    3939    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
    4040
     41#if DEBUG_Load_store_unit == true
     42    log_printf(INFO,Load_store_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
     43
     44    std::cout << *param << std::endl;
     45#endif   
     46
    4147#ifdef SYSTEMC
    4248    log_printf(INFO,Load_store_unit,FUNCTION,"Allocation");
     
    4652
    4753#ifdef STATISTICS
    48     log_printf(INFO,Load_store_unit,FUNCTION,"Allocation of statistics");
    49 
    50     statistics_declaration(param_statistics);
     54    if (usage_is_set(_usage,USE_STATISTICS))
     55      {
     56        log_printf(INFO,Load_store_unit,FUNCTION,"Allocation of statistics");
     57       
     58        statistics_declaration(param_statistics);
     59      }
    5160#endif
    5261
    5362#ifdef VHDL
    54     // generate the vhdl
    55     log_printf(INFO,Load_store_unit,FUNCTION,"Generate the vhdl");
    56 
    57     vhdl();
    58 #endif
    59 
    60 #ifdef SYSTEMC
     63    if (usage_is_set(_usage,USE_VHDL))
     64      {
     65        // generate the vhdl
     66        log_printf(INFO,Load_store_unit,FUNCTION,"Generate the vhdl");
     67       
     68        vhdl();
     69      }
     70#endif
     71
     72#ifdef SYSTEMC
     73    if (usage_is_set(_usage,USE_SYSTEMC))
     74      {
    6175    // Function pointer
    6276
     
    8498
    8599    internal_DCACHE_RSP_ACK = 1;
    86     PORT_WRITE(out_DCACHE_RSP_ACK, 1);
     100    PORT_WRITE(out_DCACHE_RSP_ACK [0], internal_DCACHE_RSP_ACK);
     101    for (uint32_t i=1; i<_param->_nb_cache_port; ++i)
     102      {
     103        PORT_WRITE(out_DCACHE_RSP_ACK [i], 0);
     104        PORT_WRITE(out_DCACHE_REQ_VAL [i], 0);
     105      }
     106
     107    for (uint32_t i=1; i<_param->_nb_inst_memory; i++)
     108      {
     109        PORT_WRITE(out_MEMORY_OUT_VAL [i], 0);
     110      }
    87111
    88112    log_printf(INFO,Load_store_unit,FUNCTION,"Method - transition");
     
    111135    dont_initialize ();
    112136    sensitive_neg << *(in_CLOCK);
    113     sensitive     << *(in_MEMORY_IN_OPERATION);
    114 
    115 #ifdef SYSTEMCASS_SPECIFIC
    116     // List dependency information
    117     (*(out_MEMORY_IN_ACK)) (*(in_MEMORY_IN_OPERATION));
     137    for (uint32_t i=0; i<_param->_nb_inst_memory; i++)
     138      sensitive << (*(in_MEMORY_IN_VAL       [i]))
     139                << (*(in_MEMORY_IN_OPERATION [i]));
     140
     141#ifdef SYSTEMCASS_SPECIFIC
     142    // List dependency information
     143    for (uint32_t i=0; i<_param->_nb_inst_memory; i++)
     144//       for (uint32_t x=0; x<_param->_nb_inst_memory; x++)
     145        {
     146          (*(out_MEMORY_IN_ACK [i])) (*(in_MEMORY_IN_VAL       [i]));
     147          (*(out_MEMORY_IN_ACK [i])) (*(in_MEMORY_IN_OPERATION [i]));
     148        }
    118149#endif   
    119150
     
    137168    // List dependency information
    138169#endif   
    139 
     170      }
    140171#endif
    141172    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
     
    149180
    150181#ifdef STATISTICS
    151     log_printf(INFO,Load_store_unit,FUNCTION,"Generate Statistics file");
    152 
    153     delete _stat;
     182    if (usage_is_set(_usage,USE_STATISTICS))
     183      {
     184        log_printf(INFO,Load_store_unit,FUNCTION,"Generate Statistics file");
     185       
     186        delete _stat;
     187      }
    154188#endif
    155189
  • 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

    r82 r88  
    33 * $Id$
    44 *
    5  * [ Description ]
     5 * [ Description ]
    66 *
    77 */
    88
    99#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
     10#include "Behavioural/include/Allocation.h"
    1011
    1112namespace morpheo                    {
     
    3738    _interfaces = entity->set_interfaces();
    3839
    39     // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     40    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    4041    {
    4142      Interface * interface = _interfaces->set_interface(""
     
    4344                                                         ,IN
    4445                                                         ,SOUTH,
    45                                                          "Generalist interface"
     46                                                         _("Generalist interface")
    4647#endif
    4748                                                         );
     
    5051      in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
    5152    }
    52     // ~~~~~[ Interface "memory_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     53
     54    // ~~~~~[ Interface "memory_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5355    {
    54       Interface_fifo * interface = _interfaces->set_interface("memory_in"
    55 #ifdef POSITION
    56                                                               ,IN
    57                                                               ,WEST
    58                                                               ,"Instruction from Reservations station"
    59 #endif
    60                                                               );
     56      ALLOC1_INTERFACE("memory_in",IN,WEST,_("Instruction from Reservations station"),_param->_nb_inst_memory);
    6157
    62    in_MEMORY_IN_VAL                   = interface->set_signal_valack_in        (VAL);
    63   out_MEMORY_IN_ACK                   = interface->set_signal_valack_out       (ACK);
    64 
    65   if (_param->_have_port_context_id)
    66    in_MEMORY_IN_CONTEXT_ID            = interface->set_signal_in  <Tcontext_t        > ("context_id"   ,_param->_size_context_id       );
    67   if (_param->_have_port_front_end_id)
    68    in_MEMORY_IN_FRONT_END_ID          = interface->set_signal_in  <Tcontext_t        > ("front_end_id" ,_param->_size_front_end_id     );
    69   if (_param->_have_port_ooo_engine_id)
    70    in_MEMORY_IN_OOO_ENGINE_ID         = interface->set_signal_in  <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id    );
    71   if (_param->_have_port_packet_id)
    72    in_MEMORY_IN_PACKET_ID             = interface->set_signal_in  <Tpacket_t         > ("packet_id"    ,_param->_size_packet_id       );
    73    in_MEMORY_IN_OPERATION             = interface->set_signal_in  <Toperation_t      > ("operation"   ,_param->_size_operation        );
    74    in_MEMORY_IN_TYPE                  = interface->set_signal_in  <Ttype_t           > ("type"        ,_param->_size_type             );
    75    in_MEMORY_IN_STORE_QUEUE_PTR_WRITE = interface->set_signal_in  <Tlsq_ptr_t        > ("store_queue_ptr_write" ,_param->_size_address_store_queue+1); // +1 cf load_queue usage
    76    if (_param->_have_port_load_queue_ptr)
    77    in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_in  <Tlsq_ptr_t        > ("load_queue_ptr_write"  ,_param->_size_address_load_queue );
    78    in_MEMORY_IN_HAS_IMMEDIAT          = interface->set_signal_in  <Tcontrol_t        > ("has_immediat",1                              );
    79    in_MEMORY_IN_IMMEDIAT              = interface->set_signal_in  <Tgeneral_data_t   > ("immediat"    ,_param->_size_general_data     );
    80    in_MEMORY_IN_DATA_RA               = interface->set_signal_in  <Tgeneral_data_t   > ("data_ra"     ,_param->_size_general_data     );
    81    in_MEMORY_IN_DATA_RB               = interface->set_signal_in  <Tgeneral_data_t   > ("data_rb"     ,_param->_size_general_data     );
    82    in_MEMORY_IN_DATA_RC               = interface->set_signal_in  <Tspecial_data_t   > ("data_rc"     ,_param->_size_special_data     );
    83    in_MEMORY_IN_WRITE_RD              = interface->set_signal_in  <Tcontrol_t        > ("write_rd"    ,1                              );
    84    in_MEMORY_IN_NUM_REG_RD            = interface->set_signal_in  <Tgeneral_address_t> ("num_reg_rd"  ,1                              );
    85    in_MEMORY_IN_WRITE_RE              = interface->set_signal_in  <Tcontrol_t        > ("write_re"    ,1                              );
    86    in_MEMORY_IN_NUM_REG_RE            = interface->set_signal_in  <Tspecial_address_t> ("num_reg_re"  ,1                              );
     58      ALLOC1_VALACK_IN ( in_MEMORY_IN_VAL                  ,VAL);
     59      ALLOC1_VALACK_OUT(out_MEMORY_IN_ACK                  ,ACK);
     60      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_CONTEXT_ID           ,"context_id"           ,Tcontext_t        ,_param->_size_context_id           );
     61      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_FRONT_END_ID         ,"front_end_id"         ,Tcontext_t        ,_param->_size_front_end_id         );
     62      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_OOO_ENGINE_ID        ,"ooo_engine_id"        ,Tcontext_t        ,_param->_size_ooo_engine_id        );
     63      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_PACKET_ID            ,"packet_id"            ,Tpacket_t         ,_param->_size_rob_ptr              );
     64      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation            );
     65      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type                 );
     66      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr      );
     67      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr       );
     68      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1                                  );
     69      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_IMMEDIAT             ,"immediat"             ,Tgeneral_data_t   ,_param->_size_general_data         );
     70      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_DATA_RA              ,"data_ra"              ,Tgeneral_data_t   ,_param->_size_general_data         );
     71      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_DATA_RB              ,"data_rb"              ,Tgeneral_data_t   ,_param->_size_general_data         );
     72      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_DATA_RC              ,"data_rc"              ,Tspecial_data_t   ,_param->_size_special_data         );
     73      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_WRITE_RD             ,"write_rd"             ,Tcontrol_t        ,1                                  );
     74      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_NUM_REG_RD           ,"num_reg_rd"           ,Tgeneral_address_t,1                                  );
     75      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                                  );
     76      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,1                                  );
    8777    }
    8878
    89     // ~~~~~[ Interface "memory_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     79    // ~~~~~[ Interface "memory_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    9080    {
    91       Interface_fifo * interface = _interfaces->set_interface("memory_out"
    92 #ifdef POSITION
    93                                                               ,OUT
    94                                                               ,EAST
    95                                                               ,"Instruction to write queue"
    96 #endif
    97                                                               );
     81      ALLOC1_INTERFACE("memory_out",OUT,EAST,_("Instruction to write queue"),_param->_nb_inst_memory);
    9882
    99       out_MEMORY_OUT_VAL           = interface->set_signal_valack_out(VAL);
    100        in_MEMORY_OUT_ACK           = interface->set_signal_valack_in (ACK);
    101       if (_param->_have_port_context_id)       
    102       out_MEMORY_OUT_CONTEXT_ID    = interface->set_signal_out <Tcontext_t        > ("context_id"    ,_param->_size_context_id       );
    103       if (_param->_have_port_front_end_id)     
    104       out_MEMORY_OUT_FRONT_END_ID  = interface->set_signal_out <Tcontext_t        > ("front_end_id"  ,_param->_size_front_end_id     );
    105       if (_param->_have_port_ooo_engine_id)   
    106       out_MEMORY_OUT_OOO_ENGINE_ID = interface->set_signal_out <Tcontext_t        > ("ooo_engine_id" ,_param->_size_ooo_engine_id    );
    107       if (_param->_have_port_packet_id)       
    108       out_MEMORY_OUT_PACKET_ID     = interface->set_signal_out <Tpacket_t         > ("packet_id"     ,_param->_size_packet_id        );
    109 //    out_MEMORY_OUT_OPERATION     = interface->set_signal_out <Toperation_t      > ("operation"     ,_param->_size_operation        );
    110       out_MEMORY_OUT_TYPE          = interface->set_signal_out <Ttype_t           > ("type"          ,_param->_size_type             );
    111       out_MEMORY_OUT_WRITE_RD      = interface->set_signal_out <Tcontrol_t        > ("write_rd"      ,1                              );
    112       out_MEMORY_OUT_NUM_REG_RD    = interface->set_signal_out <Tgeneral_address_t> ("num_reg_rd"    ,_param->_size_general_register );
    113       out_MEMORY_OUT_DATA_RD       = interface->set_signal_out <Tgeneral_data_t   > ("data_rd"       ,_param->_size_general_data     );
    114       out_MEMORY_OUT_WRITE_RE      = interface->set_signal_out <Tcontrol_t        > ("write_re"      ,1                              );
    115       out_MEMORY_OUT_NUM_REG_RE    = interface->set_signal_out <Tspecial_address_t> ("num_reg_re"    ,_param->_size_general_register );
    116       out_MEMORY_OUT_DATA_RE       = interface->set_signal_out <Tspecial_data_t   > ("data_re"       ,_param->_size_general_data     );
    117       out_MEMORY_OUT_EXCEPTION     = interface->set_signal_out <Texception_t      > ("exception"     ,_param->_size_exception        );
    118       out_MEMORY_OUT_NO_SEQUENCE   = interface->set_signal_out <Tcontrol_t        > ("no_sequence"   ,1                              );
    119       out_MEMORY_OUT_ADDRESS       = interface->set_signal_out <Tgeneral_data_t   > ("address"       ,_param->_size_general_data     );
     83      ALLOC1_VALACK_OUT(out_MEMORY_OUT_VAL          ,VAL);
     84      ALLOC1_VALACK_IN ( in_MEMORY_OUT_ACK          ,ACK);
     85      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_CONTEXT_ID   ,"context_id"    ,Tcontext_t        ,_param->_size_context_id       );
     86      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_FRONT_END_ID ,"front_end_id"  ,Tcontext_t        ,_param->_size_front_end_id     );
     87      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_OOO_ENGINE_ID,"ooo_engine_id" ,Tcontext_t        ,_param->_size_ooo_engine_id    );
     88      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_PACKET_ID    ,"packet_id"     ,Tpacket_t         ,_param->_size_rob_ptr          );
     89//    ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_OPERATION    ,"operation"     ,Toperation_t      ,_param->_size_operation        );
     90      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_TYPE         ,"type"          ,Ttype_t           ,_param->_size_type             );
     91      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_WRITE_RD     ,"write_rd"      ,Tcontrol_t        ,1                              );
     92      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_NUM_REG_RD   ,"num_reg_rd"    ,Tgeneral_address_t,_param->_size_general_register );
     93      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_DATA_RD      ,"data_rd"       ,Tgeneral_data_t   ,_param->_size_general_data     );
     94      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_WRITE_RE     ,"write_re"      ,Tcontrol_t        ,1                              );
     95      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_NUM_REG_RE   ,"num_reg_re"    ,Tspecial_address_t,_param->_size_general_register );
     96      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_DATA_RE      ,"data_re"       ,Tspecial_data_t   ,_param->_size_general_data     );
     97      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_EXCEPTION    ,"exception"     ,Texception_t      ,_param->_size_exception        );
     98      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_NO_SEQUENCE  ,"no_sequence"   ,Tcontrol_t        ,1                              );
     99      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_ADDRESS      ,"address"       ,Tgeneral_data_t   ,_param->_size_general_data     );
    120100    }
    121101
    122     // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     102    // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    123103    {
    124       Interface_fifo * interface = _interfaces->set_interface("dcache_req"
    125 #ifdef POSITION
    126                                                               ,OUT
    127                                                               ,NORTH
    128                                                               ,"Request port to dcache"
    129 #endif
    130                                                               );
     104      ALLOC1_INTERFACE("dcache_req",OUT,NORTH,_("Request port to dcache"),_param->_nb_cache_port);
    131105
    132       out_DCACHE_REQ_VAL        = interface->set_signal_valack_out(VAL);
    133        in_DCACHE_REQ_ACK        = interface->set_signal_valack_in (ACK);
    134        if (_param->_have_port_dcache_context_id)
    135       out_DCACHE_REQ_CONTEXT_ID = interface->set_signal_out <Tcontext_t        > ("context_id",_param->_size_dcache_context_id  );
    136       out_DCACHE_REQ_PACKET_ID  = interface->set_signal_out <Tpacket_t         > ("packet_id" ,_param->_size_dcache_packet_id   );
    137       out_DCACHE_REQ_ADDRESS    = interface->set_signal_out <Tdcache_address_t > ("address"   ,_param->_size_general_data);
    138       out_DCACHE_REQ_TYPE       = interface->set_signal_out <Tdcache_type_t    > ("type"      ,_param->_size_dcache_type );
    139       out_DCACHE_REQ_WDATA      = interface->set_signal_out <Tdcache_data_t    > ("wdata"     ,_param->_size_general_data);
     106      ALLOC1_VALACK_OUT(out_DCACHE_REQ_VAL        ,VAL);
     107      ALLOC1_VALACK_IN ( in_DCACHE_REQ_ACK        ,ACK);
     108      ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_CONTEXT_ID ,"context_id",Tcontext_t       ,_param->_size_dcache_context_id  );
     109      ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_PACKET_ID  ,"packet_id" ,Tpacket_t        ,_param->_size_dcache_packet_id   );
     110      ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_ADDRESS    ,"address"   ,Tdcache_address_t,_param->_size_general_data);
     111      ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_TYPE       ,"type"      ,Tdcache_type_t   ,_param->_size_dcache_type );
     112      ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_WDATA      ,"wdata"     ,Tdcache_data_t   ,_param->_size_general_data);
    140113    }
    141     // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     114
     115    // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    142116    {
    143       Interface_fifo * interface = _interfaces->set_interface("dcache_rsp"
    144 #ifdef POSITION
    145                                                               ,IN
    146                                                               ,NORTH
    147                                                               ,"Respons port from dcache"
    148 #endif
    149                                                               );
     117      ALLOC1_INTERFACE("dcache_rsp",IN,NORTH,_("Respons port from dcache"),_param->_nb_cache_port);
    150118
    151        in_DCACHE_RSP_VAL        = interface->set_signal_valack_in (VAL);
    152       out_DCACHE_RSP_ACK        = interface->set_signal_valack_out(ACK);
    153        if (_param->_have_port_dcache_context_id)
    154        in_DCACHE_RSP_CONTEXT_ID = interface->set_signal_in  <Tcontext_t     > ("context_id",_param->_size_dcache_context_id  );
    155        in_DCACHE_RSP_PACKET_ID  = interface->set_signal_in  <Tpacket_t      > ("packet_id" ,_param->_size_dcache_packet_id   );
    156        in_DCACHE_RSP_RDATA      = interface->set_signal_in  <Tdcache_data_t > ("rdata"     ,_param->_size_general_data);
    157        in_DCACHE_RSP_ERROR      = interface->set_signal_in  <Tdcache_error_t> ("error"     ,_param->_size_dcache_error);
     119      ALLOC1_VALACK_IN ( in_DCACHE_RSP_VAL        ,VAL);
     120      ALLOC1_VALACK_OUT(out_DCACHE_RSP_ACK        ,ACK);
     121      ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_CONTEXT_ID ,"context_id",Tcontext_t     ,_param->_size_dcache_context_id  );
     122      ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_PACKET_ID  ,"packet_id" ,Tpacket_t      ,_param->_size_dcache_packet_id   );
     123      ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_RDATA      ,"rdata"     ,Tdcache_data_t ,_param->_size_general_data);
     124      ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_ERROR      ,"error"     ,Tdcache_error_t,_param->_size_dcache_error);
    158125    }
    159     // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     126    // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    160127
    161 //  if (_param->_speculative_load == SPECULATIVE_LOAD_BYPASS)
    162       {
    163         out_BYPASS_MEMORY_VAL          = new SC_OUT(Tcontrol_t        ) * [_param->_nb_bypass_memory];
    164         if (_param->_have_port_ooo_engine_id)   
    165         out_BYPASS_MEMORY_OOO_ENGINE_ID= new SC_OUT(Tcontext_t        ) * [_param->_nb_bypass_memory];
    166         out_BYPASS_MEMORY_NUM_REG      = new SC_OUT(Tgeneral_address_t) * [_param->_nb_bypass_memory];
    167         out_BYPASS_MEMORY_DATA         = new SC_OUT(Tgeneral_data_t   ) * [_param->_nb_bypass_memory];
    168        
    169         for (uint32_t i=0; i<_param->_nb_bypass_memory; i++)
    170           {
    171             Interface_fifo * interface = _interfaces->set_interface("memory_out"
    172 #ifdef POSITION
    173                                                                     ,OUT
    174                                                                     ,NORTH
    175                                                                     ,"Bypass between the load queue and the reservation station"
    176 #endif
    177                                                                     );
     128    {
     129      ALLOC1_INTERFACE("bypass_memory",OUT,NORTH,_("Bypass between the load queue and the reservation station"),_param->_nb_bypass_memory);
    178130           
    179             out_BYPASS_MEMORY_VAL           [i] = interface->set_signal_valack_out(VAL);
    180             if (_param->_have_port_ooo_engine_id)
    181             out_BYPASS_MEMORY_OOO_ENGINE_ID [i] = interface->set_signal_out <Tcontext_t        > ("ooo_engine_id", _param->_size_ooo_engine_id);
    182             out_BYPASS_MEMORY_NUM_REG       [i] = interface->set_signal_out <Tgeneral_address_t> ("num_reg"      , _param->_size_general_register);
    183             out_BYPASS_MEMORY_DATA          [i] = interface->set_signal_out <Tgeneral_data_t   > ("data"         , _param->_size_general_data);
    184           }
    185       }
    186     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     131      ALLOC1_VALACK_OUT(out_BYPASS_MEMORY_VAL           ,VAL);
     132      ALLOC1_SIGNAL_OUT(out_BYPASS_MEMORY_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t        , _param->_size_ooo_engine_id   );
     133      ALLOC1_SIGNAL_OUT(out_BYPASS_MEMORY_NUM_REG       ,"num_reg"      ,Tgeneral_address_t, _param->_size_general_register);
     134      ALLOC1_SIGNAL_OUT(out_BYPASS_MEMORY_DATA          ,"data"         ,Tgeneral_data_t   , _param->_size_general_data    );
     135    }
     136
     137    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     138
     139//     internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ = new Tlsq_ptr_t [_param->_nb_cache_port];
     140
     141//     internal_MEMORY_IN_ACK           = new Tcontrol_t      [_param->_nb_inst_memory];
     142//     internal_MEMORY_OUT_VAL          = new Tcontrol_t      [_param->_nb_inst_memory];
     143//     internal_MEMORY_OUT_SELECT_QUEUE = new Tselect_queue_t [_param->_nb_inst_memory];
     144//     internal_MEMORY_OUT_PTR          = new Tlsq_ptr_t      [_param->_nb_inst_memory];
     145   
     146//     internal_DCACHE_RSP_ACK          = new Tcontrol_t      [_param->_nb_cache_port];
     147//     internal_DCACHE_REQ_VAL          = new Tcontrol_t      [_param->_nb_cache_port];
     148//     internal_DCACHE_REQ_SELECT_QUEUE = new Tselect_queue_t [_param->_nb_cache_port];
     149
     150    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    187151
    188152#ifdef POSITION
    189     _component->generate_file();
     153    if (usage_is_set(_usage,USE_POSITION))
     154      _component->generate_file();
    190155#endif
    191156
  • 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

    r81 r88  
    66 * $Id$
    77 *
    8  * [ Description ]
     8 * [ Description ]
    99 *
    1010 */
    1111
    1212#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h"
     13#include "Behavioural/include/Allocation.h"
    1314
    1415namespace morpheo                    {
     
    2829    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
    2930
     31    if (usage_is_set(_usage,USE_SYSTEMC))
     32      {
    3033//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
    3134    delete    in_CLOCK ;
     
    3336    delete    in_NRESET;
    3437
    35     delete     in_MEMORY_IN_VAL         ;
    36     delete    out_MEMORY_IN_ACK         ;
    37     if (_param->_have_port_context_id)
    38     delete     in_MEMORY_IN_CONTEXT_ID  ;
    39     if (_param->_have_port_front_end_id)
    40     delete     in_MEMORY_IN_FRONT_END_ID  ;
    41     if (_param->_have_port_ooo_engine_id)
    42     delete     in_MEMORY_IN_OOO_ENGINE_ID  ;
    43     if (_param->_have_port_packet_id)
    44     delete     in_MEMORY_IN_PACKET_ID   ;
    45     delete     in_MEMORY_IN_OPERATION   ;
    46     delete     in_MEMORY_IN_TYPE        ;
    47     delete     in_MEMORY_IN_STORE_QUEUE_PTR_WRITE;
    48     if (_param->_have_port_load_queue_ptr)
    49     delete     in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE ;
    50     delete     in_MEMORY_IN_HAS_IMMEDIAT;
    51     delete     in_MEMORY_IN_IMMEDIAT    ;
    52     delete     in_MEMORY_IN_DATA_RA     ;
    53     delete     in_MEMORY_IN_DATA_RB     ;
    54     delete     in_MEMORY_IN_DATA_RC     ;
    55     delete     in_MEMORY_IN_WRITE_RD    ;
    56     delete     in_MEMORY_IN_NUM_REG_RD  ;
    57     delete     in_MEMORY_IN_WRITE_RE    ;
    58     delete     in_MEMORY_IN_NUM_REG_RE  ;
     38    DELETE1_SIGNAL( in_MEMORY_IN_VAL                  ,_param->_nb_inst_memory,1);
     39    DELETE1_SIGNAL(out_MEMORY_IN_ACK                  ,_param->_nb_inst_memory,1);
     40    DELETE1_SIGNAL( in_MEMORY_IN_CONTEXT_ID           ,_param->_nb_inst_memory,_param->_size_context_id           );
     41    DELETE1_SIGNAL( in_MEMORY_IN_FRONT_END_ID         ,_param->_nb_inst_memory,_param->_size_front_end_id         );
     42    DELETE1_SIGNAL( in_MEMORY_IN_OOO_ENGINE_ID        ,_param->_nb_inst_memory,_param->_size_ooo_engine_id        );
     43    DELETE1_SIGNAL( in_MEMORY_IN_PACKET_ID            ,_param->_nb_inst_memory,_param->_size_rob_ptr              );
     44    DELETE1_SIGNAL( in_MEMORY_IN_OPERATION            ,_param->_nb_inst_memory,_param->_size_operation            );
     45    DELETE1_SIGNAL( in_MEMORY_IN_TYPE                 ,_param->_nb_inst_memory,_param->_size_type                 );
     46    DELETE1_SIGNAL( in_MEMORY_IN_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_memory,_param->_size_store_queue_ptr      );
     47    DELETE1_SIGNAL( in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_memory,_param->_size_load_queue_ptr       );
     48    DELETE1_SIGNAL( in_MEMORY_IN_HAS_IMMEDIAT         ,_param->_nb_inst_memory,1                                  );
     49    DELETE1_SIGNAL( in_MEMORY_IN_IMMEDIAT             ,_param->_nb_inst_memory,_param->_size_general_data         );
     50    DELETE1_SIGNAL( in_MEMORY_IN_DATA_RA              ,_param->_nb_inst_memory,_param->_size_general_data         );
     51    DELETE1_SIGNAL( in_MEMORY_IN_DATA_RB              ,_param->_nb_inst_memory,_param->_size_general_data         );
     52    DELETE1_SIGNAL( in_MEMORY_IN_DATA_RC              ,_param->_nb_inst_memory,_param->_size_special_data         );
     53    DELETE1_SIGNAL( in_MEMORY_IN_WRITE_RD             ,_param->_nb_inst_memory,1                                  );
     54    DELETE1_SIGNAL( in_MEMORY_IN_NUM_REG_RD           ,_param->_nb_inst_memory,1                                  );
     55    DELETE1_SIGNAL( in_MEMORY_IN_WRITE_RE             ,_param->_nb_inst_memory,1                                  );
     56    DELETE1_SIGNAL( in_MEMORY_IN_NUM_REG_RE           ,_param->_nb_inst_memory,1                                  );
     57
     58    DELETE1_SIGNAL(out_MEMORY_OUT_VAL          ,_param->_nb_inst_memory,1);
     59    DELETE1_SIGNAL( in_MEMORY_OUT_ACK          ,_param->_nb_inst_memory,1);
     60    DELETE1_SIGNAL(out_MEMORY_OUT_CONTEXT_ID   ,_param->_nb_inst_memory,_param->_size_context_id       );
     61    DELETE1_SIGNAL(out_MEMORY_OUT_FRONT_END_ID ,_param->_nb_inst_memory,_param->_size_front_end_id     );
     62    DELETE1_SIGNAL(out_MEMORY_OUT_OOO_ENGINE_ID,_param->_nb_inst_memory,_param->_size_ooo_engine_id    );
     63    DELETE1_SIGNAL(out_MEMORY_OUT_PACKET_ID    ,_param->_nb_inst_memory,_param->_size_rob_ptr          );
     64//  DELETE1_SIGNAL(out_MEMORY_OUT_OPERATION    ,_param->_nb_inst_memory,_param->_size_operation        );
     65    DELETE1_SIGNAL(out_MEMORY_OUT_TYPE         ,_param->_nb_inst_memory,_param->_size_type             );
     66    DELETE1_SIGNAL(out_MEMORY_OUT_WRITE_RD     ,_param->_nb_inst_memory,1                              );
     67    DELETE1_SIGNAL(out_MEMORY_OUT_NUM_REG_RD   ,_param->_nb_inst_memory,_param->_size_general_register );
     68    DELETE1_SIGNAL(out_MEMORY_OUT_DATA_RD      ,_param->_nb_inst_memory,_param->_size_general_data     );
     69    DELETE1_SIGNAL(out_MEMORY_OUT_WRITE_RE     ,_param->_nb_inst_memory,1                              );
     70    DELETE1_SIGNAL(out_MEMORY_OUT_NUM_REG_RE   ,_param->_nb_inst_memory,_param->_size_general_register );
     71    DELETE1_SIGNAL(out_MEMORY_OUT_DATA_RE      ,_param->_nb_inst_memory,_param->_size_general_data     );
     72    DELETE1_SIGNAL(out_MEMORY_OUT_EXCEPTION    ,_param->_nb_inst_memory,_param->_size_exception        );
     73    DELETE1_SIGNAL(out_MEMORY_OUT_NO_SEQUENCE  ,_param->_nb_inst_memory,1                              );
     74    DELETE1_SIGNAL(out_MEMORY_OUT_ADDRESS      ,_param->_nb_inst_memory,_param->_size_general_data     );
     75
     76    DELETE1_SIGNAL(out_DCACHE_REQ_VAL        ,_param->_nb_cache_port,1);
     77    DELETE1_SIGNAL( in_DCACHE_REQ_ACK        ,_param->_nb_cache_port,1);
     78    DELETE1_SIGNAL(out_DCACHE_REQ_CONTEXT_ID ,_param->_nb_cache_port,_param->_size_dcache_context_id  );
     79    DELETE1_SIGNAL(out_DCACHE_REQ_PACKET_ID  ,_param->_nb_cache_port,_param->_size_dcache_packet_id   );
     80    DELETE1_SIGNAL(out_DCACHE_REQ_ADDRESS    ,_param->_nb_cache_port,_param->_size_general_data);
     81    DELETE1_SIGNAL(out_DCACHE_REQ_TYPE       ,_param->_nb_cache_port,_param->_size_dcache_type );
     82    DELETE1_SIGNAL(out_DCACHE_REQ_WDATA      ,_param->_nb_cache_port,_param->_size_general_data);
     83
     84    DELETE1_SIGNAL( in_DCACHE_RSP_VAL        ,_param->_nb_cache_port,1);
     85    DELETE1_SIGNAL(out_DCACHE_RSP_ACK        ,_param->_nb_cache_port,1);
     86    DELETE1_SIGNAL( in_DCACHE_RSP_CONTEXT_ID ,_param->_nb_cache_port,_param->_size_dcache_context_id  );
     87    DELETE1_SIGNAL( in_DCACHE_RSP_PACKET_ID  ,_param->_nb_cache_port,_param->_size_dcache_packet_id   );
     88    DELETE1_SIGNAL( in_DCACHE_RSP_RDATA      ,_param->_nb_cache_port,_param->_size_general_data);
     89    DELETE1_SIGNAL( in_DCACHE_RSP_ERROR      ,_param->_nb_cache_port,_param->_size_dcache_error);
     90
     91    DELETE1_SIGNAL(out_BYPASS_MEMORY_VAL           ,_param->_nb_bypass_memory,1);
     92    DELETE1_SIGNAL(out_BYPASS_MEMORY_OOO_ENGINE_ID ,_param->_nb_bypass_memory,_param->_size_ooo_engine_id   );
     93    DELETE1_SIGNAL(out_BYPASS_MEMORY_NUM_REG       ,_param->_nb_bypass_memory,_param->_size_general_register);
     94    DELETE1_SIGNAL(out_BYPASS_MEMORY_DATA          ,_param->_nb_bypass_memory,_param->_size_general_data    );
     95
     96    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5997   
    60     delete    out_MEMORY_OUT_VAL       ;
    61     delete     in_MEMORY_OUT_ACK       ;
    62     if (_param->_have_port_context_id)
    63     delete    out_MEMORY_OUT_CONTEXT_ID;
    64     if (_param->_have_port_front_end_id)
    65     delete    out_MEMORY_OUT_FRONT_END_ID;
    66     if (_param->_have_port_ooo_engine_id)
    67       delete    out_MEMORY_OUT_OOO_ENGINE_ID;
    68     if (_param->_have_port_packet_id)
    69     delete    out_MEMORY_OUT_PACKET_ID ;
    70 //  delete    out_MEMORY_OUT_OPERATION ;
    71     delete    out_MEMORY_OUT_TYPE      ;
    72     delete    out_MEMORY_OUT_WRITE_RD  ;
    73     delete    out_MEMORY_OUT_NUM_REG_RD;
    74     delete    out_MEMORY_OUT_DATA_RD   ;
    75     delete    out_MEMORY_OUT_WRITE_RE  ;
    76     delete    out_MEMORY_OUT_NUM_REG_RE;
    77     delete    out_MEMORY_OUT_DATA_RE   ;
    78     delete    out_MEMORY_OUT_EXCEPTION ;
    79     delete    out_MEMORY_OUT_NO_SEQUENCE;
    80     delete    out_MEMORY_OUT_ADDRESS   ;
     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         ;
    81102   
    82     delete    out_DCACHE_REQ_VAL       ;
    83     delete     in_DCACHE_REQ_ACK       ;
    84     if (_param->_have_port_dcache_context_id)
    85     delete    out_DCACHE_REQ_CONTEXT_ID;
    86     delete    out_DCACHE_REQ_PACKET_ID ;
    87     delete    out_DCACHE_REQ_ADDRESS   ;
    88     delete    out_DCACHE_REQ_TYPE      ;
    89     delete    out_DCACHE_REQ_WDATA     ;
    90    
    91     delete     in_DCACHE_RSP_VAL       ;
    92     delete    out_DCACHE_RSP_ACK       ;
    93     if (_param->_have_port_dcache_context_id)
    94     delete     in_DCACHE_RSP_CONTEXT_ID;
    95     delete     in_DCACHE_RSP_PACKET_ID ;
    96     delete     in_DCACHE_RSP_RDATA     ;
    97     delete     in_DCACHE_RSP_ERROR     ;
    98    
    99     delete [] out_BYPASS_MEMORY_VAL       ;
    100     if (_param->_have_port_ooo_engine_id)   
    101     delete [] out_BYPASS_MEMORY_OOO_ENGINE_ID;
    102     delete [] out_BYPASS_MEMORY_NUM_REG   ;
    103     delete [] out_BYPASS_MEMORY_DATA      ;
    104     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     103//     delete [] internal_DCACHE_RSP_ACK         ;
     104//     delete [] internal_DCACHE_REQ_VAL         ;
     105//     delete [] internal_DCACHE_REQ_SELECT_QUEUE;
     106
     107//     delete [] internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ;
     108      }
     109
     110    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    105111
    106112    delete    _component;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_end_cycle.cpp

    r81 r88  
    2626
    2727#ifdef STATISTICS
    28     _stat->end_cycle();
     28    if (usage_is_set(_usage,USE_STATISTICS))
     29      _stat->end_cycle();
    2930#endif   
    3031
     
    3233    // Evaluation before read the ouput signal
    3334//  sc_start(0);
    34     _interfaces->testbench();
     35    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
     36      _interfaces->testbench();
    3537#endif
    3638
  • 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_genMealy_insert.cpp

    r81 r88  
    2727
    2828    // ~~~~~[ Output "memory_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     29   
     30    // Initialisation
     31    internal_MEMORY_IN_PORT = 0;
     32    Tcontrol_t ack [_param->_nb_inst_memory];
     33    for (uint32_t i=0; i<_param->_nb_inst_memory; i++)
     34      ack [i] = 0;
    2935
     36    // find first valid entry
    3037    // store queue is never full (pointer is manage by rename stage)
    31     internal_MEMORY_IN_ACK = is_operation_memory_store(PORT_READ(in_MEMORY_IN_OPERATION)) or not _speculative_access_queue_control->full();
     38    for (uint32_t i=0; i<_param->_nb_inst_memory; i++)
     39      if (PORT_READ(in_MEMORY_IN_VAL [i]))
     40        {
     41          internal_MEMORY_IN_ACK = is_operation_memory_store(PORT_READ(in_MEMORY_IN_OPERATION [i])) or not _speculative_access_queue_control->full();
    3242
    33     PORT_WRITE(out_MEMORY_IN_ACK, internal_MEMORY_IN_ACK);
     43          if (internal_MEMORY_IN_ACK)
     44            {
     45              ack [i] = 1;
     46              internal_MEMORY_IN_PORT = i;
     47              break; // end
     48            }
     49        }
     50
     51    for (uint32_t i=0; i<_param->_nb_inst_memory; i++)
     52      PORT_WRITE(out_MEMORY_IN_ACK [i], ack [i]);
    3453
    3554    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

    r81 r88  
    44 * $Id$
    55 *
    6  * [ Description ]
     6 * [ Description ]
    77 *
    88 */
     
    2626    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
    2727
    28     // ~~~~~[ Interface "memory_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     28    // ~~~~~[ Interface "memory_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    2929
    3030    Tcontext_t         memory_out_context_id    = 0;
     
    110110      }
    111111    // write output
    112     PORT_WRITE(out_MEMORY_OUT_VAL          , internal_MEMORY_OUT_VAL);
     112    PORT_WRITE(out_MEMORY_OUT_VAL          [0], internal_MEMORY_OUT_VAL);
    113113
    114114    if (_param->_have_port_context_id)
    115     PORT_WRITE(out_MEMORY_OUT_CONTEXT_ID   , memory_out_context_id   );
     115    PORT_WRITE(out_MEMORY_OUT_CONTEXT_ID   [0], memory_out_context_id   );
    116116    if (_param->_have_port_front_end_id)
    117     PORT_WRITE(out_MEMORY_OUT_FRONT_END_ID , memory_out_front_end_id );
     117    PORT_WRITE(out_MEMORY_OUT_FRONT_END_ID [0], memory_out_front_end_id );
    118118    if (_param->_have_port_ooo_engine_id)
    119     PORT_WRITE(out_MEMORY_OUT_OOO_ENGINE_ID, memory_out_ooo_engine_id);
    120     if (_param->_have_port_packet_id)
    121     PORT_WRITE(out_MEMORY_OUT_PACKET_ID    , memory_out_packet_id    );
    122 //  PORT_WRITE(out_MEMORY_OUT_OPERATION    , memory_out_operation    );
    123     PORT_WRITE(out_MEMORY_OUT_TYPE         , TYPE_MEMORY             );
    124     PORT_WRITE(out_MEMORY_OUT_WRITE_RD     , memory_out_write_rd     );
    125     PORT_WRITE(out_MEMORY_OUT_NUM_REG_RD   , memory_out_num_reg_rd   );
    126     PORT_WRITE(out_MEMORY_OUT_DATA_RD      , memory_out_data_rd      );
    127 //  PORT_WRITE(out_MEMORY_OUT_WRITE_RE     , memory_out_write_re     );
    128 //  PORT_WRITE(out_MEMORY_OUT_NUM_REG_RE   , memory_out_num_reg_re   );
    129 //  PORT_WRITE(out_MEMORY_OUT_DATA_RE      , memory_out_data_re      );
    130     PORT_WRITE(out_MEMORY_OUT_WRITE_RE     , 0);
    131     PORT_WRITE(out_MEMORY_OUT_NUM_REG_RE   , 0);
    132     PORT_WRITE(out_MEMORY_OUT_DATA_RE      , 0);
    133     PORT_WRITE(out_MEMORY_OUT_EXCEPTION    , memory_out_exception    );
    134     PORT_WRITE(out_MEMORY_OUT_NO_SEQUENCE  , 0);
    135     PORT_WRITE(out_MEMORY_OUT_ADDRESS      , 0);
    136     // ~~~~~[ Interface "dache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     119    PORT_WRITE(out_MEMORY_OUT_OOO_ENGINE_ID[0], memory_out_ooo_engine_id);
     120    if (_param->_have_port_rob_ptr)
     121    PORT_WRITE(out_MEMORY_OUT_PACKET_ID    [0], memory_out_packet_id    );
     122//  PORT_WRITE(out_MEMORY_OUT_OPERATION    [0], memory_out_operation    );
     123    PORT_WRITE(out_MEMORY_OUT_TYPE         [0], TYPE_MEMORY             );
     124    PORT_WRITE(out_MEMORY_OUT_WRITE_RD     [0], memory_out_write_rd     );
     125    PORT_WRITE(out_MEMORY_OUT_NUM_REG_RD   [0], memory_out_num_reg_rd   );
     126    PORT_WRITE(out_MEMORY_OUT_DATA_RD      [0], memory_out_data_rd      );
     127//  PORT_WRITE(out_MEMORY_OUT_WRITE_RE     [0], memory_out_write_re     );
     128//  PORT_WRITE(out_MEMORY_OUT_NUM_REG_RE   [0], memory_out_num_reg_re   );
     129//  PORT_WRITE(out_MEMORY_OUT_DATA_RE      [0], memory_out_data_re      );
     130    PORT_WRITE(out_MEMORY_OUT_WRITE_RE     [0], 0);
     131    PORT_WRITE(out_MEMORY_OUT_NUM_REG_RE   [0], 0);
     132    PORT_WRITE(out_MEMORY_OUT_DATA_RE      [0], 0);
     133    PORT_WRITE(out_MEMORY_OUT_EXCEPTION    [0], memory_out_exception    );
     134    PORT_WRITE(out_MEMORY_OUT_NO_SEQUENCE  [0], 0);
     135    PORT_WRITE(out_MEMORY_OUT_ADDRESS      [0], 0);
     136
     137    // ~~~~~[ Interface "dache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    137138
    138139    Tcontext_t        dcache_req_context_id;
     
    201202      }
    202203
    203     PORT_WRITE(out_DCACHE_REQ_VAL       , internal_DCACHE_REQ_VAL);
     204    PORT_WRITE(out_DCACHE_REQ_VAL       [0], internal_DCACHE_REQ_VAL);
    204205    if (_param->_have_port_dcache_context_id)
    205     PORT_WRITE(out_DCACHE_REQ_CONTEXT_ID, dcache_req_context_id);
    206     PORT_WRITE(out_DCACHE_REQ_PACKET_ID , dcache_req_packet_id );
    207     PORT_WRITE(out_DCACHE_REQ_ADDRESS   , dcache_req_address   );
    208     PORT_WRITE(out_DCACHE_REQ_TYPE      , dcache_req_type      );
    209     PORT_WRITE(out_DCACHE_REQ_WDATA     , dcache_req_wdata     );
     206    PORT_WRITE(out_DCACHE_REQ_CONTEXT_ID[0], dcache_req_context_id);
     207    PORT_WRITE(out_DCACHE_REQ_PACKET_ID [0], dcache_req_packet_id );
     208    PORT_WRITE(out_DCACHE_REQ_ADDRESS   [0], dcache_req_address   );
     209    PORT_WRITE(out_DCACHE_REQ_TYPE      [0], dcache_req_type      );
     210    PORT_WRITE(out_DCACHE_REQ_WDATA     [0], dcache_req_wdata     );
    210211   
    211212    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_transition.cpp

    r81 r88  
    255255        // Interface "MEMORY_IN"
    256256        //================================================================
    257 
    258         if ((PORT_READ(in_MEMORY_IN_VAL) == 1) and
     257       
     258        if ((PORT_READ(in_MEMORY_IN_VAL [internal_MEMORY_IN_PORT]) == 1) and
    259259            (    internal_MEMORY_IN_ACK  == 1))
    260260          {
     
    266266
    267267#ifdef DEBUG_TEST
    268             if (PORT_READ(in_MEMORY_IN_TYPE) != TYPE_MEMORY)
     268            if (PORT_READ(in_MEMORY_IN_TYPE [internal_MEMORY_IN_PORT]) != TYPE_MEMORY)
    269269              throw ERRORMORPHEO(FUNCTION,"The type is different at 'TYPE_MEMORY'");
    270270#endif
    271             Toperation_t    operation            = PORT_READ(in_MEMORY_IN_OPERATION);
    272             Tgeneral_data_t address              = (PORT_READ(in_MEMORY_IN_IMMEDIAT) +
    273                                                     PORT_READ(in_MEMORY_IN_DATA_RA ));
     271            Toperation_t    operation            = PORT_READ(in_MEMORY_IN_OPERATION[internal_MEMORY_IN_PORT]);
     272            Tgeneral_data_t address              = (PORT_READ(in_MEMORY_IN_IMMEDIAT[internal_MEMORY_IN_PORT]) +
     273                                                    PORT_READ(in_MEMORY_IN_DATA_RA [internal_MEMORY_IN_PORT]));
    274274            bool            exception_alignement = (mask_memory_access(operation) & address) != 0;
    275275                                                   
     
    287287               
    288288                // Write pointer is define in rename stage :
    289                 Tlsq_ptr_t           index         = PORT_READ(in_MEMORY_IN_STORE_QUEUE_PTR_WRITE);
     289                Tlsq_ptr_t           index         = PORT_READ(in_MEMORY_IN_STORE_QUEUE_PTR_WRITE[internal_MEMORY_IN_PORT]);
    290290                log_printf(TRACE,Load_store_unit,FUNCTION,"   * index         : %d",index);
    291291               
     
    375375                    log_printf(TRACE,Load_store_unit,FUNCTION,"   * Update information");
    376376
    377                     _store_queue [index]._context_id           = (not _param->_have_port_context_id   )?0:PORT_READ(in_MEMORY_IN_CONTEXT_ID);
    378                     _store_queue [index]._front_end_id         = (not _param->_have_port_front_end_id )?0:PORT_READ(in_MEMORY_IN_FRONT_END_ID);
    379                     _store_queue [index]._ooo_engine_id        = (not _param->_have_port_ooo_engine_id)?0:PORT_READ(in_MEMORY_IN_OOO_ENGINE_ID);
    380                     _store_queue [index]._packet_id            = (not _param->_have_port_packet_id    )?0:PORT_READ(in_MEMORY_IN_PACKET_ID   );
     377                    _store_queue [index]._context_id           = (not _param->_have_port_context_id   )?0:PORT_READ(in_MEMORY_IN_CONTEXT_ID   [internal_MEMORY_IN_PORT]);
     378                    _store_queue [index]._front_end_id         = (not _param->_have_port_front_end_id )?0:PORT_READ(in_MEMORY_IN_FRONT_END_ID [internal_MEMORY_IN_PORT]);
     379                    _store_queue [index]._ooo_engine_id        = (not _param->_have_port_ooo_engine_id)?0:PORT_READ(in_MEMORY_IN_OOO_ENGINE_ID[internal_MEMORY_IN_PORT]);
     380                    _store_queue [index]._packet_id            = (not _param->_have_port_rob_ptr      )?0:PORT_READ(in_MEMORY_IN_PACKET_ID    [internal_MEMORY_IN_PORT]);
    381381                    _store_queue [index]._operation            = operation;
    382                     _store_queue [index]._load_queue_ptr_write = (not _param->_have_port_load_queue_ptr)?0:PORT_READ(in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE);
     382                    _store_queue [index]._load_queue_ptr_write = (not _param->_have_port_load_queue_ptr)?0:PORT_READ(in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE[internal_MEMORY_IN_PORT]);
    383383                    _store_queue [index]._address              = address;
    384384
    385385                    // reordering data
    386                     _store_queue [index]._wdata                = duplicate<Tgeneral_data_t>(_param->_size_general_data,PORT_READ(in_MEMORY_IN_DATA_RB), memory_size(operation), 0);
    387 //                  _store_queue [index]._num_reg_rd           = PORT_READ(in_MEMORY_IN_NUM_REG_RD  );
     386                    _store_queue [index]._wdata                = duplicate<Tgeneral_data_t>(_param->_size_general_data,PORT_READ(in_MEMORY_IN_DATA_RB[internal_MEMORY_IN_PORT]), memory_size(operation), 0);
     387//                  _store_queue [index]._num_reg_rd           = PORT_READ(in_MEMORY_IN_NUM_REG_RD  [internal_MEMORY_IN_PORT]);
    388388                  }
    389389              }
     
    413413                // NOTE : type "other" (lock, invalidate, flush and sync) can't make an alignement exception (access is equivalent at a 8 bits)
    414414                _speculative_access_queue [index]._state                = (exception == EXCEPTION_MEMORY_NONE)?SPECULATIVE_ACCESS_QUEUE_WAIT_CACHE:SPECULATIVE_ACCESS_QUEUE_WAIT_LOAD_QUEUE;
    415                 _speculative_access_queue [index]._context_id           = (not _param->_have_port_context_id   )?0:PORT_READ(in_MEMORY_IN_CONTEXT_ID);
    416                 _speculative_access_queue [index]._front_end_id         = (not _param->_have_port_front_end_id )?0:PORT_READ(in_MEMORY_IN_FRONT_END_ID);
    417                 _speculative_access_queue [index]._ooo_engine_id        = (not _param->_have_port_ooo_engine_id)?0:PORT_READ(in_MEMORY_IN_OOO_ENGINE_ID);
    418                 _speculative_access_queue [index]._packet_id            = (not _param->_have_port_packet_id    )?0:PORT_READ(in_MEMORY_IN_PACKET_ID);
     415                _speculative_access_queue [index]._context_id           = (not _param->_have_port_context_id   )?0:PORT_READ(in_MEMORY_IN_CONTEXT_ID   [internal_MEMORY_IN_PORT]);
     416                _speculative_access_queue [index]._front_end_id         = (not _param->_have_port_front_end_id )?0:PORT_READ(in_MEMORY_IN_FRONT_END_ID [internal_MEMORY_IN_PORT]);
     417                _speculative_access_queue [index]._ooo_engine_id        = (not _param->_have_port_ooo_engine_id)?0:PORT_READ(in_MEMORY_IN_OOO_ENGINE_ID[internal_MEMORY_IN_PORT]);
     418                _speculative_access_queue [index]._packet_id            = (not _param->_have_port_rob_ptr      )?0:PORT_READ(in_MEMORY_IN_PACKET_ID    [internal_MEMORY_IN_PORT]);
    419419
    420420                _speculative_access_queue [index]._operation            = operation;
    421                 _speculative_access_queue [index]._load_queue_ptr_write = (not _param->_have_port_load_queue_ptr)?0:PORT_READ(in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE);
    422                 _speculative_access_queue [index]._store_queue_ptr_write= PORT_READ(in_MEMORY_IN_STORE_QUEUE_PTR_WRITE);
     421                _speculative_access_queue [index]._load_queue_ptr_write = (not _param->_have_port_load_queue_ptr)?0:PORT_READ(in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE[internal_MEMORY_IN_PORT]);
     422                _speculative_access_queue [index]._store_queue_ptr_write= PORT_READ(in_MEMORY_IN_STORE_QUEUE_PTR_WRITE[internal_MEMORY_IN_PORT]);
    423423                _speculative_access_queue [index]._address              = address;
    424424                // NOTE : is operation is a load, then they are a result and must write in the register file
    425425                _speculative_access_queue [index]._write_rd             = is_operation_memory_load(operation);
    426                 _speculative_access_queue [index]._num_reg_rd           = PORT_READ(in_MEMORY_IN_NUM_REG_RD  );
     426                _speculative_access_queue [index]._num_reg_rd           = PORT_READ(in_MEMORY_IN_NUM_REG_RD  [internal_MEMORY_IN_PORT]);
    427427
    428428                _speculative_access_queue [index]._exception            = exception;
     
    437437
    438438        if ((    internal_MEMORY_OUT_VAL  == 1) and
    439             (PORT_READ(in_MEMORY_OUT_ACK) == 1))
     439            (PORT_READ(in_MEMORY_OUT_ACK[0]) == 1))
    440440          {
    441441            log_printf(TRACE,Load_store_unit,FUNCTION,"MEMORY_OUT transaction");
     
    495495
    496496        if ((    internal_DCACHE_REQ_VAL  == 1) and
    497             (PORT_READ(in_DCACHE_REQ_ACK) == 1))
     497            (PORT_READ(in_DCACHE_REQ_ACK[0]) == 1))
    498498          {
    499499            log_printf(TRACE,Load_store_unit,FUNCTION,"DCACHE_REQ");
     
    598598        // Interface "DCACHE_RSP"
    599599        //================================================================
    600         if ((PORT_READ(in_DCACHE_RSP_VAL)== 1) and
     600        if ((PORT_READ(in_DCACHE_RSP_VAL[0])== 1) and
    601601            (    internal_DCACHE_RSP_ACK == 1))
    602602          {
     
    604604
    605605            // don't use context_id : because there are one queue for all thread
    606             //Tcontext_t      context_id = PORT_READ(in_DCACHE_RSP_CONTEXT_ID);
    607             Tpacket_t       packet_id  = PORT_READ(in_DCACHE_RSP_PACKET_ID );
    608             Tdcache_data_t  rdata      = PORT_READ(in_DCACHE_RSP_RDATA     );
    609             Tdcache_error_t error      = PORT_READ(in_DCACHE_RSP_ERROR     );
     606            //Tcontext_t      context_id = PORT_READ(in_DCACHE_RSP_CONTEXT_ID[0]);
     607            Tpacket_t       packet_id  = PORT_READ(in_DCACHE_RSP_PACKET_ID [0]);
     608            Tdcache_data_t  rdata      = PORT_READ(in_DCACHE_RSP_RDATA     [0]);
     609            Tdcache_error_t error      = PORT_READ(in_DCACHE_RSP_ERROR     [0]);
    610610
    611611            log_printf(TRACE,Load_store_unit,FUNCTION," * original packet_id : %d", packet_id);
     
    662662       
    663663       
    664 #if DEBUG>=DEBUG_TRACE
     664#if defined(DEBUG) and (DEBUG>=DEBUG_TRACE)
    665665        // ***** dump store queue
    666666        std::cout << "Dump STORE_QUEUE :" << std::endl
     
    694694                 << _load_queue[j] << std::endl;
    695695          }
    696        
    697696#endif
    698697       
    699698#ifdef STATISTICS
    700         for (uint32_t i=0; i<_param->_size_store_queue; i++)
    701           if (_store_queue[i]._state != STORE_QUEUE_EMPTY)
    702             (*_stat_use_store_queue) ++;
    703         for (uint32_t i=0; i<_param->_size_speculative_access_queue; i++)
    704           if (_speculative_access_queue[i]._state != SPECULATIVE_ACCESS_QUEUE_EMPTY)
    705             (*_stat_use_speculative_access_queue) ++;
    706         for (uint32_t i=0; i<_param->_size_load_queue; i++)
    707           if (_load_queue[i]._state != LOAD_QUEUE_EMPTY)
    708             (*_stat_use_load_queue) ++;
     699        if (usage_is_set(_usage,USE_STATISTICS))
     700          {
     701            for (uint32_t i=0; i<_param->_size_store_queue; i++)
     702              if (_store_queue[i]._state != STORE_QUEUE_EMPTY)
     703                (*_stat_use_store_queue) ++;
     704            for (uint32_t i=0; i<_param->_size_speculative_access_queue; i++)
     705              if (_speculative_access_queue[i]._state != SPECULATIVE_ACCESS_QUEUE_EMPTY)
     706                (*_stat_use_speculative_access_queue) ++;
     707            for (uint32_t i=0; i<_param->_size_load_queue; i++)
     708              if (_load_queue[i]._state != LOAD_QUEUE_EMPTY)
     709                (*_stat_use_load_queue) ++;
     710          }
    709711#endif
    710712      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters.cpp

    r81 r88  
    2626                          Tspeculative_load_t speculative_load       ,
    2727                          uint32_t            nb_bypass_memory       ,
     28                          uint32_t            nb_cache_port          ,
     29                          uint32_t            nb_inst_memory         ,
    2830                          uint32_t            nb_context             ,
    2931                          uint32_t            nb_front_end           ,
     
    3335                          uint32_t            size_special_data      ,
    3436                          uint32_t            nb_general_register    ,
    35                           uint32_t            nb_special_register    ):
    36     _size_store_queue        (size_store_queue       ),
    37     _size_load_queue         (size_load_queue        ),
    38     _size_speculative_access_queue (size_speculative_access_queue),
    39     _nb_port_check           (nb_port_check          ),
    40     _speculative_load        (speculative_load       ),
    41     _nb_bypass_memory        (nb_bypass_memory       ),
    42     _nb_context              (nb_context             ),
    43     _nb_front_end            (nb_front_end           ),
    44     _nb_ooo_engine           (nb_ooo_engine          ),
    45     _nb_packet               (nb_packet              ),
    46     _size_general_data       (size_general_data      ),
    47     _size_special_data       (size_special_data      ),
    48     _nb_general_register     (nb_general_register    ),
    49     _nb_special_register     (nb_special_register    ),
    50    
    51     _size_address_store_queue              (log2(size_store_queue             )),
    52     _size_address_load_queue               (log2(size_load_queue              )),
    53     _size_address_speculative_access_queue (log2(size_speculative_access_queue)),
    54 
    55     _size_context_id         (log2(nb_context         )),
    56     _size_front_end_id       (log2(nb_front_end       )),
    57     _size_ooo_engine_id      (log2(nb_ooo_engine      )),
    58     _size_packet_id          (log2(nb_packet          )),
    59     _size_general_register   (log2(nb_general_register)),
    60     _size_special_register   (log2(nb_special_register)),
    61     _size_dcache_context_id  (_size_context_id + _size_front_end_id + _size_ooo_engine_id),
    62     _size_dcache_packet_id   ((log2((size_store_queue>size_load_queue)?size_store_queue:size_load_queue))+1),
    63 
    64     _have_port_context_id        (_size_context_id   >0),
    65     _have_port_front_end_id      (_size_front_end_id >0),
    66     _have_port_ooo_engine_id     (_size_ooo_engine_id>0),
    67     _have_port_packet_id         (_size_packet_id    >0),
    68     _have_port_dcache_context_id (_size_dcache_context_id>0),
    69     _have_port_load_queue_ptr    (_size_load_queue>1),
    70 
    71     _mask_address_lsb            (gen_mask<Tdcache_address_t>(log2(size_general_data/8))),
    72     _mask_address_msb            (gen_mask<Tdcache_address_t>(size_general_data) << log2(size_general_data/8))
     37                          uint32_t            nb_special_register    ,
     38                          bool                is_toplevel)
    7339  {
    7440    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
     41
     42    _size_store_queue                      = size_store_queue       ;
     43    _size_load_queue                       = size_load_queue        ;
     44    _size_speculative_access_queue         = size_speculative_access_queue;
     45    _nb_port_check                         = nb_port_check          ;
     46    _speculative_load                      = speculative_load       ;
     47    _nb_bypass_memory                      = nb_bypass_memory       ;
     48    _nb_cache_port                         = nb_cache_port          ;
     49    _nb_inst_memory                        = nb_inst_memory         ;
     50    _nb_context                            = nb_context             ;
     51    _nb_front_end                          = nb_front_end           ;
     52    _nb_ooo_engine                         = nb_ooo_engine          ;
     53    _nb_packet                             = nb_packet              ;
     54    _nb_general_register                   = nb_general_register    ;
     55    _nb_special_register                   = nb_special_register    ;
     56   
     57    _size_speculative_access_queue_ptr     = log2(size_speculative_access_queue);
     58
     59    _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
     62    _have_port_dcache_context_id           = _size_dcache_context_id>0;
     63
     64    _mask_address_lsb                      = gen_mask<Tdcache_address_t>(log2(size_general_data/8));
     65    _mask_address_msb                      = gen_mask<Tdcache_address_t>(size_general_data) << log2(size_general_data/8);
     66
    7567    test();
     68
     69    if (is_toplevel)
     70      {
     71        _size_context_id                       = log2(nb_context         );
     72        _size_front_end_id                     = log2(nb_front_end       );
     73        _size_ooo_engine_id                    = log2(nb_ooo_engine      );
     74        _size_rob_ptr                          = log2(nb_packet          );
     75        _size_general_register                 = log2(nb_general_register);
     76        _size_special_register                 = log2(nb_special_register);
     77        _size_store_queue_ptr                  = log2(size_store_queue   );
     78        _size_load_queue_ptr                   = log2(size_load_queue    );
     79        _size_general_data                     = size_general_data      ;
     80        _size_special_data                     = size_special_data      ;
     81
     82        _have_port_context_id                  = _size_context_id    >0;
     83        _have_port_front_end_id                = _size_front_end_id  >0;
     84        _have_port_ooo_engine_id               = _size_ooo_engine_id >0;
     85        _have_port_rob_ptr                     = _size_rob_ptr       >0;
     86        _have_port_load_queue_ptr              = _size_load_queue_ptr>0;
     87
     88        copy();
     89      }
     90
    7691    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
    7792  };
    7893 
     94// #undef  FUNCTION
     95// #define FUNCTION "Load_store_unit::Parameters (copy)"
     96//   Parameters::Parameters (Parameters & param):
     97//     _size_store_queue        (param._size_store_queue       ),
     98//     _size_load_queue         (param._size_load_queue        ),
     99//     _size_speculative_access_queue (param._size_speculative_access_queue),
     100//     _nb_port_check           (param._nb_port_check          ),
     101//     _speculative_load        (param._speculative_load       ),
     102//     _nb_bypass_memory        (param._nb_bypass_memory       ),
     103//     _nb_cache_port           (param._nb_cache_port          ),
     104//     _nb_inst_memory          (param._nb_inst_memory         ),
     105//     _nb_context              (param._nb_context             ),
     106//     _nb_front_end            (param._nb_front_end           ),
     107//     _nb_ooo_engine           (param._nb_ooo_engine          ),
     108//     _nb_packet               (param._nb_packet              ),
     109//     _size_general_data       (param._size_general_data      ),
     110//     _size_special_data       (param._size_special_data      ),
     111//     _nb_general_register     (param._nb_general_register    ),
     112//     _nb_special_register     (param._nb_special_register    ),
     113
     114//     _size_address_store_queue              (param._size_address_store_queue             ),
     115//     _size_address_load_queue               (param._size_address_load_queue              ),
     116//     _size_address_speculative_access_queue (param._size_address_speculative_access_queue),
     117
     118//     _size_context_id         (param._size_context_id        ),
     119//     _size_front_end_id       (param._size_front_end_id      ),
     120//     _size_ooo_engine_id      (param._size_ooo_engine_id     ),
     121//     _size_packet_id          (param._size_packet_id         ),
     122//     _size_general_register   (param._size_general_register  ),
     123//     _size_special_register   (param._size_special_register  ),
     124//     _size_dcache_context_id  (param._size_dcache_context_id ),
     125//     _size_dcache_packet_id   (param._size_dcache_packet_id  ),
     126
     127//     _have_port_context_id    (param._have_port_context_id   ),
     128//     _have_port_front_end_id  (param._have_port_front_end_id ),
     129//     _have_port_ooo_engine_id (param._have_port_ooo_engine_id),
     130//     _have_port_packet_id     (param._have_port_packet_id    ),
     131//     _have_port_dcache_context_id(param._have_port_dcache_context_id),
     132//     _have_port_load_queue_ptr(param._have_port_load_queue_ptr),
     133
     134//     _mask_address_lsb        (param._mask_address_lsb),
     135//     _mask_address_msb        (param._mask_address_msb)
     136//   {
     137//     log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
     138//     test();
     139//     log_printf(FUNC,Load_store_unit,FUNCTION,"End");
     140//   };
     141
    79142#undef  FUNCTION
    80 #define FUNCTION "Load_store_unit::Parameters (copy)"
    81   Parameters::Parameters (Parameters & param):
    82     _size_store_queue        (param._size_store_queue       ),
    83     _size_load_queue         (param._size_load_queue        ),
    84     _size_speculative_access_queue (param._size_speculative_access_queue),
    85     _nb_port_check           (param._nb_port_check          ),
    86     _speculative_load        (param._speculative_load       ),
    87     _nb_bypass_memory        (param._nb_bypass_memory       ),
    88     _nb_context              (param._nb_context             ),
    89     _nb_front_end            (param._nb_front_end           ),
    90     _nb_ooo_engine           (param._nb_ooo_engine          ),
    91     _nb_packet               (param._nb_packet              ),
    92     _size_general_data       (param._size_general_data      ),
    93     _size_special_data       (param._size_special_data      ),
    94     _nb_general_register     (param._nb_general_register    ),
    95     _nb_special_register     (param._nb_special_register    ),
    96 
    97     _size_address_store_queue              (param._size_address_store_queue             ),
    98     _size_address_load_queue               (param._size_address_load_queue              ),
    99     _size_address_speculative_access_queue (param._size_address_speculative_access_queue),
    100 
    101     _size_context_id         (param._size_context_id        ),
    102     _size_front_end_id       (param._size_front_end_id      ),
    103     _size_ooo_engine_id      (param._size_ooo_engine_id     ),
    104     _size_packet_id          (param._size_packet_id         ),
    105     _size_general_register   (param._size_general_register  ),
    106     _size_special_register   (param._size_special_register  ),
    107     _size_dcache_context_id  (param._size_dcache_context_id ),
    108     _size_dcache_packet_id   (param._size_dcache_packet_id  ),
    109 
    110     _have_port_context_id    (param._have_port_context_id   ),
    111     _have_port_front_end_id  (param._have_port_front_end_id ),
    112     _have_port_ooo_engine_id (param._have_port_ooo_engine_id),
    113     _have_port_packet_id     (param._have_port_packet_id    ),
    114     _have_port_dcache_context_id(param._have_port_dcache_context_id),
    115     _have_port_load_queue_ptr(param._have_port_load_queue_ptr),
    116 
    117     _mask_address_lsb        (param._mask_address_lsb),
    118     _mask_address_msb        (param._mask_address_msb)
     143#define FUNCTION "Load_store_unit::~Parameters"
     144  Parameters::~Parameters (void)
    119145  {
    120146    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
    121     test();
    122147    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
    123148  };
    124149
    125150#undef  FUNCTION
    126 #define FUNCTION "Load_store_unit::~Parameters"
    127   Parameters::~Parameters ()
     151#define FUNCTION "Load_store_unit::copy"
     152  void Parameters::copy (void)
    128153  {
    129154    log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters_msg_error.cpp

    r81 r88  
    3232        {
    3333          if (not (_nb_bypass_memory == 0))
    34             test.error("Bypass memory is not supported. Please wait a next revision.");
     34            test.error(_("Bypass memory is not supported. Please wait a next revision.\n"));
    3535 
    3636          break;
     
    4242        {
    4343          if (not (_nb_bypass_memory == 0))
    44             test.error("In the load scheme '"+toString(_speculative_load)+"', they have none bypass.");
     44            test.error(toString(_("In the load scheme '%s', they have none bypass.\n"),toString(_speculative_load).c_str()));
    4545
    46           test.error("Speculative load scheme '"+toString(_speculative_load)+"' is not supported. Please wait a next revision.");
     46          test.error(toString(_("Speculative load scheme '%s' is not supported. Please wait a next revision.\n"),toString(_speculative_load).c_str()));
    4747          break;
    4848        }
     
    5050
    5151    if (not (_size_store_queue >= 2))
    52       test.error("Store queue must have at less two slot.");
     52      test.error(_("Store queue must have at less two slot.\n"));
    5353
    5454    if (not (_nb_bypass_memory <= _size_load_queue))
    55       test.error("Bypass number must be less than load_queue's size.");
     55      test.error(_("Bypass number must be less than load_queue's size.\n"));
     56
     57    if (_nb_cache_port > 1)
     58      test.warning(_("nb_cache_port > 1 is unsupported (Coming Soon).\n"));
     59
     60    if (_nb_inst_memory > 1)
     61      test.warning(_("nb_inst_memory > 1 is unsupported (Coming Soon).\n"));
    5662
    5763    log_printf(FUNC,Load_store_unit,FUNCTION,"End");
Note: See TracChangeset for help on using the changeset viewer.